rez_core 5.0.182 → 6.5.0

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