rez_core 4.0.138 → 4.0.140

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 (439) 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/config/config.module.js +2 -2
  17. package/dist/config/config.module.js.map +1 -1
  18. package/dist/config/database.config.d.ts +1 -1
  19. package/dist/config/database.config.js +15 -12
  20. package/dist/config/database.config.js.map +1 -1
  21. package/dist/module/auth/guards/role.guard.js +3 -3
  22. package/dist/module/auth/services/auth.service.js +3 -3
  23. package/dist/module/auth/services/auth.service.js.map +1 -1
  24. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  25. package/dist/module/enterprise/repository/school.repository.js +2 -2
  26. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  27. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  28. package/dist/module/filter/service/filter-evaluator.service.js +2 -2
  29. package/dist/module/filter/service/filter.service.js +22 -22
  30. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  31. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  32. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  33. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  34. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  35. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  36. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  37. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  38. package/dist/module/integration/examples/usage.example.js +9 -9
  39. package/dist/module/integration/service/integration.service.js +1 -1
  40. package/dist/module/integration/service/wrapper.service.d.ts +1 -3
  41. package/dist/module/integration/service/wrapper.service.js +61 -64
  42. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  43. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  44. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  45. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  46. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  47. package/dist/module/listmaster/service/list-master-item.service.js +2 -2
  48. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  49. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  50. package/dist/module/mapper/service/field-mapper.service.js +6 -6
  51. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  52. package/dist/module/mapper/service/mapper.service.js +2 -2
  53. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  54. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  55. package/dist/module/meta/entity/view-master.entity.js +1 -1
  56. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  57. package/dist/module/meta/service/attribute-master.service.js +1 -1
  58. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  59. package/dist/module/meta/service/entity-dynamic.service.js +9 -9
  60. package/dist/module/meta/service/entity-list.service.js +3 -3
  61. package/dist/module/meta/service/entity-master.service.js +3 -3
  62. package/dist/module/meta/service/entity-relation.service.js +11 -11
  63. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  64. package/dist/module/meta/service/resolver.service.js +5 -5
  65. package/dist/module/meta/service/resolver.service.js.map +1 -1
  66. package/dist/module/module/repository/menu.repository.js +12 -12
  67. package/dist/module/notification/entity/otp.entity.js +1 -1
  68. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  69. package/dist/module/notification/service/notification.service.js +9 -9
  70. package/dist/module/user/controller/login.controller.js +18 -18
  71. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  72. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  73. package/dist/module/user/service/role.service.js +4 -4
  74. package/dist/module/user/service/user-session.service.js +2 -2
  75. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  76. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  77. package/dist/module/workflow/entity/action.entity.js +1 -1
  78. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  79. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  80. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  81. package/dist/module/workflow/repository/action.repository.js +20 -20
  82. package/dist/module/workflow/repository/comm-template.repository.js +6 -6
  83. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  84. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  85. package/dist/module/workflow/repository/stage-movement.repository.js +15 -15
  86. package/dist/module/workflow/repository/stage.repository.js +8 -8
  87. package/dist/module/workflow/repository/task.repository.d.ts +1 -3
  88. package/dist/module/workflow/repository/task.repository.js +3 -8
  89. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  90. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  91. package/dist/module/workflow/service/action.service.js +7 -7
  92. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  93. package/dist/module/workflow/service/stage-group.service.js +2 -2
  94. package/dist/module/workflow/service/stage.service.js +2 -2
  95. package/dist/module/workflow/service/task.service.js +41 -36
  96. package/dist/module/workflow/service/task.service.js.map +1 -1
  97. package/dist/module/workflow/service/workflow-list-master.service.js +15 -15
  98. package/dist/module/workflow/service/workflow-meta.service.js +47 -49
  99. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  100. package/dist/module/workflow/service/workflow.service.js +2 -2
  101. package/dist/tsconfig.build.tsbuildinfo +1 -1
  102. package/dist/utils/service/loggingUtil.service.d.ts +2 -9
  103. package/dist/utils/service/loggingUtil.service.js +14 -65
  104. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  105. package/dist/utils/service/reflection-helper.service.js +2 -2
  106. package/dist/utils/utils.module.js +0 -2
  107. package/dist/utils/utils.module.js.map +1 -1
  108. package/docs/modules/event-driven-integration-design.md +91 -91
  109. package/docs/modules/integration.md +250 -250
  110. package/eslint.config.mjs +34 -34
  111. package/nest-cli.json +14 -14
  112. package/package.json +120 -119
  113. package/server.log +850 -0
  114. package/src/app.controller.ts +12 -12
  115. package/src/app.module.ts +52 -52
  116. package/src/app.service.ts +8 -8
  117. package/src/config/config.module.ts +17 -18
  118. package/src/config/database.config.ts +47 -23
  119. package/src/constant/global.constant.ts +67 -67
  120. package/src/core.module.ts +81 -81
  121. package/src/decorators/roles.decorator.ts +7 -7
  122. package/src/dtos/response.dto.ts +6 -6
  123. package/src/dtos/response.ts +5 -5
  124. package/src/index.ts +1 -1
  125. package/src/module/auth/auth.module.ts +49 -49
  126. package/src/module/auth/controller/auth.controller.ts +28 -28
  127. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  128. package/src/module/auth/guards/jwt.guard.ts +22 -22
  129. package/src/module/auth/guards/role.guard.ts +68 -68
  130. package/src/module/auth/services/auth.service.ts +50 -50
  131. package/src/module/auth/services/jwt.service.ts +11 -11
  132. package/src/module/auth/strategies/google.strategy.ts +54 -54
  133. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  134. package/src/module/auth/strategies/local.strategy.ts +13 -13
  135. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  136. package/src/module/dashboard/dashboard.module.ts +21 -21
  137. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  138. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  139. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  140. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  141. package/src/module/dev/dev.module.ts +12 -12
  142. package/src/module/dev/service/dev.service.ts +7 -7
  143. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  144. package/src/module/enterprise/enterprise.module.ts +30 -30
  145. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  146. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  147. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  148. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  149. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  150. package/src/module/enterprise/repository/school.repository.ts +278 -278
  151. package/src/module/enterprise/service/brand.service.ts +5 -5
  152. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  153. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  154. package/src/module/enterprise/service/organization.service.ts +145 -145
  155. package/src/module/filter/controller/filter.controller.ts +84 -84
  156. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  157. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  158. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  159. package/src/module/filter/filter.module.ts +31 -31
  160. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  161. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  162. package/src/module/filter/service/filter.service.ts +1005 -1005
  163. package/src/module/filter/service/saved-filter.service.ts +170 -170
  164. package/src/module/ics/controller/ics.controller.ts +21 -21
  165. package/src/module/ics/dto/ics.dto.ts +55 -55
  166. package/src/module/ics/ics.module.ts +13 -13
  167. package/src/module/ics/service/ics.service.ts +57 -57
  168. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  169. package/src/module/integration/controller/integration.controller.ts +662 -662
  170. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  171. package/src/module/integration/dto/create-config.dto.ts +526 -526
  172. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  173. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  174. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  175. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  176. package/src/module/integration/examples/usage.example.ts +338 -338
  177. package/src/module/integration/factories/base.factory.ts +7 -7
  178. package/src/module/integration/factories/email.factory.ts +49 -49
  179. package/src/module/integration/factories/integration.factory.ts +121 -121
  180. package/src/module/integration/factories/sms.factory.ts +51 -51
  181. package/src/module/integration/factories/telephone.factory.ts +41 -41
  182. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  183. package/src/module/integration/integration.module.ts +110 -110
  184. package/src/module/integration/service/calendar-event.service.ts +118 -118
  185. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  186. package/src/module/integration/service/integration-queue.service.ts +229 -229
  187. package/src/module/integration/service/integration.service.ts +2633 -2633
  188. package/src/module/integration/service/oauth.service.ts +224 -224
  189. package/src/module/integration/service/wrapper.service.ts +493 -700
  190. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  191. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  192. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  193. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  194. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  195. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  196. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  197. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  198. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  199. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  200. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  201. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  202. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  203. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  204. package/src/module/layout/controller/layout.controller.ts +47 -47
  205. package/src/module/layout/entity/header-items.entity.ts +28 -28
  206. package/src/module/layout/entity/header-section.entity.ts +19 -19
  207. package/src/module/layout/layout.module.ts +21 -21
  208. package/src/module/layout/repository/header-items.repository.ts +18 -18
  209. package/src/module/layout/repository/header-section.repository.ts +22 -22
  210. package/src/module/layout/service/header-section.service.ts +25 -25
  211. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  212. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  213. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  214. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  215. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  216. package/src/module/lead/controller/lead.controller.ts +30 -30
  217. package/src/module/lead/lead.module.ts +14 -14
  218. package/src/module/lead/repository/lead.repository.ts +41 -41
  219. package/src/module/lead/service/lead.service.ts +54 -54
  220. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  221. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  222. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  223. package/src/module/listmaster/listmaster.module.ts +46 -46
  224. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  225. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  226. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  227. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  228. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  229. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  230. package/src/module/listmaster/service/list-master.service.ts +535 -535
  231. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  232. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  233. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  234. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  235. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  236. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  237. package/src/module/mapper/mapper.module.ts +34 -34
  238. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  239. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  240. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  241. package/src/module/mapper/service/field-mapper.service.ts +266 -271
  242. package/src/module/mapper/service/mapper.service.ts +79 -79
  243. package/src/module/master/controller/master.controller.ts +74 -74
  244. package/src/module/master/service/master.service.ts +483 -483
  245. package/src/module/meta/controller/app-master.controller.ts +38 -38
  246. package/src/module/meta/controller/attribute-master.controller.ts +66 -66
  247. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  248. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  249. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  250. package/src/module/meta/controller/entity.controller.ts +392 -392
  251. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  252. package/src/module/meta/controller/media.controller.ts +107 -107
  253. package/src/module/meta/controller/meta.controller.ts +96 -96
  254. package/src/module/meta/controller/view-master.controller.ts +86 -86
  255. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  256. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  257. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  258. package/src/module/meta/entity/app-master.entity.ts +34 -34
  259. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  260. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  261. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  262. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  263. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  264. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  265. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  266. package/src/module/meta/entity/media-data.entity.ts +32 -32
  267. package/src/module/meta/entity/preference.entity.ts +62 -62
  268. package/src/module/meta/entity/view-master.entity.ts +41 -41
  269. package/src/module/meta/entity.module.ts +158 -158
  270. package/src/module/meta/repository/app-master.repository.ts +20 -20
  271. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  272. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  273. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  274. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  275. package/src/module/meta/repository/media-data.repository.ts +50 -50
  276. package/src/module/meta/repository/preference.repository.ts +20 -20
  277. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  278. package/src/module/meta/repository/view-master.repository.ts +42 -42
  279. package/src/module/meta/service/app-master.service.ts +37 -37
  280. package/src/module/meta/service/attribute-master.service.ts +126 -126
  281. package/src/module/meta/service/common.service.ts +9 -9
  282. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  283. package/src/module/meta/service/entity-list.service.ts +205 -205
  284. package/src/module/meta/service/entity-master.service.ts +169 -169
  285. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  286. package/src/module/meta/service/entity-relation.service.ts +69 -69
  287. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  288. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  289. package/src/module/meta/service/entity-table.service.ts +150 -150
  290. package/src/module/meta/service/entity-validation.service.ts +187 -187
  291. package/src/module/meta/service/entity.service.ts +67 -67
  292. package/src/module/meta/service/field-group.service.ts +103 -103
  293. package/src/module/meta/service/media-data.service.ts +507 -507
  294. package/src/module/meta/service/populate-meta.service.ts +193 -193
  295. package/src/module/meta/service/preference.service.ts +16 -16
  296. package/src/module/meta/service/resolver.service.ts +267 -267
  297. package/src/module/meta/service/section-master.service.ts +104 -104
  298. package/src/module/meta/service/update-form-json.service.ts +22 -22
  299. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  300. package/src/module/meta/service/view-master.service.ts +127 -127
  301. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  302. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  303. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  304. package/src/module/module/controller/menu.controller.ts +15 -15
  305. package/src/module/module/controller/module-access.controller.ts +134 -134
  306. package/src/module/module/entity/menu.entity.ts +43 -43
  307. package/src/module/module/entity/module-access.entity.ts +25 -25
  308. package/src/module/module/entity/module-action.entity.ts +17 -17
  309. package/src/module/module/entity/module.entity.ts +52 -52
  310. package/src/module/module/module.module.ts +42 -42
  311. package/src/module/module/repository/menu.repository.ts +184 -184
  312. package/src/module/module/repository/module-access.repository.ts +344 -344
  313. package/src/module/module/service/menu.service.ts +82 -82
  314. package/src/module/module/service/module-access.service.ts +209 -209
  315. package/src/module/notification/controller/notification.controller.ts +58 -58
  316. package/src/module/notification/controller/otp.controller.ts +117 -117
  317. package/src/module/notification/entity/notification.entity.ts +26 -26
  318. package/src/module/notification/entity/otp.entity.ts +28 -28
  319. package/src/module/notification/firebase-admin.config.ts +22 -22
  320. package/src/module/notification/notification.module.ts +69 -69
  321. package/src/module/notification/repository/otp.repository.ts +27 -27
  322. package/src/module/notification/service/email.service.ts +127 -127
  323. package/src/module/notification/service/notification.service.ts +163 -163
  324. package/src/module/notification/service/otp.service.ts +132 -132
  325. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  326. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  327. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  328. package/src/module/third-party-module/third-party.module.ts +12 -12
  329. package/src/module/user/controller/login.controller.ts +197 -197
  330. package/src/module/user/controller/user.controller.ts +40 -40
  331. package/src/module/user/dto/create-user.dto.ts +62 -62
  332. package/src/module/user/dto/update-user.dto.ts +4 -4
  333. package/src/module/user/entity/role.entity.ts +33 -33
  334. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  335. package/src/module/user/entity/user-session.entity.ts +73 -73
  336. package/src/module/user/entity/user.entity.ts +59 -59
  337. package/src/module/user/repository/role.repository.ts +96 -96
  338. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  339. package/src/module/user/repository/user.repository.ts +50 -50
  340. package/src/module/user/repository/userSession.repository.ts +33 -33
  341. package/src/module/user/service/login.service.ts +304 -304
  342. package/src/module/user/service/role.service.ts +189 -189
  343. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  344. package/src/module/user/service/user-session.service.ts +168 -168
  345. package/src/module/user/service/user.service.ts +365 -365
  346. package/src/module/user/user.module.ts +65 -65
  347. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  348. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  349. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  350. package/src/module/workflow/controller/action.controller.ts +111 -111
  351. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  352. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  353. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  354. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  355. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  356. package/src/module/workflow/controller/stage.controller.ts +50 -50
  357. package/src/module/workflow/controller/task.controller.ts +77 -77
  358. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  359. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  360. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  361. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  362. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  363. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  364. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  365. package/src/module/workflow/entity/action.entity.ts +50 -50
  366. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  367. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  368. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  369. package/src/module/workflow/entity/form.entity.ts +25 -25
  370. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  371. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  372. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  373. package/src/module/workflow/entity/stage.entity.ts +20 -20
  374. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  375. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  376. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  377. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  378. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  379. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  380. package/src/module/workflow/repository/action-data.repository.ts +333 -333
  381. package/src/module/workflow/repository/action.repository.ts +323 -323
  382. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  383. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  384. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  385. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  386. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  387. package/src/module/workflow/repository/stage.repository.ts +172 -172
  388. package/src/module/workflow/repository/task.repository.ts +127 -134
  389. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  390. package/src/module/workflow/service/action-category.service.ts +33 -33
  391. package/src/module/workflow/service/action-data.service.ts +62 -62
  392. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  393. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  394. package/src/module/workflow/service/action.service.ts +279 -279
  395. package/src/module/workflow/service/activity-log.service.ts +107 -107
  396. package/src/module/workflow/service/comm-template.service.ts +180 -180
  397. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  398. package/src/module/workflow/service/form-master.service.ts +35 -35
  399. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  400. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  401. package/src/module/workflow/service/stage-group.service.ts +319 -319
  402. package/src/module/workflow/service/stage.service.ts +199 -199
  403. package/src/module/workflow/service/task.service.ts +560 -547
  404. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  405. package/src/module/workflow/service/workflow-meta.service.ts +640 -654
  406. package/src/module/workflow/service/workflow.service.ts +205 -205
  407. package/src/module/workflow/workflow.module.ts +176 -176
  408. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -21
  409. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  410. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -35
  411. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  412. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  413. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  414. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  415. package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -347
  416. package/src/module/workflow-automation/workflow-automation.module.ts +34 -34
  417. package/src/resources/dev.properties.yaml +31 -30
  418. package/src/resources/local.properties.yaml +27 -27
  419. package/src/resources/properties.module.ts +12 -12
  420. package/src/resources/properties.yaml.ts +11 -11
  421. package/src/resources/uat.properties.yaml +31 -31
  422. package/src/table.config.ts +126 -126
  423. package/src/utils/dto/excel-data.dto.ts +14 -14
  424. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  425. package/src/utils/service/base64util.service.ts +18 -18
  426. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  427. package/src/utils/service/codeGenerator.service.ts +22 -22
  428. package/src/utils/service/dateUtil.service.ts +17 -17
  429. package/src/utils/service/encryptUtil.service.ts +97 -97
  430. package/src/utils/service/excel-helper.service.ts +72 -72
  431. package/src/utils/service/excelUtil.service.ts +15 -15
  432. package/src/utils/service/file-util.service.ts +11 -11
  433. package/src/utils/service/json-util.service.ts +23 -23
  434. package/src/utils/service/loggingUtil.service.ts +34 -88
  435. package/src/utils/service/reflection-helper.service.ts +62 -62
  436. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  437. package/src/utils/utils.module.ts +25 -27
  438. package/tsconfig.build.json +4 -4
  439. package/tsconfig.json +24 -24
@@ -1,11 +1,4 @@
1
- import { ConfigService } from '@nestjs/config';
2
1
  export declare class LoggingService {
3
- private readonly configService;
4
- private readonly logger;
5
- private readonly graylogUrl;
6
- private readonly environment;
7
- constructor(configService: ConfigService);
8
- log(level: string, serviceName: string, methodName: string, message: string, parameters?: unknown[], debugInfo?: unknown[]): Promise<void>;
9
- private sendToGraylog;
10
- private mapLogLevel;
2
+ constructor();
3
+ log(level: string, serviceName: string, methodName: string, message: string, parameters?: unknown[], debuginfo?: unknown[]): Promise<void>;
11
4
  }
@@ -8,80 +8,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var LoggingService_1;
12
11
  Object.defineProperty(exports, "__esModule", { value: true });
13
12
  exports.LoggingService = void 0;
14
13
  const common_1 = require("@nestjs/common");
15
- const config_1 = require("@nestjs/config");
16
- const axios_1 = require("axios");
17
- let LoggingService = LoggingService_1 = class LoggingService {
18
- constructor(configService) {
19
- this.configService = configService;
20
- this.logger = new common_1.Logger(LoggingService_1.name);
21
- this.graylogUrl =
22
- this.configService.get('GRAYLOG_URL') ||
23
- 'http://localhost:12201/gelf';
24
- this.environment = this.configService.get('PROFILE') || 'dev';
25
- }
26
- async log(level, serviceName, methodName, message, parameters, debugInfo) {
27
- const logLevel = level.toLowerCase().trim();
28
- const logMessage = `${serviceName}.${methodName}: ${message} | Params: ${JSON.stringify(parameters)} | Debug: ${JSON.stringify(debugInfo)}`;
29
- switch (logLevel) {
30
- case 'debug':
31
- case 'info':
32
- this.logger.debug(logMessage);
33
- break;
34
- case 'warn':
35
- this.logger.warn(logMessage);
36
- break;
37
- case 'error':
38
- this.logger.error(logMessage);
39
- break;
40
- default:
41
- this.logger.log(logMessage);
14
+ let LoggingService = class LoggingService {
15
+ constructor() { }
16
+ async log(level, serviceName, methodName, message, parameters, debuginfo) {
17
+ const levelInfo = level.toLowerCase().trim();
18
+ const logger = new common_1.Logger(serviceName);
19
+ const logMessage = `${methodName} : ${message} : Parameters :${JSON.stringify(parameters)}: Debug Info: ${JSON.stringify(debuginfo)}`;
20
+ if (levelInfo === 'debug' || levelInfo === 'info') {
21
+ logger.debug(logMessage);
42
22
  }
43
- this.sendToGraylog({
44
- version: '1.1',
45
- host: serviceName || 'nestjs-app',
46
- short_message: message,
47
- full_message: logMessage,
48
- level: this.mapLogLevel(logLevel),
49
- _service: serviceName,
50
- _method: methodName,
51
- _parameters: parameters,
52
- _debug: debugInfo,
53
- _environment: this.environment,
54
- timestamp: Date.now() / 1000,
55
- });
56
- }
57
- async sendToGraylog(payload) {
58
- try {
59
- await axios_1.default.post(this.graylogUrl, payload, {
60
- headers: { 'Content-Type': 'application/json' },
61
- timeout: 2000,
62
- });
23
+ else if (levelInfo === 'error') {
24
+ logger.error(logMessage);
63
25
  }
64
- catch (err) {
65
- this.logger.warn(`Graylog send failed: ${err.message}`);
26
+ else {
27
+ logger.log(logMessage);
66
28
  }
67
29
  }
68
- mapLogLevel(level) {
69
- const mapping = {
70
- emerg: 0,
71
- alert: 1,
72
- crit: 2,
73
- error: 3,
74
- warn: 4,
75
- notice: 5,
76
- info: 6,
77
- debug: 7,
78
- };
79
- return mapping[level] ?? 6;
80
- }
81
30
  };
82
31
  exports.LoggingService = LoggingService;
83
- exports.LoggingService = LoggingService = LoggingService_1 = __decorate([
32
+ exports.LoggingService = LoggingService = __decorate([
84
33
  (0, common_1.Injectable)(),
85
- __metadata("design:paramtypes", [config_1.ConfigService])
34
+ __metadata("design:paramtypes", [])
86
35
  ], LoggingService);
87
36
  //# sourceMappingURL=loggingUtil.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loggingUtil.service.js","sourceRoot":"","sources":["../../../src/utils/service/loggingUtil.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loggingUtil.service.js","sourceRoot":"","sources":["../../../src/utils/service/loggingUtil.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoD;AAG7C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,gBAAe,CAAC;IAEhB,KAAK,CAAC,GAAG,CACP,KAAa,EACb,WAAmB,EACnB,UAAkB,EAClB,OAAe,EACf,UAAsB,EACtB,SAAqB;QAErB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;QAGvC,MAAM,UAAU,GAAG,GAAG,UAAU,MAAM,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAC3E,UAAU,CACX,iBAAiB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAE9C,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YAEN,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IAGH,CAAC;CACF,CAAA;AA9BY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;;GACA,cAAc,CA8B1B"}
@@ -51,8 +51,8 @@ let ReflectionHelper = class ReflectionHelper {
51
51
  }
52
52
  }
53
53
  async getEntityData(id, tableName) {
54
- const entityList = await this.dataSource.query(`SELECT *
55
- FROM ${tableName}
54
+ const entityList = await this.dataSource.query(`SELECT *
55
+ FROM ${tableName}
56
56
  WHERE id = ?`, [id]);
57
57
  return entityList.length > 0 ? entityList[0] : null;
58
58
  }
@@ -13,14 +13,12 @@ const reflection_helper_service_1 = require("./service/reflection-helper.service
13
13
  const excelUtil_service_1 = require("./service/excelUtil.service");
14
14
  const clockIDGenUtil_service_1 = require("./service/clockIDGenUtil.service");
15
15
  const wbsCodeGen_service_1 = require("./service/wbsCodeGen.service");
16
- const config_1 = require("@nestjs/config");
17
16
  let UtilsModule = class UtilsModule {
18
17
  };
19
18
  exports.UtilsModule = UtilsModule;
20
19
  exports.UtilsModule = UtilsModule = __decorate([
21
20
  (0, common_1.Global)(),
22
21
  (0, common_1.Module)({
23
- imports: [config_1.ConfigModule],
24
22
  providers: [
25
23
  loggingUtil_service_1.LoggingService,
26
24
  reflection_helper_service_1.ReflectionHelper,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.module.js","sourceRoot":"","sources":["../../src/utils/utils.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uEAA+D;AAC/D,mFAAuE;AACvE,mEAAwD;AACxD,6EAAqE;AACrE,qEAAiE;AACjE,2CAA8C;AAoBvC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAlBvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC;QACvB,SAAS,EAAE;YACT,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;QACD,OAAO,EAAE;YACP,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;KACF,CAAC;GACW,WAAW,CAAG"}
1
+ {"version":3,"file":"utils.module.js","sourceRoot":"","sources":["../../src/utils/utils.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uEAA+D;AAC/D,mFAAuE;AACvE,mEAAwD;AACxD,6EAAqE;AACrE,qEAAiE;AAmB1D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAjBvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;QACD,OAAO,EAAE;YACP,oCAAc;YACd,4CAAgB;YAChB,6BAAS;YACT,0CAAiB;YACjB,sCAAiB;SAClB;KACF,CAAC;GACW,WAAW,CAAG"}
@@ -1,92 +1,92 @@
1
- # Event-Driven Integration Module Design (NestJS)
2
-
3
- ## 1. Goal
4
- Introduce **Event-Driven Architecture (EDA)** into the integration module to:
5
- - Decouple producers (e.g., order service, user service) from message delivery logic.
6
- - Support asynchronous message processing, retries, and multi-level fallback.
7
- - Allow smooth transition from in-memory events to external brokers like Kafka or RabbitMQ.
8
-
9
- ---
10
-
11
- ## 2. Current State
12
- - **Database Tables**:
13
- - `frm_integration_config` (stores provider configuration JSON and level mapping)
14
- - **Factory Pattern**:
15
- - Uses `IntegrationFactory` to select strategies (e.g., Gmail API, Twilio SMS, WhatsApp Cloud).
16
- - **Service Layer**:
17
- - Provides methods for sending messages (generic and type-specific).
18
- - Currently invoked directly by producers.
19
- - **Fallback Hierarchy**:
20
- - Resolution order: user → team → project → department → organization.
21
-
22
- ### Limitation
23
- - Tight coupling between producers and `IntegrationService`.
24
- - Direct synchronous calls, no retry or async pipeline.
25
- - Fallback handled procedurally inside service.
26
-
27
- ---
28
-
29
- ## 3. Event-Driven Proposal
30
-
31
- ### Core Events
32
- - **IntegrationRequestedEvent** → emitted whenever any module requests integration.
33
- - **IntegrationSuccessEvent** → emitted when delivery succeeds.
34
- - **IntegrationFailedEvent** → emitted when delivery fails.
35
- - **FallbackRequestedEvent** → emitted when a level-specific config fails, triggering retry with the next fallback level.
36
-
37
- ### Event Flow
38
- 1. A producer (e.g., order service) emits a `IntegrationRequestedEvent`.
39
- 2. The integration module listens for this event.
40
- 3. Delivery attempt is made using the factory and service layer.
41
- 4. Depending on outcome:
42
- - Success → emit `IntegrationSuccessEvent`.
43
- - Failure → emit `IntegrationFailedEvent`.
44
- 5. If failure is due to invalid or unavailable provider, emit `FallbackRequestedEvent` and retry at the next level in hierarchy.
45
- 6. Outcome events (`success`/`failed`) can be consumed by analytics, logging, monitoring, or retry queues.
46
-
47
- ---
48
-
49
- ## 4. Components
50
-
51
- ### Event Producers
52
- - Any module in the system (order, billing, onboarding, etc.) can raise integration requests without depending on the integration module.
53
-
54
- ### Event Handlers
55
- - Dedicated handlers inside the integration module react to request events, coordinate with the factory and service layer, and trigger outcome events.
56
-
57
- ### Subscribers
58
- - Separate subscribers for success/failure events handle logging, retries, notifications, and analytics.
59
-
60
- ---
61
-
62
- ## 5. Multi-Level Fallback
63
- - Instead of handling fallback inside the service, use chained events.
64
- - When one provider fails, emit a `FallbackRequestedEvent` with the next priority level.
65
- - A fallback handler retries delivery using the new configuration.
66
- - This continues until a provider succeeds or the lowest-level configuration (organization) fails.
67
-
68
- ---
69
-
70
- ## 6. Module Wiring
71
- - Use NestJS `EventEmitterModule` or `@nestjs/cqrs` for in-memory event handling.
72
- - Define event classes and handlers within the integration module.
73
- - Export the integration module to make it available across the application.
74
- - Future enhancement: swap in-memory event emitter with Kafka, RabbitMQ, or Redis for distributed systems.
75
-
76
- ---
77
-
78
- ## 7. Benefits
79
- - **Loose coupling**: Producers only emit events, no dependency on the integration module.
80
- - **Resilience**: Fallback and retries managed via events rather than procedural logic.
81
- - **Scalability**: Easy to extend with new providers or migrate to distributed event brokers.
82
- - **Observability**: Success and failure events provide clear audit trails.
83
- - **Future-proof**: In-memory implementation today, external broker tomorrow without major refactor.
84
-
85
- ---
86
-
87
- ## 8. Next Steps
88
- 1. Define event classes and event bus integration.
89
- 2. Implement core handlers for request, success, failure, and fallback.
90
- 3. Add subscribers for logging and monitoring.
91
- 4. Extend fallback logic into event-driven retry mechanism.
1
+ # Event-Driven Integration Module Design (NestJS)
2
+
3
+ ## 1. Goal
4
+ Introduce **Event-Driven Architecture (EDA)** into the integration module to:
5
+ - Decouple producers (e.g., order service, user service) from message delivery logic.
6
+ - Support asynchronous message processing, retries, and multi-level fallback.
7
+ - Allow smooth transition from in-memory events to external brokers like Kafka or RabbitMQ.
8
+
9
+ ---
10
+
11
+ ## 2. Current State
12
+ - **Database Tables**:
13
+ - `frm_integration_config` (stores provider configuration JSON and level mapping)
14
+ - **Factory Pattern**:
15
+ - Uses `IntegrationFactory` to select strategies (e.g., Gmail API, Twilio SMS, WhatsApp Cloud).
16
+ - **Service Layer**:
17
+ - Provides methods for sending messages (generic and type-specific).
18
+ - Currently invoked directly by producers.
19
+ - **Fallback Hierarchy**:
20
+ - Resolution order: user → team → project → department → organization.
21
+
22
+ ### Limitation
23
+ - Tight coupling between producers and `IntegrationService`.
24
+ - Direct synchronous calls, no retry or async pipeline.
25
+ - Fallback handled procedurally inside service.
26
+
27
+ ---
28
+
29
+ ## 3. Event-Driven Proposal
30
+
31
+ ### Core Events
32
+ - **IntegrationRequestedEvent** → emitted whenever any module requests integration.
33
+ - **IntegrationSuccessEvent** → emitted when delivery succeeds.
34
+ - **IntegrationFailedEvent** → emitted when delivery fails.
35
+ - **FallbackRequestedEvent** → emitted when a level-specific config fails, triggering retry with the next fallback level.
36
+
37
+ ### Event Flow
38
+ 1. A producer (e.g., order service) emits a `IntegrationRequestedEvent`.
39
+ 2. The integration module listens for this event.
40
+ 3. Delivery attempt is made using the factory and service layer.
41
+ 4. Depending on outcome:
42
+ - Success → emit `IntegrationSuccessEvent`.
43
+ - Failure → emit `IntegrationFailedEvent`.
44
+ 5. If failure is due to invalid or unavailable provider, emit `FallbackRequestedEvent` and retry at the next level in hierarchy.
45
+ 6. Outcome events (`success`/`failed`) can be consumed by analytics, logging, monitoring, or retry queues.
46
+
47
+ ---
48
+
49
+ ## 4. Components
50
+
51
+ ### Event Producers
52
+ - Any module in the system (order, billing, onboarding, etc.) can raise integration requests without depending on the integration module.
53
+
54
+ ### Event Handlers
55
+ - Dedicated handlers inside the integration module react to request events, coordinate with the factory and service layer, and trigger outcome events.
56
+
57
+ ### Subscribers
58
+ - Separate subscribers for success/failure events handle logging, retries, notifications, and analytics.
59
+
60
+ ---
61
+
62
+ ## 5. Multi-Level Fallback
63
+ - Instead of handling fallback inside the service, use chained events.
64
+ - When one provider fails, emit a `FallbackRequestedEvent` with the next priority level.
65
+ - A fallback handler retries delivery using the new configuration.
66
+ - This continues until a provider succeeds or the lowest-level configuration (organization) fails.
67
+
68
+ ---
69
+
70
+ ## 6. Module Wiring
71
+ - Use NestJS `EventEmitterModule` or `@nestjs/cqrs` for in-memory event handling.
72
+ - Define event classes and handlers within the integration module.
73
+ - Export the integration module to make it available across the application.
74
+ - Future enhancement: swap in-memory event emitter with Kafka, RabbitMQ, or Redis for distributed systems.
75
+
76
+ ---
77
+
78
+ ## 7. Benefits
79
+ - **Loose coupling**: Producers only emit events, no dependency on the integration module.
80
+ - **Resilience**: Fallback and retries managed via events rather than procedural logic.
81
+ - **Scalability**: Easy to extend with new providers or migrate to distributed event brokers.
82
+ - **Observability**: Success and failure events provide clear audit trails.
83
+ - **Future-proof**: In-memory implementation today, external broker tomorrow without major refactor.
84
+
85
+ ---
86
+
87
+ ## 8. Next Steps
88
+ 1. Define event classes and event bus integration.
89
+ 2. Implement core handlers for request, success, failure, and fallback.
90
+ 3. Add subscribers for logging and monitoring.
91
+ 4. Extend fallback logic into event-driven retry mechanism.
92
92
  5. Plan for integration with Kafka/RabbitMQ for production scalability.