rez_core 5.0.51 → 5.0.53

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 (427) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/.prettierrc +3 -3
  15. package/README.md +99 -99
  16. package/dist/module/auth/guards/role.guard.js +3 -3
  17. package/dist/module/auth/services/auth.service.js +2 -2
  18. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  19. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  20. package/dist/module/filter/service/filter.service.js +25 -23
  21. package/dist/module/filter/service/filter.service.js.map +1 -1
  22. package/dist/module/integration/examples/usage.example.js +9 -9
  23. package/dist/module/integration/service/integration.service.js +1 -1
  24. package/dist/module/integration/service/wrapper.service.js +26 -26
  25. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  26. package/dist/module/mapper/service/field-mapper.service.js +4 -4
  27. package/dist/module/meta/repository/entity-attribute-update.repository.js +3 -3
  28. package/dist/module/meta/repository/entity-master.repository.js +6 -6
  29. package/dist/module/meta/service/entity-dynamic.service.js +44 -44
  30. package/dist/module/meta/service/entity-list.service.js +3 -3
  31. package/dist/module/meta/service/entity-relation.service.js +9 -9
  32. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  33. package/dist/module/meta/service/resolver.service.js +3 -3
  34. package/dist/module/module/repository/menu.repository.js +17 -17
  35. package/dist/module/notification/service/notification.service.js +10 -10
  36. package/dist/module/user/controller/login.controller.js +18 -18
  37. package/dist/module/user/service/role.service.js +4 -4
  38. package/dist/module/user/service/user-session.service.js +2 -2
  39. package/dist/module/workflow/controller/action.controller.d.ts +1 -1
  40. package/dist/module/workflow/repository/action.repository.d.ts +4 -2
  41. package/dist/module/workflow/repository/action.repository.js +34 -26
  42. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  43. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  44. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  45. package/dist/module/workflow/repository/stage-group.repository.js +20 -20
  46. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  47. package/dist/module/workflow/repository/stage.repository.js +8 -8
  48. package/dist/module/workflow/service/action-template-mapping.service.js +13 -13
  49. package/dist/module/workflow/service/action.service.d.ts +1 -1
  50. package/dist/module/workflow/service/action.service.js +7 -7
  51. package/dist/module/workflow/service/entity-modification.service.js +2 -2
  52. package/dist/module/workflow/service/stage-group.service.js +2 -2
  53. package/dist/module/workflow/service/stage.service.js +2 -2
  54. package/dist/module/workflow/service/task.service.js +35 -35
  55. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  56. package/dist/module/workflow/service/workflow-meta.service.js +26 -26
  57. package/dist/module/workflow/service/workflow.service.js +2 -2
  58. package/dist/module/workflow-automation/service/schedule-handler.service.js +9 -9
  59. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  60. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  61. package/dist/tsconfig.build.tsbuildinfo +1 -1
  62. package/dist/utils/service/reflection-helper.service.js +2 -2
  63. package/docs/modules/event-driven-integration-design.md +91 -91
  64. package/docs/modules/integration.md +250 -250
  65. package/eslint.config.mjs +34 -34
  66. package/nest-cli.json +14 -14
  67. package/package.json +124 -124
  68. package/server.log +850 -0
  69. package/src/app.controller.ts +12 -12
  70. package/src/app.module.ts +66 -66
  71. package/src/app.service.ts +8 -8
  72. package/src/config/bull.config.ts +69 -69
  73. package/src/config/config.module.ts +17 -17
  74. package/src/config/database.config.ts +48 -48
  75. package/src/constant/global.constant.ts +67 -67
  76. package/src/core.module.ts +91 -91
  77. package/src/decorators/roles.decorator.ts +7 -7
  78. package/src/dtos/response.dto.ts +6 -6
  79. package/src/dtos/response.ts +5 -5
  80. package/src/index.ts +1 -1
  81. package/src/module/auth/auth.module.ts +49 -49
  82. package/src/module/auth/controller/auth.controller.ts +28 -28
  83. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  84. package/src/module/auth/guards/jwt.guard.ts +22 -22
  85. package/src/module/auth/guards/role.guard.ts +68 -68
  86. package/src/module/auth/services/auth.service.ts +50 -50
  87. package/src/module/auth/services/jwt.service.ts +11 -11
  88. package/src/module/auth/strategies/google.strategy.ts +54 -54
  89. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  90. package/src/module/auth/strategies/local.strategy.ts +13 -13
  91. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  92. package/src/module/dashboard/dashboard.module.ts +21 -21
  93. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  94. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  95. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  96. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  97. package/src/module/dev/dev.module.ts +12 -12
  98. package/src/module/dev/service/dev.service.ts +7 -7
  99. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  100. package/src/module/enterprise/enterprise.module.ts +30 -30
  101. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  102. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  103. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  104. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  105. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  106. package/src/module/enterprise/repository/school.repository.ts +278 -278
  107. package/src/module/enterprise/service/brand.service.ts +5 -5
  108. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  109. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  110. package/src/module/enterprise/service/organization.service.ts +145 -145
  111. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  112. package/src/module/entity_json/entity/entityJson.entity.ts +39 -39
  113. package/src/module/entity_json/entity_json.module.ts +18 -18
  114. package/src/module/entity_json/service/entityJson.repository.ts +37 -37
  115. package/src/module/entity_json/service/entity_json.service.ts +234 -234
  116. package/src/module/filter/controller/filter.controller.ts +84 -84
  117. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  118. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  119. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  120. package/src/module/filter/filter.module.ts +31 -31
  121. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  122. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  123. package/src/module/filter/service/filter.service.ts +1237 -1235
  124. package/src/module/filter/service/saved-filter.service.ts +170 -170
  125. package/src/module/ics/controller/ics.controller.ts +21 -21
  126. package/src/module/ics/dto/ics.dto.ts +55 -55
  127. package/src/module/ics/ics.module.ts +13 -13
  128. package/src/module/ics/service/ics.service.ts +57 -57
  129. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  130. package/src/module/integration/controller/integration.controller.ts +662 -662
  131. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  132. package/src/module/integration/dto/create-config.dto.ts +526 -526
  133. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  134. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  135. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  136. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  137. package/src/module/integration/examples/usage.example.ts +338 -338
  138. package/src/module/integration/factories/base.factory.ts +7 -7
  139. package/src/module/integration/factories/email.factory.ts +49 -49
  140. package/src/module/integration/factories/integration.factory.ts +121 -121
  141. package/src/module/integration/factories/sms.factory.ts +51 -51
  142. package/src/module/integration/factories/telephone.factory.ts +41 -41
  143. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  144. package/src/module/integration/integration.module.ts +110 -110
  145. package/src/module/integration/service/calendar-event.service.ts +118 -118
  146. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  147. package/src/module/integration/service/integration-queue.service.ts +229 -229
  148. package/src/module/integration/service/integration.service.ts +2633 -2633
  149. package/src/module/integration/service/oauth.service.ts +224 -224
  150. package/src/module/integration/service/wrapper.service.ts +701 -701
  151. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  152. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  153. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  154. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  155. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  156. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  157. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  158. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  159. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  160. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  161. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  162. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  163. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  164. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  165. package/src/module/layout/controller/layout.controller.ts +47 -47
  166. package/src/module/layout/entity/header-items.entity.ts +28 -28
  167. package/src/module/layout/entity/header-section.entity.ts +19 -19
  168. package/src/module/layout/layout.module.ts +21 -21
  169. package/src/module/layout/repository/header-items.repository.ts +18 -18
  170. package/src/module/layout/repository/header-section.repository.ts +22 -22
  171. package/src/module/layout/service/header-section.service.ts +25 -25
  172. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  173. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  174. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  175. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  176. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  177. package/src/module/lead/controller/lead.controller.ts +30 -30
  178. package/src/module/lead/lead.module.ts +14 -14
  179. package/src/module/lead/repository/lead.repository.ts +41 -41
  180. package/src/module/lead/service/lead.service.ts +54 -54
  181. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +37 -37
  182. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +51 -51
  183. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  184. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  185. package/src/module/linked_attributes/service/linked_attributes.service.ts +75 -75
  186. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  187. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  188. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  189. package/src/module/listmaster/listmaster.module.ts +46 -46
  190. package/src/module/listmaster/repository/list-master-items.repository.ts +173 -173
  191. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  192. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  193. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  194. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  195. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  196. package/src/module/listmaster/service/list-master.service.ts +535 -535
  197. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  198. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  199. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  200. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  201. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  202. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  203. package/src/module/mapper/mapper.module.ts +35 -35
  204. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  205. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  206. package/src/module/mapper/repository/mapper.repository.ts +32 -32
  207. package/src/module/mapper/service/field-mapper.service.ts +271 -271
  208. package/src/module/mapper/service/mapper.service.ts +81 -81
  209. package/src/module/master/controller/master.controller.ts +74 -74
  210. package/src/module/master/service/master.service.ts +483 -483
  211. package/src/module/meta/controller/app-master.controller.ts +38 -38
  212. package/src/module/meta/controller/attribute-master.controller.ts +84 -84
  213. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  214. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  215. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  216. package/src/module/meta/controller/entity.controller.ts +392 -392
  217. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  218. package/src/module/meta/controller/media.controller.ts +107 -107
  219. package/src/module/meta/controller/meta.controller.ts +96 -96
  220. package/src/module/meta/controller/view-master.controller.ts +86 -86
  221. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  222. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  223. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  224. package/src/module/meta/entity/app-master.entity.ts +34 -34
  225. package/src/module/meta/entity/attribute-master.entity.ts +92 -92
  226. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  227. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  228. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  229. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  230. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  231. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  232. package/src/module/meta/entity/media-data.entity.ts +32 -32
  233. package/src/module/meta/entity/preference.entity.ts +62 -62
  234. package/src/module/meta/entity/view-master.entity.ts +41 -41
  235. package/src/module/meta/entity.module.ts +166 -166
  236. package/src/module/meta/repository/app-master.repository.ts +20 -20
  237. package/src/module/meta/repository/attribute-master.repository.ts +138 -138
  238. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -44
  239. package/src/module/meta/repository/entity-master.repository.ts +111 -111
  240. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  241. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  242. package/src/module/meta/repository/media-data.repository.ts +50 -50
  243. package/src/module/meta/repository/preference.repository.ts +20 -20
  244. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  245. package/src/module/meta/repository/view-master.repository.ts +42 -42
  246. package/src/module/meta/service/app-master.service.ts +37 -37
  247. package/src/module/meta/service/attribute-master.service.ts +130 -130
  248. package/src/module/meta/service/common.service.ts +9 -9
  249. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  250. package/src/module/meta/service/entity-dynamic.service.ts +821 -821
  251. package/src/module/meta/service/entity-list.service.ts +205 -205
  252. package/src/module/meta/service/entity-master.service.ts +171 -171
  253. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  254. package/src/module/meta/service/entity-relation.service.ts +87 -87
  255. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  256. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  257. package/src/module/meta/service/entity-table.service.ts +150 -150
  258. package/src/module/meta/service/entity-validation.service.ts +187 -187
  259. package/src/module/meta/service/entity.service.ts +67 -67
  260. package/src/module/meta/service/field-group.service.ts +103 -103
  261. package/src/module/meta/service/media-data.service.ts +507 -507
  262. package/src/module/meta/service/populate-meta.service.ts +222 -222
  263. package/src/module/meta/service/preference.service.ts +16 -16
  264. package/src/module/meta/service/resolver.service.ts +291 -291
  265. package/src/module/meta/service/section-master.service.ts +104 -104
  266. package/src/module/meta/service/update-form-json.service.ts +22 -22
  267. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  268. package/src/module/meta/service/view-master.service.ts +127 -127
  269. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  270. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  271. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  272. package/src/module/module/controller/menu.controller.ts +15 -15
  273. package/src/module/module/controller/module-access.controller.ts +134 -134
  274. package/src/module/module/entity/menu.entity.ts +43 -43
  275. package/src/module/module/entity/module-access.entity.ts +25 -25
  276. package/src/module/module/entity/module-action.entity.ts +17 -17
  277. package/src/module/module/entity/module.entity.ts +52 -52
  278. package/src/module/module/module.module.ts +42 -42
  279. package/src/module/module/repository/menu.repository.ts +191 -191
  280. package/src/module/module/repository/module-access.repository.ts +344 -344
  281. package/src/module/module/service/menu.service.ts +82 -82
  282. package/src/module/module/service/module-access.service.ts +195 -195
  283. package/src/module/notification/controller/notification.controller.ts +58 -58
  284. package/src/module/notification/controller/otp.controller.ts +117 -117
  285. package/src/module/notification/entity/notification.entity.ts +26 -26
  286. package/src/module/notification/entity/otp.entity.ts +28 -28
  287. package/src/module/notification/firebase-admin.config.ts +22 -22
  288. package/src/module/notification/notification.module.ts +69 -69
  289. package/src/module/notification/repository/otp.repository.ts +27 -27
  290. package/src/module/notification/service/email.service.ts +127 -127
  291. package/src/module/notification/service/notification.service.ts +160 -160
  292. package/src/module/notification/service/otp.service.ts +133 -133
  293. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  294. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  295. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  296. package/src/module/third-party-module/third-party.module.ts +12 -12
  297. package/src/module/user/controller/login.controller.ts +198 -198
  298. package/src/module/user/controller/user.controller.ts +40 -40
  299. package/src/module/user/dto/create-user.dto.ts +62 -62
  300. package/src/module/user/dto/update-user.dto.ts +4 -4
  301. package/src/module/user/entity/role.entity.ts +33 -33
  302. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  303. package/src/module/user/entity/user-session.entity.ts +73 -73
  304. package/src/module/user/entity/user.entity.ts +59 -59
  305. package/src/module/user/repository/role.repository.ts +96 -96
  306. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  307. package/src/module/user/repository/user.repository.ts +50 -50
  308. package/src/module/user/repository/userSession.repository.ts +33 -33
  309. package/src/module/user/service/login.service.ts +326 -326
  310. package/src/module/user/service/role.service.ts +189 -189
  311. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  312. package/src/module/user/service/user-session.service.ts +168 -168
  313. package/src/module/user/service/user.service.ts +368 -368
  314. package/src/module/user/user.module.ts +65 -65
  315. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  316. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  317. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  318. package/src/module/workflow/controller/action.controller.ts +111 -111
  319. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  320. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  321. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  322. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  323. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  324. package/src/module/workflow/controller/stage.controller.ts +50 -50
  325. package/src/module/workflow/controller/task.controller.ts +77 -77
  326. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  327. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  328. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  329. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  330. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  331. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  332. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  333. package/src/module/workflow/entity/action.entity.ts +53 -53
  334. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  335. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  336. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  337. package/src/module/workflow/entity/form.entity.ts +25 -25
  338. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  339. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  340. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  341. package/src/module/workflow/entity/stage.entity.ts +20 -20
  342. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  343. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  344. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  345. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  346. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  347. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  348. package/src/module/workflow/repository/action-data.repository.ts +334 -334
  349. package/src/module/workflow/repository/action.repository.ts +329 -324
  350. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  351. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  352. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  353. package/src/module/workflow/repository/stage-group.repository.ts +197 -197
  354. package/src/module/workflow/repository/stage-movement.repository.ts +246 -246
  355. package/src/module/workflow/repository/stage.repository.ts +172 -172
  356. package/src/module/workflow/repository/task.repository.ts +134 -134
  357. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  358. package/src/module/workflow/service/action-category.service.ts +33 -33
  359. package/src/module/workflow/service/action-data.service.ts +62 -62
  360. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  361. package/src/module/workflow/service/action-template-mapping.service.ts +131 -131
  362. package/src/module/workflow/service/action.service.ts +279 -279
  363. package/src/module/workflow/service/activity-log.service.ts +107 -107
  364. package/src/module/workflow/service/comm-template.service.ts +180 -180
  365. package/src/module/workflow/service/entity-modification.service.ts +61 -61
  366. package/src/module/workflow/service/form-master.service.ts +35 -35
  367. package/src/module/workflow/service/populate-workflow.service.ts +331 -331
  368. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  369. package/src/module/workflow/service/stage-group.service.ts +342 -342
  370. package/src/module/workflow/service/stage.service.ts +199 -199
  371. package/src/module/workflow/service/task.service.ts +558 -558
  372. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  373. package/src/module/workflow/service/workflow-meta.service.ts +654 -654
  374. package/src/module/workflow/service/workflow.service.ts +205 -205
  375. package/src/module/workflow/workflow.module.ts +180 -180
  376. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  377. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  378. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  379. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  380. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  381. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  382. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  383. package/src/module/workflow-automation/service/schedule-handler.service.ts +168 -168
  384. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +224 -224
  385. package/src/module/workflow-automation/service/workflow-automation.service.ts +515 -515
  386. package/src/module/workflow-automation/workflow-automation.module.ts +54 -54
  387. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  388. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  389. package/src/module/workflow-schedule/README.md +422 -422
  390. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  391. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  392. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  393. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  394. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  395. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  396. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  397. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  398. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  399. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  400. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  401. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  402. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  403. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  404. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  405. package/src/resources/dev.properties.yaml +31 -31
  406. package/src/resources/local.properties.yaml +27 -27
  407. package/src/resources/properties.module.ts +12 -12
  408. package/src/resources/properties.yaml.ts +11 -11
  409. package/src/resources/uat.properties.yaml +31 -31
  410. package/src/table.config.ts +133 -133
  411. package/src/utils/dto/excel-data.dto.ts +14 -14
  412. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  413. package/src/utils/service/base64util.service.ts +18 -18
  414. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  415. package/src/utils/service/codeGenerator.service.ts +22 -22
  416. package/src/utils/service/dateUtil.service.ts +17 -17
  417. package/src/utils/service/encryptUtil.service.ts +97 -97
  418. package/src/utils/service/excel-helper.service.ts +72 -72
  419. package/src/utils/service/excelUtil.service.ts +15 -15
  420. package/src/utils/service/file-util.service.ts +11 -11
  421. package/src/utils/service/json-util.service.ts +23 -23
  422. package/src/utils/service/loggingUtil.service.ts +88 -88
  423. package/src/utils/service/reflection-helper.service.ts +62 -62
  424. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  425. package/src/utils/utils.module.ts +27 -27
  426. package/tsconfig.build.json +4 -4
  427. package/tsconfig.json +24 -24
@@ -42,8 +42,8 @@ let StageGroupService = class StageGroupService extends entity_service_impl_serv
42
42
  }
43
43
  async getAllStageGroup(workflow_id, organization_id) {
44
44
  const allStageGroup = await this.stageGroupRepository.getAllStageGroup(workflow_id, organization_id);
45
- const statusListMaster = await this.dataSource.query(`SELECT id, name
46
- FROM frm_list_master_items
45
+ const statusListMaster = await this.dataSource.query(`SELECT id, name
46
+ FROM frm_list_master_items
47
47
  WHERE listtype = 'STS' AND organization_id = $1`, [organization_id]);
48
48
  const statusMap = new Map(statusListMaster.map((s) => [String(s.id), s.name]));
49
49
  for (const stage of allStageGroup) {
@@ -35,8 +35,8 @@ let StageService = StageService_1 = class StageService extends entity_service_im
35
35
  async getAllStage(payload, organization_id, show_previous) {
36
36
  if (!show_previous) {
37
37
  const allStages = await this.stageRepository.getAllStage(payload.stage_group_id, organization_id);
38
- const statusListMaster = await this.dataSource.query(`SELECT id, name
39
- FROM frm_list_master_items
38
+ const statusListMaster = await this.dataSource.query(`SELECT id, name
39
+ FROM frm_list_master_items
40
40
  WHERE listtype = 'STS' AND organization_id = $1`, [organization_id]);
41
41
  const statusMap = new Map(statusListMaster.map((s) => [String(s.id), s.name]));
42
42
  for (const stage of allStages) {
@@ -101,24 +101,24 @@ let TaskService = class TaskService extends entity_service_impl_service_1.Entity
101
101
  return createdEntity;
102
102
  }
103
103
  async updateEntity(entityData, loggedInUser, appcode) {
104
- const taskStatusQuery = `
105
- SELECT name
106
- FROM frm_list_master_items
107
- WHERE id = $1
108
- AND organization_id = $2
109
- AND listtype = 'TKST'
110
- LIMIT 1;
104
+ const taskStatusQuery = `
105
+ SELECT name
106
+ FROM frm_list_master_items
107
+ WHERE id = $1
108
+ AND organization_id = $2
109
+ AND listtype = 'TKST'
110
+ LIMIT 1;
111
111
  `;
112
112
  const statusRows = await this.dataSource.query(taskStatusQuery, [
113
113
  entityData.status,
114
114
  loggedInUser.organization_id,
115
115
  ]);
116
- const oldStatusQuery = `
117
- SELECT *
118
- FROM frm_wf_task_data
119
- WHERE id = $1
120
- AND organization_id = $2
121
- LIMIT 1;
116
+ const oldStatusQuery = `
117
+ SELECT *
118
+ FROM frm_wf_task_data
119
+ WHERE id = $1
120
+ AND organization_id = $2
121
+ LIMIT 1;
122
122
  `;
123
123
  const [oldRow] = await this.dataSource.query(oldStatusQuery, [
124
124
  entityData.id,
@@ -216,27 +216,27 @@ let TaskService = class TaskService extends entity_service_impl_service_1.Entity
216
216
  params.push(mandatory ? "1" : "0");
217
217
  }
218
218
  if (overdue) {
219
- whereClauses.push(`
220
- (
221
- t.due_date < CURRENT_DATE
222
- OR (t.due_date = CURRENT_DATE AND t.due_time < CURRENT_TIME)
223
- )
219
+ whereClauses.push(`
220
+ (
221
+ t.due_date < CURRENT_DATE
222
+ OR (t.due_date = CURRENT_DATE AND t.due_time < CURRENT_TIME)
223
+ )
224
224
  `);
225
225
  whereClauses.push(`t.is_done::text = $${idx++}`);
226
226
  params.push("0");
227
227
  }
228
- const sql = `
229
- SELECT
230
- t.*,
231
- sg.name AS stage_group_name,
232
- s.name AS stage_name,
233
- a.name AS action_name
234
- FROM frm_wf_task_data t
235
- LEFT JOIN frm_wf_stage s ON t.stage_id::text = s.id::text
236
- LEFT JOIN frm_wf_stage_group sg ON s.stage_group_id = sg.id
237
- LEFT JOIN frm_wf_action a ON t.action_id::text = a.id::text
238
- WHERE ${whereClauses.join(" AND ")}
239
- ORDER BY t.created_date DESC
228
+ const sql = `
229
+ SELECT
230
+ t.*,
231
+ sg.name AS stage_group_name,
232
+ s.name AS stage_name,
233
+ a.name AS action_name
234
+ FROM frm_wf_task_data t
235
+ LEFT JOIN frm_wf_stage s ON t.stage_id::text = s.id::text
236
+ LEFT JOIN frm_wf_stage_group sg ON s.stage_group_id = sg.id
237
+ LEFT JOIN frm_wf_action a ON t.action_id::text = a.id::text
238
+ WHERE ${whereClauses.join(" AND ")}
239
+ ORDER BY t.created_date DESC
240
240
  `;
241
241
  const taskData = await this.dataSource.query(sql, params);
242
242
  if (taskData?.length) {
@@ -258,11 +258,11 @@ let TaskService = class TaskService extends entity_service_impl_service_1.Entity
258
258
  }
259
259
  if (!taskData.length)
260
260
  return [];
261
- const statusSql = `
262
- SELECT id, name
263
- FROM frm_list_master_items
264
- WHERE organization_id = $1
265
- AND listtype = 'TKST'
261
+ const statusSql = `
262
+ SELECT id, name
263
+ FROM frm_list_master_items
264
+ WHERE organization_id = $1
265
+ AND listtype = 'TKST'
266
266
  `;
267
267
  const allStatuses = await this.dataSource.query(statusSql, [
268
268
  loggedInUser.organization_id,
@@ -19,16 +19,16 @@ let WorkflowListMasterService = class WorkflowListMasterService extends entity_s
19
19
  this.dataSource = dataSource;
20
20
  }
21
21
  async getActionCategoryListByStageId(stageId) {
22
- const results = await this.dataSource.query(`
23
- SELECT
24
- ac.name AS name,
25
- ac.logo AS logo,
26
- ac.modalName AS modalName,
27
- a.action_requirement AS actionRequirement
28
- FROM frm_wf_stage_action_mapping sam
29
- JOIN frm_wf_action a ON sam.action_id = a.id
30
- JOIN frm_wf_action_category ac ON a.action_category = ac.id
31
- WHERE sam.stage_id = $1
22
+ const results = await this.dataSource.query(`
23
+ SELECT
24
+ ac.name AS name,
25
+ ac.logo AS logo,
26
+ ac.modalName AS modalName,
27
+ a.action_requirement AS actionRequirement
28
+ FROM frm_wf_stage_action_mapping sam
29
+ JOIN frm_wf_action a ON sam.action_id = a.id
30
+ JOIN frm_wf_action_category ac ON a.action_category = ac.id
31
+ WHERE sam.stage_id = $1
32
32
  `, [stageId]);
33
33
  return results.map((item) => ({
34
34
  name: item.name,
@@ -44,11 +44,11 @@ let WorkflowListMasterService = class WorkflowListMasterService extends entity_s
44
44
  }
45
45
  async getModes(loggedInUser) {
46
46
  const { organization_id } = loggedInUser;
47
- const modes = await this.dataSource.query(`
48
- SELECT id, name
49
- FROM frm_list_master_items
50
- WHERE listtype = 'MOD'
51
- AND organization_id = $1
47
+ const modes = await this.dataSource.query(`
48
+ SELECT id, name
49
+ FROM frm_list_master_items
50
+ WHERE listtype = 'MOD'
51
+ AND organization_id = $1
52
52
  `, [organization_id]);
53
53
  return modes;
54
54
  }
@@ -223,9 +223,9 @@ let WorkflowMetaService = class WorkflowMetaService extends entity_service_impl_
223
223
  action_id: entityData.action_id,
224
224
  }, loggedInUser);
225
225
  const leadData = await this.getEntityData('LEAD', lead_id, loggedInUser);
226
- const unassignedListMasterItemData = await this.dataSource.query(`SELECT name, id
227
- FROM frm_list_master_items
228
- WHERE listtype = "LEST" AND organization_id = $1
226
+ const unassignedListMasterItemData = await this.dataSource.query(`SELECT name, id
227
+ FROM frm_list_master_items
228
+ WHERE listtype = "LEST" AND organization_id = $1
229
229
  AND value IN ($2, $3)`, [loggedInUser.organization_id, 'unassigned', 'active']);
230
230
  const unassignedId = unassignedListMasterItemData.find((item) => item.name.toLowerCase() === 'unassigned')?.id;
231
231
  const activeId = unassignedListMasterItemData.find((item) => item.name.toLowerCase() === 'active')?.id;
@@ -237,24 +237,24 @@ let WorkflowMetaService = class WorkflowMetaService extends entity_service_impl_
237
237
  status: leadData?.lead_status,
238
238
  lead_status: leadData?.lead_status,
239
239
  }, loggedInUser);
240
- await this.dataSource.query(`UPDATE frm_wf_action_data SET user_id =$1
241
- WHERE mapped_entity_id=$2
242
- AND mapped_entity_type = $3
243
- AND stage_id = $4
244
- AND (is_current = 'Y' OR is_current IS NULL)
240
+ await this.dataSource.query(`UPDATE frm_wf_action_data SET user_id =$1
241
+ WHERE mapped_entity_id=$2
242
+ AND mapped_entity_type = $3
243
+ AND stage_id = $4
244
+ AND (is_current = 'Y' OR is_current IS NULL)
245
245
  `, [lead_owner, lead_id, entity_type, stage_id]);
246
- await this.dataSource.query(`UPDATE crm_lead_meeting SET user_id=$1
247
- WHERE stage_id = $2
248
- AND mapped_entity_id = $3
249
- AND mapped_entity_type = "LEAD"
250
- AND (status='scheduled' OR status='rescheduled')
246
+ await this.dataSource.query(`UPDATE crm_lead_meeting SET user_id=$1
247
+ WHERE stage_id = $2
248
+ AND mapped_entity_id = $3
249
+ AND mapped_entity_type = "LEAD"
250
+ AND (status='scheduled' OR status='rescheduled')
251
251
  `, [lead_owner, stage_id, lead_id]);
252
- const taskRows = await this.dataSource.query(`SELECT id,status FROM frm_wf_task_data
253
- WHERE mapped_entity_id = $1
254
- AND mapped_entity_type = $2
252
+ const taskRows = await this.dataSource.query(`SELECT id,status FROM frm_wf_task_data
253
+ WHERE mapped_entity_id = $1
254
+ AND mapped_entity_type = $2
255
255
  AND stage_id = $3`, [lead_id, entity_type, stage_id]);
256
256
  for (const task of taskRows) {
257
- const statusRows = await this.dataSource.query(`SELECT value FROM frm_list_master_items
257
+ const statusRows = await this.dataSource.query(`SELECT value FROM frm_list_master_items
258
258
  WHERE id = $1 AND organization_id = $2`, [task.status, loggedInUser.organization_id]);
259
259
  const statusName = statusRows[0]?.value?.toLowerCase() || '';
260
260
  if (['todo', 'in_progress'].includes(statusName) ||
@@ -314,15 +314,15 @@ let WorkflowMetaService = class WorkflowMetaService extends entity_service_impl_
314
314
  console.log('No eligible owners found for lead assignment.');
315
315
  const userIds = owners?.map((o) => Number(o.id));
316
316
  const placeholders = userIds.map(() => '?').join(',');
317
- const lastRow = await this.dataSource.query(`
318
- SELECT lead_owner
319
- FROM crm_lead
320
- WHERE organization_id = $1
321
- AND level_id = $2
322
- AND level_type = $3
323
- AND lead_owner IN (${placeholders})
324
- ORDER BY created_date DESC
325
- LIMIT 1
317
+ const lastRow = await this.dataSource.query(`
318
+ SELECT lead_owner
319
+ FROM crm_lead
320
+ WHERE organization_id = $1
321
+ AND level_id = $2
322
+ AND level_type = $3
323
+ AND lead_owner IN (${placeholders})
324
+ ORDER BY created_date DESC
325
+ LIMIT 1
326
326
  `, [organization_id, Number(level_id), level_type, ...userIds]);
327
327
  const lastAssigned = lastRow.length ? Number(lastRow[0].lead_owner) : null;
328
328
  const lastIdx = lastAssigned != null ? userIds.indexOf(lastAssigned) : -1;
@@ -72,8 +72,8 @@ let WorkflowService = class WorkflowService extends entity_service_impl_service_
72
72
  currentId: workflowId,
73
73
  })
74
74
  .execute();
75
- await this.dataSource.query(`UPDATE frm_wf_level_mapping
76
- SET workflow_id = $1
75
+ await this.dataSource.query(`UPDATE frm_wf_level_mapping
76
+ SET workflow_id = $1
77
77
  WHERE mapped_level_id = $2 AND mapped_level_type = $3`, [workflowId, level_id, level_type]);
78
78
  }
79
79
  return super.updateEntity(entityData, loggedInUser);
@@ -67,21 +67,21 @@ let ScheduleHandlerService = ScheduleHandlerService_1 = class ScheduleHandlerSer
67
67
  const fixedTime = scheduleJson.fixedTime;
68
68
  let comparisonDateCondition = '';
69
69
  if (executionDateName.includes('after')) {
70
- comparisonDateCondition = `
71
- ${executionDataOrTime} >= CURDATE() + INTERVAL ${executionUnits} DAY
72
- AND ${executionDataOrTime} < CURDATE() + INTERVAL ${executionUnits + 1} DAY
70
+ comparisonDateCondition = `
71
+ ${executionDataOrTime} >= CURDATE() + INTERVAL ${executionUnits} DAY
72
+ AND ${executionDataOrTime} < CURDATE() + INTERVAL ${executionUnits + 1} DAY
73
73
  `;
74
74
  }
75
75
  else if (executionDateName.includes('before')) {
76
- comparisonDateCondition = `
77
- ${executionDataOrTime} >= CURDATE() - INTERVAL ${executionUnits + 1} DAY
78
- AND ${executionDataOrTime} < CURDATE() - INTERVAL ${executionUnits} DAY
76
+ comparisonDateCondition = `
77
+ ${executionDataOrTime} >= CURDATE() - INTERVAL ${executionUnits + 1} DAY
78
+ AND ${executionDataOrTime} < CURDATE() - INTERVAL ${executionUnits} DAY
79
79
  `;
80
80
  }
81
81
  else if (executionDateName.includes('same')) {
82
- comparisonDateCondition = `
83
- ${executionDataOrTime} >= CURDATE()
84
- AND ${executionDataOrTime} < CURDATE() + INTERVAL 1 DAY
82
+ comparisonDateCondition = `
83
+ ${executionDataOrTime} >= CURDATE()
84
+ AND ${executionDataOrTime} < CURDATE() + INTERVAL 1 DAY
85
85
  `;
86
86
  }
87
87
  const qb = this.dataSource
@@ -257,8 +257,8 @@ let ScheduleProcessor = ScheduleProcessor_1 = class ScheduleProcessor {
257
257
  for (const batch of batches) {
258
258
  for (const record of batch) {
259
259
  try {
260
- await this.dataSource.query(`INSERT INTO cr_wf_task (name, description, status, mapped_entity_id, mapped_entity_type,
261
- organization_id, enterprise_id, created_by, created_date, entity_type)
260
+ await this.dataSource.query(`INSERT INTO cr_wf_task (name, description, status, mapped_entity_id, mapped_entity_type,
261
+ organization_id, enterprise_id, created_by, created_date, entity_type)
262
262
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW(), 'WFTK')`, [
263
263
  action.actionConfig.taskName || 'Scheduled Task',
264
264
  action.actionConfig.taskDescription || '',
@@ -303,8 +303,8 @@ let ScheduleProcessor = ScheduleProcessor_1 = class ScheduleProcessor {
303
303
  for (const batch of batches) {
304
304
  for (const record of batch) {
305
305
  try {
306
- await this.dataSource.query(`INSERT INTO cr_notification (user_id, event_type, message, mapped_entity_id,
307
- mapped_entity_type, is_read, organization_id, created_date, entity_type, status)
306
+ await this.dataSource.query(`INSERT INTO cr_notification (user_id, event_type, message, mapped_entity_id,
307
+ mapped_entity_type, is_read, organization_id, created_date, entity_type, status)
308
308
  VALUES (?, ?, ?, ?, ?, 0, ?, NOW(), 'NOTF', 'ACTIVE')`, [
309
309
  record.user_id || jobData.createdBy,
310
310
  action.actionConfig.eventType || 'WORKFLOW_SCHEDULED',
@@ -332,15 +332,15 @@ let WorkflowScheduleService = WorkflowScheduleService_1 = class WorkflowSchedule
332
332
  }
333
333
  async getExecutionStats(scheduleId, loggedInUser) {
334
334
  const schedule = await this.getScheduleById(scheduleId, loggedInUser);
335
- const stats = await this.dataSource.query(`SELECT
336
- COUNT(*) as total_executions,
337
- SUM(CASE WHEN execution_status = 'COMPLETED' THEN 1 ELSE 0 END) as successful_executions,
338
- SUM(CASE WHEN execution_status = 'FAILED' THEN 1 ELSE 0 END) as failed_executions,
339
- SUM(CASE WHEN execution_status = 'PENDING' THEN 1 ELSE 0 END) as pending_executions,
340
- SUM(CASE WHEN execution_status = 'RUNNING' THEN 1 ELSE 0 END) as running_executions,
341
- AVG(duration_ms) as average_duration_ms,
342
- SUM(total_records) as total_records_processed
343
- FROM cr_wf_execution_log
335
+ const stats = await this.dataSource.query(`SELECT
336
+ COUNT(*) as total_executions,
337
+ SUM(CASE WHEN execution_status = 'COMPLETED' THEN 1 ELSE 0 END) as successful_executions,
338
+ SUM(CASE WHEN execution_status = 'FAILED' THEN 1 ELSE 0 END) as failed_executions,
339
+ SUM(CASE WHEN execution_status = 'PENDING' THEN 1 ELSE 0 END) as pending_executions,
340
+ SUM(CASE WHEN execution_status = 'RUNNING' THEN 1 ELSE 0 END) as running_executions,
341
+ AVG(duration_ms) as average_duration_ms,
342
+ SUM(total_records) as total_records_processed
343
+ FROM cr_wf_execution_log
344
344
  WHERE schedule_id = ?`, [scheduleId]);
345
345
  const result = stats[0];
346
346
  const successRate = result.total_executions > 0