@open-mercato/core 0.4.2-canary-c71ef83148 → 0.4.2-canary-f821f89ef6

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 (632) hide show
  1. package/dist/generated/entities/workflow_event_trigger/index.js +33 -0
  2. package/dist/generated/entities/workflow_event_trigger/index.js.map +7 -0
  3. package/dist/generated/entities.ids.generated.js +2 -5
  4. package/dist/generated/entities.ids.generated.js.map +2 -2
  5. package/dist/generated/entity-fields-registry.js +2 -2
  6. package/dist/generated/entity-fields-registry.js.map +2 -2
  7. package/dist/modules/api_docs/frontend/docs/api/page.js +2 -3
  8. package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
  9. package/dist/modules/api_keys/backend/api-keys/page.js +1 -1
  10. package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
  11. package/dist/modules/attachments/components/AttachmentLibrary.js +0 -4
  12. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  13. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +0 -2
  14. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  15. package/dist/modules/auth/api/admin/nav.js +3 -4
  16. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  17. package/dist/modules/auth/api/login.js +6 -25
  18. package/dist/modules/auth/api/login.js.map +2 -2
  19. package/dist/modules/auth/api/reset/confirm.js +2 -25
  20. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  21. package/dist/modules/auth/api/reset.js +0 -23
  22. package/dist/modules/auth/api/reset.js.map +2 -2
  23. package/dist/modules/auth/api/sidebar/preferences/route.js +9 -14
  24. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  25. package/dist/modules/auth/api/users/route.js +2 -4
  26. package/dist/modules/auth/api/users/route.js.map +2 -2
  27. package/dist/modules/auth/backend/roles/[id]/edit/page.js +1 -4
  28. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  29. package/dist/modules/auth/backend/roles/page.js +3 -3
  30. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  31. package/dist/modules/auth/backend/users/[id]/edit/page.js +3 -18
  32. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  33. package/dist/modules/auth/backend/users/create/page.js +2 -15
  34. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  35. package/dist/modules/auth/backend/users/page.js +3 -3
  36. package/dist/modules/auth/backend/users/page.js.map +2 -2
  37. package/dist/modules/auth/cli.js +11 -25
  38. package/dist/modules/auth/cli.js.map +2 -2
  39. package/dist/modules/auth/commands/users.js +2 -59
  40. package/dist/modules/auth/commands/users.js.map +2 -2
  41. package/dist/modules/auth/data/validators.js +3 -6
  42. package/dist/modules/auth/data/validators.js.map +2 -2
  43. package/dist/modules/auth/events.js +30 -0
  44. package/dist/modules/auth/events.js.map +7 -0
  45. package/dist/modules/auth/frontend/login.js +3 -105
  46. package/dist/modules/auth/frontend/login.js.map +2 -2
  47. package/dist/modules/auth/frontend/reset/[token]/page.js +10 -20
  48. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  49. package/dist/modules/auth/lib/setup-app.js +8 -42
  50. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  51. package/dist/modules/auth/services/authService.js +3 -24
  52. package/dist/modules/auth/services/authService.js.map +2 -2
  53. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +145 -0
  54. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +7 -0
  55. package/dist/modules/business_rules/api/execute/route.js +1 -7
  56. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  57. package/dist/modules/business_rules/backend/rules/page.js +0 -4
  58. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  59. package/dist/modules/business_rules/backend/sets/page.js +0 -3
  60. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  61. package/dist/modules/business_rules/cli.js +1 -2
  62. package/dist/modules/business_rules/cli.js.map +2 -2
  63. package/dist/modules/business_rules/data/validators.js +34 -0
  64. package/dist/modules/business_rules/data/validators.js.map +2 -2
  65. package/dist/modules/business_rules/index.js +21 -1
  66. package/dist/modules/business_rules/index.js.map +2 -2
  67. package/dist/modules/business_rules/lib/rule-engine.js +185 -34
  68. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  69. package/dist/modules/catalog/components/PriceKindSettings.js +0 -2
  70. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  71. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  72. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  73. package/dist/modules/catalog/components/products/ProductsDataTable.js +0 -2
  74. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  75. package/dist/modules/catalog/events.js +34 -0
  76. package/dist/modules/catalog/events.js.map +7 -0
  77. package/dist/modules/configs/cli.js +0 -6
  78. package/dist/modules/configs/cli.js.map +2 -2
  79. package/dist/modules/configs/components/CachePanel.js +4 -4
  80. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  81. package/dist/modules/configs/lib/system-status.js +1 -48
  82. package/dist/modules/configs/lib/system-status.js.map +2 -2
  83. package/dist/modules/configs/lib/upgrade-actions.js +0 -18
  84. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  85. package/dist/modules/currencies/backend/currencies/page.js +0 -3
  86. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  87. package/dist/modules/currencies/backend/exchange-rates/page.js +0 -2
  88. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  89. package/dist/modules/customers/backend/customers/companies/page.js +0 -3
  90. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  91. package/dist/modules/customers/backend/customers/deals/page.js +0 -3
  92. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  93. package/dist/modules/customers/backend/customers/people/page.js +0 -3
  94. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  95. package/dist/modules/customers/commands/deals.js +0 -31
  96. package/dist/modules/customers/commands/deals.js.map +2 -2
  97. package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
  98. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  99. package/dist/modules/customers/events.js +49 -0
  100. package/dist/modules/customers/events.js.map +7 -0
  101. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +1 -2
  102. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  103. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +1 -2
  104. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  105. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +1 -2
  106. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  107. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +1 -2
  108. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  109. package/dist/modules/dashboards/cli.js +5 -44
  110. package/dist/modules/dashboards/cli.js.map +2 -2
  111. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +11 -16
  112. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  113. package/dist/modules/dashboards/services/widgetDataService.js +3 -139
  114. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  115. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +1 -2
  116. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  117. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +1 -2
  118. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  119. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +1 -2
  120. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  121. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +1 -2
  122. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  123. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +1 -2
  124. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  125. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +1 -2
  126. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  127. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +1 -2
  128. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  129. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +1 -2
  130. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  131. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +1 -2
  132. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  133. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +1 -2
  134. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  135. package/dist/modules/dictionaries/components/DictionaryTable.js +0 -2
  136. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  137. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  138. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  139. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  140. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  141. package/dist/modules/directory/events.js +23 -0
  142. package/dist/modules/directory/events.js.map +7 -0
  143. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  144. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  145. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  146. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  147. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  148. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  149. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  150. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  151. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  152. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  153. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  154. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  155. package/dist/modules/query_index/cli.js +7 -63
  156. package/dist/modules/query_index/cli.js.map +2 -2
  157. package/dist/modules/query_index/components/QueryIndexesTable.js +1 -7
  158. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  159. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  160. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  161. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  162. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  163. package/dist/modules/sales/acl.js +1 -0
  164. package/dist/modules/sales/acl.js.map +2 -2
  165. package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -2
  166. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  167. package/dist/modules/sales/backend/sales/channels/page.js +0 -2
  168. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  169. package/dist/modules/sales/backend/sales/documents/[id]/page.js +12 -0
  170. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  171. package/dist/modules/sales/commands/documents.js +62 -53
  172. package/dist/modules/sales/commands/documents.js.map +2 -2
  173. package/dist/modules/sales/commands/payments.js +0 -26
  174. package/dist/modules/sales/commands/payments.js.map +2 -2
  175. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  176. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  177. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  178. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  179. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  180. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  181. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  182. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  183. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -2
  184. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  185. package/dist/modules/sales/components/documents/AdjustmentsSection.js +0 -2
  186. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  187. package/dist/modules/sales/components/documents/PaymentsSection.js +1 -2
  188. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  189. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +0 -2
  190. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  191. package/dist/modules/sales/events.js +63 -0
  192. package/dist/modules/sales/events.js.map +7 -0
  193. package/dist/modules/sales/lib/dictionaries.js +3 -0
  194. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  195. package/dist/modules/sales/lib/frontend/documentDataEvents.js +25 -0
  196. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +7 -0
  197. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  198. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  199. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  200. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  201. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  202. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  203. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  204. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  205. package/dist/modules/staff/commands/leave-requests.js +0 -79
  206. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  207. package/dist/modules/workflows/acl.js +2 -0
  208. package/dist/modules/workflows/acl.js.map +2 -2
  209. package/dist/modules/workflows/api/instances/route.js +18 -6
  210. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  211. package/dist/modules/workflows/api/tasks/route.js +6 -1
  212. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  213. package/dist/modules/workflows/backend/definitions/[id]/page.js +9 -1
  214. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  215. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  216. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  217. package/dist/modules/workflows/backend/definitions/create/page.js +24 -15
  218. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  219. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  220. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  221. package/dist/modules/workflows/backend/definitions/page.js +0 -5
  222. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  223. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +150 -132
  224. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  225. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  226. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  227. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  228. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  229. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  230. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  231. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  232. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  233. package/dist/modules/workflows/backend/instances/page.js +0 -3
  234. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  235. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  236. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  237. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  238. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  239. package/dist/modules/workflows/backend/tasks/page.js +5 -9
  240. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  241. package/dist/modules/workflows/cli.js +93 -15
  242. package/dist/modules/workflows/cli.js.map +3 -3
  243. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +481 -0
  244. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +7 -0
  245. package/dist/modules/workflows/components/EventTriggersEditor.js +553 -0
  246. package/dist/modules/workflows/components/EventTriggersEditor.js.map +7 -0
  247. package/dist/modules/workflows/data/entities.js +64 -1
  248. package/dist/modules/workflows/data/entities.js.map +2 -2
  249. package/dist/modules/workflows/data/validators.js +115 -0
  250. package/dist/modules/workflows/data/validators.js.map +2 -2
  251. package/dist/modules/workflows/events.js +38 -0
  252. package/dist/modules/workflows/events.js.map +7 -0
  253. package/dist/modules/workflows/examples/checkout-demo-definition.json +1 -5
  254. package/dist/modules/workflows/examples/order-approval-definition.json +257 -0
  255. package/dist/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  256. package/dist/modules/workflows/lib/activity-executor.js +75 -13
  257. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  258. package/dist/modules/workflows/lib/event-trigger-service.js +308 -0
  259. package/dist/modules/workflows/lib/event-trigger-service.js.map +7 -0
  260. package/dist/modules/workflows/lib/graph-utils.js +71 -2
  261. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  262. package/dist/modules/workflows/lib/seeds.js +22 -5
  263. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  264. package/dist/modules/workflows/lib/start-validator.js +33 -23
  265. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  266. package/dist/modules/workflows/lib/transition-handler.js +161 -57
  267. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  268. package/dist/modules/workflows/migrations/Migration20260123143500.js +36 -0
  269. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +7 -0
  270. package/dist/modules/workflows/subscribers/event-trigger.js +78 -0
  271. package/dist/modules/workflows/subscribers/event-trigger.js.map +7 -0
  272. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +323 -0
  273. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +7 -0
  274. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +17 -0
  275. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +7 -0
  276. package/dist/modules/workflows/widgets/injection-table.js +19 -0
  277. package/dist/modules/workflows/widgets/injection-table.js.map +7 -0
  278. package/generated/entities/workflow_event_trigger/index.ts +15 -0
  279. package/generated/entities.ids.generated.ts +2 -5
  280. package/generated/entity-fields-registry.ts +2 -2
  281. package/package.json +2 -2
  282. package/src/modules/api_docs/frontend/docs/api/page.tsx +2 -3
  283. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  284. package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -4
  285. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +0 -2
  286. package/src/modules/auth/README.md +1 -1
  287. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
  288. package/src/modules/auth/api/__tests__/login.test.ts +0 -2
  289. package/src/modules/auth/api/admin/nav.ts +6 -10
  290. package/src/modules/auth/api/login.ts +7 -26
  291. package/src/modules/auth/api/reset/confirm.ts +2 -25
  292. package/src/modules/auth/api/reset.ts +0 -23
  293. package/src/modules/auth/api/sidebar/preferences/route.ts +12 -21
  294. package/src/modules/auth/api/users/route.ts +2 -5
  295. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +1 -4
  296. package/src/modules/auth/backend/roles/page.tsx +3 -3
  297. package/src/modules/auth/backend/users/[id]/edit/page.tsx +3 -22
  298. package/src/modules/auth/backend/users/create/page.tsx +2 -19
  299. package/src/modules/auth/backend/users/page.tsx +3 -3
  300. package/src/modules/auth/cli.ts +11 -38
  301. package/src/modules/auth/commands/users.ts +2 -73
  302. package/src/modules/auth/data/validators.ts +2 -6
  303. package/src/modules/auth/events.ts +39 -0
  304. package/src/modules/auth/frontend/login.tsx +5 -131
  305. package/src/modules/auth/frontend/reset/[token]/page.tsx +11 -24
  306. package/src/modules/auth/i18n/de.json +1 -48
  307. package/src/modules/auth/i18n/en.json +1 -48
  308. package/src/modules/auth/i18n/es.json +1 -48
  309. package/src/modules/auth/i18n/pl.json +1 -48
  310. package/src/modules/auth/lib/setup-app.ts +9 -58
  311. package/src/modules/auth/services/authService.ts +4 -27
  312. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +163 -0
  313. package/src/modules/business_rules/api/execute/route.ts +1 -8
  314. package/src/modules/business_rules/backend/rules/page.tsx +0 -4
  315. package/src/modules/business_rules/backend/sets/page.tsx +0 -3
  316. package/src/modules/business_rules/cli.ts +1 -2
  317. package/src/modules/business_rules/data/validators.ts +40 -0
  318. package/src/modules/business_rules/i18n/en.json +1 -3
  319. package/src/modules/business_rules/index.ts +25 -0
  320. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +0 -51
  321. package/src/modules/business_rules/lib/rule-engine.ts +277 -51
  322. package/src/modules/catalog/components/PriceKindSettings.tsx +0 -2
  323. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  324. package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -2
  325. package/src/modules/catalog/events.ts +45 -0
  326. package/src/modules/catalog/i18n/en.json +1 -3
  327. package/src/modules/configs/cli.ts +0 -6
  328. package/src/modules/configs/components/CachePanel.tsx +4 -4
  329. package/src/modules/configs/i18n/en.json +2 -12
  330. package/src/modules/configs/i18n/pl.json +2 -12
  331. package/src/modules/configs/lib/system-status.ts +1 -48
  332. package/src/modules/configs/lib/system-status.types.ts +0 -1
  333. package/src/modules/configs/lib/upgrade-actions.ts +0 -18
  334. package/src/modules/currencies/backend/currencies/page.tsx +0 -3
  335. package/src/modules/currencies/backend/exchange-rates/page.tsx +0 -2
  336. package/src/modules/customers/backend/customers/companies/page.tsx +0 -3
  337. package/src/modules/customers/backend/customers/deals/page.tsx +0 -3
  338. package/src/modules/customers/backend/customers/people/page.tsx +0 -3
  339. package/src/modules/customers/commands/deals.ts +0 -39
  340. package/src/modules/customers/components/CustomerTodosTable.tsx +0 -1
  341. package/src/modules/customers/events.ts +63 -0
  342. package/src/modules/customers/i18n/en.json +1 -5
  343. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  344. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  345. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  346. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  347. package/src/modules/dashboards/cli.ts +5 -55
  348. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +11 -22
  349. package/src/modules/dashboards/services/widgetDataService.ts +4 -164
  350. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  351. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  352. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  353. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  354. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  355. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  356. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  357. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  358. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  359. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  360. package/src/modules/dictionaries/components/DictionaryTable.tsx +0 -2
  361. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  362. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  363. package/src/modules/directory/events.ts +31 -0
  364. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  365. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  366. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  367. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +4 -3
  368. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  369. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  370. package/src/modules/query_index/cli.ts +13 -82
  371. package/src/modules/query_index/components/QueryIndexesTable.tsx +2 -8
  372. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  373. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  374. package/src/modules/sales/acl.ts +1 -0
  375. package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -2
  376. package/src/modules/sales/backend/sales/channels/page.tsx +0 -2
  377. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +16 -0
  378. package/src/modules/sales/commands/documents.ts +70 -62
  379. package/src/modules/sales/commands/payments.ts +0 -33
  380. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  381. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  382. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  383. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  384. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -2
  385. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +0 -2
  386. package/src/modules/sales/components/documents/PaymentsSection.tsx +1 -2
  387. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +0 -2
  388. package/src/modules/sales/events.ts +82 -0
  389. package/src/modules/sales/i18n/de.json +0 -20
  390. package/src/modules/sales/i18n/en.json +1 -25
  391. package/src/modules/sales/i18n/es.json +0 -20
  392. package/src/modules/sales/i18n/pl.json +0 -20
  393. package/src/modules/sales/lib/dictionaries.ts +3 -0
  394. package/src/modules/sales/lib/frontend/documentDataEvents.ts +28 -0
  395. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  396. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  397. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  398. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  399. package/src/modules/staff/commands/leave-requests.ts +0 -94
  400. package/src/modules/staff/i18n/de.json +0 -4
  401. package/src/modules/staff/i18n/en.json +1 -9
  402. package/src/modules/staff/i18n/es.json +0 -4
  403. package/src/modules/staff/i18n/pl.json +0 -4
  404. package/src/modules/workflows/acl.ts +2 -0
  405. package/src/modules/workflows/api/__tests__/instances.route.test.ts +5 -2
  406. package/src/modules/workflows/api/instances/route.ts +21 -7
  407. package/src/modules/workflows/api/tasks/route.ts +7 -1
  408. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  409. package/src/modules/workflows/backend/definitions/[id]/page.tsx +9 -0
  410. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  411. package/src/modules/workflows/backend/definitions/create/page.tsx +9 -0
  412. package/src/modules/workflows/backend/definitions/page.tsx +0 -5
  413. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  414. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +21 -3
  415. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  416. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  417. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  418. package/src/modules/workflows/backend/instances/page.tsx +1 -4
  419. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  420. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  421. package/src/modules/workflows/backend/tasks/page.tsx +6 -10
  422. package/src/modules/workflows/cli.ts +123 -12
  423. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +581 -0
  424. package/src/modules/workflows/components/EventTriggersEditor.tsx +664 -0
  425. package/src/modules/workflows/data/entities.ts +124 -0
  426. package/src/modules/workflows/data/validators.ts +138 -0
  427. package/src/modules/workflows/events.ts +49 -0
  428. package/src/modules/workflows/examples/checkout-demo-definition.json +1 -5
  429. package/src/modules/workflows/examples/order-approval-definition.json +257 -0
  430. package/src/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  431. package/src/modules/workflows/i18n/en.json +72 -3
  432. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +43 -36
  433. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +170 -90
  434. package/src/modules/workflows/lib/activity-executor.ts +129 -16
  435. package/src/modules/workflows/lib/event-trigger-service.ts +557 -0
  436. package/src/modules/workflows/lib/graph-utils.ts +117 -2
  437. package/src/modules/workflows/lib/seeds.ts +34 -8
  438. package/src/modules/workflows/lib/start-validator.ts +38 -28
  439. package/src/modules/workflows/lib/transition-handler.ts +212 -71
  440. package/src/modules/workflows/migrations/Migration20260123143500.ts +38 -0
  441. package/src/modules/workflows/subscribers/event-trigger.ts +109 -0
  442. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +446 -0
  443. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +16 -0
  444. package/src/modules/workflows/widgets/injection-table.ts +21 -0
  445. package/dist/generated/entities/notification/index.js +0 -57
  446. package/dist/generated/entities/notification/index.js.map +0 -7
  447. package/dist/modules/auth/api/profile/route.js +0 -157
  448. package/dist/modules/auth/api/profile/route.js.map +0 -7
  449. package/dist/modules/auth/backend/auth/profile/page.js +0 -141
  450. package/dist/modules/auth/backend/auth/profile/page.js.map +0 -7
  451. package/dist/modules/auth/backend/auth/profile/page.meta.js +0 -13
  452. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +0 -7
  453. package/dist/modules/auth/notifications.js +0 -112
  454. package/dist/modules/auth/notifications.js.map +0 -7
  455. package/dist/modules/business_rules/notifications.js +0 -28
  456. package/dist/modules/business_rules/notifications.js.map +0 -7
  457. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +0 -37
  458. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +0 -7
  459. package/dist/modules/catalog/notifications.js +0 -28
  460. package/dist/modules/catalog/notifications.js.map +0 -7
  461. package/dist/modules/catalog/subscribers/low-stock-notification.js +0 -38
  462. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +0 -7
  463. package/dist/modules/customers/notifications.js +0 -48
  464. package/dist/modules/customers/notifications.js.map +0 -7
  465. package/dist/modules/dashboards/lib/role-widgets.js +0 -58
  466. package/dist/modules/dashboards/lib/role-widgets.js.map +0 -7
  467. package/dist/modules/directory/api/get/tenants/lookup.js +0 -70
  468. package/dist/modules/directory/api/get/tenants/lookup.js.map +0 -7
  469. package/dist/modules/notifications/acl.js +0 -11
  470. package/dist/modules/notifications/acl.js.map +0 -7
  471. package/dist/modules/notifications/api/[id]/action/route.js +0 -74
  472. package/dist/modules/notifications/api/[id]/action/route.js.map +0 -7
  473. package/dist/modules/notifications/api/[id]/dismiss/route.js +0 -15
  474. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +0 -7
  475. package/dist/modules/notifications/api/[id]/read/route.js +0 -15
  476. package/dist/modules/notifications/api/[id]/read/route.js.map +0 -7
  477. package/dist/modules/notifications/api/[id]/restore/route.js +0 -53
  478. package/dist/modules/notifications/api/[id]/restore/route.js.map +0 -7
  479. package/dist/modules/notifications/api/batch/route.js +0 -17
  480. package/dist/modules/notifications/api/batch/route.js.map +0 -7
  481. package/dist/modules/notifications/api/feature/route.js +0 -17
  482. package/dist/modules/notifications/api/feature/route.js.map +0 -7
  483. package/dist/modules/notifications/api/mark-all-read/route.js +0 -35
  484. package/dist/modules/notifications/api/mark-all-read/route.js.map +0 -7
  485. package/dist/modules/notifications/api/openapi.js +0 -76
  486. package/dist/modules/notifications/api/openapi.js.map +0 -7
  487. package/dist/modules/notifications/api/role/route.js +0 -17
  488. package/dist/modules/notifications/api/role/route.js.map +0 -7
  489. package/dist/modules/notifications/api/route.js +0 -85
  490. package/dist/modules/notifications/api/route.js.map +0 -7
  491. package/dist/modules/notifications/api/settings/route.js +0 -155
  492. package/dist/modules/notifications/api/settings/route.js.map +0 -7
  493. package/dist/modules/notifications/api/unread-count/route.js +0 -38
  494. package/dist/modules/notifications/api/unread-count/route.js.map +0 -7
  495. package/dist/modules/notifications/backend/config/notifications/page.js +0 -10
  496. package/dist/modules/notifications/backend/config/notifications/page.js.map +0 -7
  497. package/dist/modules/notifications/backend/config/notifications/page.meta.js +0 -24
  498. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +0 -7
  499. package/dist/modules/notifications/cli.js +0 -16
  500. package/dist/modules/notifications/cli.js.map +0 -7
  501. package/dist/modules/notifications/data/entities.js +0 -112
  502. package/dist/modules/notifications/data/entities.js.map +0 -7
  503. package/dist/modules/notifications/data/validators.js +0 -98
  504. package/dist/modules/notifications/data/validators.js.map +0 -7
  505. package/dist/modules/notifications/di.js +0 -13
  506. package/dist/modules/notifications/di.js.map +0 -7
  507. package/dist/modules/notifications/emails/NotificationEmail.js +0 -58
  508. package/dist/modules/notifications/emails/NotificationEmail.js.map +0 -7
  509. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +0 -44
  510. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +0 -7
  511. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +0 -220
  512. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +0 -7
  513. package/dist/modules/notifications/index.js +0 -14
  514. package/dist/modules/notifications/index.js.map +0 -7
  515. package/dist/modules/notifications/lib/deliveryConfig.js +0 -107
  516. package/dist/modules/notifications/lib/deliveryConfig.js.map +0 -7
  517. package/dist/modules/notifications/lib/deliveryStrategies.js +0 -14
  518. package/dist/modules/notifications/lib/deliveryStrategies.js.map +0 -7
  519. package/dist/modules/notifications/lib/events.js +0 -12
  520. package/dist/modules/notifications/lib/events.js.map +0 -7
  521. package/dist/modules/notifications/lib/notificationBuilder.js +0 -66
  522. package/dist/modules/notifications/lib/notificationBuilder.js.map +0 -7
  523. package/dist/modules/notifications/lib/notificationFactory.js +0 -54
  524. package/dist/modules/notifications/lib/notificationFactory.js.map +0 -7
  525. package/dist/modules/notifications/lib/notificationMapper.js +0 -34
  526. package/dist/modules/notifications/lib/notificationMapper.js.map +0 -7
  527. package/dist/modules/notifications/lib/notificationRecipients.js +0 -35
  528. package/dist/modules/notifications/lib/notificationRecipients.js.map +0 -7
  529. package/dist/modules/notifications/lib/notificationService.js +0 -279
  530. package/dist/modules/notifications/lib/notificationService.js.map +0 -7
  531. package/dist/modules/notifications/lib/routeHelpers.js +0 -101
  532. package/dist/modules/notifications/lib/routeHelpers.js.map +0 -7
  533. package/dist/modules/notifications/lib/safeHref.js +0 -24
  534. package/dist/modules/notifications/lib/safeHref.js.map +0 -7
  535. package/dist/modules/notifications/migrations/Migration20260123000001.js +0 -70
  536. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +0 -7
  537. package/dist/modules/notifications/migrations/Migration20260126150000.js +0 -37
  538. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +0 -7
  539. package/dist/modules/notifications/migrations/Migration20260129082610.js +0 -13
  540. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +0 -7
  541. package/dist/modules/notifications/subscribers/deliver-notification.js +0 -165
  542. package/dist/modules/notifications/subscribers/deliver-notification.js.map +0 -7
  543. package/dist/modules/notifications/workers/create-notification.worker.js +0 -70
  544. package/dist/modules/notifications/workers/create-notification.worker.js.map +0 -7
  545. package/dist/modules/sales/notifications.client.js +0 -51
  546. package/dist/modules/sales/notifications.client.js.map +0 -7
  547. package/dist/modules/sales/notifications.js +0 -88
  548. package/dist/modules/sales/notifications.js.map +0 -7
  549. package/dist/modules/sales/subscribers/quote-expiring-notification.js +0 -38
  550. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +0 -7
  551. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +0 -137
  552. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +0 -7
  553. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +0 -137
  554. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +0 -7
  555. package/dist/modules/sales/widgets/notifications/index.js +0 -7
  556. package/dist/modules/sales/widgets/notifications/index.js.map +0 -7
  557. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +0 -60
  558. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +0 -7
  559. package/dist/modules/staff/notifications.js +0 -75
  560. package/dist/modules/staff/notifications.js.map +0 -7
  561. package/dist/modules/workflows/notifications.js +0 -28
  562. package/dist/modules/workflows/notifications.js.map +0 -7
  563. package/dist/modules/workflows/subscribers/task-assigned-notification.js +0 -38
  564. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +0 -7
  565. package/generated/entities/notification/index.ts +0 -27
  566. package/src/modules/auth/api/profile/route.ts +0 -163
  567. package/src/modules/auth/backend/auth/profile/page.meta.ts +0 -9
  568. package/src/modules/auth/backend/auth/profile/page.tsx +0 -174
  569. package/src/modules/auth/notifications.ts +0 -109
  570. package/src/modules/business_rules/notifications.ts +0 -25
  571. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +0 -50
  572. package/src/modules/catalog/notifications.ts +0 -25
  573. package/src/modules/catalog/subscribers/low-stock-notification.ts +0 -52
  574. package/src/modules/customers/notifications.ts +0 -44
  575. package/src/modules/dashboards/lib/role-widgets.ts +0 -80
  576. package/src/modules/directory/api/get/tenants/lookup.ts +0 -75
  577. package/src/modules/notifications/__tests__/deliver-notification.test.ts +0 -195
  578. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +0 -19
  579. package/src/modules/notifications/__tests__/notificationService.test.ts +0 -208
  580. package/src/modules/notifications/acl.ts +0 -7
  581. package/src/modules/notifications/api/[id]/action/route.ts +0 -75
  582. package/src/modules/notifications/api/[id]/dismiss/route.ts +0 -12
  583. package/src/modules/notifications/api/[id]/read/route.ts +0 -12
  584. package/src/modules/notifications/api/[id]/restore/route.ts +0 -53
  585. package/src/modules/notifications/api/batch/route.ts +0 -14
  586. package/src/modules/notifications/api/feature/route.ts +0 -14
  587. package/src/modules/notifications/api/mark-all-read/route.ts +0 -34
  588. package/src/modules/notifications/api/openapi.ts +0 -76
  589. package/src/modules/notifications/api/role/route.ts +0 -14
  590. package/src/modules/notifications/api/route.ts +0 -92
  591. package/src/modules/notifications/api/settings/route.ts +0 -157
  592. package/src/modules/notifications/api/unread-count/route.ts +0 -38
  593. package/src/modules/notifications/backend/config/notifications/page.meta.ts +0 -22
  594. package/src/modules/notifications/backend/config/notifications/page.tsx +0 -12
  595. package/src/modules/notifications/cli.ts +0 -18
  596. package/src/modules/notifications/data/entities.ts +0 -99
  597. package/src/modules/notifications/data/validators.ts +0 -115
  598. package/src/modules/notifications/di.ts +0 -11
  599. package/src/modules/notifications/emails/NotificationEmail.tsx +0 -98
  600. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +0 -42
  601. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +0 -233
  602. package/src/modules/notifications/i18n/de.json +0 -50
  603. package/src/modules/notifications/i18n/en.json +0 -50
  604. package/src/modules/notifications/i18n/es.json +0 -50
  605. package/src/modules/notifications/i18n/pl.json +0 -50
  606. package/src/modules/notifications/index.ts +0 -12
  607. package/src/modules/notifications/lib/deliveryConfig.ts +0 -153
  608. package/src/modules/notifications/lib/deliveryStrategies.ts +0 -50
  609. package/src/modules/notifications/lib/events.ts +0 -48
  610. package/src/modules/notifications/lib/notificationBuilder.ts +0 -121
  611. package/src/modules/notifications/lib/notificationFactory.ts +0 -76
  612. package/src/modules/notifications/lib/notificationMapper.ts +0 -33
  613. package/src/modules/notifications/lib/notificationRecipients.ts +0 -83
  614. package/src/modules/notifications/lib/notificationService.ts +0 -414
  615. package/src/modules/notifications/lib/routeHelpers.ts +0 -151
  616. package/src/modules/notifications/lib/safeHref.ts +0 -29
  617. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +0 -336
  618. package/src/modules/notifications/migrations/Migration20260123000001.ts +0 -73
  619. package/src/modules/notifications/migrations/Migration20260126150000.ts +0 -39
  620. package/src/modules/notifications/migrations/Migration20260129082610.ts +0 -13
  621. package/src/modules/notifications/subscribers/deliver-notification.ts +0 -204
  622. package/src/modules/notifications/workers/create-notification.worker.ts +0 -122
  623. package/src/modules/sales/notifications.client.ts +0 -65
  624. package/src/modules/sales/notifications.ts +0 -82
  625. package/src/modules/sales/subscribers/quote-expiring-notification.ts +0 -53
  626. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +0 -156
  627. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +0 -156
  628. package/src/modules/sales/widgets/notifications/index.ts +0 -2
  629. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +0 -81
  630. package/src/modules/staff/notifications.ts +0 -71
  631. package/src/modules/workflows/notifications.ts +0 -25
  632. package/src/modules/workflows/subscribers/task-assigned-notification.ts +0 -53
@@ -35,14 +35,14 @@
35
35
  "configs.systemStatus.actions.purgeCacheUnavailable": "Usługa pamięci podręcznej jest niedostępna.",
36
36
  "configs.config.nav.cache": "Pamięć podręczna",
37
37
  "configs.cache.title": "Podgląd pamięci podręcznej",
38
- "configs.cache.description": "Przeglądaj zapisane odpowiedzi i czyść segmenty w razie potrzeby.",
38
+ "configs.cache.description": "Przeglądaj zapisane odpowiedzi CRUD i czyść segmenty w razie potrzeby.",
39
39
  "configs.cache.loading": "Ładowanie statystyk pamięci podręcznej…",
40
40
  "configs.cache.loadError": "Nie udało się wczytać statystyk pamięci podręcznej.",
41
41
  "configs.cache.retry": "Spróbuj ponownie",
42
42
  "configs.cache.refresh": "Odśwież",
43
43
  "configs.cache.generatedAt": "Statystyki z {{timestamp}}",
44
44
  "configs.cache.totalEntries": "{{count}} wpisów w pamięci podręcznej",
45
- "configs.cache.empty": "Brak zapisanych odpowiedzi dla tego tenanta.",
45
+ "configs.cache.empty": "Brak zapisanych odpowiedzi CRUD dla tego tenanta.",
46
46
  "configs.cache.purgeAll": "Wyczyść całą pamięć",
47
47
  "configs.cache.purgeAllLoading": "Czyszczenie…",
48
48
  "configs.cache.purgeAllConfirm": "Wyczyścić wszystkie wpisy pamięci podręcznej dla tego tenanta?",
@@ -64,8 +64,6 @@
64
64
  "configs.systemStatus.categories.profilingDescription": "Flagi sterujące generowaniem danych z profilowania zapytań i żądań.",
65
65
  "configs.systemStatus.categories.logging": "Logowanie",
66
66
  "configs.systemStatus.categories.loggingDescription": "Dostosuj poziom logowania i zapisywanie zapytań SQL na potrzeby diagnostyki.",
67
- "configs.systemStatus.categories.security": "Bezpieczeństwo",
68
- "configs.systemStatus.categories.securityDescription": "Wymagania polityki haseł stosowane przy logowaniu i tworzeniu użytkowników.",
69
67
  "configs.systemStatus.categories.caching": "Buforowanie",
70
68
  "configs.systemStatus.categories.cachingDescription": "Mechanizmy cache oraz kontrola czasu życia odpowiedzi backendu.",
71
69
  "configs.systemStatus.categories.queryIndex": "Indeks zapytań",
@@ -86,14 +84,6 @@
86
84
  "configs.systemStatus.variables.logVerbosity.description": "Nadpisuje poziom szczegółowości logów, np. debug lub trace.",
87
85
  "configs.systemStatus.variables.logLevel.label": "Poziom logowania",
88
86
  "configs.systemStatus.variables.logLevel.description": "Domyślny poziom logowania używany, gdy nie ustawiono szczegółowości.",
89
- "configs.systemStatus.variables.passwordMinLength.label": "Minimalna długość hasła",
90
- "configs.systemStatus.variables.passwordMinLength.description": "Minimalna liczba znaków wymagana w haśle.",
91
- "configs.systemStatus.variables.passwordRequireDigit.label": "Hasło wymaga cyfry",
92
- "configs.systemStatus.variables.passwordRequireDigit.description": "Wymagaj co najmniej jednej cyfry.",
93
- "configs.systemStatus.variables.passwordRequireUppercase.label": "Hasło wymaga wielkiej litery",
94
- "configs.systemStatus.variables.passwordRequireUppercase.description": "Wymagaj co najmniej jednej wielkiej litery.",
95
- "configs.systemStatus.variables.passwordRequireSpecial.label": "Hasło wymaga znaku specjalnego",
96
- "configs.systemStatus.variables.passwordRequireSpecial.description": "Wymagaj co najmniej jednego znaku specjalnego.",
97
87
  "configs.systemStatus.variables.enableCrudApiCache.label": "Cache API CRUD",
98
88
  "configs.systemStatus.variables.enableCrudApiCache.description": "Włącza warstwę buforowania odpowiedzi API CRUD.",
99
89
  "configs.systemStatus.variables.cacheStrategy.label": "Strategia cache",
@@ -19,14 +19,7 @@ type SystemStatusVariableDefinition = {
19
19
  defaultValue: string | null
20
20
  }
21
21
 
22
- const CATEGORY_ORDER: SystemStatusCategoryKey[] = [
23
- 'profiling',
24
- 'logging',
25
- 'security',
26
- 'caching',
27
- 'query_index',
28
- 'entities',
29
- ]
22
+ const CATEGORY_ORDER: SystemStatusCategoryKey[] = ['profiling', 'logging', 'caching', 'query_index', 'entities']
30
23
 
31
24
  const CATEGORY_METADATA: Record<
32
25
  SystemStatusCategoryKey,
@@ -40,10 +33,6 @@ const CATEGORY_METADATA: Record<
40
33
  labelKey: 'configs.systemStatus.categories.logging',
41
34
  descriptionKey: 'configs.systemStatus.categories.loggingDescription',
42
35
  },
43
- security: {
44
- labelKey: 'configs.systemStatus.categories.security',
45
- descriptionKey: 'configs.systemStatus.categories.securityDescription',
46
- },
47
36
  caching: {
48
37
  labelKey: 'configs.systemStatus.categories.caching',
49
38
  descriptionKey: 'configs.systemStatus.categories.cachingDescription',
@@ -124,42 +113,6 @@ export const SYSTEM_STATUS_VARIABLES: SystemStatusVariableDefinition[] = [
124
113
  docUrl: `${SYSTEM_STATUS_DOC_BASE}#log_level`,
125
114
  defaultValue: '',
126
115
  },
127
- {
128
- key: 'OM_PASSWORD_MIN_LENGTH',
129
- category: 'security',
130
- kind: 'string',
131
- labelKey: 'configs.systemStatus.variables.passwordMinLength.label',
132
- descriptionKey: 'configs.systemStatus.variables.passwordMinLength.description',
133
- docUrl: `${SYSTEM_STATUS_DOC_BASE}#om_password_min_length`,
134
- defaultValue: '6',
135
- },
136
- {
137
- key: 'OM_PASSWORD_REQUIRE_DIGIT',
138
- category: 'security',
139
- kind: 'boolean',
140
- labelKey: 'configs.systemStatus.variables.passwordRequireDigit.label',
141
- descriptionKey: 'configs.systemStatus.variables.passwordRequireDigit.description',
142
- docUrl: `${SYSTEM_STATUS_DOC_BASE}#om_password_require_digit`,
143
- defaultValue: 'true',
144
- },
145
- {
146
- key: 'OM_PASSWORD_REQUIRE_UPPERCASE',
147
- category: 'security',
148
- kind: 'boolean',
149
- labelKey: 'configs.systemStatus.variables.passwordRequireUppercase.label',
150
- descriptionKey: 'configs.systemStatus.variables.passwordRequireUppercase.description',
151
- docUrl: `${SYSTEM_STATUS_DOC_BASE}#om_password_require_uppercase`,
152
- defaultValue: 'true',
153
- },
154
- {
155
- key: 'OM_PASSWORD_REQUIRE_SPECIAL',
156
- category: 'security',
157
- kind: 'boolean',
158
- labelKey: 'configs.systemStatus.variables.passwordRequireSpecial.label',
159
- descriptionKey: 'configs.systemStatus.variables.passwordRequireSpecial.description',
160
- docUrl: `${SYSTEM_STATUS_DOC_BASE}#om_password_require_special`,
161
- defaultValue: 'true',
162
- },
163
116
  {
164
117
  key: 'ENABLE_CRUD_API_CACHE',
165
118
  category: 'caching',
@@ -1,7 +1,6 @@
1
1
  export type SystemStatusCategoryKey =
2
2
  | 'profiling'
3
3
  | 'logging'
4
- | 'security'
5
4
  | 'caching'
6
5
  | 'query_index'
7
6
  | 'entities'
@@ -11,7 +11,6 @@ import { seedExampleWorkflows } from '@open-mercato/core/modules/workflows/lib/s
11
11
  import { seedPlannerAvailabilityRuleSetDefaults, seedPlannerUnavailabilityReasons } from '@open-mercato/core/modules/planner/lib/seeds'
12
12
  import { seedResourcesAddressTypes, seedResourcesCapacityUnits, seedResourcesResourceExamples } from '@open-mercato/core/modules/resources/lib/seeds'
13
13
  import { seedStaffTeamExamples } from '@open-mercato/core/modules/staff/lib/seeds'
14
- import { appendWidgetsToRoles, resolveAnalyticsWidgetIds } from '@open-mercato/core/modules/dashboards/lib/role-widgets'
15
14
  import { collectCrudCacheStats, purgeCrudCacheSegment } from '@open-mercato/shared/lib/crud/cache-stats'
16
15
  import { isCrudCacheEnabled, resolveCrudCache } from '@open-mercato/shared/lib/crud/cache'
17
16
  import * as semver from 'semver'
@@ -371,23 +370,6 @@ export const upgradeActions: UpgradeActionDefinition[] = [
371
370
  await reindexModules(em, ['planner', 'staff', 'resources'], { tenantId, organizationId, vectorService })
372
371
  },
373
372
  },
374
- {
375
- id: 'configs.upgrades.dashboards.analytics_widgets',
376
- version: '0.4.2',
377
- messageKey: 'upgrades.v042.message',
378
- ctaKey: 'upgrades.v042.cta',
379
- successKey: 'upgrades.v042.success',
380
- loadingKey: 'upgrades.v042.loading',
381
- async run({ em, tenantId, organizationId }) {
382
- const widgetIds = await resolveAnalyticsWidgetIds()
383
- await appendWidgetsToRoles(em, {
384
- tenantId,
385
- organizationId,
386
- roleNames: ['admin', 'employee'],
387
- widgetIds,
388
- })
389
- },
390
- },
391
373
  ]
392
374
 
393
375
  export function actionsUpToVersion(version: string): UpgradeActionDefinition[] {
@@ -256,14 +256,12 @@ export default function CurrenciesPage() {
256
256
  <RowActions
257
257
  items={[
258
258
  {
259
- id: 'edit',
260
259
  label: t('common.edit'),
261
260
  href: `/backend/currencies/${row.id}`,
262
261
  },
263
262
  ...(!row.isBase
264
263
  ? [
265
264
  {
266
- id: 'set-base',
267
265
  label: t('currencies.list.actions.setBase'),
268
266
  onSelect: () => handleSetBase(row),
269
267
  },
@@ -272,7 +270,6 @@ export default function CurrenciesPage() {
272
270
  ...(!row.isBase
273
271
  ? [
274
272
  {
275
- id: 'delete',
276
273
  label: t('common.delete'),
277
274
  destructive: true,
278
275
  onSelect: () => handleDelete(row),
@@ -279,12 +279,10 @@ export default function ExchangeRatesPage() {
279
279
  <RowActions
280
280
  items={[
281
281
  {
282
- id: 'edit',
283
282
  label: t('common.edit'),
284
283
  href: `/backend/exchange-rates/${row.id}`,
285
284
  },
286
285
  {
287
- id: 'delete',
288
286
  label: t('common.delete'),
289
287
  destructive: true,
290
288
  onSelect: () => handleDelete(row),
@@ -597,17 +597,14 @@ export default function CustomersCompaniesPage() {
597
597
  <RowActions
598
598
  items={[
599
599
  {
600
- id: 'view',
601
600
  label: t('customers.companies.list.actions.view'),
602
601
  onSelect: () => { router.push(`/backend/customers/companies/${row.id}`) },
603
602
  },
604
603
  {
605
- id: 'open-new-tab',
606
604
  label: t('customers.companies.list.actions.openInNewTab'),
607
605
  onSelect: () => window.open(`/backend/customers/companies/${row.id}`, '_blank', 'noopener'),
608
606
  },
609
607
  {
610
- id: 'delete',
611
608
  label: t('customers.companies.list.actions.delete'),
612
609
  destructive: true,
613
610
  onSelect: () => handleDelete(row),
@@ -889,12 +889,10 @@ export default function CustomersDealsPage() {
889
889
  <RowActions
890
890
  items={[
891
891
  {
892
- id: 'edit',
893
892
  label: t('customers.deals.list.actions.edit', 'Edit'),
894
893
  onSelect: () => { router.push(`/backend/customers/deals/${row.id}`) },
895
894
  },
896
895
  {
897
- id: 'open-new-tab',
898
896
  label: t('customers.deals.list.actions.openInNewTab', 'Open in new tab'),
899
897
  onSelect: () => {
900
898
  if (typeof window !== 'undefined') {
@@ -903,7 +901,6 @@ export default function CustomersDealsPage() {
903
901
  },
904
902
  },
905
903
  {
906
- id: 'delete',
907
904
  label: isDeleting
908
905
  ? t('customers.deals.list.actions.deleting', 'Deleting…')
909
906
  : t('customers.deals.list.actions.delete', 'Delete'),
@@ -614,17 +614,14 @@ export default function CustomersPeoplePage() {
614
614
  <RowActions
615
615
  items={[
616
616
  {
617
- id: 'view',
618
617
  label: t('customers.people.list.actions.view'),
619
618
  onSelect: () => { router.push(`/backend/customers/people/${row.id}`) },
620
619
  },
621
620
  {
622
- id: 'open-new-tab',
623
621
  label: t('customers.people.list.actions.openInNewTab'),
624
622
  onSelect: () => window.open(`/backend/customers/people/${row.id}`, '_blank', 'noopener'),
625
623
  },
626
624
  {
627
- id: 'delete',
628
625
  label: t('customers.people.list.actions.delete'),
629
626
  destructive: true,
630
627
  onSelect: () => handleDelete(row),
@@ -35,9 +35,6 @@ import { CrudHttpError } from '@open-mercato/shared/lib/crud/errors'
35
35
  import type { CrudIndexerConfig } from '@open-mercato/shared/lib/crud/types'
36
36
  import { E } from '#generated/entities.ids.generated'
37
37
  import { findWithDecryption } from '@open-mercato/shared/lib/encryption/find'
38
- import { resolveNotificationService } from '../../notifications/lib/notificationService'
39
- import { buildNotificationFromType } from '../../notifications/lib/notificationBuilder'
40
- import { notificationTypes } from '../notifications'
41
38
 
42
39
  const DEAL_ENTITY_ID = 'customers:customer_deal'
43
40
  const dealCrudIndexer: CrudIndexerConfig<CustomerDeal> = {
@@ -284,8 +281,6 @@ const updateDealCommand: CommandHandler<DealUpdateInput, { dealId: string }> = {
284
281
  ensureTenantScope(ctx, record.tenantId)
285
282
  ensureOrganizationScope(ctx, record.organizationId)
286
283
 
287
- const previousStatus = record.status
288
-
289
284
  if (parsed.title !== undefined) record.title = parsed.title
290
285
  if (parsed.description !== undefined) record.description = parsed.description ?? null
291
286
  if (parsed.status !== undefined) record.status = parsed.status ?? record.status
@@ -324,40 +319,6 @@ const updateDealCommand: CommandHandler<DealUpdateInput, { dealId: string }> = {
324
319
  indexer: dealCrudIndexer,
325
320
  })
326
321
 
327
- // Send notifications for deal won/lost status changes
328
- const newStatus = record.status
329
- const normalizedStatus = newStatus === 'win' ? 'won' : newStatus === 'loose' ? 'lost' : newStatus
330
- if (previousStatus !== newStatus && (normalizedStatus === 'won' || normalizedStatus === 'lost') && record.ownerUserId) {
331
- try {
332
- const notificationService = resolveNotificationService(ctx.container)
333
- const notificationType = normalizedStatus === 'won' ? 'customers.deal.won' : 'customers.deal.lost'
334
- const typeDef = notificationTypes.find((type) => type.type === notificationType)
335
- if (typeDef) {
336
- const valueDisplay = record.valueAmount && record.valueCurrency
337
- ? `${record.valueCurrency} ${record.valueAmount}`
338
- : ''
339
-
340
- const notificationInput = buildNotificationFromType(typeDef, {
341
- recipientUserId: record.ownerUserId,
342
- bodyVariables: {
343
- dealTitle: record.title,
344
- dealValue: valueDisplay,
345
- },
346
- sourceEntityType: 'customers:customer_deal',
347
- sourceEntityId: record.id,
348
- linkHref: `/backend/customers/deals/${record.id}`,
349
- })
350
-
351
- await notificationService.create(notificationInput, {
352
- tenantId: record.tenantId,
353
- organizationId: record.organizationId,
354
- })
355
- }
356
- } catch {
357
- // Notification creation is non-critical, don't fail the command
358
- }
359
- }
360
-
361
322
  return { dealId: record.id }
362
323
  },
363
324
  buildLog: async ({ snapshots, ctx }) => {
@@ -253,7 +253,6 @@ export function CustomerTodosTable(): React.JSX.Element {
253
253
  <RowActions
254
254
  items={[
255
255
  {
256
- id: 'open-customer',
257
256
  label: t('customers.workPlan.customerTodos.table.actions.openCustomer'),
258
257
  href: customerLink,
259
258
  },
@@ -0,0 +1,63 @@
1
+ import { createModuleEvents } from '@open-mercato/shared/modules/events'
2
+
3
+ /**
4
+ * Customers Module Events
5
+ *
6
+ * Declares all events that can be emitted by the customers module.
7
+ */
8
+ const events = [
9
+ // People
10
+ { id: 'customers.people.created', label: 'Customer (Person) Created', entity: 'people', category: 'crud' },
11
+ { id: 'customers.people.updated', label: 'Customer (Person) Updated', entity: 'people', category: 'crud' },
12
+ { id: 'customers.people.deleted', label: 'Customer (Person) Deleted', entity: 'people', category: 'crud' },
13
+
14
+ // Companies
15
+ { id: 'customers.companies.created', label: 'Customer (Company) Created', entity: 'companies', category: 'crud' },
16
+ { id: 'customers.companies.updated', label: 'Customer (Company) Updated', entity: 'companies', category: 'crud' },
17
+ { id: 'customers.companies.deleted', label: 'Customer (Company) Deleted', entity: 'companies', category: 'crud' },
18
+
19
+ // Deals
20
+ { id: 'customers.deals.created', label: 'Deal Created', entity: 'deals', category: 'crud' },
21
+ { id: 'customers.deals.updated', label: 'Deal Updated', entity: 'deals', category: 'crud' },
22
+ { id: 'customers.deals.deleted', label: 'Deal Deleted', entity: 'deals', category: 'crud' },
23
+
24
+ // Comments
25
+ { id: 'customers.comments.created', label: 'Comment Created', entity: 'comments', category: 'crud' },
26
+ { id: 'customers.comments.updated', label: 'Comment Updated', entity: 'comments', category: 'crud' },
27
+ { id: 'customers.comments.deleted', label: 'Comment Deleted', entity: 'comments', category: 'crud' },
28
+
29
+ // Addresses
30
+ { id: 'customers.addresses.created', label: 'Address Created', entity: 'addresses', category: 'crud' },
31
+ { id: 'customers.addresses.updated', label: 'Address Updated', entity: 'addresses', category: 'crud' },
32
+ { id: 'customers.addresses.deleted', label: 'Address Deleted', entity: 'addresses', category: 'crud' },
33
+
34
+ // Activities
35
+ { id: 'customers.activities.created', label: 'Activity Created', entity: 'activities', category: 'crud' },
36
+ { id: 'customers.activities.updated', label: 'Activity Updated', entity: 'activities', category: 'crud' },
37
+ { id: 'customers.activities.deleted', label: 'Activity Deleted', entity: 'activities', category: 'crud' },
38
+
39
+ // Tags
40
+ { id: 'customers.tags.created', label: 'Tag Created', entity: 'tags', category: 'crud' },
41
+ { id: 'customers.tags.updated', label: 'Tag Updated', entity: 'tags', category: 'crud' },
42
+ { id: 'customers.tags.deleted', label: 'Tag Deleted', entity: 'tags', category: 'crud' },
43
+ { id: 'customers.tags.assigned', label: 'Tag Assigned', entity: 'tags', category: 'crud' },
44
+ { id: 'customers.tags.removed', label: 'Tag Removed', entity: 'tags', category: 'crud' },
45
+
46
+ // Todos
47
+ { id: 'customers.todos.created', label: 'Todo Created', entity: 'todos', category: 'crud' },
48
+ { id: 'customers.todos.updated', label: 'Todo Updated', entity: 'todos', category: 'crud' },
49
+ { id: 'customers.todos.deleted', label: 'Todo Deleted', entity: 'todos', category: 'crud' },
50
+ ] as const
51
+
52
+ export const eventsConfig = createModuleEvents({
53
+ moduleId: 'customers',
54
+ events,
55
+ })
56
+
57
+ /** Type-safe event emitter for customers module */
58
+ export const emitCustomersEvent = eventsConfig.emit
59
+
60
+ /** Event IDs that can be emitted by the customers module */
61
+ export type CustomersEventId = typeof events[number]['id']
62
+
63
+ export default eventsConfig
@@ -943,9 +943,5 @@
943
943
  "customers.workPlan.customerTodos.table.state.empty": "No customer tasks yet.",
944
944
  "customers.workPlan.customerTodos.table.error.load": "Failed to load customer tasks.",
945
945
  "customers.workPlan.customerTodos.table.export.view": "Exports the current list with filters and visible columns.",
946
- "customers.workPlan.customerTodos.table.export.full": "Exports every linked task field, including hidden attributes.",
947
- "customers.notifications.deal.won.title": "Deal Won",
948
- "customers.notifications.deal.won.body": "{dealTitle} has been marked as won{dealValue, select, other { ({dealValue})}}",
949
- "customers.notifications.deal.lost.title": "Deal Lost",
950
- "customers.notifications.deal.lost.body": "{dealTitle} has been marked as lost"
946
+ "customers.workPlan.customerTodos.table.export.full": "Exports every linked task field, including hidden attributes."
951
947
  }
@@ -1,6 +1,6 @@
1
- import { lazyDashboardWidget, type DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
1
+ import type { DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
2
+ import CustomerTodosWidget from './widget.client'
2
3
  import { DEFAULT_SETTINGS, hydrateCustomerTodoSettings, type CustomerTodoWidgetSettings } from './config'
3
- const CustomerTodosWidget = lazyDashboardWidget(() => import('./widget.client'))
4
4
 
5
5
  const widget: DashboardWidgetModule<CustomerTodoWidgetSettings> = {
6
6
  metadata: {
@@ -1,6 +1,6 @@
1
- import { lazyDashboardWidget, type DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
1
+ import type { DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
2
+ import CustomerNewCustomersWidget from './widget.client'
2
3
  import { DEFAULT_SETTINGS, hydrateNewCustomersSettings, type CustomerNewCustomersSettings } from './config'
3
- const CustomerNewCustomersWidget = lazyDashboardWidget(() => import('./widget.client'))
4
4
 
5
5
  const widget: DashboardWidgetModule<CustomerNewCustomersSettings> = {
6
6
  metadata: {
@@ -1,6 +1,6 @@
1
- import { lazyDashboardWidget, type DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
1
+ import type { DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
2
+ import CustomerNewDealsWidget from './widget.client'
2
3
  import { DEFAULT_SETTINGS, hydrateNewDealsSettings, type CustomerNewDealsSettings } from './config'
3
- const CustomerNewDealsWidget = lazyDashboardWidget(() => import('./widget.client'))
4
4
 
5
5
  const widget: DashboardWidgetModule<CustomerNewDealsSettings> = {
6
6
  metadata: {
@@ -1,10 +1,10 @@
1
- import { lazyDashboardWidget, type DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
1
+ import type { DashboardWidgetModule } from '@open-mercato/shared/modules/dashboard/widgets'
2
+ import CustomerNextInteractionsWidget from './widget.client'
2
3
  import {
3
4
  DEFAULT_SETTINGS,
4
5
  hydrateNextInteractionsSettings,
5
6
  type CustomerNextInteractionsSettings,
6
7
  } from './config'
7
- const CustomerNextInteractionsWidget = lazyDashboardWidget(() => import('./widget.client'))
8
8
 
9
9
  const widget: DashboardWidgetModule<CustomerNextInteractionsSettings> = {
10
10
  metadata: {
@@ -4,7 +4,6 @@ import type { EntityManager } from '@mikro-orm/postgresql'
4
4
  import { DashboardRoleWidgets } from '@open-mercato/core/modules/dashboards/data/entities'
5
5
  import { Role } from '@open-mercato/core/modules/auth/data/entities'
6
6
  import { loadAllWidgets } from '@open-mercato/core/modules/dashboards/lib/widgets'
7
- import { appendWidgetsToRoles, resolveAnalyticsWidgetIds } from '@open-mercato/core/modules/dashboards/lib/role-widgets'
8
7
  import { seedAnalyticsData } from './seed/analytics'
9
8
 
10
9
  type Args = Record<string, string>
@@ -42,25 +41,15 @@ export async function seedDashboardDefaultsForTenant(
42
41
  const widgetMap = new Map(widgets.map((widget) => [widget.metadata.id, widget]))
43
42
  const resolvedWidgetIds = widgetIds && widgetIds.length
44
43
  ? widgetIds.filter((id) => widgetMap.has(id))
45
- : null
46
- const defaultWidgetIds = widgets
47
- .filter((widget) => widget.metadata.defaultEnabled)
48
- .map((widget) => widget.metadata.id)
49
- const allWidgetIds = widgets.map((widget) => widget.metadata.id)
44
+ : widgets.filter((widget) => widget.metadata.defaultEnabled).map((widget) => widget.metadata.id)
50
45
 
51
- if (resolvedWidgetIds && resolvedWidgetIds.length === 0) {
46
+ if (!resolvedWidgetIds.length) {
52
47
  log('No widgets resolved for dashboard seeding.')
53
48
  return false
54
49
  }
55
50
 
56
51
  await em.transactional(async (tem) => {
57
52
  for (const roleName of roleNames) {
58
- const isAdminRole = roleName === 'admin' || roleName === 'superadmin'
59
- const roleWidgetIds = resolvedWidgetIds ?? (isAdminRole ? allWidgetIds : defaultWidgetIds)
60
- if (!roleWidgetIds.length) {
61
- log(`No widgets resolved for role "${roleName}".`)
62
- continue
63
- }
64
53
  const role = await tem.findOne(Role, { name: roleName })
65
54
  if (!role) {
66
55
  log(`Skipping role "${roleName}" (not found)`)
@@ -73,7 +62,7 @@ export async function seedDashboardDefaultsForTenant(
73
62
  deletedAt: null,
74
63
  })
75
64
  if (existing) {
76
- existing.widgetIdsJson = roleWidgetIds
65
+ existing.widgetIdsJson = resolvedWidgetIds
77
66
  tem.persist(existing)
78
67
  log(`Updated dashboard widgets for role "${roleName}"`)
79
68
  } else {
@@ -81,7 +70,7 @@ export async function seedDashboardDefaultsForTenant(
81
70
  roleId: String(role.id),
82
71
  tenantId,
83
72
  organizationId,
84
- widgetIdsJson: roleWidgetIds,
73
+ widgetIdsJson: resolvedWidgetIds,
85
74
  createdAt: new Date(),
86
75
  updatedAt: null,
87
76
  deletedAt: null,
@@ -131,45 +120,6 @@ const seedDefaults: ModuleCli = {
131
120
  },
132
121
  }
133
122
 
134
- const enableAnalyticsWidgets: ModuleCli = {
135
- command: 'enable-analytics-widgets',
136
- async run(rest) {
137
- const args = parseArgs(rest)
138
- const tenantId = args.tenant || args.tenantId || null
139
- const organizationId = args.organization || args.organizationId || args.org || null
140
- const roleCsv = args.roles || 'admin,employee'
141
- if (!tenantId) {
142
- console.error('Usage: mercato dashboards enable-analytics-widgets --tenant <tenantId> [--org <orgId>] [--roles admin,employee]')
143
- return
144
- }
145
-
146
- const roleNames = roleCsv
147
- .split(',')
148
- .map((name) => name.trim())
149
- .filter(Boolean)
150
-
151
- if (!roleNames.length) {
152
- console.log('No roles provided, nothing to update.')
153
- return
154
- }
155
-
156
- const { resolve } = await createRequestContainer()
157
- const em = resolve('em') as EntityManager
158
- const widgetIds = await resolveAnalyticsWidgetIds()
159
-
160
- const updated = await appendWidgetsToRoles(em, {
161
- tenantId,
162
- organizationId,
163
- roleNames,
164
- widgetIds,
165
- })
166
-
167
- if (!updated) {
168
- console.log('No dashboard role widgets updated.')
169
- }
170
- },
171
- }
172
-
173
123
  const seedAnalytics: ModuleCli = {
174
124
  command: 'seed-analytics',
175
125
  async run(rest) {
@@ -332,4 +282,4 @@ const debugAnalytics: ModuleCli = {
332
282
  },
333
283
  }
334
284
 
335
- export default [seedDefaults, enableAnalyticsWidgets, seedAnalytics, debugAnalytics]
285
+ export default [seedDefaults, seedAnalytics, debugAnalytics]
@@ -44,13 +44,9 @@ type UserProps = BaseProps & {
44
44
 
45
45
  type WidgetVisibilityEditorProps = RoleProps | UserProps
46
46
 
47
- export type WidgetVisibilityEditorHandle = {
48
- save: () => Promise<void>
49
- }
50
-
51
47
  const EMPTY: string[] = []
52
48
 
53
- export const WidgetVisibilityEditor = React.forwardRef<WidgetVisibilityEditorHandle, WidgetVisibilityEditorProps>(function WidgetVisibilityEditor(props, ref) {
49
+ export function WidgetVisibilityEditor(props: WidgetVisibilityEditorProps) {
54
50
  const t = useT()
55
51
  const { kind, targetId, tenantId, organizationId } = props
56
52
  const [catalog, setCatalog] = React.useState<WidgetCatalogItem[]>([])
@@ -64,15 +60,6 @@ export const WidgetVisibilityEditor = React.forwardRef<WidgetVisibilityEditorHan
64
60
  const [originalMode, setOriginalMode] = React.useState<'inherit' | 'override'>('inherit')
65
61
  const [effective, setEffective] = React.useState<string[]>(EMPTY)
66
62
 
67
- const dirty = React.useMemo(() => {
68
- if (kind === 'user') {
69
- if (mode !== originalMode) return true
70
- if (mode === 'override') return selected.join('|') !== original.join('|')
71
- return false
72
- }
73
- return selected.join('|') !== original.join('|')
74
- }, [kind, mode, original, originalMode, selected])
75
-
76
63
  const loadCatalog = React.useCallback(async () => {
77
64
  const data = await readApiResultOrThrow<{ items?: unknown[] }>(
78
65
  '/api/dashboards/widgets/catalog',
@@ -162,9 +149,6 @@ export const WidgetVisibilityEditor = React.forwardRef<WidgetVisibilityEditorHan
162
149
  }, [original, originalMode])
163
150
 
164
151
  const save = React.useCallback(async () => {
165
- if (loading) return
166
- if (error && catalog.length === 0) return
167
- if (!dirty) return
168
152
  setSaving(true)
169
153
  setError(null)
170
154
  try {
@@ -218,9 +202,16 @@ export const WidgetVisibilityEditor = React.forwardRef<WidgetVisibilityEditorHan
218
202
  } finally {
219
203
  setSaving(false)
220
204
  }
221
- }, [catalog.length, dirty, error, kind, loading, mode, organizationId, selected, t, targetId, tenantId])
205
+ }, [kind, mode, organizationId, selected, t, targetId, tenantId])
222
206
 
223
- React.useImperativeHandle(ref, () => ({ save }), [save])
207
+ const dirty = React.useMemo(() => {
208
+ if (kind === 'user') {
209
+ if (mode !== originalMode) return true
210
+ if (mode === 'override') return selected.join('|') !== original.join('|')
211
+ return false
212
+ }
213
+ return selected.join('|') !== original.join('|')
214
+ }, [kind, mode, original, originalMode, selected])
224
215
 
225
216
  if (loading) {
226
217
  return (
@@ -306,6 +297,4 @@ export const WidgetVisibilityEditor = React.forwardRef<WidgetVisibilityEditorHan
306
297
  </div>
307
298
  </div>
308
299
  )
309
- })
310
-
311
- WidgetVisibilityEditor.displayName = 'WidgetVisibilityEditor'
300
+ }