@gadmin2n/schematics 0.0.139 → 0.0.140

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +6 -34
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/approval.prisma +199 -0
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +9 -0
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +191 -14
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/gitignore +6 -5
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +10 -3
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +6 -4
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +4 -1
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +12 -3
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/migrate-human-approval-configs.ts +86 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +682 -121
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +110 -1
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +28 -0
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.spec.ts +61 -0
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.ts +7 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.spec.ts +54 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.ts +86 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +9 -3
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +89 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +68 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +177 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +283 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +10 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.spec.ts +42 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.ts +108 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +101 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.dto.ts +29 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +21 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.registry.ts +30 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.ts +15 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +105 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +96 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +78 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.spec.ts +56 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.ts +111 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.spec.ts +23 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.ts +18 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.spec.ts +240 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +339 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.types.ts +74 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +47 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +41 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.spec.ts +70 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.ts +76 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +12 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +227 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +121 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +160 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.dto.ts +41 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.spec.ts +171 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.ts +245 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +22 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.spec.ts +68 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.ts +126 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule.types.ts +34 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.ts +115 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.spec.ts +45 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.ts +59 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +72 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +144 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +19 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +350 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +774 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +46 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/legacy-approval-config-migration.ts +227 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/outbox-retry.util.ts +14 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +151 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +88 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +43 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +21 -1
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.controller.ts +77 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.dto.ts +98 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.ts +277 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.spec.ts +14 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.ts +59 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integrationConnection.module.ts +10 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/actor-context.util.ts +27 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user-group.provider.ts +208 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user.provider.ts +168 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.spec.ts +157 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.ts +176 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.dto.ts +21 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.errors.ts +78 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.spec.ts +100 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.ts +115 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.types.ts +97 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subjectProvider.module.ts +34 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +89 -1
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +4 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.controller.ts +119 -0
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.dto.ts +91 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.errors.ts +34 -0
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.spec.ts +161 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.ts +390 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/userGroup.module.ts +10 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +17 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.ts +8 -2
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/parameter-binding.ts +93 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +158 -0
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +155 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +363 -0
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +354 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.types.ts +43 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.spec.ts +174 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.ts +149 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-dsl-comparison.ts +43 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +1 -1
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +4 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +70 -28
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +128 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +12 -1
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +18 -3
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +369 -22
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +319 -90
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.spec.ts +79 -0
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.ts +62 -0
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/schema.types.ts +10 -0
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.spec.ts +124 -0
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.ts +236 -0
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +49 -0
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +69 -0
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/workflowConfig.module.ts +20 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.spec.ts +15 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.ts +25 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.ts +103 -11
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.dto.ts +98 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.module.ts +3 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +72 -62
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +148 -11
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -9
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +5 -2
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +2 -2
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -5
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +26 -18
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +2 -2
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +24 -17
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +7 -18
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +2 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +288 -33
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/themeStyles.ts +97 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/SettingDrawer.tsx +251 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +47 -19
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +18 -9
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/menuRenderer.tsx +155 -0
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +123 -129
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +16 -0
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +2 -1
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +98 -3
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +101 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +8 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +51 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +1 -1
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +1 -1
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +40 -1
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +5 -5
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +16 -1
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +10 -7
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +4 -2
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +26 -2
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +556 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +26 -2
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +556 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +152 -2
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +6 -1
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +41 -9
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/edit.tsx +1 -1
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +10 -8
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/show.tsx +3 -3
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +1 -1
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +1 -1
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +3 -6
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.css +3 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +45 -13
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasComponentLibrary.tsx +45 -22
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +168 -101
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +248 -74
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +33 -18
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +16 -10
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +1 -1
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +31 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +15 -0
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +16 -11
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/CanvasAiModal.tsx +25 -21
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ExportModal.tsx +6 -1
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +9 -10
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartConfigModal.tsx +4 -7
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartDataSourceModal.tsx +23 -9
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +16 -11
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +2 -5
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +16 -11
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableConfigModal.tsx +2 -9
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +23 -12
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/canvasModalProps.ts +2 -17
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.test.ts +149 -0
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +111 -17
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +1 -0
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.test.ts +83 -0
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.ts +118 -0
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardName.test.ts +26 -0
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +9 -1
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +1 -1
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +10 -8
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +3 -6
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.tsx +71 -0
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +216 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +6 -1
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +8 -8
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +1 -1
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +5 -5
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +1 -1
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +84 -0
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +141 -0
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +16 -0
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +208 -0
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CreateNodeInstanceDrawer.tsx +154 -0
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +194 -5
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DeletableEdge.tsx +76 -0
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.tsx +1 -1
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +176 -22
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +62 -0
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +94 -5
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExportModal.tsx +15 -10
  224. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +251 -70
  225. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ImportModal.tsx +18 -24
  226. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/InstanceRequiredDialog.tsx +106 -0
  227. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.test.tsx +45 -0
  228. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.tsx +43 -0
  229. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +279 -0
  230. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeEditModal.tsx +6 -7
  231. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +335 -0
  232. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +433 -237
  233. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ParameterBindingEditor.tsx +179 -0
  234. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +18 -16
  235. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +20 -16
  236. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +6 -4
  237. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.test.tsx +68 -0
  238. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.tsx +367 -0
  239. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connection.types.ts +21 -0
  240. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.tsx +171 -0
  241. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +38 -22
  242. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useNodeInstanceLibrary.ts +41 -0
  243. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +6 -0
  244. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +27 -20
  245. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +8 -11
  246. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +6 -1
  247. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +56 -23
  248. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +21 -6
  249. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +17 -20
  250. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +6 -1
  251. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaField.tsx +311 -0
  252. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.test.tsx +218 -0
  253. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.tsx +83 -0
  254. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +135 -0
  255. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema-defaults.ts +36 -0
  256. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema.types.ts +32 -0
  257. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.test.tsx +23 -0
  258. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.tsx +52 -0
  259. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +9 -13
  260. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +39 -0
  261. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.test.tsx +20 -0
  262. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.tsx +72 -0
  263. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.test.tsx +47 -0
  264. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +185 -0
  265. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.test.tsx +102 -0
  266. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.tsx +150 -0
  267. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +103 -0
  268. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.test.tsx +93 -0
  269. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +196 -0
  270. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +303 -0
  271. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.test.tsx +189 -0
  272. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +706 -0
  273. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +86 -0
  274. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +458 -0
  275. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +53 -0
  276. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +91 -0
  277. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.test.tsx +61 -0
  278. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.tsx +266 -0
  279. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +104 -0
  280. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +98 -0
  281. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupCreateModal.tsx +70 -0
  282. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupEditModal.tsx +138 -0
  283. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.test.ts +25 -0
  284. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.ts +42 -0
  285. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/subject-provider.api.ts +95 -0
  286. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +15 -11
  287. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +49 -8
  288. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types/parameter-binding.ts +49 -0
  289. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +31 -2
  290. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.test.ts +208 -0
  291. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.ts +246 -0
  292. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +73 -0
  293. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.test.ts +34 -0
  294. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.ts +18 -0
  295. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.ts +66 -0
  296. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +39 -0
  297. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +48 -0
  298. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.test.ts +51 -0
  299. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.ts +32 -0
  300. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +1 -1
  301. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +10 -8
  302. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +3 -3
  303. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd-theme-vars.css +93 -0
  304. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +8 -8
  305. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +4 -4
  306. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +20 -5
  307. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +3 -3
  308. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +3 -3
  309. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/theme-styles.css +81 -0
  310. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/test/setup.ts +5 -0
  311. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +1 -7
  312. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vitest.config.ts +12 -0
  313. package/package.json +1 -1
  314. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/DynamicConfigForm.tsx +0 -154
@@ -26,6 +26,7 @@ import {
26
26
  SaveOutlined,
27
27
  } from '@ant-design/icons';
28
28
  import { useNavigate, useParams } from 'react-router-dom';
29
+ import { useTranslation } from 'react-i18next';
29
30
  import { customRequest } from 'helpers/http';
30
31
  import { FlowRenderer } from './components/FlowRenderer';
31
32
  import { NodePropertyPanel } from './components/NodePropertyPanel';
@@ -47,6 +48,7 @@ const NEW_DRAFT_KEY = 'workflow_new_draft';
47
48
  const EDIT_DRAFT_KEY = (id: string) => `workflow_draft_${id}`;
48
49
 
49
50
  export default function WorkflowEditorPage() {
51
+ const { t } = useTranslation('workflow');
50
52
  const { id } = useParams<{ id: string }>();
51
53
  const isNewMode = !id;
52
54
  const navigate = useNavigate();
@@ -66,7 +68,7 @@ export default function WorkflowEditorPage() {
66
68
  const dslViewRef = useRef<DslViewHandle>(null);
67
69
 
68
70
  // Title editing state
69
- const [title, setTitle] = useState(isNewMode ? 'Untitled Workflow' : '');
71
+ const [title, setTitle] = useState(isNewMode ? t('editor.untitled') : '');
70
72
  const [editingTitle, setEditingTitle] = useState(false);
71
73
  const titleInputRef = useRef<any>(null);
72
74
 
@@ -141,16 +143,22 @@ export default function WorkflowEditorPage() {
141
143
  setWorkflow(wf);
142
144
  setVersions(vers);
143
145
  setTitle(wf.name);
144
- // DSL comes from findOne (includes full latest version with dsl field)
145
146
  // getVersions only returns metadata (no dsl) for the version selector
146
147
  const latestVersion = (wf as any).versions?.[0];
147
- if (latestVersion?.dsl) {
148
+ // wf.dsl is the draft (source of truth for in-progress edits, same
149
+ // precedence as backend publish()); fall back to the last published
150
+ // version only when no draft has ever been saved.
151
+ if (wf.dsl) {
152
+ setDsl(wf.dsl);
153
+ } else if (latestVersion?.dsl) {
148
154
  setDsl(latestVersion.dsl);
155
+ }
156
+ if (latestVersion?.version) {
149
157
  setCurrentVersion(latestVersion.version);
150
158
  }
151
159
  })
152
160
  .catch((e) => {
153
- message.error(e?.message ?? 'Failed to load workflow');
161
+ message.error(e?.message ?? t('editor.loadFailed'));
154
162
  })
155
163
  .finally(() => {
156
164
  setLoading(false);
@@ -185,7 +193,7 @@ export default function WorkflowEditorPage() {
185
193
  if (result && 'dsl' in result) {
186
194
  setDsl(result.dsl);
187
195
  setHasUnsavedChanges(true);
188
- message.success(result.changeSummary || 'Workflow updated');
196
+ message.success(result.changeSummary || t('editor.updated'));
189
197
  }
190
198
  },
191
199
  [dsl, generate],
@@ -204,7 +212,7 @@ export default function WorkflowEditorPage() {
204
212
  if (result && 'dsl' in result) {
205
213
  setDsl(result.dsl);
206
214
  setHasUnsavedChanges(true);
207
- message.success(result.changeSummary || 'Node updated');
215
+ message.success(result.changeSummary || t('editor.nodeUpdated'));
208
216
  }
209
217
  },
210
218
  [dsl, generate],
@@ -245,6 +253,7 @@ export default function WorkflowEditorPage() {
245
253
  updates: {
246
254
  label?: string;
247
255
  config?: Record<string, any>;
256
+ configOverride?: Record<string, any> | null;
248
257
  instanceRef?: WorkflowNode['instanceRef'] | null;
249
258
  },
250
259
  ) => {
@@ -261,6 +270,11 @@ export default function WorkflowEditorPage() {
261
270
  } else if (updates.instanceRef !== undefined) {
262
271
  updated.instanceRef = updates.instanceRef;
263
272
  }
273
+ if (updates.configOverride === null) {
274
+ delete updated.configOverride;
275
+ } else if (updates.configOverride !== undefined) {
276
+ updated.configOverride = updates.configOverride;
277
+ }
264
278
  return updated;
265
279
  });
266
280
  setDsl({ ...dsl, nodes: newNodes });
@@ -321,7 +335,7 @@ export default function WorkflowEditorPage() {
321
335
  dsl,
322
336
  });
323
337
  localStorage.removeItem(NEW_DRAFT_KEY);
324
- message.success('Workflow saved!');
338
+ message.success(t('editor.saveSuccess'));
325
339
  navigate(`/admin/workflow/edit/${wf.id}`, { replace: true });
326
340
  } else {
327
341
  // Update existing: save draft
@@ -333,10 +347,10 @@ export default function WorkflowEditorPage() {
333
347
  await customRequest(`workflow/${id}/save`, 'PATCH', { dsl });
334
348
  localStorage.removeItem(EDIT_DRAFT_KEY(id!));
335
349
  setHasUnsavedChanges(false);
336
- message.success('Saved!');
350
+ message.success(t('editor.saved'));
337
351
  }
338
352
  } catch (e: any) {
339
- message.error(e?.message ?? 'Save failed');
353
+ message.error(e?.message ?? t('editor.saveFailed'));
340
354
  } finally {
341
355
  setSaving(false);
342
356
  }
@@ -378,7 +392,7 @@ export default function WorkflowEditorPage() {
378
392
  setSelectedNodeId(null);
379
393
  localStorage.removeItem(EDIT_DRAFT_KEY(id));
380
394
  } catch (e: any) {
381
- message.error(e?.message ?? 'Failed to load version');
395
+ message.error(e?.message ?? t('editor.versionLoadFailed'));
382
396
  }
383
397
  }
384
398
 
@@ -441,7 +455,7 @@ export default function WorkflowEditorPage() {
441
455
  height: 'calc(100vh - 96px)',
442
456
  display: 'flex',
443
457
  flexDirection: 'column',
444
- background: '#f0f2f5',
458
+ background: 'var(--ant-color-bg-layout)',
445
459
  overflow: 'hidden',
446
460
  }}
447
461
  >
@@ -482,7 +496,9 @@ export default function WorkflowEditorPage() {
482
496
  />
483
497
  </>
484
498
  )}
485
- {hasUnsavedChanges && <Tag color="orange">Unsaved</Tag>}
499
+ {hasUnsavedChanges && (
500
+ <Tag color="orange">{t('editor.unsaved')}</Tag>
501
+ )}
486
502
  </Space>
487
503
  <Space>
488
504
  {!isNewMode && versions.length > 0 && (
@@ -490,9 +506,9 @@ export default function WorkflowEditorPage() {
490
506
  value={currentVersion}
491
507
  onChange={handleSelectVersion}
492
508
  style={{ width: 200 }}
493
- placeholder="选择版本"
509
+ placeholder={t('editor.selectVersion')}
494
510
  options={versions.map((v) => ({
495
- label: `v${v.version} - ${v.changeSummary?.slice(0, 20) || 'Saved'}`,
511
+ label: `v${v.version} - ${v.changeSummary?.slice(0, 20) || t('editor.saved')}`,
496
512
  value: v.version,
497
513
  }))}
498
514
  />
@@ -503,7 +519,7 @@ export default function WorkflowEditorPage() {
503
519
  icon={<RobotOutlined />}
504
520
  onClick={handleOpenAiModal}
505
521
  >
506
- AI自动生成
522
+ {t('editor.aiGenerate')}
507
523
  </Button>
508
524
  )}
509
525
  <Button
@@ -513,7 +529,7 @@ export default function WorkflowEditorPage() {
513
529
  loading={saving}
514
530
  onClick={handleSave}
515
531
  >
516
- Save
532
+ {t('common.save')}
517
533
  </Button>
518
534
  </Space>
519
535
  </div>
@@ -589,18 +605,18 @@ export default function WorkflowEditorPage() {
589
605
 
590
606
  {/* Name modal for untitled workflows */}
591
607
  <Modal
592
- title="Save Workflow"
608
+ title={t('editor.save')}
593
609
  open={nameModalOpen}
594
610
  onOk={handleNameModalOk}
595
611
  onCancel={() => setNameModalOpen(false)}
596
- okText="Save"
612
+ okText={t('common.save')}
597
613
  okButtonProps={{ loading: saving }}
598
614
  >
599
615
  <div style={{ marginBottom: 8 }}>
600
- <Typography.Text strong>Workflow Name</Typography.Text>
616
+ <Typography.Text strong>{t('editor.workflowName')}</Typography.Text>
601
617
  </div>
602
618
  <Input
603
- placeholder="Enter workflow name"
619
+ placeholder={t('editor.workflowNamePlaceholder')}
604
620
  value={saveName}
605
621
  onChange={(e) => setSaveName(e.target.value)}
606
622
  onPressEnter={handleNameModalOk}
@@ -624,7 +640,7 @@ export default function WorkflowEditorPage() {
624
640
  <TextArea
625
641
  value={aiPromptText}
626
642
  onChange={(e) => setAiPromptText(e.target.value)}
627
- placeholder="Describe changes to this workflow..."
643
+ placeholder={t('editor.changePlaceholder')}
628
644
  autoSize={{ minRows: 6, maxRows: 12 }}
629
645
  onPressEnter={(e) => {
630
646
  if (e.ctrlKey && aiPromptText.trim()) {
@@ -649,7 +665,7 @@ export default function WorkflowEditorPage() {
649
665
  style={{ marginTop: 12 }}
650
666
  block
651
667
  >
652
- Generate Workflow
668
+ {t('editor.generate')}
653
669
  </Button>
654
670
  </Modal>
655
671
  </div>
@@ -0,0 +1,41 @@
1
+ import { useCallback, useEffect, useState } from 'react';
2
+ import { customRequest } from 'helpers/http';
3
+ import type { WorkflowNodeInstance } from '../types';
4
+
5
+ export function useNodeInstanceLibrary(nodeTypeId?: string, enabled = true) {
6
+ const [instances, setInstances] = useState<WorkflowNodeInstance[]>([]);
7
+ const [loading, setLoading] = useState(false);
8
+ const [error, setError] = useState<Error>();
9
+
10
+ const reload = useCallback(async () => {
11
+ if (!nodeTypeId || !enabled) {
12
+ setInstances([]);
13
+ return;
14
+ }
15
+ setLoading(true);
16
+ setError(undefined);
17
+ try {
18
+ const response = await customRequest<{ data: WorkflowNodeInstance[] }>(
19
+ 'workflowNodeInstance/findMany',
20
+ 'POST',
21
+ {
22
+ where: { nodeTypeId: Number(nodeTypeId), isEnabled: true },
23
+ orderBy: { name: 'asc' },
24
+ take: 100,
25
+ },
26
+ );
27
+ setInstances(Array.isArray(response) ? response : (response.data ?? []));
28
+ } catch (cause) {
29
+ setError(cause instanceof Error ? cause : new Error(String(cause)));
30
+ setInstances([]);
31
+ } finally {
32
+ setLoading(false);
33
+ }
34
+ }, [enabled, nodeTypeId]);
35
+
36
+ useEffect(() => {
37
+ void reload();
38
+ }, [reload]);
39
+
40
+ return { instances, loading, error, reload };
41
+ }
@@ -162,6 +162,12 @@ Each node: { "id": "uuid", "type": "node_type", "label": "Display Name", "positi
162
162
  Each edge: { "id": "uuid", "source": "nodeId", "target": "nodeId", "sourceHandle?": "string", "label?": "string" }
163
163
  ${handleSection}
164
164
 
165
+ Data rules:
166
+ - "input" always means the value returned by the immediately previous FLOW node.
167
+ - "workflow" always means the original data received when the Workflow started.
168
+ - A callable parameter binding must be structured as {"source":"INPUT"|"WORKFLOW","path":"relative.path"} or {"source":"FIXED","valueType":"STRING"|"NUMBER"|"BOOLEAN"|"JSON","value":"..."}.
169
+ - Never generate context, inputMapping, node UUID paths, nodes.xxx, PREVIOUS, or CONTEXT_PATH as data references.
170
+
165
171
  Position nodes using: x = vertical order (increment by 250 for each sequential step), y = horizontal lane (0 for single-path flows; use different y values spaced by 200 only for parallel branches).`;
166
172
  }, [nodeTypes]);
167
173
 
@@ -32,6 +32,7 @@ import { StatusCards } from './components/StatusCards';
32
32
  import { ExportModal } from './components/ExportModal';
33
33
  import { ImportModal } from './components/ImportModal';
34
34
  import type { Workflow, WorkflowOverview } from './types';
35
+ import { useTranslation } from 'react-i18next';
35
36
 
36
37
  const { Title } = Typography;
37
38
  const PAGE_SIZE = 20;
@@ -80,6 +81,7 @@ const STATUS_COLOR: Record<string, string> = {
80
81
  };
81
82
 
82
83
  export default function WorkflowListPage() {
84
+ const { t } = useTranslation('workflow');
83
85
  console.log('[WorkflowList] MOUNTED, pathname:', window.location.pathname);
84
86
  const navigate = useNavigate();
85
87
  const [workflows, setWorkflows] = useState<Workflow[]>([]);
@@ -162,7 +164,7 @@ export default function WorkflowListPage() {
162
164
  setTotal(listRes.total);
163
165
  setOverview(overviewRes);
164
166
  } catch (e: any) {
165
- message.error(e?.message ?? 'Failed to fetch workflows');
167
+ message.error(e?.message ?? t('list.fetchFailed'));
166
168
  } finally {
167
169
  setLoading(false);
168
170
  }
@@ -175,7 +177,7 @@ export default function WorkflowListPage() {
175
177
  async function handleDelete(id: string) {
176
178
  try {
177
179
  await customRequest(`workflow/${id}`, 'DELETE');
178
- message.success('Workflow deleted');
180
+ message.success(t('list.deleted'));
179
181
  fetchData();
180
182
  } catch (e: any) {
181
183
  message.error(e?.message ?? 'Delete failed');
@@ -189,13 +191,13 @@ export default function WorkflowListPage() {
189
191
  await customRequest(`workflow/${publishId}/publish`, 'POST', {
190
192
  changeSummary: publishSummary,
191
193
  });
192
- message.success('Workflow published!');
194
+ message.success(t('list.published'));
193
195
  setPublishModalOpen(false);
194
196
  setPublishId(null);
195
197
  setPublishSummary('');
196
198
  fetchData();
197
199
  } catch (e: any) {
198
- message.error(e?.message ?? 'Publish failed');
200
+ message.error(e?.message ?? t('list.publishFailed'));
199
201
  } finally {
200
202
  setPublishLoading(false);
201
203
  }
@@ -280,25 +282,25 @@ export default function WorkflowListPage() {
280
282
  <RunDot
281
283
  count={runs.pending}
282
284
  color="#faad14"
283
- label="Pending"
285
+ label={t('list.pending')}
284
286
  onClick={() => go('PENDING')}
285
287
  />
286
288
  <RunDot
287
289
  count={runs.completed}
288
290
  color="#006d32"
289
- label="Completed"
291
+ label={t('list.completed')}
290
292
  onClick={() => go('COMPLETED')}
291
293
  />
292
294
  <RunDot
293
295
  count={runs.running}
294
296
  color="#52c41a"
295
- label="Running"
297
+ label={t('list.running')}
296
298
  onClick={() => go('RUNNING')}
297
299
  />
298
300
  <RunDot
299
301
  count={runs.failed}
300
302
  color="#ff4d4f"
301
- label="Failed"
303
+ label={t('list.failed')}
302
304
  onClick={() => go('FAILED')}
303
305
  />
304
306
  </Space>
@@ -335,21 +337,21 @@ export default function WorkflowListPage() {
335
337
  width: 180,
336
338
  render: (_: any, record: Workflow) => (
337
339
  <Space>
338
- <Tooltip title="View">
340
+ <Tooltip title={t('common.view')}>
339
341
  <Button
340
342
  size="small"
341
343
  icon={<EyeOutlined />}
342
344
  onClick={() => navigate(`/admin/workflow/show/${record.id}`)}
343
345
  />
344
346
  </Tooltip>
345
- <Tooltip title="Edit">
347
+ <Tooltip title={t('common.edit')}>
346
348
  <Button
347
349
  size="small"
348
350
  icon={<EditOutlined />}
349
351
  onClick={() => navigate(`/admin/workflow/edit/${record.id}`)}
350
352
  />
351
353
  </Tooltip>
352
- <Tooltip title="Run History">
354
+ <Tooltip title={t('list.runHistory')}>
353
355
  <Button
354
356
  size="small"
355
357
  icon={<HistoryOutlined />}
@@ -358,7 +360,7 @@ export default function WorkflowListPage() {
358
360
  }
359
361
  />
360
362
  </Tooltip>
361
- <Tooltip title="Export">
363
+ <Tooltip title={t('list.export')}>
362
364
  <Button
363
365
  size="small"
364
366
  icon={<ExportOutlined />}
@@ -369,7 +371,7 @@ export default function WorkflowListPage() {
369
371
  />
370
372
  </Tooltip>
371
373
  {record.status === 'DRAFT' && (
372
- <Tooltip title="Publish">
374
+ <Tooltip title={t('list.publish')}>
373
375
  <Button
374
376
  size="small"
375
377
  type="primary"
@@ -383,7 +385,7 @@ export default function WorkflowListPage() {
383
385
  </Tooltip>
384
386
  )}
385
387
  <Popconfirm
386
- title="Delete this workflow?"
388
+ title={t('list.deleteConfirm')}
387
389
  description="All versions and instances will be deleted."
388
390
  okText="Delete"
389
391
  cancelText="Cancel"
@@ -400,7 +402,12 @@ export default function WorkflowListPage() {
400
402
  ];
401
403
 
402
404
  return (
403
- <div style={{ background: '#f0f2f5', minHeight: 'calc(100vh - 64px)' }}>
405
+ <div
406
+ style={{
407
+ background: 'var(--ant-color-bg-layout)',
408
+ minHeight: 'calc(100vh - 64px)',
409
+ }}
410
+ >
404
411
  <Card style={{ marginBottom: 16 }}>
405
412
  <div
406
413
  style={{
@@ -410,7 +417,7 @@ export default function WorkflowListPage() {
410
417
  }}
411
418
  >
412
419
  <Title level={4} style={{ margin: 0 }}>
413
- Workflows
420
+ {t('list.title')}
414
421
  </Title>
415
422
  <Space>
416
423
  <Tooltip title="查看 WorkflowEventOutbox 表原始数据">
@@ -434,7 +441,7 @@ export default function WorkflowListPage() {
434
441
  icon={<PlusOutlined />}
435
442
  onClick={() => navigate('/admin/workflow/create')}
436
443
  >
437
- New Workflow
444
+ {t('list.new')}
438
445
  </Button>
439
446
  <Button icon={<ReloadOutlined />} onClick={fetchData} />
440
447
  </Space>
@@ -457,7 +464,7 @@ export default function WorkflowListPage() {
457
464
  style={{ width: 120 }}
458
465
  options={[
459
466
  { value: 'draft', label: 'Draft' },
460
- { value: 'published', label: 'Published' },
467
+ { value: 'published', label: t('list.publishedStatus') },
461
468
  ]}
462
469
  />
463
470
  <Input
@@ -496,7 +503,7 @@ export default function WorkflowListPage() {
496
503
  </Card>
497
504
 
498
505
  <Modal
499
- title="Publish Workflow"
506
+ title={t('list.publishTitle')}
500
507
  open={publishModalOpen}
501
508
  onOk={handlePublish}
502
509
  onCancel={() => {
@@ -504,7 +511,7 @@ export default function WorkflowListPage() {
504
511
  setPublishId(null);
505
512
  setPublishSummary('');
506
513
  }}
507
- okText="Publish"
514
+ okText={t('list.publish')}
508
515
  cancelText="Cancel"
509
516
  confirmLoading={publishLoading}
510
517
  >
@@ -219,7 +219,7 @@ export default function WorkflowInstanceDetailPage() {
219
219
  return (
220
220
  <div
221
221
  style={{
222
- background: '#f0f2f5',
222
+ background: 'var(--ant-color-bg-layout)',
223
223
  minHeight: 'calc(100vh - 64px)',
224
224
  padding: 0,
225
225
  }}
@@ -303,7 +303,6 @@ export default function WorkflowInstanceDetailPage() {
303
303
  </Space>
304
304
  </div>
305
305
  </Card>
306
-
307
306
  {/* Instance Info */}
308
307
  <Card style={{ marginBottom: 16 }} title="Execution Details">
309
308
  <Descriptions column={3} size="small">
@@ -325,7 +324,6 @@ export default function WorkflowInstanceDetailPage() {
325
324
  </Descriptions.Item>
326
325
  </Descriptions>
327
326
  </Card>
328
-
329
327
  {/* Node Execution Timeline / Canvas View */}
330
328
  <Card
331
329
  title={
@@ -425,7 +423,7 @@ export default function WorkflowInstanceDetailPage() {
425
423
  <div
426
424
  style={{
427
425
  fontSize: 12,
428
- color: '#666',
426
+ color: 'var(--ant-color-text-secondary)',
429
427
  cursor: 'pointer',
430
428
  }}
431
429
  onClick={() =>
@@ -456,13 +454,12 @@ export default function WorkflowInstanceDetailPage() {
456
454
  />
457
455
  )}
458
456
  </div>
459
-
460
457
  {/* Node Detail Panel (shared with canvas view) */}
461
458
  {selectedExecution && (
462
459
  <div
463
460
  style={{
464
461
  width: 320,
465
- borderLeft: '1px solid #f0f0f0',
462
+ borderLeft: '1px solid var(--ant-color-border-secondary)',
466
463
  paddingLeft: 16,
467
464
  overflowY: 'auto',
468
465
  }}
@@ -519,7 +516,7 @@ export default function WorkflowInstanceDetailPage() {
519
516
  </Text>
520
517
  <pre
521
518
  style={{
522
- background: '#fafafa',
519
+ background: 'var(--ant-color-fill-quaternary)',
523
520
  padding: 8,
524
521
  borderRadius: 4,
525
522
  fontSize: 11,
@@ -539,7 +536,7 @@ export default function WorkflowInstanceDetailPage() {
539
536
  </Text>
540
537
  <pre
541
538
  style={{
542
- background: '#fafafa',
539
+ background: 'var(--ant-color-fill-quaternary)',
543
540
  padding: 8,
544
541
  borderRadius: 4,
545
542
  fontSize: 11,
@@ -599,7 +596,7 @@ export default function WorkflowInstanceDetailPage() {
599
596
  <div
600
597
  style={{
601
598
  width: 320,
602
- borderLeft: '1px solid #f0f0f0',
599
+ borderLeft: '1px solid var(--ant-color-border-secondary)',
603
600
  paddingLeft: 16,
604
601
  overflowY: 'auto',
605
602
  }}
@@ -663,7 +660,7 @@ export default function WorkflowInstanceDetailPage() {
663
660
  </Text>
664
661
  <pre
665
662
  style={{
666
- background: '#fafafa',
663
+ background: 'var(--ant-color-fill-quaternary)',
667
664
  padding: 8,
668
665
  borderRadius: 4,
669
666
  fontSize: 11,
@@ -683,7 +680,7 @@ export default function WorkflowInstanceDetailPage() {
683
680
  </Text>
684
681
  <pre
685
682
  style={{
686
- background: '#fafafa',
683
+ background: 'var(--ant-color-fill-quaternary)',
687
684
  padding: 8,
688
685
  borderRadius: 4,
689
686
  fontSize: 11,
@@ -183,7 +183,12 @@ export default function WorkflowInstancesPage() {
183
183
  ];
184
184
 
185
185
  return (
186
- <div style={{ background: '#f0f2f5', minHeight: 'calc(100vh - 64px)' }}>
186
+ <div
187
+ style={{
188
+ background: 'var(--ant-color-bg-layout)',
189
+ minHeight: 'calc(100vh - 64px)',
190
+ }}
191
+ >
187
192
  <Card style={{ marginBottom: 16 }}>
188
193
  <div
189
194
  style={{