rez_core 4.0.191 → 4.0.193

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 (526) hide show
  1. package/.prettierrc +3 -3
  2. package/.vscode/extensions.json +5 -0
  3. package/README.md +99 -99
  4. package/dist/config/config.module.js +2 -2
  5. package/dist/config/config.module.js.map +1 -1
  6. package/dist/config/database.config.d.ts +1 -1
  7. package/dist/config/database.config.js +11 -15
  8. package/dist/config/database.config.js.map +1 -1
  9. package/dist/core.module.d.ts +1 -1
  10. package/dist/core.module.js +6 -3
  11. package/dist/core.module.js.map +1 -1
  12. package/dist/main.js +1 -1
  13. package/dist/main.js.map +1 -1
  14. package/dist/module/auth/guards/role.guard.js +3 -3
  15. package/dist/module/auth/services/auth.service.js +3 -3
  16. package/dist/module/auth/services/auth.service.js.map +1 -1
  17. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  18. package/dist/module/enterprise/repository/school.repository.js +3 -3
  19. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  20. package/dist/module/entity_json/service/entity_json.service.js +2 -2
  21. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  22. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  23. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  24. package/dist/module/filter/service/filter.service.d.ts +1 -4
  25. package/dist/module/filter/service/filter.service.js +40 -70
  26. package/dist/module/filter/service/filter.service.js.map +1 -1
  27. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  28. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  29. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  30. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  31. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  32. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  33. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  34. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  35. package/dist/module/integration/examples/usage.example.js +9 -9
  36. package/dist/module/integration/service/integration.service.js +1 -1
  37. package/dist/module/integration/service/wrapper.service.js +28 -29
  38. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  39. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  40. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  41. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  42. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  43. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  44. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  45. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  46. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  47. package/dist/module/mapper/service/field-mapper.service.js +5 -5
  48. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  49. package/dist/module/mapper/service/mapper.service.js +4 -4
  50. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  51. package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
  52. package/dist/module/meta/entity/app-master.entity.js +4 -4
  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/repository/attribute-master.repository.js +2 -2
  58. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  59. package/dist/module/meta/repository/entity-attribute-update.repository.js +3 -3
  60. package/dist/module/meta/repository/entity-master.repository.js +2 -2
  61. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  62. package/dist/module/meta/service/attribute-master.service.js +1 -1
  63. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  64. package/dist/module/meta/service/entity-dynamic.service.js +27 -27
  65. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  66. package/dist/module/meta/service/entity-list.service.js +3 -3
  67. package/dist/module/meta/service/entity-master.service.js +4 -4
  68. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  69. package/dist/module/meta/service/entity-relation.service.js +13 -13
  70. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  71. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  72. package/dist/module/meta/service/media-data.service.js +9 -9
  73. package/dist/module/meta/service/media-data.service.js.map +1 -1
  74. package/dist/module/meta/service/resolver.service.js +17 -17
  75. package/dist/module/meta/service/resolver.service.js.map +1 -1
  76. package/dist/module/module/repository/menu.repository.js +12 -12
  77. package/dist/module/module/service/module-access.service.js +8 -2
  78. package/dist/module/module/service/module-access.service.js.map +1 -1
  79. package/dist/module/notification/entity/otp.entity.js +1 -1
  80. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  81. package/dist/module/notification/service/notification.service.js +22 -26
  82. package/dist/module/notification/service/notification.service.js.map +1 -1
  83. package/dist/module/user/controller/login.controller.js +18 -18
  84. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  85. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  86. package/dist/module/user/service/login.service.js +1 -1
  87. package/dist/module/user/service/login.service.js.map +1 -1
  88. package/dist/module/user/service/role.service.js +4 -4
  89. package/dist/module/user/service/user-session.service.js +4 -4
  90. package/dist/module/user/service/user-session.service.js.map +1 -1
  91. package/dist/module/workflow/entity/action-category.entity.d.ts +1 -1
  92. package/dist/module/workflow/entity/action-category.entity.js +1 -1
  93. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  94. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  95. package/dist/module/workflow/entity/action.entity.js +1 -1
  96. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  97. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  98. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  99. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  100. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  101. package/dist/module/workflow/repository/action-data.repository.js +4 -4
  102. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  103. package/dist/module/workflow/repository/action.repository.js +21 -21
  104. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  105. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  106. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  107. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  108. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  109. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  110. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  111. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  112. package/dist/module/workflow/repository/stage.repository.js +8 -8
  113. package/dist/module/workflow/repository/task.repository.js +4 -4
  114. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  115. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  116. package/dist/module/workflow/service/action.service.js +13 -13
  117. package/dist/module/workflow/service/action.service.js.map +1 -1
  118. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  119. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  120. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  121. package/dist/module/workflow/service/stage-group.service.js +6 -6
  122. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  123. package/dist/module/workflow/service/stage.service.js +4 -4
  124. package/dist/module/workflow/service/stage.service.js.map +1 -1
  125. package/dist/module/workflow/service/task.service.js +33 -33
  126. package/dist/module/workflow/service/task.service.js.map +1 -1
  127. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  128. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  129. package/dist/module/workflow/service/workflow-meta.service.js +31 -31
  130. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  131. package/dist/module/workflow/service/workflow.service.js +5 -5
  132. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  133. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
  134. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  135. package/dist/module/workflow-automation/service/schedule-handler.service.js +14 -14
  136. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  137. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  138. package/dist/module/workflow-automation/service/workflow-automation.service.js +4 -4
  139. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  140. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +4 -4
  141. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +1 -1
  142. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +2 -2
  143. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +1 -1
  144. package/dist/module/workflow-schedule/processors/schedule.processor.js +4 -4
  145. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +9 -9
  146. package/dist/table.config.js +5 -1
  147. package/dist/table.config.js.map +1 -1
  148. package/dist/tsconfig.build.tsbuildinfo +1 -1
  149. package/dist/utils/service/reflection-helper.service.js +3 -3
  150. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  151. package/docs/modules/event-driven-integration-design.md +91 -91
  152. package/docs/modules/integration.md +250 -250
  153. package/eslint.config.mjs +34 -34
  154. package/nest-cli.json +14 -14
  155. package/package.json +124 -125
  156. package/src/app.controller.ts +12 -12
  157. package/src/app.module.ts +66 -66
  158. package/src/app.service.ts +8 -8
  159. package/src/config/bull.config.ts +69 -69
  160. package/src/config/config.module.ts +18 -17
  161. package/src/config/database.config.ts +23 -48
  162. package/src/constant/global.constant.ts +67 -67
  163. package/src/core.module.ts +88 -81
  164. package/src/decorators/roles.decorator.ts +7 -7
  165. package/src/dtos/response.dto.ts +6 -6
  166. package/src/dtos/response.ts +5 -5
  167. package/src/index.ts +1 -1
  168. package/src/module/auth/auth.module.ts +49 -49
  169. package/src/module/auth/controller/auth.controller.ts +28 -28
  170. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  171. package/src/module/auth/guards/jwt.guard.ts +22 -22
  172. package/src/module/auth/guards/role.guard.ts +68 -68
  173. package/src/module/auth/services/auth.service.ts +50 -50
  174. package/src/module/auth/services/jwt.service.ts +11 -11
  175. package/src/module/auth/strategies/google.strategy.ts +54 -54
  176. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  177. package/src/module/auth/strategies/local.strategy.ts +13 -13
  178. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  179. package/src/module/dashboard/dashboard.module.ts +21 -21
  180. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  181. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  182. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  183. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  184. package/src/module/dev/dev.module.ts +12 -12
  185. package/src/module/dev/service/dev.service.ts +7 -7
  186. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  187. package/src/module/enterprise/enterprise.module.ts +30 -30
  188. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  189. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  190. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  191. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  192. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  193. package/src/module/enterprise/repository/school.repository.ts +278 -278
  194. package/src/module/enterprise/service/brand.service.ts +5 -5
  195. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  196. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  197. package/src/module/enterprise/service/organization.service.ts +145 -145
  198. package/src/module/entity_json/controller/entity_json.controller.ts +47 -47
  199. package/src/module/entity_json/entity_json.module.ts +15 -15
  200. package/src/module/entity_json/service/entity_json.service.ts +265 -265
  201. package/src/module/filter/controller/filter.controller.ts +84 -84
  202. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  203. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  204. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  205. package/src/module/filter/filter.module.ts +31 -31
  206. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  207. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  208. package/src/module/filter/service/filter.service.ts +1005 -1051
  209. package/src/module/filter/service/saved-filter.service.ts +170 -170
  210. package/src/module/ics/controller/ics.controller.ts +21 -21
  211. package/src/module/ics/dto/ics.dto.ts +55 -55
  212. package/src/module/ics/ics.module.ts +13 -13
  213. package/src/module/ics/service/ics.service.ts +57 -57
  214. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  215. package/src/module/integration/controller/integration.controller.ts +662 -662
  216. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  217. package/src/module/integration/dto/create-config.dto.ts +526 -526
  218. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  219. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  220. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  221. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  222. package/src/module/integration/examples/usage.example.ts +338 -338
  223. package/src/module/integration/factories/base.factory.ts +7 -7
  224. package/src/module/integration/factories/email.factory.ts +49 -49
  225. package/src/module/integration/factories/integration.factory.ts +121 -121
  226. package/src/module/integration/factories/sms.factory.ts +51 -51
  227. package/src/module/integration/factories/telephone.factory.ts +41 -41
  228. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  229. package/src/module/integration/integration.module.ts +110 -110
  230. package/src/module/integration/service/calendar-event.service.ts +118 -118
  231. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  232. package/src/module/integration/service/integration-queue.service.ts +229 -229
  233. package/src/module/integration/service/integration.service.ts +2633 -2633
  234. package/src/module/integration/service/oauth.service.ts +224 -224
  235. package/src/module/integration/service/wrapper.service.ts +700 -701
  236. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  237. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  238. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  239. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  240. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  241. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  242. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  243. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  244. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  245. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  246. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  247. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  248. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  249. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  250. package/src/module/layout/controller/layout.controller.ts +47 -47
  251. package/src/module/layout/entity/header-items.entity.ts +28 -28
  252. package/src/module/layout/entity/header-section.entity.ts +19 -19
  253. package/src/module/layout/layout.module.ts +21 -21
  254. package/src/module/layout/repository/header-items.repository.ts +18 -18
  255. package/src/module/layout/repository/header-section.repository.ts +22 -22
  256. package/src/module/layout/service/header-section.service.ts +25 -25
  257. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  258. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  259. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  260. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  261. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  262. package/src/module/lead/controller/lead.controller.ts +30 -30
  263. package/src/module/lead/lead.module.ts +14 -14
  264. package/src/module/lead/repository/lead.repository.ts +41 -41
  265. package/src/module/lead/service/lead.service.ts +54 -54
  266. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +10 -10
  267. package/src/module/linked_attributes/entity/linked_attribute.entity.ts +48 -48
  268. package/src/module/linked_attributes/linked_attributes.module.ts +16 -16
  269. package/src/module/linked_attributes/repository/linked_attribute.repository.ts +12 -12
  270. package/src/module/linked_attributes/service/linked_attributes.service.ts +22 -22
  271. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  272. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  273. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  274. package/src/module/listmaster/listmaster.module.ts +46 -46
  275. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  276. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  277. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  278. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  279. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  280. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  281. package/src/module/listmaster/service/list-master.service.ts +535 -535
  282. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  283. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  284. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  285. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  286. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  287. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  288. package/src/module/mapper/mapper.module.ts +34 -34
  289. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  290. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  291. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  292. package/src/module/mapper/service/field-mapper.service.ts +271 -271
  293. package/src/module/mapper/service/mapper.service.ts +79 -79
  294. package/src/module/master/controller/master.controller.ts +74 -74
  295. package/src/module/master/service/master.service.ts +483 -483
  296. package/src/module/meta/controller/app-master.controller.ts +38 -38
  297. package/src/module/meta/controller/attribute-master.controller.ts +86 -86
  298. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  299. package/src/module/meta/controller/entity-master.controller.ts +41 -41
  300. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  301. package/src/module/meta/controller/entity.controller.ts +392 -392
  302. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  303. package/src/module/meta/controller/media.controller.ts +107 -107
  304. package/src/module/meta/controller/meta.controller.ts +96 -96
  305. package/src/module/meta/controller/view-master.controller.ts +86 -86
  306. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  307. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  308. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  309. package/src/module/meta/entity/app-master.entity.ts +34 -34
  310. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  311. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  312. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  313. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  314. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  315. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  316. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  317. package/src/module/meta/entity/media-data.entity.ts +32 -32
  318. package/src/module/meta/entity/preference.entity.ts +62 -62
  319. package/src/module/meta/entity/view-master.entity.ts +41 -41
  320. package/src/module/meta/entity.module.ts +166 -166
  321. package/src/module/meta/repository/app-master.repository.ts +20 -20
  322. package/src/module/meta/repository/attribute-master.repository.ts +138 -138
  323. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -44
  324. package/src/module/meta/repository/entity-master.repository.ts +99 -99
  325. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  326. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  327. package/src/module/meta/repository/media-data.repository.ts +50 -50
  328. package/src/module/meta/repository/preference.repository.ts +20 -20
  329. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  330. package/src/module/meta/repository/view-master.repository.ts +42 -42
  331. package/src/module/meta/service/app-master.service.ts +37 -37
  332. package/src/module/meta/service/attribute-master.service.ts +130 -130
  333. package/src/module/meta/service/common.service.ts +9 -9
  334. package/src/module/meta/service/entity-attribute-update.service.ts +28 -28
  335. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  336. package/src/module/meta/service/entity-list.service.ts +205 -205
  337. package/src/module/meta/service/entity-master.service.ts +175 -175
  338. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  339. package/src/module/meta/service/entity-relation.service.ts +69 -69
  340. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  341. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  342. package/src/module/meta/service/entity-table.service.ts +150 -150
  343. package/src/module/meta/service/entity-validation.service.ts +187 -187
  344. package/src/module/meta/service/entity.service.ts +67 -67
  345. package/src/module/meta/service/field-group.service.ts +103 -103
  346. package/src/module/meta/service/media-data.service.ts +507 -507
  347. package/src/module/meta/service/populate-meta.service.ts +193 -193
  348. package/src/module/meta/service/preference.service.ts +16 -16
  349. package/src/module/meta/service/resolver.service.ts +267 -267
  350. package/src/module/meta/service/section-master.service.ts +104 -104
  351. package/src/module/meta/service/update-form-json.service.ts +22 -22
  352. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  353. package/src/module/meta/service/view-master.service.ts +127 -127
  354. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  355. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  356. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  357. package/src/module/module/controller/menu.controller.ts +15 -15
  358. package/src/module/module/controller/module-access.controller.ts +134 -134
  359. package/src/module/module/entity/menu.entity.ts +43 -43
  360. package/src/module/module/entity/module-access.entity.ts +25 -25
  361. package/src/module/module/entity/module-action.entity.ts +17 -17
  362. package/src/module/module/entity/module.entity.ts +52 -52
  363. package/src/module/module/module.module.ts +42 -42
  364. package/src/module/module/repository/menu.repository.ts +184 -184
  365. package/src/module/module/repository/module-access.repository.ts +344 -344
  366. package/src/module/module/service/menu.service.ts +82 -82
  367. package/src/module/module/service/module-access.service.ts +209 -194
  368. package/src/module/notification/controller/notification.controller.ts +58 -58
  369. package/src/module/notification/controller/otp.controller.ts +117 -117
  370. package/src/module/notification/entity/notification.entity.ts +26 -26
  371. package/src/module/notification/entity/otp.entity.ts +28 -28
  372. package/src/module/notification/firebase-admin.config.ts +22 -22
  373. package/src/module/notification/notification.module.ts +69 -69
  374. package/src/module/notification/repository/otp.repository.ts +27 -27
  375. package/src/module/notification/service/email.service.ts +127 -127
  376. package/src/module/notification/service/notification.service.ts +163 -160
  377. package/src/module/notification/service/otp.service.ts +132 -132
  378. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  379. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  380. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  381. package/src/module/third-party-module/third-party.module.ts +12 -12
  382. package/src/module/user/controller/login.controller.ts +197 -197
  383. package/src/module/user/controller/user.controller.ts +40 -40
  384. package/src/module/user/dto/create-user.dto.ts +62 -62
  385. package/src/module/user/dto/update-user.dto.ts +4 -4
  386. package/src/module/user/entity/role.entity.ts +33 -33
  387. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  388. package/src/module/user/entity/user-session.entity.ts +73 -73
  389. package/src/module/user/entity/user.entity.ts +59 -59
  390. package/src/module/user/repository/role.repository.ts +96 -96
  391. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  392. package/src/module/user/repository/user.repository.ts +50 -50
  393. package/src/module/user/repository/userSession.repository.ts +33 -33
  394. package/src/module/user/service/login.service.ts +304 -304
  395. package/src/module/user/service/role.service.ts +189 -189
  396. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  397. package/src/module/user/service/user-session.service.ts +168 -168
  398. package/src/module/user/service/user.service.ts +365 -365
  399. package/src/module/user/user.module.ts +65 -65
  400. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  401. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  402. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  403. package/src/module/workflow/controller/action.controller.ts +111 -111
  404. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  405. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  406. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  407. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  408. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  409. package/src/module/workflow/controller/stage.controller.ts +50 -50
  410. package/src/module/workflow/controller/task.controller.ts +77 -77
  411. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  412. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  413. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  414. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  415. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  416. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  417. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  418. package/src/module/workflow/entity/action.entity.ts +53 -53
  419. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  420. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  421. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  422. package/src/module/workflow/entity/form.entity.ts +25 -25
  423. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  424. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  425. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  426. package/src/module/workflow/entity/stage.entity.ts +20 -20
  427. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  428. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  429. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  430. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  431. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  432. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  433. package/src/module/workflow/repository/action-data.repository.ts +334 -334
  434. package/src/module/workflow/repository/action.repository.ts +323 -323
  435. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  436. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  437. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  438. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  439. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  440. package/src/module/workflow/repository/stage.repository.ts +172 -172
  441. package/src/module/workflow/repository/task.repository.ts +134 -134
  442. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  443. package/src/module/workflow/service/action-category.service.ts +33 -33
  444. package/src/module/workflow/service/action-data.service.ts +62 -62
  445. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  446. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  447. package/src/module/workflow/service/action.service.ts +279 -279
  448. package/src/module/workflow/service/activity-log.service.ts +107 -107
  449. package/src/module/workflow/service/comm-template.service.ts +180 -180
  450. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  451. package/src/module/workflow/service/form-master.service.ts +35 -35
  452. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  453. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  454. package/src/module/workflow/service/stage-group.service.ts +319 -319
  455. package/src/module/workflow/service/stage.service.ts +199 -199
  456. package/src/module/workflow/service/task.service.ts +569 -569
  457. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  458. package/src/module/workflow/service/workflow-meta.service.ts +654 -654
  459. package/src/module/workflow/service/workflow.service.ts +205 -205
  460. package/src/module/workflow/workflow.module.ts +176 -176
  461. package/src/module/workflow-automation/SCHEDULING_GUIDE.md +145 -145
  462. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -43
  463. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  464. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -40
  465. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  466. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  467. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  468. package/src/module/workflow-automation/service/schedule-handler.service.ts +149 -149
  469. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  470. package/src/module/workflow-automation/service/workflow-automation.service.ts +508 -508
  471. package/src/module/workflow-automation/workflow-automation.module.ts +47 -48
  472. package/src/module/workflow-schedule/INSTALLATION.md +244 -244
  473. package/src/module/workflow-schedule/MULTI_PROJECT_GUIDE.md +196 -196
  474. package/src/module/workflow-schedule/README.md +422 -422
  475. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -48
  476. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -255
  477. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -510
  478. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -362
  479. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -68
  480. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -147
  481. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -119
  482. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -96
  483. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -148
  484. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -154
  485. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -53
  486. package/src/module/workflow-schedule/interfaces/workflow-schedule-options.interface.ts +12 -12
  487. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -584
  488. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -600
  489. package/src/module/workflow-schedule/workflow-schedule.module.ts +67 -67
  490. package/src/resources/dev.properties.yaml +30 -31
  491. package/src/resources/local.properties.yaml +27 -27
  492. package/src/resources/properties.module.ts +12 -12
  493. package/src/resources/properties.yaml.ts +11 -11
  494. package/src/resources/uat.properties.yaml +31 -31
  495. package/src/table.config.ts +130 -126
  496. package/src/utils/dto/excel-data.dto.ts +14 -14
  497. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  498. package/src/utils/service/base64util.service.ts +18 -18
  499. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  500. package/src/utils/service/codeGenerator.service.ts +22 -22
  501. package/src/utils/service/dateUtil.service.ts +17 -17
  502. package/src/utils/service/encryptUtil.service.ts +97 -97
  503. package/src/utils/service/excel-helper.service.ts +72 -72
  504. package/src/utils/service/excelUtil.service.ts +15 -15
  505. package/src/utils/service/file-util.service.ts +11 -11
  506. package/src/utils/service/json-util.service.ts +23 -23
  507. package/src/utils/service/loggingUtil.service.ts +88 -88
  508. package/src/utils/service/reflection-helper.service.ts +62 -62
  509. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  510. package/src/utils/utils.module.ts +27 -27
  511. package/tsconfig.build.json +4 -4
  512. package/tsconfig.json +24 -24
  513. package/.claude/settings.local.json +0 -26
  514. package/.idea/250218_nodejs_core.iml +0 -9
  515. package/.idea/codeStyles/Project.xml +0 -59
  516. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  517. package/.idea/copilot.data.migration.agent.xml +0 -6
  518. package/.idea/copilot.data.migration.ask.xml +0 -6
  519. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  520. package/.idea/copilot.data.migration.edit.xml +0 -6
  521. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  522. package/.idea/misc.xml +0 -6
  523. package/.idea/modules.xml +0 -8
  524. package/.idea/prettier.xml +0 -6
  525. package/.idea/vcs.xml +0 -6
  526. package/server.log +0 -850
@@ -51,9 +51,9 @@ 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}
56
- WHERE id = $1`, [id]);
54
+ const entityList = await this.dataSource.query(`SELECT *
55
+ FROM ${tableName}
56
+ WHERE id = ?`, [id]);
57
57
  return entityList.length > 0 ? entityList[0] : null;
58
58
  }
59
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"reflection-helper.service.js","sourceRoot":"","sources":["../../../src/utils/service/reflection-helper.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAyC;AACzC,qCAAiD;AACjD,6CAAqD;AAG9C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACU,SAAoB,EACpB,UAAsB;QADtB,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAY;IAEhC,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,MAAM,cAAc,GAAQ,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAC9D,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,UAAU;YACxB,CAAC,IAAI,CAAC,MAAM,IAAK,IAAI,CAAC,MAAc,CAAC,IAAI,KAAK,UAAU,CAAC,CAC5D,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,WAAW,UAAU,iCAAiC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CACvB,IAAA,4BAAkB,EAAC,cAAc,CAAC,MAAM,CAAC,EACzC,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,UAAU,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,QAAgB;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,QAAe,EAAE;gBACtD,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,2BAA2B,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,SAAiB;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;2DACQ,SAAS;kEACF,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEtE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;CACF,CAAA;AAvDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAGU,gBAAS;QACR,oBAAU;GAHrB,gBAAgB,CAuD5B"}
1
+ {"version":3,"file":"reflection-helper.service.js","sourceRoot":"","sources":["../../../src/utils/service/reflection-helper.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAyC;AACzC,qCAAiD;AACjD,6CAAqD;AAG9C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACU,SAAoB,EACpB,UAAsB;QADtB,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAY;IAEhC,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,MAAM,cAAc,GAAQ,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAC9D,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,UAAU;YACxB,CAAC,IAAI,CAAC,MAAM,IAAK,IAAI,CAAC,MAAc,CAAC,IAAI,KAAK,UAAU,CAAC,CAC5D,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,WAAW,UAAU,iCAAiC,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CACvB,IAAA,4BAAkB,EAAC,cAAc,CAAC,MAAM,CAAC,EACzC,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,UAAU,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,QAAgB;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,QAAe,EAAE;gBACtD,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,2BAA2B,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,SAAiB;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;2DACQ,SAAS;iEACH,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;CACF,CAAA;AAvDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAGU,gBAAS;QACR,oBAAU;GAHrB,gBAAgB,CAuD5B"}
@@ -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.