rez_core 4.0.206 → 4.0.208

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/config/config.module.js +2 -2
  17. package/dist/config/config.module.js.map +1 -1
  18. package/dist/config/database.config.d.ts +1 -1
  19. package/dist/config/database.config.js +15 -11
  20. package/dist/config/database.config.js.map +1 -1
  21. package/dist/core.module.js +0 -6
  22. package/dist/core.module.js.map +1 -1
  23. package/dist/module/auth/guards/role.guard.js +3 -3
  24. package/dist/module/auth/services/auth.service.js +3 -3
  25. package/dist/module/auth/services/auth.service.js.map +1 -1
  26. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  27. package/dist/module/enterprise/repository/school.repository.js +3 -3
  28. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  29. package/dist/module/entity_json/controller/entity_json.controller.d.ts +1 -11
  30. package/dist/module/entity_json/controller/entity_json.controller.js +0 -14
  31. package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -1
  32. package/dist/module/entity_json/entity_json.module.js +1 -2
  33. package/dist/module/entity_json/entity_json.module.js.map +1 -1
  34. package/dist/module/entity_json/service/entity_json.service.d.ts +3 -11
  35. package/dist/module/entity_json/service/entity_json.service.js +51 -98
  36. package/dist/module/entity_json/service/entity_json.service.js.map +1 -1
  37. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  38. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  39. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  40. package/dist/module/filter/service/filter.service.d.ts +4 -1
  41. package/dist/module/filter/service/filter.service.js +69 -39
  42. package/dist/module/filter/service/filter.service.js.map +1 -1
  43. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  44. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  45. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  46. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  47. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  48. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  49. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  50. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  51. package/dist/module/integration/examples/usage.example.js +9 -9
  52. package/dist/module/integration/service/integration.service.js +1 -1
  53. package/dist/module/integration/service/wrapper.service.js +29 -28
  54. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  55. package/dist/module/linked_attributes/entity/linked_attribute.entity.d.ts +0 -1
  56. package/dist/module/linked_attributes/entity/linked_attribute.entity.js +0 -4
  57. package/dist/module/linked_attributes/entity/linked_attribute.entity.js.map +1 -1
  58. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  59. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  60. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  61. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  62. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  63. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  64. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  65. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  66. package/dist/module/mapper/service/field-mapper.service.js +5 -5
  67. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  68. package/dist/module/mapper/service/mapper.service.js +4 -4
  69. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  70. package/dist/module/meta/controller/attribute-master.controller.d.ts +3 -2
  71. package/dist/module/meta/controller/attribute-master.controller.js +12 -2
  72. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  73. package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
  74. package/dist/module/meta/entity/app-master.entity.js +4 -4
  75. package/dist/module/meta/entity/attribute-master.entity.d.ts +0 -1
  76. package/dist/module/meta/entity/attribute-master.entity.js +0 -4
  77. package/dist/module/meta/entity/attribute-master.entity.js.map +1 -1
  78. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  79. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  80. package/dist/module/meta/entity/view-master.entity.js +1 -1
  81. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  82. package/dist/module/meta/repository/attribute-master.repository.js +2 -2
  83. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  84. package/dist/module/meta/repository/entity-attribute-update.repository.js +3 -3
  85. package/dist/module/meta/repository/entity-master.repository.js +2 -2
  86. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  87. package/dist/module/meta/service/attribute-master.service.js +1 -1
  88. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  89. package/dist/module/meta/service/entity-dynamic.service.d.ts +4 -1
  90. package/dist/module/meta/service/entity-dynamic.service.js +40 -29
  91. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  92. package/dist/module/meta/service/entity-list.service.js +3 -3
  93. package/dist/module/meta/service/entity-master.service.js +4 -4
  94. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  95. package/dist/module/meta/service/entity-relation.service.js +30 -15
  96. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  97. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  98. package/dist/module/meta/service/media-data.service.js +9 -9
  99. package/dist/module/meta/service/media-data.service.js.map +1 -1
  100. package/dist/module/meta/service/resolver.service.js +17 -17
  101. package/dist/module/meta/service/resolver.service.js.map +1 -1
  102. package/dist/module/module/repository/menu.repository.js +12 -12
  103. package/dist/module/module/service/module-access.service.js +2 -8
  104. package/dist/module/module/service/module-access.service.js.map +1 -1
  105. package/dist/module/notification/controller/otp.controller.d.ts +31 -1
  106. package/dist/module/notification/entity/otp.entity.js +1 -1
  107. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  108. package/dist/module/notification/service/notification.service.js +26 -22
  109. package/dist/module/notification/service/notification.service.js.map +1 -1
  110. package/dist/module/notification/service/otp.service.d.ts +31 -1
  111. package/dist/module/notification/service/otp.service.js +0 -1
  112. package/dist/module/notification/service/otp.service.js.map +1 -1
  113. package/dist/module/user/controller/login.controller.js +19 -20
  114. package/dist/module/user/controller/login.controller.js.map +1 -1
  115. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  116. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  117. package/dist/module/user/service/login.service.d.ts +57 -3
  118. package/dist/module/user/service/login.service.js +3 -13
  119. package/dist/module/user/service/login.service.js.map +1 -1
  120. package/dist/module/user/service/role.service.js +4 -4
  121. package/dist/module/user/service/user-session.service.js +4 -4
  122. package/dist/module/user/service/user-session.service.js.map +1 -1
  123. package/dist/module/user/service/user.service.js +1 -1
  124. package/dist/module/user/service/user.service.js.map +1 -1
  125. package/dist/module/workflow/entity/action-category.entity.d.ts +1 -1
  126. package/dist/module/workflow/entity/action-category.entity.js +1 -1
  127. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  128. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  129. package/dist/module/workflow/entity/action.entity.js +1 -1
  130. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  131. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  132. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  133. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  134. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  135. package/dist/module/workflow/repository/action-data.repository.js +4 -4
  136. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  137. package/dist/module/workflow/repository/action.repository.js +21 -21
  138. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  139. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  140. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  141. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  142. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  143. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  144. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  145. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  146. package/dist/module/workflow/repository/stage.repository.js +8 -8
  147. package/dist/module/workflow/repository/task.repository.js +4 -4
  148. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  149. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  150. package/dist/module/workflow/service/action.service.js +13 -13
  151. package/dist/module/workflow/service/action.service.js.map +1 -1
  152. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  153. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  154. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  155. package/dist/module/workflow/service/stage-group.service.js +6 -6
  156. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  157. package/dist/module/workflow/service/stage.service.js +4 -4
  158. package/dist/module/workflow/service/stage.service.js.map +1 -1
  159. package/dist/module/workflow/service/task.service.js +33 -33
  160. package/dist/module/workflow/service/task.service.js.map +1 -1
  161. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  162. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  163. package/dist/module/workflow/service/workflow-meta.service.js +31 -31
  164. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  165. package/dist/module/workflow/service/workflow.service.js +5 -5
  166. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  167. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
  168. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  169. package/dist/module/workflow-automation/service/schedule-handler.service.js +14 -14
  170. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  171. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  172. package/dist/module/workflow-automation/service/workflow-automation.service.js +4 -4
  173. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +4 -4
  174. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +1 -1
  175. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +2 -2
  176. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +1 -1
  177. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  178. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  179. package/dist/table.config.d.ts +1 -3
  180. package/dist/table.config.js +6 -6
  181. package/dist/table.config.js.map +1 -1
  182. package/dist/tsconfig.build.tsbuildinfo +1 -1
  183. package/dist/utils/service/reflection-helper.service.js +3 -3
  184. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  185. package/docs/modules/event-driven-integration-design.md +91 -91
  186. package/docs/modules/integration.md +250 -250
  187. package/eslint.config.mjs +34 -34
  188. package/nest-cli.json +14 -14
  189. package/package.json +124 -124
  190. package/server.log +850 -0
  191. package/src/app.controller.ts +12 -12
  192. package/src/app.module.ts +66 -66
  193. package/src/app.service.ts +8 -8
  194. package/src/config/bull.config.ts +69 -69
  195. package/src/config/config.module.ts +17 -18
  196. package/src/config/database.config.ts +48 -23
  197. package/src/constant/global.constant.ts +67 -67
  198. package/src/core.module.ts +88 -94
  199. package/src/decorators/roles.decorator.ts +7 -7
  200. package/src/dtos/response.dto.ts +6 -6
  201. package/src/dtos/response.ts +5 -5
  202. package/src/index.ts +1 -1
  203. package/src/module/auth/auth.module.ts +49 -49
  204. package/src/module/auth/controller/auth.controller.ts +28 -28
  205. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  206. package/src/module/auth/guards/jwt.guard.ts +22 -22
  207. package/src/module/auth/guards/role.guard.ts +68 -68
  208. package/src/module/auth/services/auth.service.ts +50 -50
  209. package/src/module/auth/services/jwt.service.ts +11 -11
  210. package/src/module/auth/strategies/google.strategy.ts +54 -54
  211. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  212. package/src/module/auth/strategies/local.strategy.ts +13 -13
  213. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  214. package/src/module/dashboard/dashboard.module.ts +21 -21
  215. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  216. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  217. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  218. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  219. package/src/module/dev/dev.module.ts +12 -12
  220. package/src/module/dev/service/dev.service.ts +7 -7
  221. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  222. package/src/module/enterprise/enterprise.module.ts +30 -30
  223. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  224. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  225. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  226. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  227. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  228. package/src/module/enterprise/repository/school.repository.ts +278 -278
  229. package/src/module/enterprise/service/brand.service.ts +5 -5
  230. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  231. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  232. package/src/module/enterprise/service/organization.service.ts +145 -145
  233. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  234. package/src/module/entity_json/entity_json.module.ts +15 -16
  235. package/src/module/entity_json/service/entity_json.service.ts +265 -323
  236. package/src/module/filter/controller/filter.controller.ts +84 -84
  237. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  238. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  239. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  240. package/src/module/filter/filter.module.ts +31 -31
  241. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  242. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  243. package/src/module/filter/service/filter.service.ts +1051 -1005
  244. package/src/module/filter/service/saved-filter.service.ts +170 -170
  245. package/src/module/ics/controller/ics.controller.ts +21 -21
  246. package/src/module/ics/dto/ics.dto.ts +55 -55
  247. package/src/module/ics/ics.module.ts +13 -13
  248. package/src/module/ics/service/ics.service.ts +57 -57
  249. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  250. package/src/module/integration/controller/integration.controller.ts +662 -662
  251. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  252. package/src/module/integration/dto/create-config.dto.ts +526 -526
  253. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  254. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  255. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  256. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  257. package/src/module/integration/examples/usage.example.ts +338 -338
  258. package/src/module/integration/factories/base.factory.ts +7 -7
  259. package/src/module/integration/factories/email.factory.ts +49 -49
  260. package/src/module/integration/factories/integration.factory.ts +121 -121
  261. package/src/module/integration/factories/sms.factory.ts +51 -51
  262. package/src/module/integration/factories/telephone.factory.ts +41 -41
  263. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  264. package/src/module/integration/integration.module.ts +110 -110
  265. package/src/module/integration/service/calendar-event.service.ts +118 -118
  266. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  267. package/src/module/integration/service/integration-queue.service.ts +229 -229
  268. package/src/module/integration/service/integration.service.ts +2633 -2633
  269. package/src/module/integration/service/oauth.service.ts +224 -224
  270. package/src/module/integration/service/wrapper.service.ts +701 -700
  271. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  272. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  273. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  274. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  275. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  276. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  277. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  278. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  279. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  280. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  281. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  282. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  283. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  284. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  285. package/src/module/layout/controller/layout.controller.ts +47 -47
  286. package/src/module/layout/entity/header-items.entity.ts +28 -28
  287. package/src/module/layout/entity/header-section.entity.ts +19 -19
  288. package/src/module/layout/layout.module.ts +21 -21
  289. package/src/module/layout/repository/header-items.repository.ts +18 -18
  290. package/src/module/layout/repository/header-section.repository.ts +22 -22
  291. package/src/module/layout/service/header-section.service.ts +25 -25
  292. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  293. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  294. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  295. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  296. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  297. package/src/module/lead/controller/lead.controller.ts +30 -30
  298. package/src/module/lead/lead.module.ts +14 -14
  299. package/src/module/lead/repository/lead.repository.ts +41 -41
  300. package/src/module/lead/service/lead.service.ts +54 -54
  301. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +10 -10
  302. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +48 -51
  303. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  304. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  305. package/src/module/linked_attributes/service/linked_attributes.service.ts +22 -22
  306. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  307. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  308. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  309. package/src/module/listmaster/listmaster.module.ts +46 -46
  310. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  311. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  312. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  313. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  314. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  315. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  316. package/src/module/listmaster/service/list-master.service.ts +535 -535
  317. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  318. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  319. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  320. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  321. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  322. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  323. package/src/module/mapper/mapper.module.ts +34 -34
  324. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  325. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  326. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  327. package/src/module/mapper/service/field-mapper.service.ts +271 -271
  328. package/src/module/mapper/service/mapper.service.ts +79 -79
  329. package/src/module/master/controller/master.controller.ts +74 -74
  330. package/src/module/master/service/master.service.ts +483 -483
  331. package/src/module/meta/controller/app-master.controller.ts +38 -38
  332. package/src/module/meta/controller/attribute-master.controller.ts +86 -84
  333. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  334. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  335. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  336. package/src/module/meta/controller/entity.controller.ts +392 -392
  337. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  338. package/src/module/meta/controller/media.controller.ts +107 -107
  339. package/src/module/meta/controller/meta.controller.ts +96 -96
  340. package/src/module/meta/controller/view-master.controller.ts +86 -86
  341. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  342. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  343. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  344. package/src/module/meta/entity/app-master.entity.ts +34 -34
  345. package/src/module/meta/entity/attribute-master.entity.ts +89 -92
  346. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  347. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  348. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  349. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  350. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  351. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  352. package/src/module/meta/entity/media-data.entity.ts +32 -32
  353. package/src/module/meta/entity/preference.entity.ts +62 -62
  354. package/src/module/meta/entity/view-master.entity.ts +41 -41
  355. package/src/module/meta/entity.module.ts +166 -166
  356. package/src/module/meta/repository/app-master.repository.ts +20 -20
  357. package/src/module/meta/repository/attribute-master.repository.ts +138 -138
  358. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -44
  359. package/src/module/meta/repository/entity-master.repository.ts +99 -99
  360. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  361. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  362. package/src/module/meta/repository/media-data.repository.ts +50 -50
  363. package/src/module/meta/repository/preference.repository.ts +20 -20
  364. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  365. package/src/module/meta/repository/view-master.repository.ts +42 -42
  366. package/src/module/meta/service/app-master.service.ts +37 -37
  367. package/src/module/meta/service/attribute-master.service.ts +130 -130
  368. package/src/module/meta/service/common.service.ts +9 -9
  369. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  370. package/src/module/meta/service/entity-dynamic.service.ts +831 -819
  371. package/src/module/meta/service/entity-list.service.ts +205 -205
  372. package/src/module/meta/service/entity-master.service.ts +175 -175
  373. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  374. package/src/module/meta/service/entity-relation.service.ts +89 -69
  375. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  376. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  377. package/src/module/meta/service/entity-table.service.ts +150 -150
  378. package/src/module/meta/service/entity-validation.service.ts +187 -187
  379. package/src/module/meta/service/entity.service.ts +67 -67
  380. package/src/module/meta/service/field-group.service.ts +103 -103
  381. package/src/module/meta/service/media-data.service.ts +507 -507
  382. package/src/module/meta/service/populate-meta.service.ts +193 -193
  383. package/src/module/meta/service/preference.service.ts +16 -16
  384. package/src/module/meta/service/resolver.service.ts +267 -267
  385. package/src/module/meta/service/section-master.service.ts +104 -104
  386. package/src/module/meta/service/update-form-json.service.ts +22 -22
  387. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  388. package/src/module/meta/service/view-master.service.ts +127 -127
  389. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  390. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  391. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  392. package/src/module/module/controller/menu.controller.ts +15 -15
  393. package/src/module/module/controller/module-access.controller.ts +134 -134
  394. package/src/module/module/entity/menu.entity.ts +43 -43
  395. package/src/module/module/entity/module-access.entity.ts +25 -25
  396. package/src/module/module/entity/module-action.entity.ts +17 -17
  397. package/src/module/module/entity/module.entity.ts +52 -52
  398. package/src/module/module/module.module.ts +42 -42
  399. package/src/module/module/repository/menu.repository.ts +184 -184
  400. package/src/module/module/repository/module-access.repository.ts +344 -344
  401. package/src/module/module/service/menu.service.ts +82 -82
  402. package/src/module/module/service/module-access.service.ts +194 -209
  403. package/src/module/notification/controller/notification.controller.ts +58 -58
  404. package/src/module/notification/controller/otp.controller.ts +117 -117
  405. package/src/module/notification/entity/notification.entity.ts +26 -26
  406. package/src/module/notification/entity/otp.entity.ts +28 -28
  407. package/src/module/notification/firebase-admin.config.ts +22 -22
  408. package/src/module/notification/notification.module.ts +69 -69
  409. package/src/module/notification/repository/otp.repository.ts +27 -27
  410. package/src/module/notification/service/email.service.ts +127 -127
  411. package/src/module/notification/service/notification.service.ts +160 -163
  412. package/src/module/notification/service/otp.service.ts +132 -133
  413. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  414. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  415. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  416. package/src/module/third-party-module/third-party.module.ts +12 -12
  417. package/src/module/user/controller/login.controller.ts +197 -198
  418. package/src/module/user/controller/user.controller.ts +40 -40
  419. package/src/module/user/dto/create-user.dto.ts +62 -62
  420. package/src/module/user/dto/update-user.dto.ts +4 -4
  421. package/src/module/user/entity/role.entity.ts +33 -33
  422. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  423. package/src/module/user/entity/user-session.entity.ts +73 -73
  424. package/src/module/user/entity/user.entity.ts +59 -59
  425. package/src/module/user/repository/role.repository.ts +96 -96
  426. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  427. package/src/module/user/repository/user.repository.ts +50 -50
  428. package/src/module/user/repository/userSession.repository.ts +33 -33
  429. package/src/module/user/service/login.service.ts +304 -326
  430. package/src/module/user/service/role.service.ts +189 -189
  431. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  432. package/src/module/user/service/user-session.service.ts +168 -168
  433. package/src/module/user/service/user.service.ts +365 -368
  434. package/src/module/user/user.module.ts +65 -65
  435. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  436. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  437. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  438. package/src/module/workflow/controller/action.controller.ts +111 -111
  439. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  440. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  441. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  442. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  443. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  444. package/src/module/workflow/controller/stage.controller.ts +50 -50
  445. package/src/module/workflow/controller/task.controller.ts +77 -77
  446. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  447. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  448. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  449. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  450. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  451. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  452. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  453. package/src/module/workflow/entity/action.entity.ts +53 -53
  454. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  455. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  456. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  457. package/src/module/workflow/entity/form.entity.ts +25 -25
  458. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  459. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  460. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  461. package/src/module/workflow/entity/stage.entity.ts +20 -20
  462. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  463. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  464. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  465. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  466. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  467. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  468. package/src/module/workflow/repository/action-data.repository.ts +334 -334
  469. package/src/module/workflow/repository/action.repository.ts +323 -323
  470. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  471. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  472. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  473. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  474. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  475. package/src/module/workflow/repository/stage.repository.ts +172 -172
  476. package/src/module/workflow/repository/task.repository.ts +134 -134
  477. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  478. package/src/module/workflow/service/action-category.service.ts +33 -33
  479. package/src/module/workflow/service/action-data.service.ts +62 -62
  480. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  481. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  482. package/src/module/workflow/service/action.service.ts +279 -279
  483. package/src/module/workflow/service/activity-log.service.ts +107 -107
  484. package/src/module/workflow/service/comm-template.service.ts +180 -180
  485. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  486. package/src/module/workflow/service/form-master.service.ts +35 -35
  487. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  488. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  489. package/src/module/workflow/service/stage-group.service.ts +319 -319
  490. package/src/module/workflow/service/stage.service.ts +199 -199
  491. package/src/module/workflow/service/task.service.ts +569 -569
  492. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  493. package/src/module/workflow/service/workflow-meta.service.ts +654 -654
  494. package/src/module/workflow/service/workflow.service.ts +205 -205
  495. package/src/module/workflow/workflow.module.ts +176 -176
  496. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  497. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  498. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  499. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  500. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  501. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  502. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  503. package/src/module/workflow-automation/service/schedule-handler.service.ts +149 -149
  504. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  505. package/src/module/workflow-automation/service/workflow-automation.service.ts +508 -508
  506. package/src/module/workflow-automation/workflow-automation.module.ts +47 -47
  507. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  508. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  509. package/src/module/workflow-schedule/README.md +422 -422
  510. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  511. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  512. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  513. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  514. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  515. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  516. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  517. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  518. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  519. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  520. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  521. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  522. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  523. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  524. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  525. package/src/resources/dev.properties.yaml +31 -30
  526. package/src/resources/local.properties.yaml +27 -27
  527. package/src/resources/properties.module.ts +12 -12
  528. package/src/resources/properties.yaml.ts +11 -11
  529. package/src/resources/uat.properties.yaml +31 -31
  530. package/src/table.config.ts +130 -130
  531. package/src/utils/dto/excel-data.dto.ts +14 -14
  532. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  533. package/src/utils/service/base64util.service.ts +18 -18
  534. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  535. package/src/utils/service/codeGenerator.service.ts +22 -22
  536. package/src/utils/service/dateUtil.service.ts +17 -17
  537. package/src/utils/service/encryptUtil.service.ts +97 -97
  538. package/src/utils/service/excel-helper.service.ts +72 -72
  539. package/src/utils/service/excelUtil.service.ts +15 -15
  540. package/src/utils/service/file-util.service.ts +11 -11
  541. package/src/utils/service/json-util.service.ts +23 -23
  542. package/src/utils/service/loggingUtil.service.ts +88 -88
  543. package/src/utils/service/reflection-helper.service.ts +62 -62
  544. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  545. package/src/utils/utils.module.ts +27 -27
  546. package/tsconfig.build.json +4 -4
  547. package/tsconfig.json +24 -24
  548. package/dist/module/entity_json/entity/entityJson.entity.d.ts +0 -10
  549. package/dist/module/entity_json/entity/entityJson.entity.js +0 -55
  550. package/dist/module/entity_json/entity/entityJson.entity.js.map +0 -1
  551. package/src/module/entity_json/entity/entityJson.entity.ts +0 -39
@@ -1,422 +1,422 @@
1
- # Workflow Schedule Module
2
-
3
- A comprehensive NestJS module for scheduling and executing workflows using Bull queues and Redis.
4
-
5
- ## Features
6
-
7
- - ✅ Schedule workflows with cron expressions
8
- - ✅ Timezone support (IANA timezone format)
9
- - ✅ Pause/resume schedules
10
- - ✅ Manual trigger execution
11
- - ✅ Comprehensive execution logging
12
- - ✅ Retry with exponential backoff
13
- - ✅ Batch processing (100 records per batch)
14
- - ✅ Multiple action types:
15
- - Send Email
16
- - Update Records
17
- - Create Tasks
18
- - Send Notifications
19
-
20
- ## Installation
21
-
22
- ### 1. Install Required Dependencies
23
-
24
- ```bash
25
- npm install @nestjs/bull bull redis cron-parser
26
- npm install --save-dev @types/bull
27
- ```
28
-
29
- Note: `cron-parser` includes its own TypeScript definitions, so no separate `@types` package is needed.
30
-
31
- ### 2. Configure Redis
32
-
33
- Add Redis configuration to your `.env` file:
34
-
35
- ```env
36
- REDIS_HOST=localhost
37
- REDIS_PORT=6379
38
- REDIS_PASSWORD=
39
- REDIS_DB=0
40
- ```
41
-
42
- ### 3. Run Migrations
43
-
44
- The module includes three migrations:
45
-
46
- 1. **AddWorkflowTypeColumn** - Adds `workflow_type` to `cr_wf_master` table
47
- 2. **CreateScheduledWorkflowsTable** - Creates `cr_wf_scheduled_workflow` table
48
- 3. **CreateWorkflowExecutionLogsTable** - Creates `cr_wf_execution_log` table
49
-
50
- To run migrations:
51
-
52
- ```bash
53
- # Using TypeORM CLI
54
- npx typeorm migration:run -d src/config/database.config.ts
55
-
56
- # Or using npm script (if configured)
57
- npm run migration:run
58
- ```
59
-
60
- ### 4. Start Redis Server
61
-
62
- Make sure Redis is running:
63
-
64
- ```bash
65
- # If using Docker
66
- docker run -d -p 6379:6379 redis
67
-
68
- # If installed locally
69
- redis-server
70
- ```
71
-
72
- ## Module Structure
73
-
74
- ```
75
- src/module/workflow-schedule/
76
- ├── constants/
77
- │ └── schedule.constants.ts # Constants and enums
78
- ├── interfaces/
79
- │ └── schedule-job-data.interface.ts # TypeScript interfaces
80
- ├── entities/
81
- │ ├── scheduled-workflow.entity.ts # ScheduledWorkflow entity
82
- │ └── workflow-execution-log.entity.ts # WorkflowExecutionLog entity
83
- ├── dto/
84
- │ ├── create-schedule.dto.ts # Create schedule DTO
85
- │ ├── update-schedule.dto.ts # Update schedule DTO
86
- │ └── get-execution-logs.dto.ts # Query execution logs DTO
87
- ├── processors/
88
- │ └── schedule.processor.ts # Bull job processor
89
- ├── service/
90
- │ └── workflow-schedule.service.ts # Business logic (9 methods)
91
- ├── controller/
92
- │ └── workflow-schedule.controller.ts # REST API (9 endpoints)
93
- └── workflow-schedule.module.ts # Module definition
94
- ```
95
-
96
- ## API Endpoints
97
-
98
- ### 1. Create Schedule
99
- ```http
100
- POST /workflow-schedule/create
101
- Authorization: Bearer <token>
102
-
103
- {
104
- "workflow_id": 1,
105
- "workflow_name": "Daily Lead Assignment",
106
- "name": "Assign leads every morning",
107
- "description": "Automatically assign new leads to sales team",
108
- "cron_expression": "0 9 * * 1-5",
109
- "timezone": "Asia/Kolkata",
110
- "actions": [
111
- {
112
- "actionType": "UPDATE_RECORDS",
113
- "targetEntityType": "LEAD",
114
- "actionConfig": {
115
- "updateFields": {
116
- "status": "ASSIGNED"
117
- }
118
- }
119
- }
120
- ]
121
- }
122
- ```
123
-
124
- ### 2. Update Schedule
125
- ```http
126
- PUT /workflow-schedule/update
127
-
128
- {
129
- "id": 1,
130
- "cron_expression": "0 10 * * 1-5"
131
- }
132
- ```
133
-
134
- ### 3. Get Schedule by ID
135
- ```http
136
- GET /workflow-schedule/:id
137
- ```
138
-
139
- ### 4. Get All Schedules
140
- ```http
141
- GET /workflow-schedule/list?page=1&size=10&schedule_status=ACTIVE
142
- ```
143
-
144
- ### 5. Pause Schedule
145
- ```http
146
- POST /workflow-schedule/:id/pause
147
- ```
148
-
149
- ### 6. Resume Schedule
150
- ```http
151
- POST /workflow-schedule/:id/resume
152
- ```
153
-
154
- ### 7. Delete Schedule
155
- ```http
156
- DELETE /workflow-schedule/:id
157
- ```
158
-
159
- ### 8. Manual Trigger
160
- ```http
161
- POST /workflow-schedule/:id/trigger
162
-
163
- {
164
- "metadata": {
165
- "triggered_reason": "Testing"
166
- }
167
- }
168
- ```
169
-
170
- ### 9. Get Execution Logs
171
- ```http
172
- POST /workflow-schedule/execution-logs
173
-
174
- {
175
- "schedule_id": 1,
176
- "execution_status": "COMPLETED",
177
- "page": 1,
178
- "size": 10
179
- }
180
- ```
181
-
182
- ### 10. Get Execution Statistics
183
- ```http
184
- GET /workflow-schedule/:id/stats
185
- ```
186
-
187
- ## Service Methods
188
-
189
- The `WorkflowScheduleService` provides 9 core methods:
190
-
191
- 1. **createSchedule** - Create a new scheduled workflow
192
- 2. **updateSchedule** - Update an existing schedule
193
- 3. **getScheduleById** - Get schedule by ID
194
- 4. **getAllSchedules** - Get all schedules with pagination
195
- 5. **pauseSchedule** - Pause a running schedule
196
- 6. **resumeSchedule** - Resume a paused schedule
197
- 7. **deleteSchedule** - Delete (soft delete) a schedule
198
- 8. **triggerManualExecution** - Manually trigger execution
199
- 9. **getExecutionLogs** - Query execution logs with filters
200
-
201
- ## Cron Expression Examples
202
-
203
- ```javascript
204
- // Every day at 9 AM
205
- "0 9 * * *"
206
-
207
- // Every weekday at 9 AM
208
- "0 9 * * 1-5"
209
-
210
- // Every hour
211
- "0 * * * *"
212
-
213
- // Every 30 minutes
214
- "*/30 * * * *"
215
-
216
- // First day of every month at midnight
217
- "0 0 1 * *"
218
-
219
- // Every Monday at 8 AM
220
- "0 8 * * 1"
221
- ```
222
-
223
- ## Action Types
224
-
225
- ### 1. Send Email
226
- ```json
227
- {
228
- "actionType": "SEND_EMAIL",
229
- "targetEntityType": "USR",
230
- "actionConfig": {
231
- "subject": "Weekly Report",
232
- "template": "weekly-report-template",
233
- "from": "noreply@example.com"
234
- },
235
- "filterCriteria": {
236
- "status": "ACTIVE"
237
- }
238
- }
239
- ```
240
-
241
- ### 2. Update Records
242
- ```json
243
- {
244
- "actionType": "UPDATE_RECORDS",
245
- "targetEntityType": "LEAD",
246
- "actionConfig": {
247
- "updateFields": {
248
- "status": "FOLLOW_UP",
249
- "last_contacted": "NOW()"
250
- }
251
- },
252
- "filterCriteria": {
253
- "status": "NEW"
254
- }
255
- }
256
- ```
257
-
258
- ### 3. Create Task
259
- ```json
260
- {
261
- "actionType": "CREATE_TASK",
262
- "targetEntityType": "LEAD",
263
- "actionConfig": {
264
- "taskName": "Follow up with lead",
265
- "taskDescription": "Scheduled follow-up task"
266
- },
267
- "filterCriteria": {
268
- "status": "QUALIFIED"
269
- }
270
- }
271
- ```
272
-
273
- ### 4. Send Notification
274
- ```json
275
- {
276
- "actionType": "SEND_NOTIFICATION",
277
- "targetEntityType": "USR",
278
- "actionConfig": {
279
- "eventType": "WORKFLOW_SCHEDULED",
280
- "message": "Your weekly report is ready"
281
- }
282
- }
283
- ```
284
-
285
- ## Retry Configuration
286
-
287
- ```json
288
- {
289
- "retry_config": {
290
- "maxRetries": 3,
291
- "retryDelay": 5000,
292
- "backoffMultiplier": 2
293
- }
294
- }
295
- ```
296
-
297
- This will retry failed jobs:
298
- - 1st retry: after 5 seconds
299
- - 2nd retry: after 10 seconds (5 * 2)
300
- - 3rd retry: after 20 seconds (10 * 2)
301
-
302
- ## Monitoring
303
-
304
- ### Check Queue Status
305
-
306
- Bull provides a web UI for monitoring queues:
307
-
308
- ```bash
309
- npm install bull-board
310
- ```
311
-
312
- ### View Execution Logs
313
-
314
- Use the execution logs API to monitor:
315
- - Success rate
316
- - Failed executions
317
- - Average execution time
318
- - Records processed
319
-
320
- ```http
321
- GET /workflow-schedule/:id/stats
322
- ```
323
-
324
- ## Database Schema
325
-
326
- ### cr_wf_scheduled_workflow
327
- - Stores schedule configuration
328
- - Includes cron expression, timezone, retry config
329
- - Tracks execution count and next execution time
330
-
331
- ### cr_wf_execution_log
332
- - Logs every execution
333
- - Tracks success/failure status
334
- - Records processing metrics
335
- - Stores error details
336
-
337
- ## Environment Variables
338
-
339
- ```env
340
- # Redis Configuration
341
- REDIS_HOST=localhost
342
- REDIS_PORT=6379
343
- REDIS_PASSWORD=
344
- REDIS_DB=0
345
-
346
- # Database Configuration
347
- DB_HOST=localhost
348
- DB_PORT=3306
349
- DB_USER=root
350
- DB_PASS=password
351
- DB_NAME=core
352
- ```
353
-
354
- ## Testing
355
-
356
- ### Manual Testing
357
-
358
- 1. Create a schedule with a simple cron (e.g., every minute: `* * * * *`)
359
- 2. Check execution logs after 1-2 minutes
360
- 3. Test pause/resume functionality
361
- 4. Test manual trigger
362
- 5. Verify retry mechanism by creating failing actions
363
-
364
- ### Unit Testing
365
-
366
- ```typescript
367
- import { Test } from '@nestjs/testing';
368
- import { WorkflowScheduleService } from './workflow-schedule.service';
369
-
370
- describe('WorkflowScheduleService', () => {
371
- let service: WorkflowScheduleService;
372
-
373
- beforeEach(async () => {
374
- const module = await Test.createTestingModule({
375
- providers: [WorkflowScheduleService],
376
- }).compile();
377
-
378
- service = module.get<WorkflowScheduleService>(WorkflowScheduleService);
379
- });
380
-
381
- it('should create a schedule', async () => {
382
- // Test implementation
383
- });
384
- });
385
- ```
386
-
387
- ## Troubleshooting
388
-
389
- ### Redis Connection Issues
390
- - Verify Redis is running: `redis-cli ping`
391
- - Check Redis connection settings in `.env`
392
-
393
- ### Jobs Not Processing
394
- - Check Bull queue status
395
- - Verify cron expression is valid
396
- - Check schedule is enabled and active
397
-
398
- ### Migration Issues
399
- - Ensure database user has CREATE/ALTER permissions
400
- - Run migrations in order (1, 2, 3)
401
-
402
- ## Performance Considerations
403
-
404
- - **Batch Size**: Default is 100 records. Adjust based on your use case.
405
- - **Retry Strategy**: Balance between retry attempts and system load.
406
- - **Redis Memory**: Monitor Redis memory usage for large queues.
407
- - **Database Indexes**: Migrations include optimized indexes.
408
-
409
- ## Security
410
-
411
- - All endpoints are protected with `JwtAuthGuard`
412
- - Organization-level data isolation
413
- - Soft delete for schedules (audit trail)
414
- - Execution logs retention (configurable)
415
-
416
- ## Support
417
-
418
- For issues or questions:
419
- 1. Check the logs: `src/module/workflow-schedule/`
420
- 2. Review Bull queue status
421
- 3. Check Redis connection
422
- 4. Verify database migrations ran successfully
1
+ # Workflow Schedule Module
2
+
3
+ A comprehensive NestJS module for scheduling and executing workflows using Bull queues and Redis.
4
+
5
+ ## Features
6
+
7
+ - ✅ Schedule workflows with cron expressions
8
+ - ✅ Timezone support (IANA timezone format)
9
+ - ✅ Pause/resume schedules
10
+ - ✅ Manual trigger execution
11
+ - ✅ Comprehensive execution logging
12
+ - ✅ Retry with exponential backoff
13
+ - ✅ Batch processing (100 records per batch)
14
+ - ✅ Multiple action types:
15
+ - Send Email
16
+ - Update Records
17
+ - Create Tasks
18
+ - Send Notifications
19
+
20
+ ## Installation
21
+
22
+ ### 1. Install Required Dependencies
23
+
24
+ ```bash
25
+ npm install @nestjs/bull bull redis cron-parser
26
+ npm install --save-dev @types/bull
27
+ ```
28
+
29
+ Note: `cron-parser` includes its own TypeScript definitions, so no separate `@types` package is needed.
30
+
31
+ ### 2. Configure Redis
32
+
33
+ Add Redis configuration to your `.env` file:
34
+
35
+ ```env
36
+ REDIS_HOST=localhost
37
+ REDIS_PORT=6379
38
+ REDIS_PASSWORD=
39
+ REDIS_DB=0
40
+ ```
41
+
42
+ ### 3. Run Migrations
43
+
44
+ The module includes three migrations:
45
+
46
+ 1. **AddWorkflowTypeColumn** - Adds `workflow_type` to `cr_wf_master` table
47
+ 2. **CreateScheduledWorkflowsTable** - Creates `cr_wf_scheduled_workflow` table
48
+ 3. **CreateWorkflowExecutionLogsTable** - Creates `cr_wf_execution_log` table
49
+
50
+ To run migrations:
51
+
52
+ ```bash
53
+ # Using TypeORM CLI
54
+ npx typeorm migration:run -d src/config/database.config.ts
55
+
56
+ # Or using npm script (if configured)
57
+ npm run migration:run
58
+ ```
59
+
60
+ ### 4. Start Redis Server
61
+
62
+ Make sure Redis is running:
63
+
64
+ ```bash
65
+ # If using Docker
66
+ docker run -d -p 6379:6379 redis
67
+
68
+ # If installed locally
69
+ redis-server
70
+ ```
71
+
72
+ ## Module Structure
73
+
74
+ ```
75
+ src/module/workflow-schedule/
76
+ ├── constants/
77
+ │ └── schedule.constants.ts # Constants and enums
78
+ ├── interfaces/
79
+ │ └── schedule-job-data.interface.ts # TypeScript interfaces
80
+ ├── entities/
81
+ │ ├── scheduled-workflow.entity.ts # ScheduledWorkflow entity
82
+ │ └── workflow-execution-log.entity.ts # WorkflowExecutionLog entity
83
+ ├── dto/
84
+ │ ├── create-schedule.dto.ts # Create schedule DTO
85
+ │ ├── update-schedule.dto.ts # Update schedule DTO
86
+ │ └── get-execution-logs.dto.ts # Query execution logs DTO
87
+ ├── processors/
88
+ │ └── schedule.processor.ts # Bull job processor
89
+ ├── service/
90
+ │ └── workflow-schedule.service.ts # Business logic (9 methods)
91
+ ├── controller/
92
+ │ └── workflow-schedule.controller.ts # REST API (9 endpoints)
93
+ └── workflow-schedule.module.ts # Module definition
94
+ ```
95
+
96
+ ## API Endpoints
97
+
98
+ ### 1. Create Schedule
99
+ ```http
100
+ POST /workflow-schedule/create
101
+ Authorization: Bearer <token>
102
+
103
+ {
104
+ "workflow_id": 1,
105
+ "workflow_name": "Daily Lead Assignment",
106
+ "name": "Assign leads every morning",
107
+ "description": "Automatically assign new leads to sales team",
108
+ "cron_expression": "0 9 * * 1-5",
109
+ "timezone": "Asia/Kolkata",
110
+ "actions": [
111
+ {
112
+ "actionType": "UPDATE_RECORDS",
113
+ "targetEntityType": "LEAD",
114
+ "actionConfig": {
115
+ "updateFields": {
116
+ "status": "ASSIGNED"
117
+ }
118
+ }
119
+ }
120
+ ]
121
+ }
122
+ ```
123
+
124
+ ### 2. Update Schedule
125
+ ```http
126
+ PUT /workflow-schedule/update
127
+
128
+ {
129
+ "id": 1,
130
+ "cron_expression": "0 10 * * 1-5"
131
+ }
132
+ ```
133
+
134
+ ### 3. Get Schedule by ID
135
+ ```http
136
+ GET /workflow-schedule/:id
137
+ ```
138
+
139
+ ### 4. Get All Schedules
140
+ ```http
141
+ GET /workflow-schedule/list?page=1&size=10&schedule_status=ACTIVE
142
+ ```
143
+
144
+ ### 5. Pause Schedule
145
+ ```http
146
+ POST /workflow-schedule/:id/pause
147
+ ```
148
+
149
+ ### 6. Resume Schedule
150
+ ```http
151
+ POST /workflow-schedule/:id/resume
152
+ ```
153
+
154
+ ### 7. Delete Schedule
155
+ ```http
156
+ DELETE /workflow-schedule/:id
157
+ ```
158
+
159
+ ### 8. Manual Trigger
160
+ ```http
161
+ POST /workflow-schedule/:id/trigger
162
+
163
+ {
164
+ "metadata": {
165
+ "triggered_reason": "Testing"
166
+ }
167
+ }
168
+ ```
169
+
170
+ ### 9. Get Execution Logs
171
+ ```http
172
+ POST /workflow-schedule/execution-logs
173
+
174
+ {
175
+ "schedule_id": 1,
176
+ "execution_status": "COMPLETED",
177
+ "page": 1,
178
+ "size": 10
179
+ }
180
+ ```
181
+
182
+ ### 10. Get Execution Statistics
183
+ ```http
184
+ GET /workflow-schedule/:id/stats
185
+ ```
186
+
187
+ ## Service Methods
188
+
189
+ The `WorkflowScheduleService` provides 9 core methods:
190
+
191
+ 1. **createSchedule** - Create a new scheduled workflow
192
+ 2. **updateSchedule** - Update an existing schedule
193
+ 3. **getScheduleById** - Get schedule by ID
194
+ 4. **getAllSchedules** - Get all schedules with pagination
195
+ 5. **pauseSchedule** - Pause a running schedule
196
+ 6. **resumeSchedule** - Resume a paused schedule
197
+ 7. **deleteSchedule** - Delete (soft delete) a schedule
198
+ 8. **triggerManualExecution** - Manually trigger execution
199
+ 9. **getExecutionLogs** - Query execution logs with filters
200
+
201
+ ## Cron Expression Examples
202
+
203
+ ```javascript
204
+ // Every day at 9 AM
205
+ "0 9 * * *"
206
+
207
+ // Every weekday at 9 AM
208
+ "0 9 * * 1-5"
209
+
210
+ // Every hour
211
+ "0 * * * *"
212
+
213
+ // Every 30 minutes
214
+ "*/30 * * * *"
215
+
216
+ // First day of every month at midnight
217
+ "0 0 1 * *"
218
+
219
+ // Every Monday at 8 AM
220
+ "0 8 * * 1"
221
+ ```
222
+
223
+ ## Action Types
224
+
225
+ ### 1. Send Email
226
+ ```json
227
+ {
228
+ "actionType": "SEND_EMAIL",
229
+ "targetEntityType": "USR",
230
+ "actionConfig": {
231
+ "subject": "Weekly Report",
232
+ "template": "weekly-report-template",
233
+ "from": "noreply@example.com"
234
+ },
235
+ "filterCriteria": {
236
+ "status": "ACTIVE"
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### 2. Update Records
242
+ ```json
243
+ {
244
+ "actionType": "UPDATE_RECORDS",
245
+ "targetEntityType": "LEAD",
246
+ "actionConfig": {
247
+ "updateFields": {
248
+ "status": "FOLLOW_UP",
249
+ "last_contacted": "NOW()"
250
+ }
251
+ },
252
+ "filterCriteria": {
253
+ "status": "NEW"
254
+ }
255
+ }
256
+ ```
257
+
258
+ ### 3. Create Task
259
+ ```json
260
+ {
261
+ "actionType": "CREATE_TASK",
262
+ "targetEntityType": "LEAD",
263
+ "actionConfig": {
264
+ "taskName": "Follow up with lead",
265
+ "taskDescription": "Scheduled follow-up task"
266
+ },
267
+ "filterCriteria": {
268
+ "status": "QUALIFIED"
269
+ }
270
+ }
271
+ ```
272
+
273
+ ### 4. Send Notification
274
+ ```json
275
+ {
276
+ "actionType": "SEND_NOTIFICATION",
277
+ "targetEntityType": "USR",
278
+ "actionConfig": {
279
+ "eventType": "WORKFLOW_SCHEDULED",
280
+ "message": "Your weekly report is ready"
281
+ }
282
+ }
283
+ ```
284
+
285
+ ## Retry Configuration
286
+
287
+ ```json
288
+ {
289
+ "retry_config": {
290
+ "maxRetries": 3,
291
+ "retryDelay": 5000,
292
+ "backoffMultiplier": 2
293
+ }
294
+ }
295
+ ```
296
+
297
+ This will retry failed jobs:
298
+ - 1st retry: after 5 seconds
299
+ - 2nd retry: after 10 seconds (5 * 2)
300
+ - 3rd retry: after 20 seconds (10 * 2)
301
+
302
+ ## Monitoring
303
+
304
+ ### Check Queue Status
305
+
306
+ Bull provides a web UI for monitoring queues:
307
+
308
+ ```bash
309
+ npm install bull-board
310
+ ```
311
+
312
+ ### View Execution Logs
313
+
314
+ Use the execution logs API to monitor:
315
+ - Success rate
316
+ - Failed executions
317
+ - Average execution time
318
+ - Records processed
319
+
320
+ ```http
321
+ GET /workflow-schedule/:id/stats
322
+ ```
323
+
324
+ ## Database Schema
325
+
326
+ ### cr_wf_scheduled_workflow
327
+ - Stores schedule configuration
328
+ - Includes cron expression, timezone, retry config
329
+ - Tracks execution count and next execution time
330
+
331
+ ### cr_wf_execution_log
332
+ - Logs every execution
333
+ - Tracks success/failure status
334
+ - Records processing metrics
335
+ - Stores error details
336
+
337
+ ## Environment Variables
338
+
339
+ ```env
340
+ # Redis Configuration
341
+ REDIS_HOST=localhost
342
+ REDIS_PORT=6379
343
+ REDIS_PASSWORD=
344
+ REDIS_DB=0
345
+
346
+ # Database Configuration
347
+ DB_HOST=localhost
348
+ DB_PORT=3306
349
+ DB_USER=root
350
+ DB_PASS=password
351
+ DB_NAME=core
352
+ ```
353
+
354
+ ## Testing
355
+
356
+ ### Manual Testing
357
+
358
+ 1. Create a schedule with a simple cron (e.g., every minute: `* * * * *`)
359
+ 2. Check execution logs after 1-2 minutes
360
+ 3. Test pause/resume functionality
361
+ 4. Test manual trigger
362
+ 5. Verify retry mechanism by creating failing actions
363
+
364
+ ### Unit Testing
365
+
366
+ ```typescript
367
+ import { Test } from '@nestjs/testing';
368
+ import { WorkflowScheduleService } from './workflow-schedule.service';
369
+
370
+ describe('WorkflowScheduleService', () => {
371
+ let service: WorkflowScheduleService;
372
+
373
+ beforeEach(async () => {
374
+ const module = await Test.createTestingModule({
375
+ providers: [WorkflowScheduleService],
376
+ }).compile();
377
+
378
+ service = module.get<WorkflowScheduleService>(WorkflowScheduleService);
379
+ });
380
+
381
+ it('should create a schedule', async () => {
382
+ // Test implementation
383
+ });
384
+ });
385
+ ```
386
+
387
+ ## Troubleshooting
388
+
389
+ ### Redis Connection Issues
390
+ - Verify Redis is running: `redis-cli ping`
391
+ - Check Redis connection settings in `.env`
392
+
393
+ ### Jobs Not Processing
394
+ - Check Bull queue status
395
+ - Verify cron expression is valid
396
+ - Check schedule is enabled and active
397
+
398
+ ### Migration Issues
399
+ - Ensure database user has CREATE/ALTER permissions
400
+ - Run migrations in order (1, 2, 3)
401
+
402
+ ## Performance Considerations
403
+
404
+ - **Batch Size**: Default is 100 records. Adjust based on your use case.
405
+ - **Retry Strategy**: Balance between retry attempts and system load.
406
+ - **Redis Memory**: Monitor Redis memory usage for large queues.
407
+ - **Database Indexes**: Migrations include optimized indexes.
408
+
409
+ ## Security
410
+
411
+ - All endpoints are protected with `JwtAuthGuard`
412
+ - Organization-level data isolation
413
+ - Soft delete for schedules (audit trail)
414
+ - Execution logs retention (configurable)
415
+
416
+ ## Support
417
+
418
+ For issues or questions:
419
+ 1. Check the logs: `src/module/workflow-schedule/`
420
+ 2. Review Bull queue status
421
+ 3. Check Redis connection
422
+ 4. Verify database migrations ran successfully