@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
@@ -1,20 +1,37 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import {
2
+ ArrowLeftOutlined,
3
+ CheckCircleFilled,
4
+ EditOutlined,
5
+ EyeInvisibleOutlined,
6
+ EyeOutlined,
7
+ PlusOutlined,
8
+ ReloadOutlined,
9
+ } from '@ant-design/icons';
10
+ import { useGetIdentity } from '@refinedev/core';
2
11
  import {
3
12
  Alert,
4
13
  Button,
5
14
  Card,
15
+ Descriptions,
16
+ Divider,
17
+ Drawer,
18
+ Empty,
6
19
  Form,
7
20
  Input,
21
+ Result,
22
+ Space,
8
23
  Spin,
24
+ Tag,
9
25
  Typography,
10
26
  message,
27
+ theme,
11
28
  } from 'antd';
12
- import { ArrowLeftOutlined } from '@ant-design/icons';
13
- import { useNavigate } from 'react-router-dom';
14
- import { useGetIdentity } from '@refinedev/core';
15
29
  import { customRequest } from 'helpers/http';
30
+ import { HEADER_CARD_PROPS, PAGE_WRAPPER_STYLE } from 'constants/layout';
31
+ import { useCallback, useEffect, useState } from 'react';
32
+ import { useNavigate } from 'react-router-dom';
16
33
 
17
- const { Title, Text } = Typography;
34
+ const { Paragraph, Text, Title } = Typography;
18
35
 
19
36
  interface TenantConfig {
20
37
  id: number;
@@ -23,78 +40,169 @@ interface TenantConfig {
23
40
  namespace: string;
24
41
  dbUrl: string;
25
42
  displayName: string;
43
+ runtimeBaseUrl?: string | null;
44
+ runtimeToken?: string | null;
45
+ }
46
+
47
+ interface TenantConfigListResponse {
48
+ data: TenantConfig[];
49
+ }
50
+
51
+ type TenantConfigFormValues = Omit<TenantConfig, 'id'>;
52
+
53
+ const configSelect = {
54
+ id: true,
55
+ adminUrl: true,
56
+ adminToken: true,
57
+ namespace: true,
58
+ dbUrl: true,
59
+ displayName: true,
60
+ runtimeBaseUrl: true,
61
+ runtimeToken: true,
62
+ };
63
+
64
+ function maskSecret(value?: string | null) {
65
+ if (!value) return '未配置';
66
+ if (value.length <= 4) return '••••••••';
67
+ return `••••••••${value.slice(-4)}`;
68
+ }
69
+
70
+ function maskDatabaseUrl(value: string) {
71
+ return value.replace(/(\/\/[^:/?#]+:)[^@/?#]+(@)/, '$1••••••$2');
72
+ }
73
+
74
+ function SensitiveValue({
75
+ label,
76
+ value,
77
+ maskedValue,
78
+ }: {
79
+ label: string;
80
+ value?: string | null;
81
+ maskedValue?: string;
82
+ }) {
83
+ const [visible, setVisible] = useState(false);
84
+
85
+ if (!value) {
86
+ return <Text type="secondary">未配置</Text>;
87
+ }
88
+
89
+ return (
90
+ <Space size={6} style={{ maxWidth: '100%' }}>
91
+ <Text
92
+ code
93
+ style={{
94
+ overflowWrap: 'anywhere',
95
+ whiteSpace: 'normal',
96
+ }}
97
+ >
98
+ {visible ? value : (maskedValue ?? maskSecret(value))}
99
+ </Text>
100
+ <Button
101
+ type="text"
102
+ size="small"
103
+ aria-label={`${visible ? '隐藏' : '显示'} ${label}`}
104
+ icon={visible ? <EyeInvisibleOutlined /> : <EyeOutlined />}
105
+ onClick={() => setVisible((current) => !current)}
106
+ />
107
+ </Space>
108
+ );
26
109
  }
27
110
 
28
111
  export default function TemporalTenantPage() {
29
112
  const navigate = useNavigate();
30
- const [form] = Form.useForm();
113
+ const [form] = Form.useForm<TenantConfigFormValues>();
114
+ const { token } = theme.useToken();
31
115
  const { data: identity } = useGetIdentity<any>();
32
116
  const isAdmin = (identity?.configPerms?.roles || []).includes('SYSTEM_ADMIN');
33
117
 
34
118
  const [loading, setLoading] = useState(true);
35
119
  const [saving, setSaving] = useState(false);
120
+ const [editorOpen, setEditorOpen] = useState(false);
36
121
  const [existing, setExisting] = useState<TenantConfig | null>(null);
122
+ const [loadError, setLoadError] = useState(false);
37
123
 
38
- useEffect(() => {
39
- customRequest('temporalTenantConfig/findMany', 'POST', {
40
- take: 1,
41
- skip: 0,
42
- select: {
43
- id: true,
44
- adminUrl: true,
45
- adminToken: true,
46
- namespace: true,
47
- dbUrl: true,
48
- displayName: true,
124
+ const loadConfig = useCallback(async () => {
125
+ const res = await customRequest<TenantConfigListResponse>(
126
+ 'temporalTenantConfig/findMany',
127
+ 'POST',
128
+ {
129
+ take: 1,
130
+ skip: 0,
131
+ select: configSelect,
49
132
  },
50
- })
51
- .then((res: any) => {
52
- const item = res?.data?.data?.[0] ?? null;
53
- setExisting(item);
54
- if (item) form.setFieldsValue(item);
133
+ );
134
+ const item = res.data[0] ?? null;
135
+ setExisting(item);
136
+ setLoadError(false);
137
+ return item;
138
+ }, []);
139
+
140
+ useEffect(() => {
141
+ loadConfig()
142
+ .catch(() => {
143
+ setLoadError(true);
144
+ message.error('加载配置失败');
55
145
  })
56
- .catch(() => message.error('加载配置失败'))
57
146
  .finally(() => setLoading(false));
58
- }, [form]);
147
+ }, [loadConfig]);
59
148
 
60
- const handleSave = async (values: Omit<TenantConfig, 'id'>) => {
149
+ const retryLoadConfig = async () => {
150
+ setLoading(true);
151
+ try {
152
+ await loadConfig();
153
+ } catch {
154
+ setLoadError(true);
155
+ message.error('加载配置失败');
156
+ } finally {
157
+ setLoading(false);
158
+ }
159
+ };
160
+
161
+ const openEditor = () => {
162
+ form.resetFields();
163
+ if (existing) {
164
+ form.setFieldsValue(existing);
165
+ }
166
+ setEditorOpen(true);
167
+ };
168
+
169
+ const handleSave = async (values: TenantConfigFormValues) => {
61
170
  setSaving(true);
62
171
  try {
172
+ const payload = existing
173
+ ? { ...values, namespace: existing.namespace }
174
+ : values;
175
+
63
176
  if (existing) {
64
177
  await customRequest(
65
178
  `temporalTenantConfig/updateUnique/${existing.id}`,
66
179
  'PATCH',
67
- values,
180
+ payload,
68
181
  );
69
- message.success('更新成功,Temporal worker 已热重载连接');
182
+ message.success('配置已更新,Temporal Worker 将自动加载最新连接');
70
183
  } else {
71
- await customRequest('temporalTenantConfig/createOne', 'POST', values);
72
- message.success('注册成功');
184
+ await customRequest('temporalTenantConfig/createOne', 'POST', payload);
185
+ message.success('本 GAdmin 已注册到 Temporal');
73
186
  }
74
- const res: any = await customRequest(
75
- 'temporalTenantConfig/findMany',
76
- 'POST',
77
- {
78
- take: 1,
79
- skip: 0,
80
- select: {
81
- id: true,
82
- adminUrl: true,
83
- adminToken: true,
84
- namespace: true,
85
- dbUrl: true,
86
- displayName: true,
87
- },
88
- },
89
- );
90
- setExisting(res?.data?.data?.[0] ?? null);
187
+
188
+ setEditorOpen(false);
189
+ await loadConfig();
91
190
  } catch (e: any) {
92
- message.error(e?.response?.data?.message || '操作失败');
191
+ message.error(e?.response?.data?.message || '保存配置失败');
93
192
  } finally {
94
193
  setSaving(false);
95
194
  }
96
195
  };
97
196
 
197
+ const submitEditor = async () => {
198
+ try {
199
+ const values = await form.validateFields();
200
+ await handleSave(values);
201
+ } catch {
202
+ // Field-level validation messages are rendered by Ant Design.
203
+ }
204
+ };
205
+
98
206
  if (!isAdmin) {
99
207
  return (
100
208
  <div style={{ padding: 24 }}>
@@ -103,123 +211,312 @@ export default function TemporalTenantPage() {
103
211
  );
104
212
  }
105
213
 
106
- if (loading) {
107
- return (
108
- <div
109
- style={{ display: 'flex', justifyContent: 'center', paddingTop: 80 }}
110
- >
111
- <Spin size="large" />
112
- </div>
113
- );
114
- }
115
-
116
214
  return (
117
- <div
118
- style={{
119
- background: '#f0f2f5',
120
- minHeight: 'calc(100vh - 64px)',
121
- }}
122
- >
123
- <Card
124
- style={{ marginBottom: 16 }}
125
- styles={{ body: { padding: '16px 24px' } }}
126
- >
127
- <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
128
- <Button
129
- type="text"
130
- icon={<ArrowLeftOutlined />}
131
- onClick={() => navigate(-1)}
132
- />
133
- <div>
134
- <Title level={4} style={{ margin: 0 }}>
135
- 服务注册
136
- </Title>
215
+ <div style={PAGE_WRAPPER_STYLE}>
216
+ <Card {...HEADER_CARD_PROPS}>
217
+ <div
218
+ style={{
219
+ display: 'flex',
220
+ alignItems: 'center',
221
+ justifyContent: 'space-between',
222
+ gap: 16,
223
+ flexWrap: 'wrap',
224
+ }}
225
+ >
226
+ <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
227
+ <Button
228
+ type="text"
229
+ icon={<ArrowLeftOutlined />}
230
+ onClick={() => navigate(-1)}
231
+ />
232
+ <div>
233
+ <Title level={4} style={{ margin: 0 }}>
234
+ 服务注册
235
+ </Title>
236
+ <Text type="secondary" style={{ fontSize: 12 }}>
237
+ 管理本 GAdmin 与 Temporal Worker 的连接配置
238
+ </Text>
239
+ </div>
137
240
  </div>
241
+
242
+ {!loading && !loadError && existing && (
243
+ <Button
244
+ type="primary"
245
+ aria-label="修改配置"
246
+ icon={<EditOutlined />}
247
+ onClick={openEditor}
248
+ >
249
+ 修改配置
250
+ </Button>
251
+ )}
138
252
  </div>
139
253
  </Card>
140
254
 
141
- <Card styles={{ body: { padding: '24px 32px' } }}>
142
- {existing && (
143
- <Alert
144
- type="info"
145
- showIcon
146
- message="修改 dbUrl 后,Temporal worker 会立即重载数据库连接"
147
- style={{ marginBottom: 24 }}
255
+ <Card>
256
+ {loading ? (
257
+ <div
258
+ style={{ display: 'grid', placeItems: 'center', minHeight: 320 }}
259
+ >
260
+ <Spin size="large" />
261
+ </div>
262
+ ) : loadError ? (
263
+ <Result
264
+ status="error"
265
+ title="无法确认注册状态"
266
+ subTitle="未能读取本 GAdmin 的 Temporal 配置。请检查网络或权限后重试。"
267
+ extra={
268
+ <Button
269
+ type="primary"
270
+ icon={<ReloadOutlined />}
271
+ onClick={retryLoadConfig}
272
+ >
273
+ 重新加载
274
+ </Button>
275
+ }
148
276
  />
277
+ ) : existing ? (
278
+ <>
279
+ <div
280
+ style={{
281
+ display: 'flex',
282
+ alignItems: 'center',
283
+ justifyContent: 'space-between',
284
+ gap: 16,
285
+ flexWrap: 'wrap',
286
+ padding: '16px 20px',
287
+ background: 'var(--ant-color-fill-secondary)',
288
+ border: '1px solid var(--ant-color-border-secondary)',
289
+ borderRadius: 8,
290
+ }}
291
+ >
292
+ <Space size={12}>
293
+ <CheckCircleFilled
294
+ style={{
295
+ color: token.colorSuccess,
296
+ fontSize: 22,
297
+ }}
298
+ />
299
+ <div>
300
+ <Text strong style={{ display: 'block' }}>
301
+ 已注册到 Temporal
302
+ </Text>
303
+ <Text type="secondary">{existing.displayName}</Text>
304
+ </div>
305
+ </Space>
306
+ <Tag color="success">{existing.namespace}</Tag>
307
+ </div>
308
+
309
+ <Divider orientation="left">租户身份</Divider>
310
+ <Descriptions
311
+ bordered
312
+ column={{ xs: 1, sm: 1, md: 2, lg: 2, xl: 2, xxl: 2 }}
313
+ styles={{ label: { width: 180 } }}
314
+ >
315
+ <Descriptions.Item label="显示名称">
316
+ {existing.displayName}
317
+ </Descriptions.Item>
318
+ <Descriptions.Item label="Namespace">
319
+ <Text code>{existing.namespace}</Text>
320
+ </Descriptions.Item>
321
+ </Descriptions>
322
+
323
+ <Divider orientation="left">Temporal 管理连接</Divider>
324
+ <Descriptions
325
+ bordered
326
+ column={1}
327
+ styles={{ label: { width: 180 } }}
328
+ >
329
+ <Descriptions.Item label="Admin URL">
330
+ <Text code>{existing.adminUrl}</Text>
331
+ </Descriptions.Item>
332
+ <Descriptions.Item label="Admin Token">
333
+ <SensitiveValue
334
+ label="Admin Token"
335
+ value={existing.adminToken}
336
+ />
337
+ </Descriptions.Item>
338
+ </Descriptions>
339
+
340
+ <Divider orientation="left">Worker 运行连接</Divider>
341
+ <Descriptions
342
+ bordered
343
+ column={1}
344
+ styles={{ label: { width: 180 } }}
345
+ >
346
+ <Descriptions.Item label="数据库连接地址">
347
+ <SensitiveValue
348
+ label="数据库连接地址"
349
+ value={existing.dbUrl}
350
+ maskedValue={maskDatabaseUrl(existing.dbUrl)}
351
+ />
352
+ </Descriptions.Item>
353
+ <Descriptions.Item label="Runtime API 地址">
354
+ {existing.runtimeBaseUrl ? (
355
+ <Text code>{existing.runtimeBaseUrl}</Text>
356
+ ) : (
357
+ <Text type="secondary">未配置</Text>
358
+ )}
359
+ </Descriptions.Item>
360
+ <Descriptions.Item label="Runtime Token">
361
+ <SensitiveValue
362
+ label="Runtime Token"
363
+ value={existing.runtimeToken}
364
+ />
365
+ </Descriptions.Item>
366
+ </Descriptions>
367
+
368
+ <Alert
369
+ type="info"
370
+ showIcon
371
+ message="保存修改后,Temporal Worker 会自动加载本 GAdmin 的最新连接配置。"
372
+ style={{ marginTop: 20 }}
373
+ />
374
+ </>
375
+ ) : (
376
+ <Empty
377
+ image={Empty.PRESENTED_IMAGE_SIMPLE}
378
+ description={
379
+ <Space direction="vertical" size={4}>
380
+ <Text strong>本 GAdmin 尚未注册</Text>
381
+ <Text type="secondary">
382
+ 注册后,Temporal Worker 才能执行本项目的 Workflow。
383
+ </Text>
384
+ </Space>
385
+ }
386
+ >
387
+ <Button type="primary" icon={<PlusOutlined />} onClick={openEditor}>
388
+ 注册服务
389
+ </Button>
390
+ </Empty>
149
391
  )}
392
+ </Card>
393
+
394
+ <Drawer
395
+ title={existing ? '修改服务配置' : '注册本 GAdmin'}
396
+ width={600}
397
+ open={editorOpen}
398
+ destroyOnClose
399
+ maskClosable={!saving}
400
+ closable={!saving}
401
+ onClose={() => setEditorOpen(false)}
402
+ footer={
403
+ <div style={{ display: 'flex', justifyContent: 'flex-end', gap: 8 }}>
404
+ <Button disabled={saving} onClick={() => setEditorOpen(false)}>
405
+ 取消
406
+ </Button>
407
+ <Button type="primary" loading={saving} onClick={submitEditor}>
408
+ {existing ? '保存修改' : '注册服务'}
409
+ </Button>
410
+ </div>
411
+ }
412
+ >
413
+ <Paragraph type="secondary" style={{ marginBottom: 24 }}>
414
+ 这些地址都需要从 Temporal Worker
415
+ 所在网络访问。敏感信息保存后默认遮挡。
416
+ </Paragraph>
417
+
150
418
  <Form
419
+ id="temporal-tenant-form"
151
420
  form={form}
152
421
  layout="vertical"
153
422
  onFinish={handleSave}
154
- style={{ maxWidth: 600 }}
423
+ requiredMark="optional"
155
424
  >
156
- <Title level={5} style={{ color: '#595959' }}>
157
- Admin API 连接
158
- </Title>
159
- <div
160
- style={{
161
- display: 'grid',
162
- gridTemplateColumns: '1fr 1fr',
163
- gap: '0 16px',
164
- }}
425
+ <Title level={5}>Temporal 管理连接</Title>
426
+ <Form.Item
427
+ label="Admin URL"
428
+ name="adminUrl"
429
+ rules={[{ required: true, message: '请输入 Admin URL' }]}
165
430
  >
166
- <Form.Item
167
- label="Admin URL"
168
- name="adminUrl"
169
- rules={[{ required: true, message: '请输入 Admin URL' }]}
170
- >
171
- <Input placeholder="http://localhost:8081" />
172
- </Form.Item>
173
- <Form.Item
174
- label="Admin Token"
175
- name="adminToken"
176
- rules={[{ required: true, message: '请输入 Admin Token' }]}
177
- >
178
- <Input.Password placeholder="32 位 hex token" />
179
- </Form.Item>
180
- </div>
431
+ <Input placeholder="http://localhost:8081" />
432
+ </Form.Item>
433
+ <Form.Item
434
+ label="Admin Token"
435
+ name="adminToken"
436
+ rules={[{ required: true, message: '请输入 Admin Token' }]}
437
+ >
438
+ <Input.Password
439
+ placeholder="Temporal Admin API Token"
440
+ autoComplete="new-password"
441
+ />
442
+ </Form.Item>
181
443
 
182
- <Title level={5} style={{ color: '#595959', marginTop: 8 }}>
183
- 租户信息
444
+ <Title level={5} style={{ marginTop: 28 }}>
445
+ 本 GAdmin
184
446
  </Title>
185
- <div
186
- style={{
187
- display: 'grid',
188
- gridTemplateColumns: '1fr 1fr',
189
- gap: '0 16px',
190
- }}
447
+ <Form.Item
448
+ label="Namespace"
449
+ name="namespace"
450
+ extra={
451
+ existing
452
+ ? 'Namespace 是远端租户标识,注册后不能在这里修改。'
453
+ : '用于隔离本 GAdmin 的 Workflow。'
454
+ }
455
+ rules={[{ required: true, message: '请输入 Namespace' }]}
191
456
  >
192
- <Form.Item
193
- label="Namespace"
194
- name="namespace"
195
- rules={[{ required: true, message: '请输入 namespace' }]}
196
- >
197
- <Input placeholder="gadmin-test" />
198
- </Form.Item>
199
- <Form.Item
200
- label="Display Name"
201
- name="displayName"
202
- rules={[{ required: true, message: '请输入展示名' }]}
203
- >
204
- <Input placeholder="Gadmin Test" />
205
- </Form.Item>
206
- </div>
207
-
457
+ <Input disabled={Boolean(existing)} placeholder="gadmin-test" />
458
+ </Form.Item>
459
+ <Form.Item
460
+ label="显示名称"
461
+ name="displayName"
462
+ rules={[{ required: true, message: '请输入显示名称' }]}
463
+ >
464
+ <Input placeholder="GAdmin Test" />
465
+ </Form.Item>
208
466
  <Form.Item
209
- label="DB URL(Temporal worker 视角)"
467
+ label="数据库连接地址"
210
468
  name="dbUrl"
211
- rules={[{ required: true, message: '请输入 DB URL' }]}
469
+ extra="填写 Temporal Worker 能访问到的 PostgreSQL 地址。"
470
+ rules={[{ required: true, message: '请输入数据库连接地址' }]}
212
471
  >
213
- <Input placeholder="postgresql://user:pw@host.containers.internal:5432/gadmin_demo" />
472
+ <Input.Password
473
+ placeholder="postgresql://user:password@host:5432/database"
474
+ autoComplete="new-password"
475
+ />
214
476
  </Form.Item>
215
477
 
216
- <Form.Item style={{ marginTop: 8 }}>
217
- <Button type="primary" htmlType="submit" loading={saving}>
218
- {existing ? '更新并同步到 Temporal' : '注册到 Temporal'}
219
- </Button>
478
+ <Title level={5} style={{ marginTop: 28 }}>
479
+ Runtime 连接
480
+ </Title>
481
+ <Form.Item
482
+ label="Runtime API 地址"
483
+ name="runtimeBaseUrl"
484
+ extra="填写 Temporal Worker 能访问到的 GAdmin API 地址,并以 /api 结尾。"
485
+ rules={[
486
+ { required: true, message: '请输入 Runtime API 地址' },
487
+ {
488
+ validator: async (_, value?: string) => {
489
+ if (!value) return;
490
+ try {
491
+ const url = new URL(value);
492
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
493
+ throw new Error();
494
+ }
495
+ } catch {
496
+ throw new Error('请输入完整的 HTTP 或 HTTPS 地址');
497
+ }
498
+ },
499
+ },
500
+ ]}
501
+ >
502
+ <Input placeholder="http://gadmin-server:8000/api" />
503
+ </Form.Item>
504
+ <Form.Item
505
+ label="Runtime Token"
506
+ name="runtimeToken"
507
+ extra="必须与本 GAdmin 的 WORKFLOW_RUNTIME_TOKEN 完全一致。"
508
+ rules={[
509
+ { required: true, message: '请输入 Runtime Token' },
510
+ { min: 32, message: 'Runtime Token 至少需要 32 个字符' },
511
+ ]}
512
+ >
513
+ <Input.Password
514
+ placeholder="WORKFLOW_RUNTIME_TOKEN"
515
+ autoComplete="new-password"
516
+ />
220
517
  </Form.Item>
221
518
  </Form>
222
- </Card>
519
+ </Drawer>
223
520
  </div>
224
521
  );
225
522
  }