@gadmin2n/schematics 0.0.142 → 0.0.144

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 (140) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +5 -23
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +4 -2
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +36 -1
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/agenda.seed.ts +14 -14
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/bootstrap.ts +18 -13
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/canvas.seed.ts +14 -14
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +1 -1
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +67 -404
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +16 -40
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflows.ts +12 -124
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +3 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +0 -21
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +3 -10
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +1 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-callback.controller.spec.ts +48 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-callback.controller.ts +96 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +1 -59
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +8 -43
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +0 -23
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +2 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +2 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +7 -3
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +2 -2
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +18 -123
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +4 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +3 -10
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +1 -2
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +0 -10
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +12 -4
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +1 -1
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +42 -209
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +108 -225
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +0 -2
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +27 -22
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +9 -1
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.spec.ts +30 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +8 -15
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +0 -2
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/runtime-connectivity-probe.service.spec.ts +14 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/runtime-connectivity-probe.service.ts +37 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +41 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +53 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.module.ts +7 -2
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/workflow-runtime-health.controller.ts +21 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +2 -2
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +16 -88
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +23 -59
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +125 -39
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +95 -28
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +0 -20
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.spec.ts +23 -26
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.ts +6 -52
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +2 -2
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +24 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +26 -21
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +0 -1
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +0 -1
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowRuntimeConfig/workflow-runtime-config.service.spec.ts +32 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowRuntimeConfig/workflow-runtime-config.service.ts +41 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowRuntimeConfig/workflowRuntimeConfig.module.ts +10 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +10 -1
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/README.md +16 -12
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +1 -1
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/PageHeader.tsx +1 -1
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +19 -19
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +1 -1
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +15 -11
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +0 -6
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +3 -3
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +1 -1
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +1 -1
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +1 -1
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +1 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +85 -95
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +85 -95
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +2 -2
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +21 -2
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +21 -2
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +14 -66
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +4 -4
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +3 -3
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +3 -3
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.test.tsx +29 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +4 -2
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +4 -6
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +3 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +3 -1
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +4 -6
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +23 -92
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeOutputSummary.tsx +200 -0
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +61 -136
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +96 -195
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeTypeBadge.tsx +36 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/CreateNodeInstanceModal.tsx +5 -10
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +47 -22
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +7 -5
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +8 -6
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/node-config.css +35 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +1 -6
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +1 -4
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +1 -1
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +1 -1
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +82 -259
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +1 -2
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +7 -6
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +77 -71
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +10 -57
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +8 -273
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.test.tsx +54 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +110 -20
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +4 -34
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +3 -10
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +2 -37
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +26 -2
  115. package/package.json +1 -1
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +0 -89
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +0 -68
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +0 -177
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +0 -283
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +0 -10
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +0 -84
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +0 -141
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +0 -16
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +0 -210
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +0 -39
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +0 -104
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +0 -98
  128. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/AssignRolesModal.tsx +0 -0
  129. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/CreatePageModal.tsx +0 -0
  130. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/EditPageModal.tsx +0 -0
  131. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/PageDetailDrawer.tsx +0 -0
  132. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/{Components → components}/PageFormModal.tsx +0 -0
  133. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/CreateModal.tsx +0 -0
  134. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/EditModal.tsx +0 -0
  135. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/ResourceDetailDrawer.tsx +0 -0
  136. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/{Components → components}/modal.tsx +0 -0
  137. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/CreateModal.tsx +0 -0
  138. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/EditModal.tsx +0 -0
  139. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/RoleDetailDrawer.tsx +0 -0
  140. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/{Components → components}/modal.tsx +0 -0
@@ -105,21 +105,20 @@
105
105
  "systemData": {
106
106
  "callbackToken": "External result callback token",
107
107
  "approvalRequestId": "Approval request ID",
108
- "approvalChannel": "Approval channel",
109
108
  "approvalCandidates": "Approval candidates",
110
109
  "approvalExpiresAt": "Approval deadline",
111
110
  "invocationId": "Invocation tracking ID",
112
111
  "callerWorkflowInstanceId": "Caller Workflow instance ID"
113
112
  },
114
113
  "approval": {
115
- "channel": "Where approval happens",
116
- "channelDescription": "Use built-in approval tasks or send the request through a configured external channel.",
117
- "channelInputs": "Document information",
118
- "channelInputsDescription": "Fill the document parameters declared by this channel. Each value can come from the previous node, Workflow start data, or a fixed value.",
114
+ "workflow": "Approval method",
115
+ "workflowDescription": "Use built-in approval tasks, or select a published internal Workflow that creates the external request, waits for the callback, and returns the decision.",
116
+ "workflowInputs": "Approval Workflow inputs",
117
+ "workflowInputsDescription": "Fill the business parameters declared by the selected Workflow. Each value can come from the previous node, Workflow start data, or a fixed value.",
119
118
  "required": "Required",
120
119
  "builtInInbox": "Built-in approval tasks (default)",
121
- "builtInInboxHint": "With no channel selected, approvers decide directly in the built-in task inbox.",
122
- "externalChannelHint": "This AP still owns approvers and rules. The channel only dispatches requests and receives results.",
120
+ "builtInInboxHint": "With no Workflow selected, approvers decide directly in the built-in task inbox.",
121
+ "workflowHint": "This Human Approval node still owns approvers and rules. The selected Workflow creates the external request, waits for the callback, and returns the result.",
123
122
  "whoCanApprove": "Who can approve",
124
123
  "description": "Choose fixed users and groups, or use a configured rule to find approvers automatically.",
125
124
  "fixedApprovers": "Fixed approvers",
@@ -186,24 +185,8 @@
186
185
  "timeoutMilliseconds": "Timeout (milliseconds)"
187
186
  },
188
187
  "returnResult": {
189
- "type": "Result type",
190
- "ordinaryData": "Ordinary data",
191
- "approvalSubjects": "Approver list",
192
- "approvalSubjectsHint": "Only for a Workflow that automatically finds approvers",
193
- "source": "What to return",
194
- "previousNode": "Return the previous node result",
195
- "previousNodeHint": "Returns the result connected to this node. No node ID or path is required.",
196
- "workflowData": "Return a field from Workflow data",
197
- "workflowPath": "Workflow data field",
198
- "workflowHint": "Enter a relative path, for example body. It will be read from Workflow start data.",
199
- "httpResponse": "HTTP response",
200
- "httpStatusCode": "HTTP status code",
201
- "httpHeaders": "Response headers",
202
- "headerName": "Header name",
203
- "headerValue": "Header value",
204
- "addHeader": "Add response header",
205
- "deleteHeader": "Delete header {{name}}",
206
- "httpHint": "The returned body is the data selected above. Status and headers are optional."
188
+ "fixedTitle": "Returns the previous node result",
189
+ "fixedHint": "This node ends the Workflow and returns the connected previous node result to the caller. It has no settings."
207
190
  },
208
191
  "connection": {
209
192
  "title": "Connections",
@@ -250,32 +233,6 @@
250
233
  "defaultHeadersInvalid": "Default headers must be a JSON object",
251
234
  "namePlaceholder": "Ticket system"
252
235
  },
253
- "approvalChannel": {
254
- "title": "Approval channels",
255
- "subtitle": "Connect AP to any external approval system without changing business Workflows.",
256
- "newChannel": "New approval channel",
257
- "search": "Search name or code",
258
- "empty": "No approval channels yet",
259
- "loadFailed": "Unable to load approval channels",
260
- "workflowLoadFailed": "Unable to load Workflows",
261
- "saveFailed": "Unable to save approval channel",
262
- "createSuccess": "Approval channel created",
263
- "updateSuccess": "Approval channel updated",
264
- "edit": "Edit approval channel",
265
- "disabled": "Disabled",
266
- "namePlaceholder": "Company approval service",
267
- "dispatchWorkflow": "Dispatch Workflow",
268
- "dispatchHint": "Must be published, enabled, start with Receive call, and contain no Return result node.",
269
- "selectWorkflow": "Select a published Workflow",
270
- "modalHint": "Choose the Workflow that sends approval requests to WeCom, an OA, or another external system. The internal channel identifier is managed automatically.",
271
- "availableData": "The dispatch Workflow automatically receives workflow.callbackToken, workflow.requestId, workflow.channelRef, workflow.dispatchKey, workflow.candidates, and workflow.expiresAt. Document parameters filled in the AP node also become Workflow start data directly, for example workflow.title.",
272
- "dispatch": "Dispatch"
273
- },
274
- "approvalRequestTrigger": {
275
- "title": "Legacy node; equivalent to Receive call",
276
- "description": "Existing Workflows remain supported. Use Receive call for new flows; downstream nodes read start data from workflow.",
277
- "availableFields": "Available fields"
278
- },
279
236
  "externalRequest": {
280
237
  "description": "Calling this endpoint starts the current Workflow.",
281
238
  "workflowData": "The request body, query, and headers are available as workflow.body, workflow.query, and workflow.headers.",
@@ -288,7 +245,7 @@
288
245
  "respondImmediately": "Respond immediately",
289
246
  "respondImmediatelyHint": "Return 202 after starting the Workflow",
290
247
  "waitForResult": "Wait for Workflow result",
291
- "waitForResultHint": "Keep this request open until a Return Result node is reached",
248
+ "waitForResultHint": "Keep this request open until a Finish and return node is reached",
292
249
  "responseTimeout": "Maximum wait time",
293
250
  "seconds": "seconds",
294
251
  "verification": "Request verification",
@@ -301,35 +258,14 @@
301
258
  "signingHint": "Set X-Workflow-Timestamp to Unix seconds and X-Workflow-Signature to sha256=HEX(HMAC-SHA256(secret, \"{timestamp}.{rawBody}\")).",
302
259
  "regenerateSecret": "Regenerate signing secret"
303
260
  },
304
- "submitApprovalResult": {
305
- "description": "Submit an external system's decision to the waiting Human Approval node.",
306
- "hint": "Fields read from the previous node by default; each can use Workflow start data or a fixed value instead.",
307
- "optional": "Optional data",
308
- "fields": {
309
- "requestId": "Approval request ID",
310
- "channelRef": "Approval channel",
311
- "eventId": "External event ID",
312
- "approverId": "Approver ID",
313
- "decision": "Decision",
314
- "comment": "Comment",
315
- "payload": "Original external data"
316
- }
317
- },
318
- "submitExternalResult": {
319
- "description": "Send an external system result back to the waiting Workflow.",
320
- "hint": "Fields read from the previous node by default. Each can instead use Workflow start data or a fixed value.",
321
- "optional": "Optional data",
322
- "fields": {
323
- "callbackToken": "Callback token",
324
- "eventId": "External event ID",
325
- "outcome": "Outcome",
326
- "operatorId": "Operator ID",
327
- "data": "Result details"
328
- }
329
- },
330
261
  "externalWait": {
331
- "description": "Start a dispatch Workflow, then wait for an external system to finish.",
332
- "hint": "The system generates a callback token for the dispatch Workflow. After an external callback, this pipeline continues through the matching outcome.",
262
+ "description": "Wait for an external result",
263
+ "hint": "This Workflow pauses until the callback matching callbackToken arrives or the wait times out.",
264
+ "callbackToken": "Callback token",
265
+ "deadline": "Use a supplied deadline",
266
+ "duration": "Set a fixed maximum duration",
267
+ "noTimeout": "Wait indefinitely",
268
+ "deadlineField": "Deadline field",
333
269
  "workflows": "Processing Workflows",
334
270
  "dispatchWorkflow": "Dispatch Workflow",
335
271
  "selectDispatchWorkflow": "Choose the Workflow that sends the external request",
@@ -389,7 +325,17 @@
389
325
  "nameRequired": "Instance name is required",
390
326
  "nameExample": "e.g. {{name}} for approvals",
391
327
  "chooseNamed": "Choose {{name}} instance",
392
- "instanceCode": "Instance {{code}}"
328
+ "instanceCode": "Instance {{code}}",
329
+ "nodeTypeRequired": "Select a node type",
330
+ "overwriteTitle": "Replace current content",
331
+ "overwriteContent": "AI-generated content will replace the current values. Continue?",
332
+ "overwriteConfirm": "Replace",
333
+ "configObjectRequired": "Node configuration must be a JSON object",
334
+ "created": "Node instance created",
335
+ "updated": "Node instance saved",
336
+ "loadFailed": "Failed to load node instance",
337
+ "updateFailed": "Failed to save node instance",
338
+ "edit": "Edit node instance"
393
339
  },
394
340
  "editor": {
395
341
  "unsaved": "Unsaved",
@@ -402,14 +348,62 @@
402
348
  "changePlaceholder": "Describe changes to this workflow...",
403
349
  "generate": "Generate Workflow",
404
350
  "nodeProperties": "Node properties",
351
+ "nodeConfiguration": "Node configuration",
352
+ "nodeType": "Node type",
353
+ "nodeName": "Node name",
354
+ "configurationTab": "Configuration",
355
+ "aiEditTab": "AI edit",
356
+ "deleteNode": "Delete node",
405
357
  "dragNodes": "Drag nodes to the canvas",
406
358
  "add": "Add",
407
359
  "reuseInstance": "Reuse existing instance",
360
+ "loadingInstances": "Loading instances…",
361
+ "noInstances": "No instances available",
362
+ "selectInstance": "Select an instance",
363
+ "referenceInstance": "Reference instance",
364
+ "copyInstanceConfig": "Load configuration",
408
365
  "referencedInstance": "Referenced instance",
409
366
  "detach": "Detach reference",
410
- "referenceHint": "Changes are saved only in the current Workflow and do not modify the Node Template.",
411
- "label": "Label",
412
- "config": "Config",
367
+ "referenceHint": "Changes apply only to this Workflow.",
368
+ "label": "Display name",
369
+ "config": "Configuration",
370
+ "parameters": "Node parameters",
371
+ "output": {
372
+ "title": "Output (read-only)",
373
+ "hint": "The next node reads this data through input",
374
+ "flowBranches": "Flow branches",
375
+ "required": "Always",
376
+ "branchLabels": {
377
+ "approved": "Approved",
378
+ "rejected": "Rejected",
379
+ "matched": "Condition met",
380
+ "notMatched": "Condition not met",
381
+ "received": "Received",
382
+ "timedOut": "Timed out"
383
+ },
384
+ "types": {
385
+ "any": "Any value",
386
+ "array": "Array",
387
+ "boolean": "Boolean",
388
+ "enum": "Enum",
389
+ "integer": "Integer",
390
+ "number": "Number",
391
+ "object": "Object",
392
+ "string": "Text"
393
+ },
394
+ "dynamic": {
395
+ "workflowData": "Passes through the Workflow start data. The next node reads the complete value through input.",
396
+ "codeReturn": "Determined by the code return value. The next node reads the complete value through input.",
397
+ "workflowReturn": "Passes through the called Workflow result. Its structure is defined by the target Workflow.",
398
+ "returnPrevious": "Returns the complete previous-node result to the caller and ends this Workflow.",
399
+ "anyValue": "The structure is determined at runtime. The next node reads the complete value through input."
400
+ }
401
+ },
402
+ "saveAsInstance": "Also save as a node instance",
403
+ "instanceNamePlaceholder": "Instance name (required)",
404
+ "aiEditHint": "Describe what to change",
405
+ "aiEditPlaceholder": "For example: change the timeout to 30 minutes",
406
+ "send": "Send",
413
407
  "saveChanges": "Save changes",
414
408
  "aiGenerating": "AI is generating workflow…",
415
409
  "aiGeneratingHint": "Please wait. The workflow canvas will update automatically.",
@@ -504,31 +498,26 @@
504
498
  "failed": "Failed",
505
499
  "publishedStatus": "Published"
506
500
  },
501
+ "nodeTypeBadge": "{{type}} node",
507
502
  "nodeTypes": {
508
503
  "approval": "Human Approval",
509
504
  "code": "Code",
510
505
  "cron_trigger": "Schedule Trigger",
511
506
  "db_execute": "Database Write",
512
507
  "db_query": "Database Query",
513
- "delay": "Delay",
514
- "error_handler": "Error Handler",
508
+ "delay": "Timed Wait",
515
509
  "event_trigger": "Event Trigger",
516
510
  "for_each": "For Each",
517
511
  "http_request": "HTTP Request",
518
512
  "if_else": "If / Else",
519
513
  "manual_trigger": "Manual Trigger",
520
514
  "parallel": "Parallel",
521
- "send_notification": "Send Notification",
522
- "set_variable": "Set Variable",
523
- "sub_workflow": "Sub Workflow",
515
+ "sub_workflow": "Call Workflow",
524
516
  "switch": "Switch",
525
517
  "webhook_trigger": "Receive external request",
526
518
  "callable_trigger": "Receive call",
527
- "approval_request_trigger": "Receive call",
528
- "return_result": "Return result",
529
- "submit_approval_result": "Submit approval result",
530
- "submit_external_result": "Submit external result",
531
- "external_wait": "Wait for external processing"
519
+ "return_result": "Return to caller",
520
+ "external_wait": "Wait for external result"
532
521
  },
533
522
  "schema": {
534
523
  "configuration": "Configuration",
@@ -550,13 +539,14 @@
550
539
  "retryInterval": "Retry interval",
551
540
  "script": "Script",
552
541
  "mode": "Mode",
553
- "channelRef": "Approval channel",
542
+ "approvalWorkflowId": "Approval Workflow ID",
554
543
  "approverSources": "Automatic approvers",
555
544
  "subjects": "Approvers",
556
545
  "approvalRule": "Approval rule",
557
546
  "rejectionRule": "Rejection rule",
558
547
  "timeout": "Timeout",
559
548
  "workflowId": "Workflow",
549
+ "waitForCompletion": "Wait for completion",
560
550
  "message": "Message",
561
551
  "condition": "Condition",
562
552
  "durationSeconds": "Duration (seconds)",
@@ -105,21 +105,20 @@
105
105
  "systemData": {
106
106
  "callbackToken": "外部结果回调凭证",
107
107
  "approvalRequestId": "审批请求编号",
108
- "approvalChannel": "审批通道",
109
108
  "approvalCandidates": "审批人",
110
109
  "approvalExpiresAt": "审批截止时间",
111
110
  "invocationId": "调用追踪编号",
112
111
  "callerWorkflowInstanceId": "调用方 Workflow 实例编号"
113
112
  },
114
113
  "approval": {
115
- "channel": "在哪里审批",
116
- "channelDescription": "使用系统审批任务,或者把审批发送到已经配置好的外部审批通道。",
117
- "channelInputs": "单据信息",
118
- "channelInputsDescription": "填写该审批通道声明的单据参数。每个参数都可以来自上一个节点、Workflow 启动数据或固定值。",
114
+ "workflow": "审批方式",
115
+ "workflowDescription": "使用系统审批任务,或者选择一个已发布的内部 Workflow 负责创建外部单据、等待回调并返回审批结果。",
116
+ "workflowInputs": "传给审批 Workflow 的数据",
117
+ "workflowInputsDescription": "填写所选 Workflow 声明的业务参数。每个参数都可以来自上一个节点、Workflow 启动数据或固定值。",
119
118
  "required": "必填",
120
119
  "builtInInbox": "系统审批任务(默认)",
121
- "builtInInboxHint": "不选择通道时,审批人直接在系统的审批任务中处理。",
122
- "externalChannelHint": "审批人和规则仍由当前 AP 管理;通道只负责发送请求和接收结果。",
120
+ "builtInInboxHint": "不选择 Workflow 时,审批人直接在系统的审批任务中处理。",
121
+ "workflowHint": "审批人和规则仍由当前人工审批节点管理;所选 Workflow 负责创建外部单据、等待回调并返回结果。",
123
122
  "whoCanApprove": "谁可以审批",
124
123
  "description": "可以直接选择固定用户和用户组,也可以通过已配置的规则自动找到审批人。",
125
124
  "fixedApprovers": "固定审批人",
@@ -186,24 +185,8 @@
186
185
  "timeoutMilliseconds": "超时时间(毫秒)"
187
186
  },
188
187
  "returnResult": {
189
- "type": "结果类型",
190
- "ordinaryData": "普通数据",
191
- "approvalSubjects": "审批人列表",
192
- "approvalSubjectsHint": "仅用于自动查找审批人的 Workflow",
193
- "source": "返回什么",
194
- "previousNode": "返回上一步节点的结果",
195
- "previousNodeHint": "直接把连接到这里的上一步结果返回给调用方,不需要填写节点 ID 或路径。",
196
- "workflowData": "返回 Workflow 启动数据中的字段",
197
- "workflowPath": "Workflow 数据字段",
198
- "workflowHint": "填写相对路径,例如 body;系统会从 Workflow 启动数据中读取。",
199
- "httpResponse": "HTTP 响应",
200
- "httpStatusCode": "HTTP 状态码",
201
- "httpHeaders": "响应头",
202
- "headerName": "响应头名称",
203
- "headerValue": "响应头内容",
204
- "addHeader": "添加响应头",
205
- "deleteHeader": "删除响应头 {{name}}",
206
- "httpHint": "响应正文就是上面选择的数据;状态码和响应头是可选设置。"
188
+ "fixedTitle": "返回上一个节点的结果",
189
+ "fixedHint": "该节点会结束当前 Workflow,并把连接到它的上一个节点结果返回给调用方,无需配置。"
207
190
  },
208
191
  "connection": {
209
192
  "title": "连接管理",
@@ -250,32 +233,6 @@
250
233
  "defaultHeadersInvalid": "默认请求头必须是 JSON 对象",
251
234
  "namePlaceholder": "例如:工单系统"
252
235
  },
253
- "approvalChannel": {
254
- "title": "审批通道",
255
- "subtitle": "把 AP 接到任意外部审批系统,同时保持业务 Workflow 不变。",
256
- "newChannel": "新建审批通道",
257
- "search": "搜索名称或编码",
258
- "empty": "暂无审批通道",
259
- "loadFailed": "加载审批通道失败",
260
- "workflowLoadFailed": "加载 Workflow 失败",
261
- "saveFailed": "保存审批通道失败",
262
- "createSuccess": "审批通道已创建",
263
- "updateSuccess": "审批通道已更新",
264
- "edit": "编辑审批通道",
265
- "disabled": "停用",
266
- "namePlaceholder": "例如:公司统一审批",
267
- "dispatchWorkflow": "发送审批请求的 Workflow",
268
- "dispatchHint": "必须已发布、已启用,以“接收调用”开始,并且不包含“返回结果”。",
269
- "selectWorkflow": "选择已发布的 Workflow",
270
- "modalHint": "选择负责把审批请求发送到企业微信、OA 等外部系统的 Workflow。内部通道标识由系统自动管理。",
271
- "availableData": "发送 Workflow 会自动收到 workflow.callbackToken、workflow.requestId、workflow.channelRef、workflow.dispatchKey、workflow.candidates 和 workflow.expiresAt。AP 节点填写的单据参数也会直接成为 Workflow 启动数据,例如 workflow.title。",
272
- "dispatch": "发送请求"
273
- },
274
- "approvalRequestTrigger": {
275
- "title": "旧版节点,作用等同于“接收调用”",
276
- "description": "已有 Workflow 可以继续运行。新流程请使用“接收调用”;后续节点从 workflow 读取启动数据。",
277
- "availableFields": "可直接使用"
278
- },
279
236
  "externalRequest": {
280
237
  "description": "外部系统调用这个地址时,会启动当前 Workflow。",
281
238
  "workflowData": "请求体、查询参数和请求头分别放在 workflow.body、workflow.query 和 workflow.headers。",
@@ -288,7 +245,7 @@
288
245
  "respondImmediately": "立即返回",
289
246
  "respondImmediatelyHint": "启动 Workflow 后立即返回 202",
290
247
  "waitForResult": "等待 Workflow 返回结果",
291
- "waitForResultHint": "保持本次请求,直到流程执行到“返回结果”节点",
248
+ "waitForResultHint": "保持本次请求,直到流程执行到“返回调用”节点",
292
249
  "responseTimeout": "最长等待时间",
293
250
  "seconds": "秒",
294
251
  "verification": "请求验证",
@@ -301,35 +258,14 @@
301
258
  "signingHint": "X-Workflow-Timestamp 填 Unix 秒时间戳;X-Workflow-Signature 填 sha256=HEX(HMAC-SHA256(密钥, \"{时间戳}.{原始请求体}\"))。",
302
259
  "regenerateSecret": "重新生成签名密钥"
303
260
  },
304
- "submitApprovalResult": {
305
- "description": "把外部系统返回的决定提交给正在等待的人工审核节点。",
306
- "hint": "默认从上一个节点的同名字段读取,也可以改为 Workflow 启动数据或固定值。",
307
- "optional": "可选内容",
308
- "fields": {
309
- "requestId": "审批请求 ID",
310
- "channelRef": "审批通道",
311
- "eventId": "外部事件 ID",
312
- "approverId": "审批人 ID",
313
- "decision": "审批决定",
314
- "comment": "审批意见",
315
- "payload": "外部原始数据"
316
- }
317
- },
318
- "submitExternalResult": {
319
- "description": "把外部系统的处理结果交回正在等待的 Workflow。",
320
- "hint": "默认从上一个节点的同名字段读取。每个字段也可以改用 Workflow 启动数据或固定值。",
321
- "optional": "可选内容",
322
- "fields": {
323
- "callbackToken": "回调凭证",
324
- "eventId": "外部事件 ID",
325
- "outcome": "处理结果",
326
- "operatorId": "操作人 ID",
327
- "data": "结果详情"
328
- }
329
- },
330
261
  "externalWait": {
331
- "description": "启动一个发送 Workflow,然后等待外部系统处理完成。",
332
- "hint": "系统会自动生成回调凭证并交给发送 Workflow。外部系统回调后,当前流水线会从对应的结果出口继续。",
262
+ "description": "等待外部结果",
263
+ "hint": "当前 Workflow 会在这里暂停,直到 callbackToken 对应的外部回调到达或等待超时。",
264
+ "callbackToken": "回调凭证",
265
+ "deadline": "使用传入的截止时间",
266
+ "duration": "手动设置最长等待时间",
267
+ "noTimeout": "一直等待",
268
+ "deadlineField": "截止时间字段",
333
269
  "workflows": "处理流程",
334
270
  "dispatchWorkflow": "发送 Workflow",
335
271
  "selectDispatchWorkflow": "选择负责向外部系统发送请求的 Workflow",
@@ -389,7 +325,17 @@
389
325
  "nameRequired": "请输入实例名称",
390
326
  "nameExample": "例如:用于审批的{{name}}",
391
327
  "chooseNamed": "选择{{name}}实例",
392
- "instanceCode": "实例 {{code}}"
328
+ "instanceCode": "实例 {{code}}",
329
+ "nodeTypeRequired": "请选择节点类型",
330
+ "overwriteTitle": "覆盖当前内容",
331
+ "overwriteContent": "AI 生成的内容将覆盖当前填写的内容,是否继续?",
332
+ "overwriteConfirm": "确认覆盖",
333
+ "configObjectRequired": "节点配置必须是 JSON 对象",
334
+ "created": "节点实例已创建",
335
+ "updated": "节点实例已保存",
336
+ "loadFailed": "加载节点实例失败",
337
+ "updateFailed": "保存节点实例失败",
338
+ "edit": "编辑节点实例"
393
339
  },
394
340
  "editor": {
395
341
  "unsaved": "未保存",
@@ -402,14 +348,62 @@
402
348
  "changePlaceholder": "描述你想对工作流做的修改…",
403
349
  "generate": "生成工作流",
404
350
  "nodeProperties": "节点属性",
351
+ "nodeConfiguration": "节点配置",
352
+ "nodeType": "节点类型",
353
+ "nodeName": "节点名称",
354
+ "configurationTab": "配置",
355
+ "aiEditTab": "AI 修改",
356
+ "deleteNode": "删除节点",
405
357
  "dragNodes": "拖拽节点到左侧画布",
406
358
  "add": "添加",
407
359
  "reuseInstance": "复用已有实例",
360
+ "loadingInstances": "正在加载实例…",
361
+ "noInstances": "暂无可用实例",
362
+ "selectInstance": "选择实例",
363
+ "referenceInstance": "引用实例",
364
+ "copyInstanceConfig": "载入配置",
408
365
  "referencedInstance": "引用实例",
409
366
  "detach": "解除引用",
410
- "referenceHint": "修改只会保存在当前 Workflow,不会修改 Node Template。",
367
+ "referenceHint": "修改仅应用于当前 Workflow。",
411
368
  "label": "显示名称",
412
369
  "config": "配置",
370
+ "parameters": "节点参数",
371
+ "output": {
372
+ "title": "输出(只读)",
373
+ "hint": "下一个节点通过 input 读取这些数据",
374
+ "flowBranches": "流程出口",
375
+ "required": "必有",
376
+ "branchLabels": {
377
+ "approved": "审批通过",
378
+ "rejected": "审批拒绝",
379
+ "matched": "条件满足",
380
+ "notMatched": "条件不满足",
381
+ "received": "已收到",
382
+ "timedOut": "已超时"
383
+ },
384
+ "types": {
385
+ "any": "任意值",
386
+ "array": "数组",
387
+ "boolean": "布尔值",
388
+ "enum": "枚举",
389
+ "integer": "整数",
390
+ "number": "数字",
391
+ "object": "对象",
392
+ "string": "文本"
393
+ },
394
+ "dynamic": {
395
+ "workflowData": "原样输出 Workflow 启动数据,下一个节点通过 input 读取完整内容。",
396
+ "codeReturn": "输出由代码中的 return 决定,下一个节点通过 input 读取完整返回值。",
397
+ "workflowReturn": "原样输出所调用 Workflow 的返回值,具体结构由目标 Workflow 决定。",
398
+ "returnPrevious": "把上一个节点的完整结果返回给调用方,并结束当前 Workflow。",
399
+ "anyValue": "输出结构由节点运行结果决定,下一个节点通过 input 读取完整内容。"
400
+ }
401
+ },
402
+ "saveAsInstance": "同时保存为节点实例",
403
+ "instanceNamePlaceholder": "实例名称(必填)",
404
+ "aiEditHint": "描述要修改的内容",
405
+ "aiEditPlaceholder": "例如:将超时时间改为 30 分钟",
406
+ "send": "发送",
413
407
  "saveChanges": "保存修改",
414
408
  "aiGenerating": "AI 正在生成工作流…",
415
409
  "aiGeneratingHint": "请稍候,工作流画布会自动更新。",
@@ -504,31 +498,26 @@
504
498
  "failed": "失败",
505
499
  "publishedStatus": "已发布"
506
500
  },
501
+ "nodeTypeBadge": "{{type}}节点",
507
502
  "nodeTypes": {
508
503
  "approval": "人工审批",
509
504
  "code": "代码处理",
510
505
  "cron_trigger": "定时触发",
511
506
  "db_execute": "数据库写入",
512
507
  "db_query": "数据库查询",
513
- "delay": "延时等待",
514
- "error_handler": "错误处理",
508
+ "delay": "定时等待",
515
509
  "event_trigger": "事件触发",
516
510
  "for_each": "循环处理",
517
511
  "http_request": "HTTP 请求",
518
512
  "if_else": "条件分支",
519
513
  "manual_trigger": "手动触发",
520
514
  "parallel": "并行执行",
521
- "send_notification": "发送通知",
522
- "set_variable": "设置变量",
523
- "sub_workflow": "子工作流",
515
+ "sub_workflow": "调用 Workflow",
524
516
  "switch": "多路分支",
525
- "webhook_trigger": "接收外部请求",
526
- "callable_trigger": "接收调用",
527
- "approval_request_trigger": "接收调用",
528
- "return_result": "返回结果",
529
- "submit_approval_result": "提交审批结果",
530
- "submit_external_result": "提交外部处理结果",
531
- "external_wait": "等待外部处理"
517
+ "webhook_trigger": "接收外部调用",
518
+ "callable_trigger": "接收内部调用",
519
+ "return_result": "返回调用",
520
+ "external_wait": "等待外部结果"
532
521
  },
533
522
  "schema": {
534
523
  "configuration": "配置",
@@ -550,13 +539,14 @@
550
539
  "retryInterval": "重试间隔",
551
540
  "script": "脚本",
552
541
  "mode": "模式",
553
- "channelRef": "审批通道",
542
+ "approvalWorkflowId": "审批 Workflow ID",
554
543
  "approverSources": "自动找审批人",
555
544
  "subjects": "审批人",
556
545
  "approvalRule": "通过规则",
557
546
  "rejectionRule": "拒绝规则",
558
547
  "timeout": "超时设置",
559
548
  "workflowId": "工作流",
549
+ "waitForCompletion": "等待运行完成",
560
550
  "message": "消息内容",
561
551
  "condition": "条件",
562
552
  "durationSeconds": "持续时间(秒)",
@@ -30,7 +30,7 @@ import {
30
30
  import { useSearchParams, useNavigate } from 'react-router-dom';
31
31
  import { customRequest } from 'helpers/http';
32
32
  import { PageHeader } from 'components';
33
- import { PAGE_WRAPPER_STYLE } from 'constants/layout';
33
+ import { PAGE_WRAPPER_STYLE, SEARCH_CARD_PROPS } from 'constants/layout';
34
34
 
35
35
  const { Text } = Typography;
36
36
 
@@ -664,7 +664,7 @@ export default function AgendaJobsPage() {
664
664
  )}
665
665
 
666
666
  {/* Filters */}
667
- <Card style={{ marginBottom: 16 }}>
667
+ <Card {...SEARCH_CARD_PROPS}>
668
668
  <Space wrap>
669
669
  <Space size={0}>
670
670
  {[
@@ -26,6 +26,7 @@ import { useLocation, useNavigate } from 'react-router-dom';
26
26
  import {
27
27
  getColumns,
28
28
  ModelType,
29
+ pick,
29
30
  produceModel,
30
31
  tableSearchBar,
31
32
  } from '@gadmin2n/react-common';
@@ -127,19 +128,37 @@ export const AgendaJobList: React.FC<IResourceComponentsProps> = () => {
127
128
  t,
128
129
  });
129
130
 
130
- // Export all
131
+ // Export all (fields 来自 config/ui 的 toolbar.actions EXPORT 配置,缺省导出全部字段)
132
+ const exportAllAction = tableConfig.toolbar.actions.find(
133
+ (a) => a.action === 'EXPORT',
134
+ );
135
+ const exportAllFields =
136
+ exportAllAction?.action === 'EXPORT' ? exportAllAction.fields : undefined;
131
137
  const { triggerExport, isLoading: exportLoading } = useExport<AgendaJob>({
132
138
  maxItemCount: 200,
133
139
  pageSize: 100,
140
+ ...(exportAllFields?.length
141
+ ? { mapData: (item: AgendaJob) => pick(item, exportAllFields) }
142
+ : {}),
134
143
  });
135
144
 
136
- // Export selected
145
+ // Export selected (fields 来自 config/ui 的 rowSelection.actions EXPORT 配置)
146
+ const exportSelectedAction = tableConfig.rowSelection.actions.find(
147
+ (a) => a.action === 'EXPORT',
148
+ );
149
+ const exportSelectedFields =
150
+ exportSelectedAction?.action === 'EXPORT'
151
+ ? exportSelectedAction.fields
152
+ : undefined;
137
153
  const {
138
154
  triggerExport: triggerExportSelected,
139
155
  isLoading: exportSelectedLoading,
140
156
  } = useExport<AgendaJob>({
141
157
  pageSize: 100,
142
158
  meta: { where: { id: { in: batchOps.selectedRowKeys.map(Number) } } },
159
+ ...(exportSelectedFields?.length
160
+ ? { mapData: (item: AgendaJob) => pick(item, exportSelectedFields) }
161
+ : {}),
143
162
  });
144
163
 
145
164
  // Import