@gadmin2n/schematics 0.0.139 → 0.0.141

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 (329) 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/config/ui/Event.ts +1 -1
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/gitignore +6 -5
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +10 -3
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +6 -4
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -2
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +12 -3
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/gen-jwt.ts +8 -1
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/migrate-human-approval-configs.ts +86 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +710 -121
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +125 -10
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +28 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.spec.ts +61 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.ts +7 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.spec.ts +54 -0
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.ts +86 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +9 -3
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +89 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +68 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +177 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +283 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +10 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.spec.ts +42 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.ts +108 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +101 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.dto.ts +29 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +21 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.registry.ts +30 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.ts +15 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +105 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +96 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +78 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.spec.ts +56 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.ts +111 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.spec.ts +23 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.ts +18 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.spec.ts +240 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +339 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.types.ts +74 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +47 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +41 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.spec.ts +70 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.ts +76 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +12 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +227 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +121 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +160 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.dto.ts +41 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.spec.ts +171 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.ts +245 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +22 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.spec.ts +68 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.ts +126 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule.types.ts +34 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.ts +115 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.spec.ts +45 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.ts +59 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +72 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +144 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +19 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +350 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +774 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +46 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/legacy-approval-config-migration.ts +227 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/outbox-retry.util.ts +14 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +151 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +88 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +43 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +21 -1
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.controller.ts +77 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.dto.ts +98 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.ts +277 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.spec.ts +14 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.ts +59 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integrationConnection.module.ts +10 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/actor-context.util.ts +27 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user-group.provider.ts +208 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user.provider.ts +168 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.spec.ts +157 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.ts +176 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.dto.ts +21 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.errors.ts +78 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.spec.ts +100 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.ts +115 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.types.ts +97 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subjectProvider.module.ts +34 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +89 -1
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +4 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.controller.ts +119 -0
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.dto.ts +91 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.errors.ts +34 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.spec.ts +161 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.ts +390 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/userGroup.module.ts +10 -0
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +17 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.ts +8 -2
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/parameter-binding.ts +93 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.spec.ts +34 -1
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.ts +26 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +158 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +155 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +512 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +368 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.types.ts +43 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.spec.ts +174 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.ts +149 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-dsl-comparison.ts +43 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +1 -1
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +4 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +70 -28
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +128 -0
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.spec.ts +85 -0
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.ts +157 -0
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.spec.ts +59 -0
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +27 -5
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +18 -3
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +493 -21
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +426 -90
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.spec.ts +79 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.ts +62 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/schema.types.ts +10 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.spec.ts +124 -0
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.ts +236 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +49 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +69 -0
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/workflowConfig.module.ts +20 -0
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.spec.ts +15 -0
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.ts +25 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.ts +103 -11
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.dto.ts +98 -0
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.module.ts +3 -0
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +72 -62
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +148 -11
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -9
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +5 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +2 -2
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -5
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/PageHeader.tsx +46 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +26 -18
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +2 -2
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +24 -17
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +7 -18
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +2 -2
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +288 -33
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/themeStyles.ts +97 -0
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +1 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/SettingDrawer.tsx +251 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +47 -19
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +18 -9
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/menuRenderer.tsx +155 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +123 -129
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.test.ts +10 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +18 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +32 -3
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +98 -3
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +101 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +8 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +51 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +1 -1
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +1 -1
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +40 -1
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +5 -5
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +16 -1
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +10 -7
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +4 -2
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +26 -2
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +575 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +26 -2
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +575 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +152 -2
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +9 -15
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +41 -9
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/edit.tsx +1 -1
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +10 -8
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/show.tsx +3 -3
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +1 -1
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +1 -1
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +141 -138
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +3 -6
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.css +3 -0
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +45 -13
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasComponentLibrary.tsx +45 -22
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +175 -119
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +248 -74
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +33 -18
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +16 -10
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +1 -1
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +31 -0
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +15 -0
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +16 -11
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/CanvasAiModal.tsx +25 -21
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ExportModal.tsx +6 -1
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +9 -10
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartConfigModal.tsx +4 -7
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartDataSourceModal.tsx +23 -9
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +16 -11
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +2 -5
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +16 -11
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableConfigModal.tsx +2 -9
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +23 -12
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/canvasModalProps.ts +2 -17
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.test.ts +149 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +111 -17
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +1 -0
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.test.ts +83 -0
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.ts +118 -0
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardName.test.ts +26 -0
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +9 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +1 -1
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +10 -8
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +3 -6
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.tsx +71 -0
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +209 -0
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +6 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +47 -150
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +21 -20
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +115 -118
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +1 -1
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +61 -64
  224. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +1 -1
  225. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +187 -200
  226. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +84 -0
  227. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +141 -0
  228. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +16 -0
  229. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +210 -0
  230. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CreateNodeInstanceDrawer.tsx +154 -0
  231. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +194 -5
  232. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DeletableEdge.tsx +76 -0
  233. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.tsx +1 -1
  234. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +176 -22
  235. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +62 -0
  236. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +94 -5
  237. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExportModal.tsx +15 -10
  238. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +251 -70
  239. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ImportModal.tsx +18 -24
  240. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/InstanceRequiredDialog.tsx +106 -0
  241. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.test.tsx +45 -0
  242. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.tsx +43 -0
  243. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +283 -0
  244. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeEditModal.tsx +6 -7
  245. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +335 -0
  246. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +433 -237
  247. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ParameterBindingEditor.tsx +179 -0
  248. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +18 -16
  249. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +20 -16
  250. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +6 -4
  251. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.test.tsx +68 -0
  252. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.tsx +367 -0
  253. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connection.types.ts +21 -0
  254. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.tsx +180 -0
  255. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +38 -22
  256. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useNodeInstanceLibrary.ts +41 -0
  257. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +6 -0
  258. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +29 -35
  259. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +8 -11
  260. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +4 -3
  261. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +56 -23
  262. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +21 -6
  263. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +17 -20
  264. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +9 -17
  265. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaField.tsx +311 -0
  266. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.test.tsx +218 -0
  267. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.tsx +83 -0
  268. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +135 -0
  269. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema-defaults.ts +36 -0
  270. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema.types.ts +32 -0
  271. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.test.tsx +23 -0
  272. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.tsx +52 -0
  273. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +9 -13
  274. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +39 -0
  275. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.test.tsx +20 -0
  276. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.tsx +72 -0
  277. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.test.tsx +47 -0
  278. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +185 -0
  279. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.test.tsx +102 -0
  280. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.tsx +150 -0
  281. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +103 -0
  282. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.test.tsx +135 -0
  283. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +273 -0
  284. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +303 -0
  285. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.test.tsx +189 -0
  286. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +706 -0
  287. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +86 -0
  288. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +458 -0
  289. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +81 -0
  290. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +281 -0
  291. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.test.tsx +61 -0
  292. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.tsx +266 -0
  293. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +104 -0
  294. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +98 -0
  295. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupCreateModal.tsx +70 -0
  296. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupEditModal.tsx +138 -0
  297. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.test.ts +25 -0
  298. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.ts +42 -0
  299. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/subject-provider.api.ts +95 -0
  300. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +15 -11
  301. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.test.tsx +152 -0
  302. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +438 -141
  303. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types/parameter-binding.ts +49 -0
  304. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +31 -2
  305. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.test.ts +208 -0
  306. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.ts +246 -0
  307. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +77 -0
  308. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.test.ts +34 -0
  309. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.ts +18 -0
  310. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.ts +66 -0
  311. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +39 -0
  312. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +48 -0
  313. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.test.ts +51 -0
  314. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.ts +32 -0
  315. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +1 -1
  316. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +10 -8
  317. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +3 -3
  318. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd-theme-vars.css +93 -0
  319. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +8 -8
  320. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +4 -4
  321. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +40 -5
  322. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +3 -3
  323. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +3 -3
  324. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/theme-styles.css +81 -0
  325. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/test/setup.ts +5 -0
  326. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +1 -7
  327. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vitest.config.ts +12 -0
  328. package/package.json +1 -1
  329. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/DynamicConfigForm.tsx +0 -154
@@ -40,6 +40,36 @@ export default function AddPageModal({
40
40
  );
41
41
  const [selectedRoles, setSelectedRoles] = useState<string[]>([]);
42
42
  const [loadError, setLoadError] = useState(false);
43
+ // ── 页面参考图(可选,仅一张)──
44
+ const [imgFile, setImgFile] = useState<File | null>(null);
45
+ const [imgPreviewUrl, setImgPreviewUrl] = useState<string | null>(null);
46
+ const [uploadedImgPath, setUploadedImgPath] = useState<string | null>(null);
47
+ const [imgUploading, setImgUploading] = useState(false);
48
+ const [imgUploadError, setImgUploadError] = useState<string | null>(null);
49
+
50
+ async function handleImgUpload() {
51
+ if (!imgFile || imgUploading) return;
52
+ setImgUploading(true);
53
+ setImgUploadError(null);
54
+ try {
55
+ const resp = await fetch(
56
+ `/dev-shell/upload-reference?filename=${encodeURIComponent(
57
+ imgFile.name,
58
+ )}`,
59
+ { method: 'POST', body: imgFile },
60
+ );
61
+ const data = await resp.json().catch(() => ({}));
62
+ if (!resp.ok || !data?.path) {
63
+ throw new Error(data?.error || `上传失败(${resp.status})`);
64
+ }
65
+ setUploadedImgPath(data.path);
66
+ } catch (err: any) {
67
+ setUploadedImgPath(null);
68
+ setImgUploadError(err?.message || '上传失败,请重试');
69
+ } finally {
70
+ setImgUploading(false);
71
+ }
72
+ }
43
73
 
44
74
  const pageTreeData = useMemo(() => {
45
75
  const tree = buildPageTree(
@@ -82,6 +112,10 @@ export default function AddPageModal({
82
112
  alert('请描述页面功能');
83
113
  return;
84
114
  }
115
+ if (imgFile && !uploadedImgPath) {
116
+ alert('请先点击"上传",待参考图上传成功后再开始生成');
117
+ return;
118
+ }
85
119
  if (!selectedParent) {
86
120
  alert('请选择挂载目录');
87
121
  return;
@@ -101,6 +135,12 @@ export default function AddPageModal({
101
135
  '请帮我使用 page-create-new skill 添加一个新页面。\n\n以下是页面需求:\n',
102
136
  desc,
103
137
  ];
138
+ if (uploadedImgPath) {
139
+ lines.push(
140
+ '我提供了一张页面参考图,请用 Read 工具读取它,作为页面布局、样式和设计的参考:\n' +
141
+ uploadedImgPath,
142
+ );
143
+ }
104
144
  if (parentText) lines.push('挂载目录:' + parentText);
105
145
  lines.push('可查看角色:' + selectedRoles.join('、'));
106
146
  onConfirm(lines.join('\n\n'));
@@ -250,6 +290,67 @@ export default function AddPageModal({
250
290
  onChange={(e) => setDesc(e.target.value)}
251
291
  />
252
292
  </div>
293
+ <div className="guided-question">
294
+ <label className="guided-question-label">
295
+ 🖼️ 页面参考图
296
+ <span className="guided-optional-tag">(可选)</span>
297
+ </label>
298
+ <div className="add-data-upload-row">
299
+ <input
300
+ type="file"
301
+ accept=".png,.jpg,.jpeg,.webp,.gif"
302
+ className="add-data-file-input"
303
+ onChange={(e) => {
304
+ const f = e.target.files?.[0] ?? null;
305
+ setImgFile(f);
306
+ setUploadedImgPath(null);
307
+ setImgUploadError(null);
308
+ if (imgPreviewUrl) URL.revokeObjectURL(imgPreviewUrl);
309
+ setImgPreviewUrl(f ? URL.createObjectURL(f) : null);
310
+ }}
311
+ />
312
+ <button
313
+ className="add-data-btn-upload"
314
+ disabled={!imgFile || imgUploading || !!uploadedImgPath}
315
+ onClick={handleImgUpload}
316
+ >
317
+ {imgUploading
318
+ ? '上传中…'
319
+ : uploadedImgPath
320
+ ? '已上传'
321
+ : '上传'}
322
+ </button>
323
+ </div>
324
+ {uploadedImgPath && (
325
+ <p className="add-data-upload-status ok">
326
+ ✓ 已上传:{imgFile?.name}
327
+ </p>
328
+ )}
329
+ {imgUploadError && (
330
+ <p className="add-data-upload-status error">
331
+ {imgUploadError}
332
+ </p>
333
+ )}
334
+ {imgPreviewUrl && (
335
+ <img
336
+ src={imgPreviewUrl}
337
+ alt="页面参考图预览"
338
+ style={{
339
+ marginTop: 8,
340
+ maxWidth: '100%',
341
+ maxHeight: 160,
342
+ borderRadius: 6,
343
+ border: '1px solid var(--ant-color-border-secondary)',
344
+ objectFit: 'contain',
345
+ display: 'block',
346
+ }}
347
+ />
348
+ )}
349
+ <span className="guided-hint-text">
350
+ 仅支持一张图片(png/jpg/webp/gif),不超过 5MB,AI
351
+ 会读取它作为页面设计参考
352
+ </span>
353
+ </div>
253
354
  <div className="guided-question">
254
355
  <label className="guided-question-label">
255
356
  📁 挂载到哪个目录?
@@ -513,6 +513,10 @@ function DevShellInner() {
513
513
  <AddDataModal
514
514
  onConfirm={(prompt) => {
515
515
  setModal(null);
516
+ // 「新建数据表」与当前页面无关,摘掉页面上下文,prompt 不带「更多的辅助信息」
517
+ sdkRef.current
518
+ ?.removeAdditionContext(PAGE_CONTEXT_KEY)
519
+ .catch(() => {});
516
520
  sendPromptToAgent(prompt);
517
521
  }}
518
522
  onCancel={() => setModal(null)}
@@ -523,6 +527,10 @@ function DevShellInner() {
523
527
  getIframe={() => iframeRef.current}
524
528
  onConfirm={(prompt) => {
525
529
  setModal(null);
530
+ // 「新建页面」与当前页面无关,摘掉页面上下文,prompt 不带「更多的辅助信息」
531
+ sdkRef.current
532
+ ?.removeAdditionContext(PAGE_CONTEXT_KEY)
533
+ .catch(() => {});
526
534
  sendPromptToAgent(prompt);
527
535
  }}
528
536
  onCancel={() => setModal(null)}
@@ -391,6 +391,57 @@ div.chat-header {
391
391
  border-color: #1677ff;
392
392
  }
393
393
 
394
+ .add-data-upload-row {
395
+ display: flex;
396
+ align-items: center;
397
+ gap: 10px;
398
+ margin-bottom: 10px;
399
+ }
400
+
401
+ .add-data-file-input {
402
+ flex: 1;
403
+ font-size: 12px;
404
+ color: #595959;
405
+ }
406
+
407
+ .add-data-btn-upload {
408
+ padding: 7px 18px;
409
+ font-size: 13px;
410
+ border: none;
411
+ border-radius: 6px;
412
+ background: #1677ff;
413
+ color: #fff;
414
+ cursor: pointer;
415
+ white-space: nowrap;
416
+ transition: background 0.15s;
417
+ }
418
+
419
+ .add-data-btn-upload:hover:not(:disabled) {
420
+ background: #4096ff;
421
+ }
422
+
423
+ .add-data-btn-upload:disabled {
424
+ background: #bfbfbf;
425
+ cursor: not-allowed;
426
+ }
427
+
428
+ .add-data-upload-status {
429
+ font-size: 12px;
430
+ margin: 0 0 10px;
431
+ }
432
+
433
+ .add-data-upload-status.ok {
434
+ color: #52c41a;
435
+ }
436
+
437
+ .add-data-upload-status.error {
438
+ color: #ff4d4f;
439
+ }
440
+
441
+ .add-data-extra-textarea {
442
+ height: 120px;
443
+ }
444
+
394
445
  .guided-question {
395
446
  margin-bottom: 14px;
396
447
  }
@@ -36,7 +36,7 @@ function DynamicAutoComplete({
36
36
  fieldName: string;
37
37
  disabled?: boolean;
38
38
  }) {
39
- const { data } = useList({
39
+ const { result: data } = useList({
40
40
  resource: resourceName,
41
41
  pagination: { pageSize: 1000 },
42
42
  meta: { select: { [fieldName]: true } },
@@ -85,7 +85,7 @@ export function interpolateActionUrl(
85
85
 
86
86
  export function getTableParams(filters: Record<string, string> = {}) {
87
87
  return stringifyTableParams({
88
- pagination: { pageSize: 10, current: 1 },
88
+ pagination: { pageSize: 10, currentPage: 1 },
89
89
  sorters: [],
90
90
  filters: Object.entries(filters).map(([field, value]) => ({
91
91
  field,
@@ -21,12 +21,51 @@ type LoginCookie = {
21
21
 
22
22
  // ─── 认证 / 会话 ──────────────────────────────────────────────────────────────
23
23
 
24
+ // 后端可达性探测(仅 dev 使用):本地 nest 未启动/正在 watch 重启时,
25
+ // 直接跳转会死在浏览器 ERR_CONNECTION_REFUSED 错误页(顶层导航失败无自动恢复)。
26
+ // 改为每 3s 探活 /api/health/live(无鉴权),可达后才执行跳转。
27
+ // 上限 2 分钟:超时放弃等待直接跳转,避免后端一直未起时页面无限静默重试。
28
+ const PROBE_INTERVAL_MS = 3000;
29
+ const PROBE_MAX_ATTEMPTS = 40; // 40 * 3s = 2min
30
+
31
+ async function waitBackendThenNavigate(url: string) {
32
+ const apiUrl = getApiUrl();
33
+ for (let attempt = 1; attempt <= PROBE_MAX_ATTEMPTS; attempt++) {
34
+ try {
35
+ // no-cors:只需确认 TCP/HTTP 可达, opaque 响应即可,避免 CORS 头缺失造成误判
36
+ await fetch(`${apiUrl}/health/live`, {
37
+ mode: 'no-cors',
38
+ cache: 'no-store',
39
+ });
40
+ break;
41
+ } catch {
42
+ if (attempt === PROBE_MAX_ATTEMPTS) {
43
+ console.warn(
44
+ '[gadmin] backend unreachable after 2min, navigate anyway (is nest running?)',
45
+ );
46
+ break;
47
+ }
48
+ console.warn(
49
+ '[gadmin] backend unreachable, retry login redirect in 3s...',
50
+ );
51
+ await new Promise((r) => setTimeout(r, PROBE_INTERVAL_MS));
52
+ }
53
+ }
54
+ window.location.href = url;
55
+ }
56
+
24
57
  export function login() {
25
58
  clearLoginCookie();
26
59
  const apiUrl = getApiUrl();
27
- window.location.href = `${apiUrl}/login?redirect_url=${encodeURIComponent(
60
+ const url = `${apiUrl}/login?redirect_url=${encodeURIComponent(
28
61
  window.location.href,
29
62
  )}`;
63
+ // 仅 dev 探活:本地 nest watch 重启窗口内保护跳转;prod 保持原有立即跳转行为
64
+ if (import.meta.env.DEV) {
65
+ void waitBackendThenNavigate(url);
66
+ } else {
67
+ window.location.href = url;
68
+ }
30
69
  }
31
70
 
32
71
  export function logout() {
@@ -213,7 +213,7 @@ export function getShowField(
213
213
  key={fieldName}
214
214
  style={{
215
215
  display: 'flex',
216
- borderBottom: '1px solid #f0f0f0',
216
+ borderBottom: '1px solid var(--ant-color-border-secondary)',
217
217
  minHeight: 48,
218
218
  }}
219
219
  {...agentAttrs({
@@ -228,11 +228,11 @@ export function getShowField(
228
228
  width: 180,
229
229
  minWidth: 180,
230
230
  padding: '10px 16px',
231
- background: '#fafafa',
232
- borderRight: '1px solid #f0f0f0',
231
+ background: 'var(--ant-color-fill-quaternary)',
232
+ borderRight: '1px solid var(--ant-color-border-secondary)',
233
233
  fontWeight: 500,
234
234
  fontSize: 13,
235
- color: '#595959',
235
+ color: 'var(--ant-color-text-secondary)',
236
236
  display: 'flex',
237
237
  alignItems: 'center',
238
238
  flexShrink: 0,
@@ -254,7 +254,7 @@ export function getShowField(
254
254
  flex: 1,
255
255
  padding: '10px 16px',
256
256
  fontSize: 13,
257
- color: '#1a1a1a',
257
+ color: 'var(--ant-color-text)',
258
258
  display: 'flex',
259
259
  alignItems: 'center',
260
260
  wordBreak: 'break-word',
@@ -1,6 +1,15 @@
1
1
  import { useMemo, useRef } from 'react';
2
2
  import type { IResourceItem, ResourceProps } from '@refinedev/core';
3
- import { DashboardOutlined, SettingOutlined } from '@ant-design/icons';
3
+ import {
4
+ DashboardOutlined,
5
+ SettingOutlined,
6
+ DatabaseOutlined,
7
+ BgColorsOutlined,
8
+ ScheduleOutlined,
9
+ ApartmentOutlined,
10
+ SafetyOutlined,
11
+ FileSearchOutlined,
12
+ } from '@ant-design/icons';
4
13
  import { getRoutePath } from 'config/routeRegistry';
5
14
  import { useUserPageAccess } from './useUserPageAccess';
6
15
 
@@ -35,6 +44,12 @@ function snakeToCamel(str: string): string {
35
44
  export const iconMapping: Record<string, React.ReactNode> = {
36
45
  dashboard: <DashboardOutlined />,
37
46
  administration: <SettingOutlined />,
47
+ dataMngt: <DatabaseOutlined />,
48
+ canvas: <BgColorsOutlined />,
49
+ agenda: <ScheduleOutlined />,
50
+ workflow: <ApartmentOutlined />,
51
+ permission: <SafetyOutlined />,
52
+ audits: <FileSearchOutlined />,
38
53
  };
39
54
 
40
55
  // Pages whose children are tabs (not separate menu items)
@@ -95,10 +95,10 @@ export function useListPageState<T extends BaseRecord = any>({
95
95
  tableProps,
96
96
  sorters: sorter,
97
97
  filters,
98
- setCurrent,
98
+ setCurrentPage,
99
99
  setFilters,
100
100
  searchFormProps,
101
- tableQueryResult,
101
+ tableQuery,
102
102
  } = useTable<T, HttpError, T & { q: string }>({
103
103
  meta: {
104
104
  transformQFn: getSearchFilters,
@@ -171,7 +171,7 @@ export function useListPageState<T extends BaseRecord = any>({
171
171
  });
172
172
  }
173
173
 
174
- setCurrent(1);
174
+ setCurrentPage(1);
175
175
  setFilters((prevFilters) =>
176
176
  unionFilters(
177
177
  [],
@@ -182,7 +182,7 @@ export function useListPageState<T extends BaseRecord = any>({
182
182
  ),
183
183
  );
184
184
  },
185
- [keywordField, dateRangeField, setCurrent, setFilters],
185
+ [keywordField, dateRangeField, setCurrentPage, setFilters],
186
186
  );
187
187
 
188
188
  // Batch operations
@@ -190,7 +190,7 @@ export function useListPageState<T extends BaseRecord = any>({
190
190
  resourceName,
191
191
  apiUrl,
192
192
  requestHeaders,
193
- onSuccess: () => tableQueryResult.refetch(),
193
+ onSuccess: () => tableQuery.refetch(),
194
194
  t,
195
195
  });
196
196
 
@@ -218,7 +218,10 @@ export function useListPageState<T extends BaseRecord = any>({
218
218
  });
219
219
 
220
220
  // Row update
221
- const { mutate: updateRow, isLoading: isUpdateRowLoading } = useUpdate();
221
+ const {
222
+ mutate: updateRow,
223
+ mutation: { isPending: isUpdateRowLoading },
224
+ } = useUpdate();
222
225
  const updateRowData = useCallback(
223
226
  (id: number, values: any) => {
224
227
  updateRow({
@@ -298,6 +301,6 @@ export function useListPageState<T extends BaseRecord = any>({
298
301
  context,
299
302
 
300
303
  // Refetch
301
- refetch: tableQueryResult.refetch,
304
+ refetch: tableQuery.refetch,
302
305
  };
303
306
  }
@@ -5,6 +5,8 @@ import { initReactI18next } from 'react-i18next';
5
5
  import detector from 'i18next-browser-languagedetector';
6
6
  import en from './locales/en/common.json';
7
7
  import zh_CN from './locales/zh_CN/common.json';
8
+ import workflowEn from './locales/en/workflow.json';
9
+ import workflowZhCN from './locales/zh_CN/workflow.json';
8
10
 
9
11
  i18n
10
12
  .use(detector)
@@ -12,8 +14,8 @@ i18n
12
14
  .init({
13
15
  supportedLngs: [...SUPPORTED_LANGUAGES],
14
16
  resources: {
15
- en: { common: en },
16
- zh_CN: { common: zh_CN },
17
+ en: { common: en, workflow: workflowEn },
18
+ zh_CN: { common: zh_CN, workflow: workflowZhCN },
17
19
  },
18
20
  defaultNS: 'common',
19
21
  fallbackLng: 'zh_CN',
@@ -3,7 +3,27 @@
3
3
  "name": "AI+ Ops Admin"
4
4
  },
5
5
  "header": {
6
- "changeLanguage": "Change language"
6
+ "changeLanguage": "Change language",
7
+ "settings": "Appearance",
8
+ "themeColor": "Theme color",
9
+ "themeMode": "Appearance mode",
10
+ "modeLight": "Light",
11
+ "modeDark": "Dark",
12
+ "themeStyle": "UI style",
13
+ "siderTheme": "Sidebar color",
14
+ "siderAuto": "Follow theme",
15
+ "siderDark": "Dark",
16
+ "siderLight": "Light",
17
+ "menuOrg": "Menu organization",
18
+ "menuTree": "Collapsible tree",
19
+ "menuGrouped": "Flat groups",
20
+ "menuSelect": "Selection style",
21
+ "selectFill": "Fill",
22
+ "selectPill": "Pill",
23
+ "selectIndicator": "Indicator",
24
+ "menuExpand": "Expansion",
25
+ "expandAccordion": "Accordion",
26
+ "expandMultiple": "Multiple open"
7
27
  },
8
28
  "pages": {
9
29
  "login": {
@@ -118,7 +138,7 @@
118
138
  },
119
139
  "resources": {
120
140
  "log": {
121
- "fields":{
141
+ "fields": {
122
142
  "timestamp": "OperateTime"
123
143
  }
124
144
  },
@@ -169,6 +189,7 @@
169
189
  "customAction": "Customize...",
170
190
  "customPlaceholder": "Describe what you want to do with this component",
171
191
  "components": {
192
+ "Whiteboard": "Whiteboard",
172
193
  "NumCard": "Metric Card",
173
194
  "BarChart": "Bar Chart",
174
195
  "LineChart": "Line Chart",
@@ -240,6 +261,9 @@
240
261
  "editChartTitle": "Edit Chart Title",
241
262
  "addChartTitle": "Add Chart Title",
242
263
  "titlePlaceholder": "Enter title (leave empty to remove)",
264
+ "renameWhiteboard": "Rename Whiteboard",
265
+ "renameWhiteboardTitle": "Rename Whiteboard",
266
+ "whiteboardNamePlaceholder": "Enter whiteboard name",
243
267
  "removeComparisons": "Remove Comparisons",
244
268
  "addComparisons": "Add Comparisons",
245
269
  "removeChart": "Remove Chart",