rez_core 5.0.42 → 5.0.44

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