rez_core 4.0.167 → 4.0.171

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 (599) hide show
  1. package/.prettierrc +3 -3
  2. package/README.md +99 -99
  3. package/dist/app.module.js +9 -0
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/config/bull.config.d.ts +10 -0
  6. package/dist/config/bull.config.js +66 -0
  7. package/dist/config/bull.config.js.map +1 -0
  8. package/dist/config/config.module.js +2 -2
  9. package/dist/config/config.module.js.map +1 -1
  10. package/dist/config/database.config.d.ts +1 -1
  11. package/dist/config/database.config.js +12 -16
  12. package/dist/config/database.config.js.map +1 -1
  13. package/dist/module/auth/guards/role.guard.js +3 -3
  14. package/dist/module/auth/services/auth.service.js +3 -3
  15. package/dist/module/auth/services/auth.service.js.map +1 -1
  16. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  17. package/dist/module/enterprise/repository/school.repository.js +3 -3
  18. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  19. package/dist/module/entity_json/controller/entity_json.controller.d.ts +8 -0
  20. package/dist/module/entity_json/controller/entity_json.controller.js +42 -0
  21. package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -0
  22. package/dist/module/entity_json/entity_json.module.d.ts +2 -0
  23. package/dist/module/entity_json/entity_json.module.js +26 -0
  24. package/dist/module/entity_json/entity_json.module.js.map +1 -0
  25. package/dist/module/entity_json/service/entity_json.service.d.ts +7 -0
  26. package/dist/module/entity_json/service/entity_json.service.js +80 -0
  27. package/dist/module/entity_json/service/entity_json.service.js.map +1 -0
  28. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  29. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  30. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  31. package/dist/module/filter/service/filter.service.d.ts +1 -4
  32. package/dist/module/filter/service/filter.service.js +39 -69
  33. package/dist/module/filter/service/filter.service.js.map +1 -1
  34. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  35. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  36. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  37. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  38. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  39. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  40. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  41. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  42. package/dist/module/integration/examples/usage.example.js +9 -9
  43. package/dist/module/integration/service/integration.service.js +1 -1
  44. package/dist/module/integration/service/wrapper.service.d.ts +3 -1
  45. package/dist/module/integration/service/wrapper.service.js +67 -65
  46. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  47. package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +5 -0
  48. package/dist/module/linked_attributes/controller/linked_attributes.controller.js +29 -0
  49. package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +1 -0
  50. package/dist/module/linked_attributes/entity/linked_attribute.entity.d.ts +9 -0
  51. package/dist/module/linked_attributes/entity/linked_attribute.entity.js +70 -0
  52. package/dist/module/linked_attributes/entity/linked_attribute.entity.js.map +1 -0
  53. package/dist/module/linked_attributes/linked_attributes.module.d.ts +2 -0
  54. package/dist/module/linked_attributes/linked_attributes.module.js +29 -0
  55. package/dist/module/linked_attributes/linked_attributes.module.js.map +1 -0
  56. package/dist/module/linked_attributes/repository/linked_attribute.repository.d.ts +6 -0
  57. package/dist/module/linked_attributes/repository/linked_attribute.repository.js +31 -0
  58. package/dist/module/linked_attributes/repository/linked_attribute.repository.js.map +1 -0
  59. package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +5 -0
  60. package/dist/module/linked_attributes/service/linked_attributes.service.js +34 -0
  61. package/dist/module/linked_attributes/service/linked_attributes.service.js.map +1 -0
  62. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  63. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  64. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  65. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  66. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  67. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  68. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  69. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  70. package/dist/module/mapper/service/field-mapper.service.js +7 -7
  71. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  72. package/dist/module/mapper/service/mapper.service.js +4 -4
  73. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  74. package/dist/module/meta/controller/attribute-master.controller.d.ts +4 -1
  75. package/dist/module/meta/controller/attribute-master.controller.js +15 -2
  76. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  77. package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
  78. package/dist/module/meta/entity/app-master.entity.js +4 -4
  79. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  80. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  81. package/dist/module/meta/entity/view-master.entity.js +1 -1
  82. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  83. package/dist/module/meta/entity.module.js +7 -0
  84. package/dist/module/meta/entity.module.js.map +1 -1
  85. package/dist/module/meta/repository/attribute-master.repository.js +2 -2
  86. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  87. package/dist/module/meta/repository/entity-attribute-update.repository.d.ts +6 -0
  88. package/dist/module/meta/repository/entity-attribute-update.repository.js +44 -0
  89. package/dist/module/meta/repository/entity-attribute-update.repository.js.map +1 -0
  90. package/dist/module/meta/repository/entity-master.repository.js +2 -2
  91. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  92. package/dist/module/meta/service/attribute-master.service.js +1 -1
  93. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  94. package/dist/module/meta/service/entity-attribute-update.service.d.ts +7 -0
  95. package/dist/module/meta/service/entity-attribute-update.service.js +36 -0
  96. package/dist/module/meta/service/entity-attribute-update.service.js.map +1 -0
  97. package/dist/module/meta/service/entity-dynamic.service.js +27 -27
  98. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  99. package/dist/module/meta/service/entity-list.service.js +3 -3
  100. package/dist/module/meta/service/entity-master.service.js +4 -4
  101. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  102. package/dist/module/meta/service/entity-relation.service.js +13 -13
  103. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  104. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  105. package/dist/module/meta/service/media-data.service.js +9 -9
  106. package/dist/module/meta/service/media-data.service.js.map +1 -1
  107. package/dist/module/meta/service/resolver.service.js +19 -19
  108. package/dist/module/meta/service/resolver.service.js.map +1 -1
  109. package/dist/module/module/repository/menu.repository.js +12 -12
  110. package/dist/module/notification/entity/otp.entity.js +1 -1
  111. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  112. package/dist/module/notification/service/notification.service.js +9 -9
  113. package/dist/module/user/controller/login.controller.js +18 -18
  114. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  115. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  116. package/dist/module/user/service/login.service.js +1 -1
  117. package/dist/module/user/service/login.service.js.map +1 -1
  118. package/dist/module/user/service/role.service.js +4 -4
  119. package/dist/module/user/service/user-session.service.js +4 -4
  120. package/dist/module/user/service/user-session.service.js.map +1 -1
  121. package/dist/module/workflow/entity/action-category.entity.d.ts +1 -1
  122. package/dist/module/workflow/entity/action-category.entity.js +1 -1
  123. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  124. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  125. package/dist/module/workflow/entity/action.entity.d.ts +1 -0
  126. package/dist/module/workflow/entity/action.entity.js +5 -1
  127. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  128. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  129. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  130. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  131. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  132. package/dist/module/workflow/repository/action-data.repository.js +5 -4
  133. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  134. package/dist/module/workflow/repository/action.repository.js +21 -21
  135. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  136. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  137. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  138. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  139. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  140. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  141. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  142. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  143. package/dist/module/workflow/repository/stage.repository.js +8 -8
  144. package/dist/module/workflow/repository/task.repository.d.ts +3 -1
  145. package/dist/module/workflow/repository/task.repository.js +10 -5
  146. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  147. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  148. package/dist/module/workflow/service/action.service.js +13 -13
  149. package/dist/module/workflow/service/action.service.js.map +1 -1
  150. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  151. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  152. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  153. package/dist/module/workflow/service/stage-group.service.js +6 -6
  154. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  155. package/dist/module/workflow/service/stage.service.js +4 -4
  156. package/dist/module/workflow/service/stage.service.js.map +1 -1
  157. package/dist/module/workflow/service/task.service.js +68 -54
  158. package/dist/module/workflow/service/task.service.js.map +1 -1
  159. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  160. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  161. package/dist/module/workflow/service/workflow-meta.service.js +53 -51
  162. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  163. package/dist/module/workflow/service/workflow.service.js +5 -5
  164. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  165. package/dist/module/workflow-automation/controller/workflow-automation.controller.d.ts +6 -0
  166. package/dist/module/workflow-automation/controller/workflow-automation.controller.js +16 -0
  167. package/dist/module/workflow-automation/controller/workflow-automation.controller.js.map +1 -1
  168. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
  169. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  170. package/dist/module/workflow-automation/entity/workflow-automation.entity.d.ts +2 -0
  171. package/dist/module/workflow-automation/entity/workflow-automation.entity.js +8 -0
  172. package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
  173. package/dist/module/workflow-automation/service/schedule-handler.service.d.ts +16 -0
  174. package/dist/module/workflow-automation/service/schedule-handler.service.js +109 -0
  175. package/dist/module/workflow-automation/service/schedule-handler.service.js.map +1 -0
  176. package/dist/module/workflow-automation/service/workflow-automation-engine.service.d.ts +1 -1
  177. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  178. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  179. package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +13 -1
  180. package/dist/module/workflow-automation/service/workflow-automation.service.js +115 -6
  181. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  182. package/dist/module/workflow-automation/workflow-automation.module.js +14 -1
  183. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  184. package/dist/module/workflow-schedule/constants/schedule.constants.d.ts +27 -0
  185. package/dist/module/workflow-schedule/constants/schedule.constants.js +31 -0
  186. package/dist/module/workflow-schedule/constants/schedule.constants.js.map +1 -0
  187. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.d.ts +83 -0
  188. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js +220 -0
  189. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js.map +1 -0
  190. package/dist/module/workflow-schedule/dto/create-schedule.dto.d.ts +32 -0
  191. package/dist/module/workflow-schedule/dto/create-schedule.dto.js +163 -0
  192. package/dist/module/workflow-schedule/dto/create-schedule.dto.js.map +1 -0
  193. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.d.ts +35 -0
  194. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js +124 -0
  195. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js.map +1 -0
  196. package/dist/module/workflow-schedule/dto/update-schedule.dto.d.ts +19 -0
  197. package/dist/module/workflow-schedule/dto/update-schedule.dto.js +106 -0
  198. package/dist/module/workflow-schedule/dto/update-schedule.dto.js.map +1 -0
  199. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.d.ts +30 -0
  200. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +113 -0
  201. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +1 -0
  202. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.d.ts +34 -0
  203. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +118 -0
  204. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +1 -0
  205. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.d.ts +44 -0
  206. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js +3 -0
  207. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js.map +1 -0
  208. package/dist/module/workflow-schedule/processors/schedule.processor.d.ts +31 -0
  209. package/dist/module/workflow-schedule/processors/schedule.processor.js +409 -0
  210. package/dist/module/workflow-schedule/processors/schedule.processor.js.map +1 -0
  211. package/dist/module/workflow-schedule/service/workflow-schedule.service.d.ts +44 -0
  212. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +434 -0
  213. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -0
  214. package/dist/module/workflow-schedule/workflow-schedule.module.d.ts +2 -0
  215. package/dist/module/workflow-schedule/workflow-schedule.module.js +44 -0
  216. package/dist/module/workflow-schedule/workflow-schedule.module.js.map +1 -0
  217. package/dist/table.config.js +5 -1
  218. package/dist/table.config.js.map +1 -1
  219. package/dist/tsconfig.build.tsbuildinfo +1 -1
  220. package/dist/utils/service/loggingUtil.service.d.ts +9 -2
  221. package/dist/utils/service/loggingUtil.service.js +65 -14
  222. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  223. package/dist/utils/service/reflection-helper.service.js +3 -3
  224. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  225. package/dist/utils/utils.module.js +2 -0
  226. package/dist/utils/utils.module.js.map +1 -1
  227. package/docs/modules/event-driven-integration-design.md +91 -91
  228. package/docs/modules/integration.md +250 -250
  229. package/eslint.config.mjs +34 -34
  230. package/nest-cli.json +14 -14
  231. package/package.json +124 -120
  232. package/src/app.controller.ts +12 -12
  233. package/src/app.module.ts +62 -52
  234. package/src/app.service.ts +8 -8
  235. package/src/config/bull.config.ts +69 -0
  236. package/src/config/config.module.ts +18 -17
  237. package/src/config/database.config.ts +23 -48
  238. package/src/constant/global.constant.ts +67 -67
  239. package/src/core.module.ts +81 -81
  240. package/src/decorators/roles.decorator.ts +7 -7
  241. package/src/dtos/response.dto.ts +6 -6
  242. package/src/dtos/response.ts +5 -5
  243. package/src/index.ts +1 -1
  244. package/src/module/auth/auth.module.ts +49 -49
  245. package/src/module/auth/controller/auth.controller.ts +28 -28
  246. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  247. package/src/module/auth/guards/jwt.guard.ts +22 -22
  248. package/src/module/auth/guards/role.guard.ts +68 -68
  249. package/src/module/auth/services/auth.service.ts +50 -50
  250. package/src/module/auth/services/jwt.service.ts +11 -11
  251. package/src/module/auth/strategies/google.strategy.ts +54 -54
  252. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  253. package/src/module/auth/strategies/local.strategy.ts +13 -13
  254. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  255. package/src/module/dashboard/dashboard.module.ts +21 -21
  256. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  257. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  258. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  259. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  260. package/src/module/dev/dev.module.ts +12 -12
  261. package/src/module/dev/service/dev.service.ts +7 -7
  262. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  263. package/src/module/enterprise/enterprise.module.ts +30 -30
  264. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  265. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  266. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  267. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  268. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  269. package/src/module/enterprise/repository/school.repository.ts +278 -278
  270. package/src/module/enterprise/service/brand.service.ts +5 -5
  271. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  272. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  273. package/src/module/enterprise/service/organization.service.ts +145 -145
  274. package/src/module/entity_json/controller/entity_json.controller.ts +21 -0
  275. package/src/module/entity_json/entity_json.module.ts +13 -0
  276. package/src/module/entity_json/service/entity_json.service.ts +88 -0
  277. package/src/module/filter/controller/filter.controller.ts +84 -84
  278. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  279. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  280. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  281. package/src/module/filter/filter.module.ts +31 -31
  282. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  283. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  284. package/src/module/filter/service/filter.service.ts +1005 -1053
  285. package/src/module/filter/service/saved-filter.service.ts +170 -170
  286. package/src/module/ics/controller/ics.controller.ts +21 -21
  287. package/src/module/ics/dto/ics.dto.ts +55 -55
  288. package/src/module/ics/ics.module.ts +13 -13
  289. package/src/module/ics/service/ics.service.ts +57 -57
  290. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  291. package/src/module/integration/controller/integration.controller.ts +662 -662
  292. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  293. package/src/module/integration/dto/create-config.dto.ts +526 -526
  294. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  295. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  296. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  297. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  298. package/src/module/integration/examples/usage.example.ts +338 -338
  299. package/src/module/integration/factories/base.factory.ts +7 -7
  300. package/src/module/integration/factories/email.factory.ts +49 -49
  301. package/src/module/integration/factories/integration.factory.ts +121 -121
  302. package/src/module/integration/factories/sms.factory.ts +51 -51
  303. package/src/module/integration/factories/telephone.factory.ts +41 -41
  304. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  305. package/src/module/integration/integration.module.ts +110 -110
  306. package/src/module/integration/service/calendar-event.service.ts +118 -118
  307. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  308. package/src/module/integration/service/integration-queue.service.ts +229 -229
  309. package/src/module/integration/service/integration.service.ts +2633 -2633
  310. package/src/module/integration/service/oauth.service.ts +224 -224
  311. package/src/module/integration/service/wrapper.service.ts +700 -494
  312. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  313. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  314. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  315. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  316. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  317. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  318. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  319. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  320. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  321. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  322. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  323. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  324. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  325. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  326. package/src/module/layout/controller/layout.controller.ts +47 -47
  327. package/src/module/layout/entity/header-items.entity.ts +28 -28
  328. package/src/module/layout/entity/header-section.entity.ts +19 -19
  329. package/src/module/layout/layout.module.ts +21 -21
  330. package/src/module/layout/repository/header-items.repository.ts +18 -18
  331. package/src/module/layout/repository/header-section.repository.ts +22 -22
  332. package/src/module/layout/service/header-section.service.ts +25 -25
  333. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  334. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  335. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  336. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  337. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  338. package/src/module/lead/controller/lead.controller.ts +30 -30
  339. package/src/module/lead/lead.module.ts +14 -14
  340. package/src/module/lead/repository/lead.repository.ts +41 -41
  341. package/src/module/lead/service/lead.service.ts +54 -54
  342. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +10 -0
  343. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +48 -0
  344. package/src/module/linked_attributes/linked_attributes.module.ts +16 -0
  345. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -0
  346. package/src/module/linked_attributes/service/linked_attributes.service.ts +22 -0
  347. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  348. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  349. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  350. package/src/module/listmaster/listmaster.module.ts +46 -46
  351. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  352. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  353. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  354. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  355. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  356. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  357. package/src/module/listmaster/service/list-master.service.ts +535 -535
  358. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  359. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  360. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  361. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  362. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  363. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  364. package/src/module/mapper/mapper.module.ts +34 -34
  365. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  366. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  367. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  368. package/src/module/mapper/service/field-mapper.service.ts +271 -266
  369. package/src/module/mapper/service/mapper.service.ts +79 -79
  370. package/src/module/master/controller/master.controller.ts +74 -74
  371. package/src/module/master/service/master.service.ts +483 -483
  372. package/src/module/meta/controller/app-master.controller.ts +38 -38
  373. package/src/module/meta/controller/attribute-master.controller.ts +74 -66
  374. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  375. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  376. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  377. package/src/module/meta/controller/entity.controller.ts +392 -392
  378. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  379. package/src/module/meta/controller/media.controller.ts +107 -107
  380. package/src/module/meta/controller/meta.controller.ts +96 -96
  381. package/src/module/meta/controller/view-master.controller.ts +86 -86
  382. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  383. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  384. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  385. package/src/module/meta/entity/app-master.entity.ts +34 -34
  386. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  387. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  388. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  389. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  390. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  391. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  392. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  393. package/src/module/meta/entity/media-data.entity.ts +32 -32
  394. package/src/module/meta/entity/preference.entity.ts +62 -62
  395. package/src/module/meta/entity/view-master.entity.ts +41 -41
  396. package/src/module/meta/entity.module.ts +166 -158
  397. package/src/module/meta/repository/app-master.repository.ts +20 -20
  398. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  399. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -0
  400. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  401. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  402. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  403. package/src/module/meta/repository/media-data.repository.ts +50 -50
  404. package/src/module/meta/repository/preference.repository.ts +20 -20
  405. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  406. package/src/module/meta/repository/view-master.repository.ts +42 -42
  407. package/src/module/meta/service/app-master.service.ts +37 -37
  408. package/src/module/meta/service/attribute-master.service.ts +126 -126
  409. package/src/module/meta/service/common.service.ts +9 -9
  410. package/src/module/meta/service/entity-attribute-update.service.ts +29 -0
  411. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  412. package/src/module/meta/service/entity-list.service.ts +205 -205
  413. package/src/module/meta/service/entity-master.service.ts +169 -169
  414. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  415. package/src/module/meta/service/entity-relation.service.ts +69 -69
  416. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  417. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  418. package/src/module/meta/service/entity-table.service.ts +150 -150
  419. package/src/module/meta/service/entity-validation.service.ts +187 -187
  420. package/src/module/meta/service/entity.service.ts +67 -67
  421. package/src/module/meta/service/field-group.service.ts +103 -103
  422. package/src/module/meta/service/media-data.service.ts +507 -507
  423. package/src/module/meta/service/populate-meta.service.ts +193 -193
  424. package/src/module/meta/service/preference.service.ts +16 -16
  425. package/src/module/meta/service/resolver.service.ts +267 -267
  426. package/src/module/meta/service/section-master.service.ts +104 -104
  427. package/src/module/meta/service/update-form-json.service.ts +22 -22
  428. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  429. package/src/module/meta/service/view-master.service.ts +127 -127
  430. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  431. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  432. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  433. package/src/module/module/controller/menu.controller.ts +15 -15
  434. package/src/module/module/controller/module-access.controller.ts +134 -134
  435. package/src/module/module/entity/menu.entity.ts +43 -43
  436. package/src/module/module/entity/module-access.entity.ts +25 -25
  437. package/src/module/module/entity/module-action.entity.ts +17 -17
  438. package/src/module/module/entity/module.entity.ts +52 -52
  439. package/src/module/module/module.module.ts +42 -42
  440. package/src/module/module/repository/menu.repository.ts +184 -184
  441. package/src/module/module/repository/module-access.repository.ts +344 -344
  442. package/src/module/module/service/menu.service.ts +82 -82
  443. package/src/module/module/service/module-access.service.ts +209 -209
  444. package/src/module/notification/controller/notification.controller.ts +58 -58
  445. package/src/module/notification/controller/otp.controller.ts +117 -117
  446. package/src/module/notification/entity/notification.entity.ts +26 -26
  447. package/src/module/notification/entity/otp.entity.ts +28 -28
  448. package/src/module/notification/firebase-admin.config.ts +22 -22
  449. package/src/module/notification/notification.module.ts +69 -69
  450. package/src/module/notification/repository/otp.repository.ts +27 -27
  451. package/src/module/notification/service/email.service.ts +127 -127
  452. package/src/module/notification/service/notification.service.ts +163 -163
  453. package/src/module/notification/service/otp.service.ts +132 -132
  454. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  455. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  456. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  457. package/src/module/third-party-module/third-party.module.ts +12 -12
  458. package/src/module/user/controller/login.controller.ts +197 -197
  459. package/src/module/user/controller/user.controller.ts +40 -40
  460. package/src/module/user/dto/create-user.dto.ts +62 -62
  461. package/src/module/user/dto/update-user.dto.ts +4 -4
  462. package/src/module/user/entity/role.entity.ts +33 -33
  463. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  464. package/src/module/user/entity/user-session.entity.ts +73 -73
  465. package/src/module/user/entity/user.entity.ts +59 -59
  466. package/src/module/user/repository/role.repository.ts +96 -96
  467. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  468. package/src/module/user/repository/user.repository.ts +50 -50
  469. package/src/module/user/repository/userSession.repository.ts +33 -33
  470. package/src/module/user/service/login.service.ts +304 -304
  471. package/src/module/user/service/role.service.ts +189 -189
  472. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  473. package/src/module/user/service/user-session.service.ts +168 -168
  474. package/src/module/user/service/user.service.ts +365 -365
  475. package/src/module/user/user.module.ts +65 -65
  476. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  477. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  478. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  479. package/src/module/workflow/controller/action.controller.ts +111 -111
  480. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  481. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  482. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  483. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  484. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  485. package/src/module/workflow/controller/stage.controller.ts +50 -50
  486. package/src/module/workflow/controller/task.controller.ts +77 -77
  487. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  488. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  489. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  490. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  491. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  492. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  493. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  494. package/src/module/workflow/entity/action.entity.ts +53 -50
  495. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  496. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  497. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  498. package/src/module/workflow/entity/form.entity.ts +25 -25
  499. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  500. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  501. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  502. package/src/module/workflow/entity/stage.entity.ts +20 -20
  503. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  504. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  505. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  506. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  507. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  508. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  509. package/src/module/workflow/repository/action-data.repository.ts +334 -333
  510. package/src/module/workflow/repository/action.repository.ts +323 -323
  511. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  512. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  513. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  514. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  515. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  516. package/src/module/workflow/repository/stage.repository.ts +172 -172
  517. package/src/module/workflow/repository/task.repository.ts +134 -126
  518. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  519. package/src/module/workflow/service/action-category.service.ts +33 -33
  520. package/src/module/workflow/service/action-data.service.ts +62 -62
  521. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  522. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  523. package/src/module/workflow/service/action.service.ts +279 -279
  524. package/src/module/workflow/service/activity-log.service.ts +107 -107
  525. package/src/module/workflow/service/comm-template.service.ts +180 -180
  526. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  527. package/src/module/workflow/service/form-master.service.ts +35 -35
  528. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  529. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  530. package/src/module/workflow/service/stage-group.service.ts +319 -319
  531. package/src/module/workflow/service/stage.service.ts +199 -199
  532. package/src/module/workflow/service/task.service.ts +569 -560
  533. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  534. package/src/module/workflow/service/workflow-meta.service.ts +654 -640
  535. package/src/module/workflow/service/workflow.service.ts +205 -205
  536. package/src/module/workflow/workflow.module.ts +176 -176
  537. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -21
  538. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  539. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -35
  540. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  541. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  542. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  543. package/src/module/workflow-automation/service/schedule-handler.service.ts +150 -0
  544. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  545. package/src/module/workflow-automation/service/workflow-automation.service.ts +508 -347
  546. package/src/module/workflow-automation/workflow-automation.module.ts +47 -34
  547. package/src/module/workflow-schedule/INSTALLATION.md +244 -0
  548. package/src/module/workflow-schedule/README.md +422 -0
  549. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -0
  550. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -0
  551. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -0
  552. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -0
  553. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -0
  554. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -0
  555. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -0
  556. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -0
  557. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -0
  558. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -0
  559. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -0
  560. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -0
  561. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -0
  562. package/src/module/workflow-schedule/workflow-schedule.module.ts +43 -0
  563. package/src/resources/dev.properties.yaml +30 -31
  564. package/src/resources/local.properties.yaml +27 -27
  565. package/src/resources/properties.module.ts +12 -12
  566. package/src/resources/properties.yaml.ts +11 -11
  567. package/src/resources/uat.properties.yaml +31 -31
  568. package/src/table.config.ts +130 -126
  569. package/src/utils/dto/excel-data.dto.ts +14 -14
  570. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  571. package/src/utils/service/base64util.service.ts +18 -18
  572. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  573. package/src/utils/service/codeGenerator.service.ts +22 -22
  574. package/src/utils/service/dateUtil.service.ts +17 -17
  575. package/src/utils/service/encryptUtil.service.ts +97 -97
  576. package/src/utils/service/excel-helper.service.ts +72 -72
  577. package/src/utils/service/excelUtil.service.ts +15 -15
  578. package/src/utils/service/file-util.service.ts +11 -11
  579. package/src/utils/service/json-util.service.ts +23 -23
  580. package/src/utils/service/loggingUtil.service.ts +88 -34
  581. package/src/utils/service/reflection-helper.service.ts +62 -62
  582. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  583. package/src/utils/utils.module.ts +27 -25
  584. package/tsconfig.build.json +4 -4
  585. package/tsconfig.json +24 -24
  586. package/.claude/settings.local.json +0 -26
  587. package/.idea/250218_nodejs_core.iml +0 -9
  588. package/.idea/codeStyles/Project.xml +0 -59
  589. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  590. package/.idea/copilot.data.migration.agent.xml +0 -6
  591. package/.idea/copilot.data.migration.ask.xml +0 -6
  592. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  593. package/.idea/copilot.data.migration.edit.xml +0 -6
  594. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  595. package/.idea/misc.xml +0 -6
  596. package/.idea/modules.xml +0 -8
  597. package/.idea/prettier.xml +0 -6
  598. package/.idea/vcs.xml +0 -6
  599. package/server.log +0 -850
@@ -0,0 +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
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Constants for Workflow Schedule Module
3
+ */
4
+
5
+ // Entity Types
6
+ export const SCHEDULED_WORKFLOW = 'WFSC';
7
+ export const WORKFLOW_EXECUTION_LOG = 'WFEL';
8
+
9
+ // Queue Names
10
+ export const WORKFLOW_SCHEDULE_QUEUE = 'workflow-schedule';
11
+
12
+ // Job Names
13
+ export const EXECUTE_SCHEDULED_WORKFLOW_JOB = 'execute-scheduled-workflow';
14
+
15
+ // Schedule Status
16
+ export const SCHEDULE_STATUS_ACTIVE = 'ACTIVE';
17
+ export const SCHEDULE_STATUS_PAUSED = 'PAUSED';
18
+ export const SCHEDULE_STATUS_INACTIVE = 'INACTIVE';
19
+ export const SCHEDULE_STATUS_EXPIRED = 'EXPIRED';
20
+
21
+ // Execution Status
22
+ export const EXECUTION_STATUS_PENDING = 'PENDING';
23
+ export const EXECUTION_STATUS_RUNNING = 'RUNNING';
24
+ export const EXECUTION_STATUS_COMPLETED = 'COMPLETED';
25
+ export const EXECUTION_STATUS_FAILED = 'FAILED';
26
+ export const EXECUTION_STATUS_PARTIAL = 'PARTIAL';
27
+
28
+ // Workflow Types
29
+ export const WORKFLOW_TYPE_AUTOMATED = 'AUTOMATED';
30
+ export const WORKFLOW_TYPE_MANUAL = 'MANUAL';
31
+ export const WORKFLOW_TYPE_SCHEDULED = 'SCHEDULED';
32
+
33
+ // Action Types
34
+ export const ACTION_TYPE_SEND_EMAIL = 'SEND_EMAIL';
35
+ export const ACTION_TYPE_UPDATE_RECORDS = 'UPDATE_RECORDS';
36
+ export const ACTION_TYPE_CREATE_TASK = 'CREATE_TASK';
37
+ export const ACTION_TYPE_SEND_NOTIFICATION = 'SEND_NOTIFICATION';
38
+
39
+ // Default Values
40
+ export const DEFAULT_BATCH_SIZE = 100;
41
+ export const DEFAULT_MAX_RETRIES = 3;
42
+ export const DEFAULT_RETRY_DELAY = 5000; // 5 seconds
43
+ export const DEFAULT_BACKOFF_MULTIPLIER = 2;
44
+ export const DEFAULT_TIMEZONE = 'Asia/Kolkata';
45
+
46
+ // Time Constants
47
+ export const SECONDS_IN_MINUTE = 60;
48
+ export const MILLISECONDS_IN_SECOND = 1000;
@@ -0,0 +1,255 @@
1
+ import {
2
+ Controller,
3
+ Post,
4
+ Get,
5
+ Put,
6
+ Delete,
7
+ Body,
8
+ Param,
9
+ Query,
10
+ Req,
11
+ UseGuards,
12
+ HttpCode,
13
+ HttpStatus,
14
+ ParseIntPipe,
15
+ } from '@nestjs/common';
16
+ import { Request } from 'express';
17
+ import { JwtAuthGuard } from '../../auth/guards/jwt.guard';
18
+ import { WorkflowScheduleService } from '../service/workflow-schedule.service';
19
+ import { CreateScheduleDto } from '../dto/create-schedule.dto';
20
+ import { UpdateScheduleDto } from '../dto/update-schedule.dto';
21
+ import { GetExecutionLogsDto } from '../dto/get-execution-logs.dto';
22
+
23
+ /**
24
+ * Workflow Schedule Controller
25
+ * Provides REST API endpoints for managing scheduled workflows
26
+ */
27
+ @Controller('workflow-schedule')
28
+ @UseGuards(JwtAuthGuard)
29
+ export class WorkflowScheduleController {
30
+ constructor(private readonly workflowScheduleService: WorkflowScheduleService) {}
31
+
32
+ /**
33
+ * 1. Create a new scheduled workflow
34
+ * POST /workflow-schedule/create
35
+ */
36
+ @Post('/create')
37
+ @HttpCode(HttpStatus.CREATED)
38
+ async createSchedule(
39
+ @Body() createScheduleDto: CreateScheduleDto,
40
+ @Req() req: Request & { user: any },
41
+ ) {
42
+ const loggedInUser = req.user.userData;
43
+ const schedule = await this.workflowScheduleService.createSchedule(
44
+ createScheduleDto,
45
+ loggedInUser,
46
+ );
47
+
48
+ return {
49
+ success: true,
50
+ message: 'Scheduled workflow created successfully',
51
+ data: schedule,
52
+ };
53
+ }
54
+
55
+ /**
56
+ * 2. Update an existing scheduled workflow
57
+ * PUT /workflow-schedule/update
58
+ */
59
+ @Put('/update')
60
+ @HttpCode(HttpStatus.OK)
61
+ async updateSchedule(
62
+ @Body() updateScheduleDto: UpdateScheduleDto,
63
+ @Req() req: Request & { user: any },
64
+ ) {
65
+ const loggedInUser = req.user.userData;
66
+ const schedule = await this.workflowScheduleService.updateSchedule(
67
+ updateScheduleDto,
68
+ loggedInUser,
69
+ );
70
+
71
+ return {
72
+ success: true,
73
+ message: 'Scheduled workflow updated successfully',
74
+ data: schedule,
75
+ };
76
+ }
77
+
78
+ /**
79
+ * 3. Get a scheduled workflow by ID
80
+ * GET /workflow-schedule/:id
81
+ */
82
+ @Get('/:id')
83
+ @HttpCode(HttpStatus.OK)
84
+ async getScheduleById(
85
+ @Param('id', ParseIntPipe) id: number,
86
+ @Req() req: Request & { user: any },
87
+ ) {
88
+ const loggedInUser = req.user.userData;
89
+ const schedule = await this.workflowScheduleService.getScheduleById(id, loggedInUser);
90
+
91
+ return {
92
+ success: true,
93
+ data: schedule,
94
+ };
95
+ }
96
+
97
+ /**
98
+ * 4. Get all scheduled workflows with pagination and filters
99
+ * GET /workflow-schedule/list
100
+ */
101
+ @Get('/list')
102
+ @HttpCode(HttpStatus.OK)
103
+ async getAllSchedules(
104
+ @Query('workflow_id') workflow_id: string | undefined,
105
+ @Query('schedule_status') schedule_status: string | undefined,
106
+ @Query('is_enabled') is_enabled: string | undefined,
107
+ @Query('page') page: string | undefined,
108
+ @Query('size') size: string | undefined,
109
+ @Req() req: Request & { user: any },
110
+ ) {
111
+ const loggedInUser = req.user.userData;
112
+
113
+ const filters: Record<string, any> = {};
114
+ if (workflow_id) filters.workflow_id = Number.parseInt(workflow_id, 10);
115
+ if (schedule_status) filters.schedule_status = schedule_status;
116
+ if (is_enabled !== undefined) filters.is_enabled = is_enabled === 'true';
117
+
118
+ const result = await this.workflowScheduleService.getAllSchedules(
119
+ page ? Number.parseInt(page, 10) : 1,
120
+ size ? Number.parseInt(size, 10) : 10,
121
+ filters,
122
+ loggedInUser,
123
+ );
124
+
125
+ return {
126
+ success: true,
127
+ ...result,
128
+ };
129
+ }
130
+
131
+ /**
132
+ * 5. Pause a scheduled workflow
133
+ * POST /workflow-schedule/:id/pause
134
+ */
135
+ @Post('/:id/pause')
136
+ @HttpCode(HttpStatus.OK)
137
+ async pauseSchedule(
138
+ @Param('id', ParseIntPipe) id: number,
139
+ @Req() req: Request & { user: any },
140
+ ) {
141
+ const loggedInUser = req.user.userData;
142
+ const schedule = await this.workflowScheduleService.pauseSchedule(id, loggedInUser);
143
+
144
+ return {
145
+ success: true,
146
+ message: 'Scheduled workflow paused successfully',
147
+ data: schedule,
148
+ };
149
+ }
150
+
151
+ /**
152
+ * 6. Resume a paused scheduled workflow
153
+ * POST /workflow-schedule/:id/resume
154
+ */
155
+ @Post('/:id/resume')
156
+ @HttpCode(HttpStatus.OK)
157
+ async resumeSchedule(
158
+ @Param('id', ParseIntPipe) id: number,
159
+ @Req() req: Request & { user: any },
160
+ ) {
161
+ const loggedInUser = req.user.userData;
162
+ const schedule = await this.workflowScheduleService.resumeSchedule(id, loggedInUser);
163
+
164
+ return {
165
+ success: true,
166
+ message: 'Scheduled workflow resumed successfully',
167
+ data: schedule,
168
+ };
169
+ }
170
+
171
+ /**
172
+ * 7. Delete a scheduled workflow
173
+ * DELETE /workflow-schedule/:id
174
+ */
175
+ @Delete('/:id')
176
+ @HttpCode(HttpStatus.OK)
177
+ async deleteSchedule(
178
+ @Param('id', ParseIntPipe) id: number,
179
+ @Req() req: Request & { user: any },
180
+ ) {
181
+ const loggedInUser = req.user.userData;
182
+ await this.workflowScheduleService.deleteSchedule(id, loggedInUser);
183
+
184
+ return {
185
+ success: true,
186
+ message: 'Scheduled workflow deleted successfully',
187
+ };
188
+ }
189
+
190
+ /**
191
+ * 8. Manually trigger a scheduled workflow execution
192
+ * POST /workflow-schedule/:id/trigger
193
+ */
194
+ @Post('/:id/trigger')
195
+ @HttpCode(HttpStatus.OK)
196
+ async triggerManualExecution(
197
+ @Param('id', ParseIntPipe) id: number,
198
+ @Body('metadata') metadata: Record<string, any>,
199
+ @Req() req: Request & { user: any },
200
+ ) {
201
+ const loggedInUser = req.user.userData;
202
+ const result = await this.workflowScheduleService.triggerManualExecution(
203
+ id,
204
+ loggedInUser,
205
+ metadata,
206
+ );
207
+
208
+ return {
209
+ success: true,
210
+ message: 'Workflow execution triggered successfully',
211
+ data: result,
212
+ };
213
+ }
214
+
215
+ /**
216
+ * 9. Get execution logs with filters and pagination
217
+ * POST /workflow-schedule/execution-logs
218
+ */
219
+ @Post('/execution-logs')
220
+ @HttpCode(HttpStatus.OK)
221
+ async getExecutionLogs(
222
+ @Body() getExecutionLogsDto: GetExecutionLogsDto,
223
+ @Req() req: Request & { user: any },
224
+ ) {
225
+ const loggedInUser = req.user.userData;
226
+ const result = await this.workflowScheduleService.getExecutionLogs(
227
+ getExecutionLogsDto,
228
+ loggedInUser,
229
+ );
230
+
231
+ return {
232
+ success: true,
233
+ ...result,
234
+ };
235
+ }
236
+
237
+ /**
238
+ * BONUS: Get execution statistics for a schedule
239
+ * GET /workflow-schedule/:id/stats
240
+ */
241
+ @Get('/:id/stats')
242
+ @HttpCode(HttpStatus.OK)
243
+ async getExecutionStats(
244
+ @Param('id', ParseIntPipe) id: number,
245
+ @Req() req: Request & { user: any },
246
+ ) {
247
+ const loggedInUser = req.user.userData;
248
+ const stats = await this.workflowScheduleService.getExecutionStats(id, loggedInUser);
249
+
250
+ return {
251
+ success: true,
252
+ data: stats,
253
+ };
254
+ }
255
+ }