rez_core 5.0.127 → 5.0.129

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 (407) hide show
  1. package/.idea/250218_nodejs_core.iml +11 -8
  2. package/.idea/codeStyles/Project.xml +58 -58
  3. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  4. package/.idea/inspectionProfiles/Project_Default.xml +1 -1
  5. package/.idea/modules.xml +7 -7
  6. package/.idea/prettier.xml +5 -5
  7. package/.idea/vcs.xml +5 -5
  8. package/.prettierrc +3 -3
  9. package/README.md +99 -99
  10. package/dist/module/auth/guards/role.guard.js +3 -3
  11. package/dist/module/filter/service/filter.service.js +20 -20
  12. package/dist/module/integration/examples/usage.example.js +9 -9
  13. package/dist/module/meta/repository/attribute-master.repository.js +8 -8
  14. package/dist/module/meta/service/entity-dynamic.service.js +19 -19
  15. package/dist/module/meta/service/entity-list.service.d.ts +1 -1
  16. package/dist/module/meta/service/entity-list.service.js +8 -6
  17. package/dist/module/meta/service/entity-list.service.js.map +1 -1
  18. package/dist/module/meta/service/entity-service-impl.service.js +7 -5
  19. package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
  20. package/dist/module/meta/service/media-data.service.js +7 -6
  21. package/dist/module/meta/service/media-data.service.js.map +1 -1
  22. package/dist/module/meta/service/resolver.service.js +15 -15
  23. package/dist/module/module/repository/menu.repository.js +4 -4
  24. package/dist/module/notification/service/notification.service.js +6 -6
  25. package/dist/module/user/controller/login.controller.js +18 -18
  26. package/dist/module/workflow/repository/action.repository.js +2 -2
  27. package/dist/module/workflow/repository/stage.repository.js +8 -8
  28. package/dist/module/workflow/service/action-template-mapping.service.js +2 -2
  29. package/dist/module/workflow/service/action.service.js +10 -10
  30. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  31. package/dist/module/workflow/service/task.service.js +8 -8
  32. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  33. package/dist/tsconfig.build.tsbuildinfo +1 -1
  34. package/dist/utils/service/reflection-helper.service.js +2 -2
  35. package/docs/modules/event-driven-integration-design.md +91 -91
  36. package/docs/modules/integration.md +250 -250
  37. package/eslint.config.mjs +34 -34
  38. package/nest-cli.json +14 -14
  39. package/package.json +125 -125
  40. package/src/app.controller.ts +12 -12
  41. package/src/app.module.ts +68 -68
  42. package/src/app.service.ts +8 -8
  43. package/src/config/bull.config.ts +69 -69
  44. package/src/config/config.module.ts +17 -17
  45. package/src/config/database.config.ts +48 -48
  46. package/src/constant/global.constant.ts +67 -67
  47. package/src/core.module.ts +94 -94
  48. package/src/decorators/roles.decorator.ts +7 -7
  49. package/src/dtos/response.dto.ts +6 -6
  50. package/src/dtos/response.ts +5 -5
  51. package/src/index.ts +1 -1
  52. package/src/module/auth/auth.module.ts +49 -49
  53. package/src/module/auth/controller/auth.controller.ts +28 -28
  54. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  55. package/src/module/auth/guards/jwt.guard.ts +22 -22
  56. package/src/module/auth/guards/role.guard.ts +68 -68
  57. package/src/module/auth/services/auth.service.ts +56 -56
  58. package/src/module/auth/services/jwt.service.ts +11 -11
  59. package/src/module/auth/strategies/google.strategy.ts +54 -54
  60. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  61. package/src/module/auth/strategies/local.strategy.ts +13 -13
  62. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  63. package/src/module/dashboard/dashboard.module.ts +21 -21
  64. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  65. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  66. package/src/module/dashboard/repository/dashboard.repository.ts +51 -51
  67. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  68. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  69. package/src/module/enterprise/enterprise.module.ts +30 -30
  70. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  71. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  72. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  73. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  74. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  75. package/src/module/enterprise/repository/school.repository.ts +272 -272
  76. package/src/module/enterprise/service/brand.service.ts +5 -5
  77. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  78. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  79. package/src/module/enterprise/service/organization.service.ts +145 -145
  80. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  81. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  82. package/src/module/entity_json/entity_json.module.ts +18 -18
  83. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  84. package/src/module/entity_json/service/entity_json.service.ts +242 -242
  85. package/src/module/export/controller/export.controller.ts +81 -81
  86. package/src/module/export/export.module.ts +12 -12
  87. package/src/module/export/service/export.service.ts +85 -85
  88. package/src/module/filter/controller/filter.controller.ts +84 -84
  89. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  90. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  91. package/src/module/filter/entity/saved-filter-master.entity.ts +29 -29
  92. package/src/module/filter/filter.module.ts +33 -33
  93. package/src/module/filter/repository/saved-filter.repository.ts +196 -196
  94. package/src/module/filter/repository/saved.filter-detail.repository.ts +19 -19
  95. package/src/module/filter/service/filter-evaluator.service.ts +82 -82
  96. package/src/module/filter/service/filter.service.ts +1317 -1317
  97. package/src/module/filter/service/saved-filter.service.ts +164 -164
  98. package/src/module/ics/controller/ics.controller.ts +21 -21
  99. package/src/module/ics/dto/ics.dto.ts +55 -55
  100. package/src/module/ics/ics.module.ts +13 -13
  101. package/src/module/ics/service/ics.service.ts +57 -57
  102. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  103. package/src/module/integration/controller/integration.controller.ts +662 -662
  104. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  105. package/src/module/integration/dto/create-config.dto.ts +526 -526
  106. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  107. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  108. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  109. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  110. package/src/module/integration/examples/usage.example.ts +338 -338
  111. package/src/module/integration/factories/base.factory.ts +7 -7
  112. package/src/module/integration/factories/email.factory.ts +49 -49
  113. package/src/module/integration/factories/integration.factory.ts +121 -121
  114. package/src/module/integration/factories/sms.factory.ts +51 -51
  115. package/src/module/integration/factories/telephone.factory.ts +41 -41
  116. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  117. package/src/module/integration/integration.module.ts +110 -110
  118. package/src/module/integration/service/calendar-event.service.ts +118 -118
  119. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  120. package/src/module/integration/service/integration-queue.service.ts +229 -229
  121. package/src/module/integration/service/integration.service.ts +2634 -2634
  122. package/src/module/integration/service/oauth.service.ts +224 -224
  123. package/src/module/integration/service/wrapper.service.ts +716 -716
  124. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  125. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  126. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  127. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  128. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  129. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  130. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  131. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  132. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  133. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  134. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  135. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  136. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  137. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  138. package/src/module/layout/controller/layout.controller.ts +47 -47
  139. package/src/module/layout/entity/header-items.entity.ts +28 -28
  140. package/src/module/layout/entity/header-section.entity.ts +19 -19
  141. package/src/module/layout/layout.module.ts +21 -21
  142. package/src/module/layout/repository/header-items.repository.ts +18 -18
  143. package/src/module/layout/repository/header-section.repository.ts +22 -22
  144. package/src/module/layout/service/header-section.service.ts +25 -25
  145. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  146. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  147. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  148. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  149. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  150. package/src/module/lead/controller/lead.controller.ts +30 -30
  151. package/src/module/lead/lead.module.ts +14 -14
  152. package/src/module/lead/repository/lead.repository.ts +41 -41
  153. package/src/module/lead/service/lead.service.ts +54 -54
  154. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  155. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  156. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  157. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  158. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  159. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  160. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  161. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  162. package/src/module/listmaster/listmaster.module.ts +46 -46
  163. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  164. package/src/module/listmaster/repository/list-master.repository.ts +56 -56
  165. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  166. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  167. package/src/module/listmaster/service/list-master-item.service.ts +281 -281
  168. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  169. package/src/module/listmaster/service/list-master.service.ts +535 -535
  170. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  171. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  172. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  173. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  174. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  175. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  176. package/src/module/mapper/mapper.module.ts +35 -35
  177. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  178. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  179. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  180. package/src/module/mapper/service/field-mapper.service.ts +269 -269
  181. package/src/module/mapper/service/mapper.service.ts +81 -81
  182. package/src/module/master/controller/master.controller.ts +74 -74
  183. package/src/module/master/service/master.service.ts +483 -483
  184. package/src/module/meta/controller/app-master.controller.ts +38 -38
  185. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  186. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  187. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  188. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  189. package/src/module/meta/controller/entity.controller.ts +342 -342
  190. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  191. package/src/module/meta/controller/media.controller.ts +107 -107
  192. package/src/module/meta/controller/meta.controller.ts +96 -96
  193. package/src/module/meta/controller/view-master.controller.ts +86 -86
  194. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  195. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  196. package/src/module/meta/dto/entity-table.dto.ts +10 -10
  197. package/src/module/meta/entity/app-master.entity.ts +34 -34
  198. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  199. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  200. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  201. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  202. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  203. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  204. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  205. package/src/module/meta/entity/media-data.entity.ts +32 -32
  206. package/src/module/meta/entity/preference.entity.ts +62 -62
  207. package/src/module/meta/entity/view-master.entity.ts +41 -41
  208. package/src/module/meta/entity.module.ts +166 -166
  209. package/src/module/meta/repository/app-master.repository.ts +20 -20
  210. package/src/module/meta/repository/attribute-master.repository.ts +156 -156
  211. package/src/module/meta/repository/entity-attribute-update.repository.ts +48 -48
  212. package/src/module/meta/repository/entity-master.repository.ts +110 -110
  213. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  214. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  215. package/src/module/meta/repository/media-data.repository.ts +50 -50
  216. package/src/module/meta/repository/preference.repository.ts +20 -20
  217. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  218. package/src/module/meta/repository/view-master.repository.ts +42 -42
  219. package/src/module/meta/service/app-master.service.ts +37 -37
  220. package/src/module/meta/service/attribute-master.service.ts +130 -130
  221. package/src/module/meta/service/common.service.ts +9 -9
  222. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  223. package/src/module/meta/service/entity-dynamic.service.ts +818 -818
  224. package/src/module/meta/service/entity-list.service.ts +209 -205
  225. package/src/module/meta/service/entity-master.service.ts +171 -171
  226. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  227. package/src/module/meta/service/entity-relation.service.ts +69 -69
  228. package/src/module/meta/service/entity-service-impl.service.ts +438 -435
  229. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  230. package/src/module/meta/service/entity-table.service.ts +157 -157
  231. package/src/module/meta/service/entity-validation.service.ts +187 -187
  232. package/src/module/meta/service/entity.service.ts +59 -59
  233. package/src/module/meta/service/field-group.service.ts +103 -103
  234. package/src/module/meta/service/media-data.service.ts +511 -510
  235. package/src/module/meta/service/populate-meta.service.ts +222 -222
  236. package/src/module/meta/service/preference.service.ts +16 -16
  237. package/src/module/meta/service/resolver.service.ts +293 -293
  238. package/src/module/meta/service/section-master.service.ts +104 -104
  239. package/src/module/meta/service/update-form-json.service.ts +22 -22
  240. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  241. package/src/module/meta/service/view-master.service.ts +127 -127
  242. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  243. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  244. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  245. package/src/module/module/controller/menu.controller.ts +15 -15
  246. package/src/module/module/controller/module-access.controller.ts +134 -134
  247. package/src/module/module/entity/menu.entity.ts +43 -43
  248. package/src/module/module/entity/module-access.entity.ts +25 -25
  249. package/src/module/module/entity/module-action.entity.ts +17 -17
  250. package/src/module/module/entity/module.entity.ts +52 -52
  251. package/src/module/module/module.module.ts +42 -42
  252. package/src/module/module/repository/menu.repository.ts +186 -186
  253. package/src/module/module/repository/module-access.repository.ts +344 -344
  254. package/src/module/module/service/menu.service.ts +82 -82
  255. package/src/module/module/service/module-access.service.ts +199 -199
  256. package/src/module/notification/controller/notification.controller.ts +58 -58
  257. package/src/module/notification/controller/otp.controller.ts +117 -117
  258. package/src/module/notification/entity/notification.entity.ts +26 -26
  259. package/src/module/notification/entity/otp.entity.ts +28 -28
  260. package/src/module/notification/firebase-admin.config.ts +22 -22
  261. package/src/module/notification/notification.module.ts +69 -69
  262. package/src/module/notification/repository/otp.repository.ts +27 -27
  263. package/src/module/notification/service/email.service.ts +127 -127
  264. package/src/module/notification/service/notification.service.ts +164 -164
  265. package/src/module/notification/service/otp.service.ts +133 -133
  266. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  267. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  268. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  269. package/src/module/third-party-module/third-party.module.ts +12 -12
  270. package/src/module/user/controller/login.controller.ts +198 -198
  271. package/src/module/user/controller/user.controller.ts +40 -40
  272. package/src/module/user/dto/create-user.dto.ts +62 -62
  273. package/src/module/user/dto/update-user.dto.ts +4 -4
  274. package/src/module/user/entity/role.entity.ts +33 -33
  275. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  276. package/src/module/user/entity/user-session.entity.ts +73 -73
  277. package/src/module/user/entity/user.entity.ts +59 -59
  278. package/src/module/user/repository/role.repository.ts +96 -96
  279. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  280. package/src/module/user/repository/user.repository.ts +50 -50
  281. package/src/module/user/repository/userSession.repository.ts +33 -33
  282. package/src/module/user/service/login.service.ts +326 -326
  283. package/src/module/user/service/role.service.ts +197 -197
  284. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  285. package/src/module/user/service/user-session.service.ts +177 -177
  286. package/src/module/user/service/user.service.ts +368 -368
  287. package/src/module/user/user.module.ts +65 -65
  288. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  289. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  290. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  291. package/src/module/workflow/controller/action.controller.ts +111 -111
  292. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  293. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  294. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  295. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  296. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  297. package/src/module/workflow/controller/stage.controller.ts +50 -50
  298. package/src/module/workflow/controller/task.controller.ts +77 -77
  299. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  300. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  301. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  302. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  303. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  304. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  305. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  306. package/src/module/workflow/entity/action.entity.ts +53 -53
  307. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  308. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  309. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  310. package/src/module/workflow/entity/form.entity.ts +25 -25
  311. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  312. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  313. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  314. package/src/module/workflow/entity/stage.entity.ts +20 -20
  315. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  316. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  317. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  318. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  319. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  320. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  321. package/src/module/workflow/repository/action-data.repository.ts +346 -346
  322. package/src/module/workflow/repository/action.repository.ts +339 -339
  323. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  324. package/src/module/workflow/repository/comm-template.repository.ts +157 -157
  325. package/src/module/workflow/repository/form-master.repository.ts +50 -50
  326. package/src/module/workflow/repository/stage-group.repository.ts +186 -186
  327. package/src/module/workflow/repository/stage-movement.repository.ts +257 -257
  328. package/src/module/workflow/repository/stage.repository.ts +160 -160
  329. package/src/module/workflow/repository/task.repository.ts +151 -151
  330. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  331. package/src/module/workflow/service/action-category.service.ts +33 -33
  332. package/src/module/workflow/service/action-data.service.ts +62 -62
  333. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  334. package/src/module/workflow/service/action-template-mapping.service.ts +140 -140
  335. package/src/module/workflow/service/action.service.ts +306 -306
  336. package/src/module/workflow/service/activity-log.service.ts +107 -107
  337. package/src/module/workflow/service/comm-template.service.ts +180 -180
  338. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  339. package/src/module/workflow/service/form-master.service.ts +35 -35
  340. package/src/module/workflow/service/populate-workflow.service.ts +320 -320
  341. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  342. package/src/module/workflow/service/stage-group.service.ts +344 -344
  343. package/src/module/workflow/service/stage.service.ts +207 -207
  344. package/src/module/workflow/service/task.service.ts +549 -549
  345. package/src/module/workflow/service/workflow-list-master.service.ts +68 -68
  346. package/src/module/workflow/service/workflow-meta.service.ts +639 -639
  347. package/src/module/workflow/service/workflow.service.ts +213 -213
  348. package/src/module/workflow/workflow.module.ts +180 -180
  349. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  350. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  351. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  352. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  353. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  354. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  355. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  356. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  357. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +219 -219
  358. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  359. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  360. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  361. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  362. package/src/module/workflow-schedule/README.md +422 -422
  363. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  364. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  365. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  366. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  367. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  368. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  369. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  370. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  371. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  372. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  373. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  374. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  375. package/src/module/workflow-schedule/processors/schedule.processor.ts +620 -620
  376. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +598 -598
  377. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  378. package/src/resources/dev.properties.yaml +31 -31
  379. package/src/resources/local.properties.yaml +27 -27
  380. package/src/resources/properties.module.ts +12 -12
  381. package/src/resources/properties.yaml.ts +11 -11
  382. package/src/resources/uat.properties.yaml +31 -31
  383. package/src/table.config.ts +133 -133
  384. package/src/utils/dto/excel-data.dto.ts +14 -14
  385. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  386. package/src/utils/service/base64util.service.ts +18 -18
  387. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  388. package/src/utils/service/codeGenerator.service.ts +22 -22
  389. package/src/utils/service/dateUtil.service.ts +17 -17
  390. package/src/utils/service/encryptUtil.service.ts +97 -97
  391. package/src/utils/service/excel-helper.service.ts +72 -72
  392. package/src/utils/service/excelUtil.service.ts +15 -15
  393. package/src/utils/service/file-util.service.ts +11 -11
  394. package/src/utils/service/json-util.service.ts +23 -23
  395. package/src/utils/service/loggingUtil.service.ts +88 -88
  396. package/src/utils/service/reflection-helper.service.ts +62 -62
  397. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  398. package/src/utils/utils.module.ts +27 -27
  399. package/tsconfig.build.json +4 -4
  400. package/tsconfig.json +24 -24
  401. package/.claude/settings.local.json +0 -26
  402. package/.idea/copilot.data.migration.agent.xml +0 -6
  403. package/.idea/copilot.data.migration.ask.xml +0 -6
  404. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  405. package/.idea/copilot.data.migration.edit.xml +0 -6
  406. package/.idea/misc.xml +0 -6
  407. package/server.log +0 -850
@@ -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