rez_core 4.0.156 → 4.0.160

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 (563) hide show
  1. package/.prettierrc +3 -3
  2. package/README.md +99 -99
  3. package/dist/app.module.js +6 -0
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/config/bull.config.d.ts +10 -0
  6. package/dist/config/bull.config.js +66 -0
  7. package/dist/config/bull.config.js.map +1 -0
  8. package/dist/config/config.module.js +2 -2
  9. package/dist/config/config.module.js.map +1 -1
  10. package/dist/config/database.config.d.ts +1 -1
  11. package/dist/config/database.config.js +11 -15
  12. package/dist/config/database.config.js.map +1 -1
  13. package/dist/module/auth/guards/role.guard.js +3 -3
  14. package/dist/module/auth/services/auth.service.js +3 -3
  15. package/dist/module/auth/services/auth.service.js.map +1 -1
  16. package/dist/module/enterprise/entity/organization.entity.js +1 -1
  17. package/dist/module/enterprise/repository/school.repository.js +3 -3
  18. package/dist/module/enterprise/repository/school.repository.js.map +1 -1
  19. package/dist/module/filter/repository/saved-filter.repository.js +4 -4
  20. package/dist/module/filter/service/filter-evaluator.service.js +3 -3
  21. package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
  22. package/dist/module/filter/service/filter.service.d.ts +1 -4
  23. package/dist/module/filter/service/filter.service.js +31 -50
  24. package/dist/module/filter/service/filter.service.js.map +1 -1
  25. package/dist/module/integration/entity/integration-config.entity.js +6 -6
  26. package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
  27. package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
  28. package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
  29. package/dist/module/integration/entity/integration-source.entity.js +4 -4
  30. package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
  31. package/dist/module/integration/entity/user-integration.entity.js +4 -4
  32. package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
  33. package/dist/module/integration/examples/usage.example.js +9 -9
  34. package/dist/module/integration/service/integration.service.js +1 -1
  35. package/dist/module/integration/service/wrapper.service.d.ts +3 -1
  36. package/dist/module/integration/service/wrapper.service.js +67 -65
  37. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  38. package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
  39. package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
  40. package/dist/module/listmaster/entity/list-master.entity.js +4 -4
  41. package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
  42. package/dist/module/listmaster/service/list-master-item.service.js +3 -3
  43. package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
  44. package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
  45. package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
  46. package/dist/module/mapper/service/field-mapper.service.js +7 -7
  47. package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
  48. package/dist/module/mapper/service/mapper.service.js +4 -4
  49. package/dist/module/mapper/service/mapper.service.js.map +1 -1
  50. package/dist/module/meta/controller/attribute-master.controller.d.ts +4 -1
  51. package/dist/module/meta/controller/attribute-master.controller.js +15 -2
  52. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  53. package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
  54. package/dist/module/meta/entity/app-master.entity.js +4 -4
  55. package/dist/module/meta/entity/entity-master.entity.js +1 -1
  56. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  57. package/dist/module/meta/entity/view-master.entity.js +1 -1
  58. package/dist/module/meta/entity/view-master.entity.js.map +1 -1
  59. package/dist/module/meta/entity.module.js +7 -0
  60. package/dist/module/meta/entity.module.js.map +1 -1
  61. package/dist/module/meta/repository/attribute-master.repository.js +2 -2
  62. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
  63. package/dist/module/meta/repository/entity-attribute-update.repository.d.ts +6 -0
  64. package/dist/module/meta/repository/entity-attribute-update.repository.js +44 -0
  65. package/dist/module/meta/repository/entity-attribute-update.repository.js.map +1 -0
  66. package/dist/module/meta/repository/entity-master.repository.js +1 -1
  67. package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
  68. package/dist/module/meta/service/attribute-master.service.js +1 -1
  69. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  70. package/dist/module/meta/service/entity-attribute-update.service.d.ts +7 -0
  71. package/dist/module/meta/service/entity-attribute-update.service.js +36 -0
  72. package/dist/module/meta/service/entity-attribute-update.service.js.map +1 -0
  73. package/dist/module/meta/service/entity-dynamic.service.js +27 -27
  74. package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
  75. package/dist/module/meta/service/entity-list.service.js +3 -3
  76. package/dist/module/meta/service/entity-master.service.js +4 -4
  77. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  78. package/dist/module/meta/service/entity-relation.service.js +13 -13
  79. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  80. package/dist/module/meta/service/entity-service-impl.service.js +3 -3
  81. package/dist/module/meta/service/media-data.service.js +9 -9
  82. package/dist/module/meta/service/media-data.service.js.map +1 -1
  83. package/dist/module/meta/service/resolver.service.js +19 -19
  84. package/dist/module/meta/service/resolver.service.js.map +1 -1
  85. package/dist/module/module/repository/menu.repository.js +12 -12
  86. package/dist/module/notification/entity/otp.entity.js +1 -1
  87. package/dist/module/notification/entity/otp.entity.js.map +1 -1
  88. package/dist/module/notification/service/notification.service.js +9 -9
  89. package/dist/module/user/controller/login.controller.js +18 -18
  90. package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
  91. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  92. package/dist/module/user/service/login.service.js +1 -1
  93. package/dist/module/user/service/login.service.js.map +1 -1
  94. package/dist/module/user/service/role.service.js +4 -4
  95. package/dist/module/user/service/user-session.service.js +4 -4
  96. package/dist/module/user/service/user-session.service.js.map +1 -1
  97. package/dist/module/workflow/entity/action-data.entity.js +1 -1
  98. package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
  99. package/dist/module/workflow/entity/action.entity.d.ts +1 -0
  100. package/dist/module/workflow/entity/action.entity.js +5 -1
  101. package/dist/module/workflow/entity/action.entity.js.map +1 -1
  102. package/dist/module/workflow/entity/comm-template.entity.js +1 -1
  103. package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
  104. package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
  105. package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
  106. package/dist/module/workflow/repository/action-data.repository.js +5 -4
  107. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  108. package/dist/module/workflow/repository/action.repository.js +21 -21
  109. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  110. package/dist/module/workflow/repository/comm-template.repository.js +7 -7
  111. package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
  112. package/dist/module/workflow/repository/form-master.repository.js +3 -3
  113. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  114. package/dist/module/workflow/repository/stage-group.repository.js +23 -23
  115. package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
  116. package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
  117. package/dist/module/workflow/repository/stage.repository.js +8 -8
  118. package/dist/module/workflow/repository/task.repository.d.ts +3 -1
  119. package/dist/module/workflow/repository/task.repository.js +8 -3
  120. package/dist/module/workflow/repository/task.repository.js.map +1 -1
  121. package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
  122. package/dist/module/workflow/service/action.service.js +13 -13
  123. package/dist/module/workflow/service/action.service.js.map +1 -1
  124. package/dist/module/workflow/service/entity-modification.service.js +6 -6
  125. package/dist/module/workflow/service/populate-workflow.service.js +8 -8
  126. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  127. package/dist/module/workflow/service/stage-group.service.js +6 -6
  128. package/dist/module/workflow/service/stage-group.service.js.map +1 -1
  129. package/dist/module/workflow/service/stage.service.js +4 -4
  130. package/dist/module/workflow/service/stage.service.js.map +1 -1
  131. package/dist/module/workflow/service/task.service.js +71 -55
  132. package/dist/module/workflow/service/task.service.js.map +1 -1
  133. package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
  134. package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
  135. package/dist/module/workflow/service/workflow-meta.service.js +53 -51
  136. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  137. package/dist/module/workflow/service/workflow.service.js +5 -5
  138. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  139. package/dist/module/workflow-automation/controller/workflow-automation.controller.d.ts +6 -0
  140. package/dist/module/workflow-automation/controller/workflow-automation.controller.js +16 -0
  141. package/dist/module/workflow-automation/controller/workflow-automation.controller.js.map +1 -1
  142. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
  143. package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
  144. package/dist/module/workflow-automation/entity/workflow-automation.entity.d.ts +2 -0
  145. package/dist/module/workflow-automation/entity/workflow-automation.entity.js +8 -0
  146. package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
  147. package/dist/module/workflow-automation/service/schedule-handler.service.d.ts +16 -0
  148. package/dist/module/workflow-automation/service/schedule-handler.service.js +109 -0
  149. package/dist/module/workflow-automation/service/schedule-handler.service.js.map +1 -0
  150. package/dist/module/workflow-automation/service/workflow-automation-engine.service.d.ts +1 -1
  151. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
  152. package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
  153. package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +13 -1
  154. package/dist/module/workflow-automation/service/workflow-automation.service.js +115 -6
  155. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  156. package/dist/module/workflow-automation/workflow-automation.module.js +14 -1
  157. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  158. package/dist/module/workflow-schedule/constants/schedule.constants.d.ts +27 -0
  159. package/dist/module/workflow-schedule/constants/schedule.constants.js +31 -0
  160. package/dist/module/workflow-schedule/constants/schedule.constants.js.map +1 -0
  161. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.d.ts +83 -0
  162. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js +220 -0
  163. package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js.map +1 -0
  164. package/dist/module/workflow-schedule/dto/create-schedule.dto.d.ts +32 -0
  165. package/dist/module/workflow-schedule/dto/create-schedule.dto.js +163 -0
  166. package/dist/module/workflow-schedule/dto/create-schedule.dto.js.map +1 -0
  167. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.d.ts +35 -0
  168. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js +124 -0
  169. package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js.map +1 -0
  170. package/dist/module/workflow-schedule/dto/update-schedule.dto.d.ts +19 -0
  171. package/dist/module/workflow-schedule/dto/update-schedule.dto.js +106 -0
  172. package/dist/module/workflow-schedule/dto/update-schedule.dto.js.map +1 -0
  173. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.d.ts +30 -0
  174. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +113 -0
  175. package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +1 -0
  176. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.d.ts +34 -0
  177. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +118 -0
  178. package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +1 -0
  179. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.d.ts +44 -0
  180. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js +3 -0
  181. package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js.map +1 -0
  182. package/dist/module/workflow-schedule/processors/schedule.processor.d.ts +31 -0
  183. package/dist/module/workflow-schedule/processors/schedule.processor.js +409 -0
  184. package/dist/module/workflow-schedule/processors/schedule.processor.js.map +1 -0
  185. package/dist/module/workflow-schedule/service/workflow-schedule.service.d.ts +44 -0
  186. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +434 -0
  187. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -0
  188. package/dist/module/workflow-schedule/workflow-schedule.module.d.ts +2 -0
  189. package/dist/module/workflow-schedule/workflow-schedule.module.js +44 -0
  190. package/dist/module/workflow-schedule/workflow-schedule.module.js.map +1 -0
  191. package/dist/tsconfig.build.tsbuildinfo +1 -1
  192. package/dist/utils/service/loggingUtil.service.d.ts +9 -2
  193. package/dist/utils/service/loggingUtil.service.js +65 -14
  194. package/dist/utils/service/loggingUtil.service.js.map +1 -1
  195. package/dist/utils/service/reflection-helper.service.js +3 -3
  196. package/dist/utils/service/reflection-helper.service.js.map +1 -1
  197. package/dist/utils/utils.module.js +2 -0
  198. package/dist/utils/utils.module.js.map +1 -1
  199. package/docs/modules/event-driven-integration-design.md +91 -91
  200. package/docs/modules/integration.md +250 -250
  201. package/eslint.config.mjs +34 -34
  202. package/nest-cli.json +14 -14
  203. package/package.json +124 -120
  204. package/src/app.controller.ts +12 -12
  205. package/src/app.module.ts +60 -52
  206. package/src/app.service.ts +8 -8
  207. package/src/config/bull.config.ts +69 -0
  208. package/src/config/config.module.ts +18 -17
  209. package/src/config/database.config.ts +23 -48
  210. package/src/constant/global.constant.ts +67 -67
  211. package/src/core.module.ts +81 -81
  212. package/src/decorators/roles.decorator.ts +7 -7
  213. package/src/dtos/response.dto.ts +6 -6
  214. package/src/dtos/response.ts +5 -5
  215. package/src/index.ts +1 -1
  216. package/src/module/auth/auth.module.ts +49 -49
  217. package/src/module/auth/controller/auth.controller.ts +28 -28
  218. package/src/module/auth/guards/google-auth.guard.ts +9 -9
  219. package/src/module/auth/guards/jwt.guard.ts +22 -22
  220. package/src/module/auth/guards/role.guard.ts +68 -68
  221. package/src/module/auth/services/auth.service.ts +50 -50
  222. package/src/module/auth/services/jwt.service.ts +11 -11
  223. package/src/module/auth/strategies/google.strategy.ts +54 -54
  224. package/src/module/auth/strategies/jwt.strategy.ts +58 -58
  225. package/src/module/auth/strategies/local.strategy.ts +13 -13
  226. package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
  227. package/src/module/dashboard/dashboard.module.ts +21 -21
  228. package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
  229. package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
  230. package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
  231. package/src/module/dashboard/service/dashboard.service.ts +73 -73
  232. package/src/module/dev/dev.module.ts +12 -12
  233. package/src/module/dev/service/dev.service.ts +7 -7
  234. package/src/module/enterprise/controller/organization.controller.ts +36 -36
  235. package/src/module/enterprise/enterprise.module.ts +30 -30
  236. package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
  237. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
  238. package/src/module/enterprise/entity/organization.entity.ts +92 -92
  239. package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
  240. package/src/module/enterprise/repository/organization.repository.ts +26 -26
  241. package/src/module/enterprise/repository/school.repository.ts +278 -278
  242. package/src/module/enterprise/service/brand.service.ts +5 -5
  243. package/src/module/enterprise/service/enterprise.service.ts +16 -16
  244. package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
  245. package/src/module/enterprise/service/organization.service.ts +145 -145
  246. package/src/module/filter/controller/filter.controller.ts +84 -84
  247. package/src/module/filter/dto/filter-request.dto.ts +38 -38
  248. package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
  249. package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
  250. package/src/module/filter/filter.module.ts +31 -31
  251. package/src/module/filter/repository/saved-filter.repository.ts +168 -168
  252. package/src/module/filter/service/filter-evaluator.service.ts +86 -86
  253. package/src/module/filter/service/filter.service.ts +1005 -1034
  254. package/src/module/filter/service/saved-filter.service.ts +170 -170
  255. package/src/module/ics/controller/ics.controller.ts +21 -21
  256. package/src/module/ics/dto/ics.dto.ts +55 -55
  257. package/src/module/ics/ics.module.ts +13 -13
  258. package/src/module/ics/service/ics.service.ts +57 -57
  259. package/src/module/integration/controller/calender-event.controller.ts +31 -31
  260. package/src/module/integration/controller/integration.controller.ts +662 -662
  261. package/src/module/integration/controller/wrapper.controller.ts +37 -37
  262. package/src/module/integration/dto/create-config.dto.ts +526 -526
  263. package/src/module/integration/entity/integration-config.entity.ts +112 -112
  264. package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
  265. package/src/module/integration/entity/integration-source.entity.ts +17 -17
  266. package/src/module/integration/entity/user-integration.entity.ts +71 -71
  267. package/src/module/integration/examples/usage.example.ts +338 -338
  268. package/src/module/integration/factories/base.factory.ts +7 -7
  269. package/src/module/integration/factories/email.factory.ts +49 -49
  270. package/src/module/integration/factories/integration.factory.ts +121 -121
  271. package/src/module/integration/factories/sms.factory.ts +51 -51
  272. package/src/module/integration/factories/telephone.factory.ts +41 -41
  273. package/src/module/integration/factories/whatsapp.factory.ts +56 -56
  274. package/src/module/integration/integration.module.ts +110 -110
  275. package/src/module/integration/service/calendar-event.service.ts +118 -118
  276. package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
  277. package/src/module/integration/service/integration-queue.service.ts +229 -229
  278. package/src/module/integration/service/integration.service.ts +2633 -2633
  279. package/src/module/integration/service/oauth.service.ts +224 -224
  280. package/src/module/integration/service/wrapper.service.ts +700 -494
  281. package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
  282. package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
  283. package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
  284. package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
  285. package/src/module/integration/strategies/integration.strategy.ts +97 -97
  286. package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
  287. package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
  288. package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
  289. package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
  290. package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
  291. package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
  292. package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
  293. package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
  294. package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
  295. package/src/module/layout/controller/layout.controller.ts +47 -47
  296. package/src/module/layout/entity/header-items.entity.ts +28 -28
  297. package/src/module/layout/entity/header-section.entity.ts +19 -19
  298. package/src/module/layout/layout.module.ts +21 -21
  299. package/src/module/layout/repository/header-items.repository.ts +18 -18
  300. package/src/module/layout/repository/header-section.repository.ts +22 -22
  301. package/src/module/layout/service/header-section.service.ts +25 -25
  302. package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
  303. package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
  304. package/src/module/layout_preference/layout_preference.module.ts +22 -22
  305. package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
  306. package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
  307. package/src/module/lead/controller/lead.controller.ts +30 -30
  308. package/src/module/lead/lead.module.ts +14 -14
  309. package/src/module/lead/repository/lead.repository.ts +41 -41
  310. package/src/module/lead/service/lead.service.ts +54 -54
  311. package/src/module/listmaster/controller/list-master.controller.ts +230 -230
  312. package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
  313. package/src/module/listmaster/entity/list-master.entity.ts +33 -33
  314. package/src/module/listmaster/listmaster.module.ts +46 -46
  315. package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
  316. package/src/module/listmaster/repository/list-master.repository.ts +46 -46
  317. package/src/module/listmaster/service/list-master-engine.ts +19 -19
  318. package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
  319. package/src/module/listmaster/service/list-master-item.service.ts +292 -292
  320. package/src/module/listmaster/service/list-master-registry.ts +15 -15
  321. package/src/module/listmaster/service/list-master.service.ts +535 -535
  322. package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
  323. package/src/module/mapper/controller/mapper.controller.ts +20 -20
  324. package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
  325. package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
  326. package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
  327. package/src/module/mapper/entity/mapper.entity.ts +16 -16
  328. package/src/module/mapper/mapper.module.ts +34 -34
  329. package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
  330. package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
  331. package/src/module/mapper/repository/mapper.repository.ts +15 -15
  332. package/src/module/mapper/service/field-mapper.service.ts +271 -266
  333. package/src/module/mapper/service/mapper.service.ts +79 -79
  334. package/src/module/master/controller/master.controller.ts +74 -74
  335. package/src/module/master/service/master.service.ts +483 -483
  336. package/src/module/meta/controller/app-master.controller.ts +38 -38
  337. package/src/module/meta/controller/attribute-master.controller.ts +74 -66
  338. package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
  339. package/src/module/meta/controller/entity-master.controller.ts +28 -28
  340. package/src/module/meta/controller/entity-relation.controller.ts +36 -36
  341. package/src/module/meta/controller/entity.controller.ts +392 -392
  342. package/src/module/meta/controller/entity.public.controller.ts +75 -75
  343. package/src/module/meta/controller/media.controller.ts +107 -107
  344. package/src/module/meta/controller/meta.controller.ts +96 -96
  345. package/src/module/meta/controller/view-master.controller.ts +86 -86
  346. package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
  347. package/src/module/meta/dto/entity-tab.dto.ts +4 -4
  348. package/src/module/meta/dto/entity-table.dto.ts +9 -9
  349. package/src/module/meta/entity/app-master.entity.ts +34 -34
  350. package/src/module/meta/entity/attribute-master.entity.ts +89 -89
  351. package/src/module/meta/entity/base-entity.entity.ts +75 -75
  352. package/src/module/meta/entity/entity-master.entity.ts +85 -85
  353. package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
  354. package/src/module/meta/entity/entity-relation.entity.ts +23 -23
  355. package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
  356. package/src/module/meta/entity/entity-table.entity.ts +50 -50
  357. package/src/module/meta/entity/media-data.entity.ts +32 -32
  358. package/src/module/meta/entity/preference.entity.ts +62 -62
  359. package/src/module/meta/entity/view-master.entity.ts +41 -41
  360. package/src/module/meta/entity.module.ts +166 -158
  361. package/src/module/meta/repository/app-master.repository.ts +20 -20
  362. package/src/module/meta/repository/attribute-master.repository.ts +118 -118
  363. package/src/module/meta/repository/entity-attribute-update.repository.ts +44 -0
  364. package/src/module/meta/repository/entity-master.repository.ts +69 -69
  365. package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
  366. package/src/module/meta/repository/entity-table.repository.ts +53 -53
  367. package/src/module/meta/repository/media-data.repository.ts +50 -50
  368. package/src/module/meta/repository/preference.repository.ts +20 -20
  369. package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
  370. package/src/module/meta/repository/view-master.repository.ts +42 -42
  371. package/src/module/meta/service/app-master.service.ts +37 -37
  372. package/src/module/meta/service/attribute-master.service.ts +126 -126
  373. package/src/module/meta/service/common.service.ts +9 -9
  374. package/src/module/meta/service/entity-attribute-update.service.ts +29 -0
  375. package/src/module/meta/service/entity-dynamic.service.ts +819 -819
  376. package/src/module/meta/service/entity-list.service.ts +205 -205
  377. package/src/module/meta/service/entity-master.service.ts +169 -169
  378. package/src/module/meta/service/entity-realation-data.service.ts +9 -9
  379. package/src/module/meta/service/entity-relation.service.ts +69 -69
  380. package/src/module/meta/service/entity-service-impl.service.ts +525 -525
  381. package/src/module/meta/service/entity-table-column.service.ts +39 -39
  382. package/src/module/meta/service/entity-table.service.ts +150 -150
  383. package/src/module/meta/service/entity-validation.service.ts +187 -187
  384. package/src/module/meta/service/entity.service.ts +67 -67
  385. package/src/module/meta/service/field-group.service.ts +103 -103
  386. package/src/module/meta/service/media-data.service.ts +507 -507
  387. package/src/module/meta/service/populate-meta.service.ts +193 -193
  388. package/src/module/meta/service/preference.service.ts +16 -16
  389. package/src/module/meta/service/resolver.service.ts +267 -267
  390. package/src/module/meta/service/section-master.service.ts +104 -104
  391. package/src/module/meta/service/update-form-json.service.ts +22 -22
  392. package/src/module/meta/service/user-app-mapping.service.ts +17 -17
  393. package/src/module/meta/service/view-master.service.ts +127 -127
  394. package/src/module/microservice-client/microservice-clients.module.ts +13 -13
  395. package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
  396. package/src/module/microservice-client/service/microservice-clients.ts +4 -4
  397. package/src/module/module/controller/menu.controller.ts +15 -15
  398. package/src/module/module/controller/module-access.controller.ts +134 -134
  399. package/src/module/module/entity/menu.entity.ts +43 -43
  400. package/src/module/module/entity/module-access.entity.ts +25 -25
  401. package/src/module/module/entity/module-action.entity.ts +17 -17
  402. package/src/module/module/entity/module.entity.ts +52 -52
  403. package/src/module/module/module.module.ts +42 -42
  404. package/src/module/module/repository/menu.repository.ts +184 -184
  405. package/src/module/module/repository/module-access.repository.ts +344 -344
  406. package/src/module/module/service/menu.service.ts +82 -82
  407. package/src/module/module/service/module-access.service.ts +209 -209
  408. package/src/module/notification/controller/notification.controller.ts +58 -58
  409. package/src/module/notification/controller/otp.controller.ts +117 -117
  410. package/src/module/notification/entity/notification.entity.ts +26 -26
  411. package/src/module/notification/entity/otp.entity.ts +28 -28
  412. package/src/module/notification/firebase-admin.config.ts +22 -22
  413. package/src/module/notification/notification.module.ts +69 -69
  414. package/src/module/notification/repository/otp.repository.ts +27 -27
  415. package/src/module/notification/service/email.service.ts +127 -127
  416. package/src/module/notification/service/notification.service.ts +163 -163
  417. package/src/module/notification/service/otp.service.ts +132 -132
  418. package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
  419. package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
  420. package/src/module/third-party-module/service/api-registry.service.ts +13 -13
  421. package/src/module/third-party-module/third-party.module.ts +12 -12
  422. package/src/module/user/controller/login.controller.ts +197 -197
  423. package/src/module/user/controller/user.controller.ts +40 -40
  424. package/src/module/user/dto/create-user.dto.ts +62 -62
  425. package/src/module/user/dto/update-user.dto.ts +4 -4
  426. package/src/module/user/entity/role.entity.ts +33 -33
  427. package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
  428. package/src/module/user/entity/user-session.entity.ts +73 -73
  429. package/src/module/user/entity/user.entity.ts +59 -59
  430. package/src/module/user/repository/role.repository.ts +96 -96
  431. package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
  432. package/src/module/user/repository/user.repository.ts +50 -50
  433. package/src/module/user/repository/userSession.repository.ts +33 -33
  434. package/src/module/user/service/login.service.ts +304 -304
  435. package/src/module/user/service/role.service.ts +189 -189
  436. package/src/module/user/service/user-role-mapping.service.ts +98 -98
  437. package/src/module/user/service/user-session.service.ts +168 -168
  438. package/src/module/user/service/user.service.ts +365 -365
  439. package/src/module/user/user.module.ts +65 -65
  440. package/src/module/workflow/controller/action-category.controller.ts +54 -54
  441. package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
  442. package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
  443. package/src/module/workflow/controller/action.controller.ts +111 -111
  444. package/src/module/workflow/controller/activity-log.controller.ts +55 -55
  445. package/src/module/workflow/controller/comm-template.controller.ts +43 -43
  446. package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
  447. package/src/module/workflow/controller/form-master.controller.ts +43 -43
  448. package/src/module/workflow/controller/stage-group.controller.ts +48 -48
  449. package/src/module/workflow/controller/stage.controller.ts +50 -50
  450. package/src/module/workflow/controller/task.controller.ts +77 -77
  451. package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
  452. package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
  453. package/src/module/workflow/controller/workflow.controller.ts +67 -67
  454. package/src/module/workflow/entity/action-category.entity.ts +38 -38
  455. package/src/module/workflow/entity/action-data.entity.ts +55 -55
  456. package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
  457. package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
  458. package/src/module/workflow/entity/action.entity.ts +53 -50
  459. package/src/module/workflow/entity/activity-log.entity.ts +43 -43
  460. package/src/module/workflow/entity/comm-template.entity.ts +43 -43
  461. package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
  462. package/src/module/workflow/entity/form.entity.ts +25 -25
  463. package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
  464. package/src/module/workflow/entity/stage-group.entity.ts +23 -23
  465. package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
  466. package/src/module/workflow/entity/stage.entity.ts +20 -20
  467. package/src/module/workflow/entity/task-data.entity.ts +88 -88
  468. package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
  469. package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
  470. package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
  471. package/src/module/workflow/entity/workflow.entity.ts +20 -20
  472. package/src/module/workflow/repository/action-category.repository.ts +79 -79
  473. package/src/module/workflow/repository/action-data.repository.ts +334 -333
  474. package/src/module/workflow/repository/action.repository.ts +323 -323
  475. package/src/module/workflow/repository/activity-log.repository.ts +148 -148
  476. package/src/module/workflow/repository/comm-template.repository.ts +149 -149
  477. package/src/module/workflow/repository/form-master.repository.ts +59 -59
  478. package/src/module/workflow/repository/stage-group.repository.ts +176 -176
  479. package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
  480. package/src/module/workflow/repository/stage.repository.ts +172 -172
  481. package/src/module/workflow/repository/task.repository.ts +134 -127
  482. package/src/module/workflow/repository/workflow.repository.ts +42 -42
  483. package/src/module/workflow/service/action-category.service.ts +33 -33
  484. package/src/module/workflow/service/action-data.service.ts +62 -62
  485. package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
  486. package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
  487. package/src/module/workflow/service/action.service.ts +279 -279
  488. package/src/module/workflow/service/activity-log.service.ts +107 -107
  489. package/src/module/workflow/service/comm-template.service.ts +180 -180
  490. package/src/module/workflow/service/entity-modification.service.ts +67 -67
  491. package/src/module/workflow/service/form-master.service.ts +35 -35
  492. package/src/module/workflow/service/populate-workflow.service.ts +303 -303
  493. package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
  494. package/src/module/workflow/service/stage-group.service.ts +319 -319
  495. package/src/module/workflow/service/stage.service.ts +199 -199
  496. package/src/module/workflow/service/task.service.ts +575 -560
  497. package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
  498. package/src/module/workflow/service/workflow-meta.service.ts +654 -640
  499. package/src/module/workflow/service/workflow.service.ts +205 -205
  500. package/src/module/workflow/workflow.module.ts +176 -176
  501. package/src/module/workflow-automation/controller/workflow-automation.controller.ts +43 -21
  502. package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
  503. package/src/module/workflow-automation/entity/workflow-automation.entity.ts +40 -35
  504. package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
  505. package/src/module/workflow-automation/interface/action.interface.ts +5 -5
  506. package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
  507. package/src/module/workflow-automation/service/schedule-handler.service.ts +150 -0
  508. package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
  509. package/src/module/workflow-automation/service/workflow-automation.service.ts +508 -347
  510. package/src/module/workflow-automation/workflow-automation.module.ts +47 -34
  511. package/src/module/workflow-schedule/INSTALLATION.md +244 -0
  512. package/src/module/workflow-schedule/README.md +422 -0
  513. package/src/module/workflow-schedule/constants/schedule.constants.ts +48 -0
  514. package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +255 -0
  515. package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +510 -0
  516. package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +362 -0
  517. package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +68 -0
  518. package/src/module/workflow-schedule/dto/create-schedule.dto.ts +147 -0
  519. package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +119 -0
  520. package/src/module/workflow-schedule/dto/update-schedule.dto.ts +96 -0
  521. package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +148 -0
  522. package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +154 -0
  523. package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +53 -0
  524. package/src/module/workflow-schedule/processors/schedule.processor.ts +584 -0
  525. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +600 -0
  526. package/src/module/workflow-schedule/workflow-schedule.module.ts +43 -0
  527. package/src/resources/dev.properties.yaml +30 -31
  528. package/src/resources/local.properties.yaml +27 -27
  529. package/src/resources/properties.module.ts +12 -12
  530. package/src/resources/properties.yaml.ts +11 -11
  531. package/src/resources/uat.properties.yaml +31 -31
  532. package/src/table.config.ts +126 -126
  533. package/src/utils/dto/excel-data.dto.ts +14 -14
  534. package/src/utils/dto/excelsheet-data.dto.ts +5 -5
  535. package/src/utils/service/base64util.service.ts +18 -18
  536. package/src/utils/service/clockIDGenUtil.service.ts +21 -21
  537. package/src/utils/service/codeGenerator.service.ts +22 -22
  538. package/src/utils/service/dateUtil.service.ts +17 -17
  539. package/src/utils/service/encryptUtil.service.ts +97 -97
  540. package/src/utils/service/excel-helper.service.ts +72 -72
  541. package/src/utils/service/excelUtil.service.ts +15 -15
  542. package/src/utils/service/file-util.service.ts +11 -11
  543. package/src/utils/service/json-util.service.ts +23 -23
  544. package/src/utils/service/loggingUtil.service.ts +88 -34
  545. package/src/utils/service/reflection-helper.service.ts +62 -62
  546. package/src/utils/service/wbsCodeGen.service.ts +8 -8
  547. package/src/utils/utils.module.ts +27 -25
  548. package/tsconfig.build.json +4 -4
  549. package/tsconfig.json +24 -24
  550. package/.claude/settings.local.json +0 -26
  551. package/.idea/250218_nodejs_core.iml +0 -9
  552. package/.idea/codeStyles/Project.xml +0 -59
  553. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  554. package/.idea/copilot.data.migration.agent.xml +0 -6
  555. package/.idea/copilot.data.migration.ask.xml +0 -6
  556. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  557. package/.idea/copilot.data.migration.edit.xml +0 -6
  558. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  559. package/.idea/misc.xml +0 -6
  560. package/.idea/modules.xml +0 -8
  561. package/.idea/prettier.xml +0 -6
  562. package/.idea/vcs.xml +0 -6
  563. package/server.log +0 -850
@@ -1,4 +1,11 @@
1
+ import { ConfigService } from '@nestjs/config';
1
2
  export declare class LoggingService {
2
- constructor();
3
- log(level: string, serviceName: string, methodName: string, message: string, parameters?: unknown[], debuginfo?: unknown[]): Promise<void>;
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;
4
11
  }
@@ -8,29 +8,80 @@ 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;
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.LoggingService = void 0;
13
14
  const common_1 = require("@nestjs/common");
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);
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);
22
42
  }
23
- else if (levelInfo === 'error') {
24
- logger.error(logMessage);
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
+ });
25
63
  }
26
- else {
27
- logger.log(logMessage);
64
+ catch (err) {
65
+ this.logger.warn(`Graylog send failed: ${err.message}`);
28
66
  }
29
67
  }
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
+ }
30
81
  };
31
82
  exports.LoggingService = LoggingService;
32
- exports.LoggingService = LoggingService = __decorate([
83
+ exports.LoggingService = LoggingService = LoggingService_1 = __decorate([
33
84
  (0, common_1.Injectable)(),
34
- __metadata("design:paramtypes", [])
85
+ __metadata("design:paramtypes", [config_1.ConfigService])
35
86
  ], LoggingService);
36
87
  //# sourceMappingURL=loggingUtil.service.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"loggingUtil.service.js","sourceRoot":"","sources":["../../../src/utils/service/loggingUtil.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2CAA+C;AAC/C,iCAA0B;AAGnB,IAAM,cAAc,sBAApB,MAAM,cAAc;IAKzB,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAJxC,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;QAKxD,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,aAAa,CAAC;gBAC7C,6BAA6B,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,SAAS,CAAC,IAAI,KAAK,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,GAAG,CACP,KAAa,EACb,WAAmB,EACnB,UAAkB,EAClB,OAAe,EACf,UAAsB,EACtB,SAAqB;QAErB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,GAAG,WAAW,IAAI,UAAU,KAAK,OAAO,cAAc,IAAI,CAAC,SAAS,CACrF,UAAU,CACX,aAAa,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAG1C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO,CAAC;YACb,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAGD,IAAI,CAAC,aAAa,CAAC;YACjB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,WAAW,IAAI,YAAY;YACjC,aAAa,EAAE,OAAO;YACtB,YAAY,EAAE,UAAU;YACxB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACjC,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAA4B;QACtD,IAAI,CAAC;YACH,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;gBACzC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAa;QAE/B,MAAM,OAAO,GAA2B;YACtC,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;SACT,CAAC;QACF,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AAlFY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAMiC,sBAAa;GAL9C,cAAc,CAkF1B"}
@@ -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"}
@@ -13,12 +13,14 @@ 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");
16
17
  let UtilsModule = class UtilsModule {
17
18
  };
18
19
  exports.UtilsModule = UtilsModule;
19
20
  exports.UtilsModule = UtilsModule = __decorate([
20
21
  (0, common_1.Global)(),
21
22
  (0, common_1.Module)({
23
+ imports: [config_1.ConfigModule],
22
24
  providers: [
23
25
  loggingUtil_service_1.LoggingService,
24
26
  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;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
+ {"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,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.