weaver-e10-builder 1.1.9 → 1.2.2
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.
- package/README.md +1 -1
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +32 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +17 -5
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +9 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/designer.d.ts.map +1 -1
- package/dist/commands/designer.js +22 -1
- package/dist/commands/designer.js.map +1 -1
- package/dist/commands/form-field-props.d.ts +3 -0
- package/dist/commands/form-field-props.d.ts.map +1 -0
- package/dist/commands/form-field-props.js +242 -0
- package/dist/commands/form-field-props.js.map +1 -0
- package/dist/commands/form-layout-init.d.ts +0 -7
- package/dist/commands/form-layout-init.d.ts.map +1 -1
- package/dist/commands/form-layout-init.js +23 -39
- package/dist/commands/form-layout-init.js.map +1 -1
- package/dist/commands/form-serial-mark.d.ts.map +1 -1
- package/dist/commands/form-serial-mark.js +134 -42
- package/dist/commands/form-serial-mark.js.map +1 -1
- package/dist/commands/form-virtual.d.ts +3 -0
- package/dist/commands/form-virtual.d.ts.map +1 -0
- package/dist/commands/form-virtual.js +197 -0
- package/dist/commands/form-virtual.js.map +1 -0
- package/dist/commands/form.d.ts +3 -0
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +263 -57
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/interface.js +1 -1
- package/dist/commands/interface.js.map +1 -1
- package/dist/commands/report-admin.d.ts +5 -0
- package/dist/commands/report-admin.d.ts.map +1 -0
- package/dist/commands/report-admin.js +420 -0
- package/dist/commands/report-admin.js.map +1 -0
- package/dist/commands/report-query.d.ts +3 -0
- package/dist/commands/report-query.d.ts.map +1 -0
- package/dist/commands/report-query.js +314 -0
- package/dist/commands/report-query.js.map +1 -0
- package/dist/commands/report-validate.d.ts +3 -0
- package/dist/commands/report-validate.d.ts.map +1 -0
- package/dist/commands/report-validate.js +719 -0
- package/dist/commands/report-validate.js.map +1 -0
- package/dist/commands/report.d.ts +12 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +666 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/wf-form.d.ts +34 -0
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +303 -127
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-advanced.d.ts.map +1 -1
- package/dist/commands/workflow-advanced.js +109 -90
- package/dist/commands/workflow-advanced.js.map +1 -1
- package/dist/commands/workflow-auth-resp.d.ts +8 -0
- package/dist/commands/workflow-auth-resp.d.ts.map +1 -0
- package/dist/commands/workflow-auth-resp.js +568 -0
- package/dist/commands/workflow-auth-resp.js.map +1 -0
- package/dist/commands/workflow-condition.d.ts.map +1 -1
- package/dist/commands/workflow-condition.js +3 -1
- package/dist/commands/workflow-condition.js.map +1 -1
- package/dist/commands/workflow-create-auth-resp.d.ts +4 -0
- package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -0
- package/dist/commands/workflow-create-auth-resp.js +204 -0
- package/dist/commands/workflow-create-auth-resp.js.map +1 -0
- package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
- package/dist/commands/workflow-node-overtime.js +125 -92
- package/dist/commands/workflow-node-overtime.js.map +1 -1
- package/dist/commands/workflow-node-reject.d.ts +52 -0
- package/dist/commands/workflow-node-reject.d.ts.map +1 -1
- package/dist/commands/workflow-node-reject.js +134 -63
- package/dist/commands/workflow-node-reject.js.map +1 -1
- package/dist/commands/workflow-node-sign.d.ts.map +1 -1
- package/dist/commands/workflow-node-sign.js +14 -7
- package/dist/commands/workflow-node-sign.js.map +1 -1
- package/dist/commands/workflow-node-validate.d.ts +6 -0
- package/dist/commands/workflow-node-validate.d.ts.map +1 -1
- package/dist/commands/workflow-node-validate.js +143 -21
- package/dist/commands/workflow-node-validate.js.map +1 -1
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +359 -116
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-numbering.d.ts.map +1 -1
- package/dist/commands/workflow-numbering.js +73 -34
- package/dist/commands/workflow-numbering.js.map +1 -1
- package/dist/commands/workflow-operator-sign.d.ts +10 -0
- package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
- package/dist/commands/workflow-operator-sign.js +40 -53
- package/dist/commands/workflow-operator-sign.js.map +1 -1
- package/dist/commands/workflow-plan-range.d.ts +10 -0
- package/dist/commands/workflow-plan-range.d.ts.map +1 -1
- package/dist/commands/workflow-plan-range.js +15 -54
- package/dist/commands/workflow-plan-range.js.map +1 -1
- package/dist/commands/workflow-segment.d.ts.map +1 -1
- package/dist/commands/workflow-segment.js +22 -14
- package/dist/commands/workflow-segment.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +13 -69
- package/dist/commands/workflow.js.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts +6 -0
- package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.js +63 -4
- package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/calendar_mapper.d.ts +2 -2
- package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
- package/dist/services/actionflow/calendar_mapper.js +33 -13
- package/dist/services/actionflow/calendar_mapper.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.js +13 -1
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js +2 -2
- package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_recover.js +2 -2
- package/dist/services/actionflow/components/action_eb_recover.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_save_version.js +2 -2
- package/dist/services/actionflow/components/action_eb_save_version.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +15 -3
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +5 -5
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_create.js +5 -2
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/approve_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_trigger.js +5 -0
- package/dist/services/actionflow/components/approve_trigger.js.map +1 -1
- package/dist/services/actionflow/components/date_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/date_trigger.js +14 -1
- package/dist/services/actionflow/components/date_trigger.js.map +1 -1
- package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
- package/dist/services/actionflow/components/dml_execute.js +18 -10
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +5 -5
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.js +8 -6
- package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +28 -9
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +34 -13
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/index.js +3 -3
- package/dist/services/actionflow/components/index.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.js +43 -4
- package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
- package/dist/services/actionflow/components/meeting_create.js +9 -9
- package/dist/services/actionflow/components/meeting_create.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +83 -4
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts +3 -2
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +33 -0
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/schedule_create.js +10 -10
- package/dist/services/actionflow/components/schedule_create.js.map +1 -1
- package/dist/services/actionflow/components/send_message.js +1 -1
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.js +42 -9
- package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +43 -13
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts +0 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +21 -27
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts +30 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +175 -2
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/design_client.d.ts +4 -0
- package/dist/services/actionflow/design_client.d.ts.map +1 -1
- package/dist/services/actionflow/design_client.js +10 -0
- package/dist/services/actionflow/design_client.js.map +1 -1
- package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
- package/dist/services/actionflow/dynamic_resources.js +10 -3
- package/dist/services/actionflow/dynamic_resources.js.map +1 -1
- package/dist/services/actionflow/enrich_approve_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/enrich_approve_trigger.js +18 -3
- package/dist/services/actionflow/enrich_approve_trigger.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +135 -12
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/generation_service.d.ts.map +1 -1
- package/dist/services/actionflow/generation_service.js +18 -2
- package/dist/services/actionflow/generation_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +1 -1
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +168 -5
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.d.ts +8 -0
- package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.js +6 -2
- package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/update_service.d.ts +6 -0
- package/dist/services/actionflow/update_service.d.ts.map +1 -1
- package/dist/services/actionflow/update_service.js +125 -7
- package/dist/services/actionflow/update_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +17 -9
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/browser.d.ts +34 -0
- package/dist/services/browser.d.ts.map +1 -0
- package/dist/services/browser.js +57 -0
- package/dist/services/browser.js.map +1 -0
- package/dist/services/esb-interface/document-parser.d.ts +5 -0
- package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
- package/dist/services/esb-interface/document-parser.js +117 -1
- package/dist/services/esb-interface/document-parser.js.map +1 -1
- package/dist/services/esb-interface/importer.d.ts.map +1 -1
- package/dist/services/esb-interface/importer.js +7 -2
- package/dist/services/esb-interface/importer.js.map +1 -1
- package/dist/services/field-props-data.d.ts +56 -0
- package/dist/services/field-props-data.d.ts.map +1 -0
- package/dist/services/field-props-data.js +732 -0
- package/dist/services/field-props-data.js.map +1 -0
- package/dist/services/form-edit-base.d.ts +45 -0
- package/dist/services/form-edit-base.d.ts.map +1 -0
- package/dist/services/form-edit-base.js +76 -0
- package/dist/services/form-edit-base.js.map +1 -0
- package/dist/services/form-field-drop.d.ts +41 -0
- package/dist/services/form-field-drop.d.ts.map +1 -0
- package/dist/services/form-field-drop.js +58 -0
- package/dist/services/form-field-drop.js.map +1 -0
- package/dist/services/form-style-template.d.ts +17 -0
- package/dist/services/form-style-template.d.ts.map +1 -0
- package/dist/services/form-style-template.js +102 -0
- package/dist/services/form-style-template.js.map +1 -0
- package/dist/services/form-virtual.d.ts +60 -0
- package/dist/services/form-virtual.d.ts.map +1 -0
- package/dist/services/form-virtual.js +331 -0
- package/dist/services/form-virtual.js.map +1 -0
- package/dist/services/report/analyze.d.ts +67 -0
- package/dist/services/report/analyze.d.ts.map +1 -0
- package/dist/services/report/analyze.js +173 -0
- package/dist/services/report/analyze.js.map +1 -0
- package/dist/services/report/build.d.ts +166 -0
- package/dist/services/report/build.d.ts.map +1 -0
- package/dist/services/report/build.js +520 -0
- package/dist/services/report/build.js.map +1 -0
- package/dist/services/report/constants.d.ts +145 -0
- package/dist/services/report/constants.d.ts.map +1 -0
- package/dist/services/report/constants.js +250 -0
- package/dist/services/report/constants.js.map +1 -0
- package/dist/services/report/dataset.d.ts +73 -0
- package/dist/services/report/dataset.d.ts.map +1 -0
- package/dist/services/report/dataset.js +185 -0
- package/dist/services/report/dataset.js.map +1 -0
- package/dist/services/report/fields.d.ts +80 -0
- package/dist/services/report/fields.d.ts.map +1 -0
- package/dist/services/report/fields.js +245 -0
- package/dist/services/report/fields.js.map +1 -0
- package/dist/services/report/forms.d.ts +70 -0
- package/dist/services/report/forms.d.ts.map +1 -0
- package/dist/services/report/forms.js +237 -0
- package/dist/services/report/forms.js.map +1 -0
- package/dist/services/report/guard.d.ts +73 -0
- package/dist/services/report/guard.d.ts.map +1 -0
- package/dist/services/report/guard.js +262 -0
- package/dist/services/report/guard.js.map +1 -0
- package/dist/services/report/http.d.ts +118 -0
- package/dist/services/report/http.d.ts.map +1 -0
- package/dist/services/report/http.js +159 -0
- package/dist/services/report/http.js.map +1 -0
- package/dist/services/report/lifecycle.d.ts +107 -0
- package/dist/services/report/lifecycle.d.ts.map +1 -0
- package/dist/services/report/lifecycle.js +323 -0
- package/dist/services/report/lifecycle.js.map +1 -0
- package/dist/services/report/permission.d.ts +59 -0
- package/dist/services/report/permission.d.ts.map +1 -0
- package/dist/services/report/permission.js +286 -0
- package/dist/services/report/permission.js.map +1 -0
- package/dist/services/report/query-checks.d.ts +124 -0
- package/dist/services/report/query-checks.d.ts.map +1 -0
- package/dist/services/report/query-checks.js +374 -0
- package/dist/services/report/query-checks.js.map +1 -0
- package/dist/services/report/query.d.ts +106 -0
- package/dist/services/report/query.d.ts.map +1 -0
- package/dist/services/report/query.js +278 -0
- package/dist/services/report/query.js.map +1 -0
- package/dist/services/report/render.d.ts +52 -0
- package/dist/services/report/render.d.ts.map +1 -0
- package/dist/services/report/render.js +138 -0
- package/dist/services/report/render.js.map +1 -0
- package/dist/services/report/reports.d.ts +110 -0
- package/dist/services/report/reports.d.ts.map +1 -0
- package/dist/services/report/reports.js +179 -0
- package/dist/services/report/reports.js.map +1 -0
- package/dist/services/report/safe-save.d.ts +57 -0
- package/dist/services/report/safe-save.d.ts.map +1 -0
- package/dist/services/report/safe-save.js +325 -0
- package/dist/services/report/safe-save.js.map +1 -0
- package/dist/services/report/sources.d.ts +48 -0
- package/dist/services/report/sources.d.ts.map +1 -0
- package/dist/services/report/sources.js +147 -0
- package/dist/services/report/sources.js.map +1 -0
- package/dist/services/report/types.d.ts +312 -0
- package/dist/services/report/types.d.ts.map +1 -0
- package/dist/services/report/types.js +2 -0
- package/dist/services/report/types.js.map +1 -0
- package/dist/services/report/validate.d.ts +169 -0
- package/dist/services/report/validate.d.ts.map +1 -0
- package/dist/services/report/validate.js +685 -0
- package/dist/services/report/validate.js.map +1 -0
- package/dist/services/report/verify.d.ts +72 -0
- package/dist/services/report/verify.d.ts.map +1 -0
- package/dist/services/report/verify.js +441 -0
- package/dist/services/report/verify.js.map +1 -0
- package/dist/services/report/workbook.d.ts +108 -0
- package/dist/services/report/workbook.d.ts.map +1 -0
- package/dist/services/report/workbook.js +471 -0
- package/dist/services/report/workbook.js.map +1 -0
- package/dist/services/rich-types.d.ts +39 -0
- package/dist/services/rich-types.d.ts.map +1 -1
- package/dist/services/rich-types.js +61 -30
- package/dist/services/rich-types.js.map +1 -1
- package/dist/services/workflow-node-layout.d.ts +214 -0
- package/dist/services/workflow-node-layout.d.ts.map +1 -0
- package/dist/services/workflow-node-layout.js +338 -0
- package/dist/services/workflow-node-layout.js.map +1 -0
- package/dist/services/workflow-operator.d.ts +47 -2
- package/dist/services/workflow-operator.d.ts.map +1 -1
- package/dist/services/workflow-operator.js +102 -5
- package/dist/services/workflow-operator.js.map +1 -1
- package/dist/services/workflow-overtime.d.ts +95 -0
- package/dist/services/workflow-overtime.d.ts.map +1 -0
- package/dist/services/workflow-overtime.js +207 -0
- package/dist/services/workflow-overtime.js.map +1 -0
- package/dist/services/workflow-plan-range.d.ts +18 -0
- package/dist/services/workflow-plan-range.d.ts.map +1 -0
- package/dist/services/workflow-plan-range.js +72 -0
- package/dist/services/workflow-plan-range.js.map +1 -0
- package/package.json +3 -2
- package/skill-docs/SKILL.md +277 -261
- package/skill-docs/_catalog.md +77 -66
- package/skill-docs/actionflows/SKILL.md +22 -14
- package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +17 -17
- package/skill-docs/actionflows/references/components/calendar/ScheduleCreate.md +17 -17
- package/skill-docs/actionflows/references/components/database/DMLExecute.md +3 -3
- package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -17
- package/skill-docs/actionflows/references/components/ebuilder/EbGetDataById.md +17 -17
- package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +6 -0
- package/skill-docs/actionflows/references/components/ebuilder/EventFormData.md +2 -0
- package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -17
- package/skill-docs/actionflows/references/components/logic/Output.md +28 -17
- package/skill-docs/actionflows/references/components/message/InnerMQSend.md +6 -2
- package/skill-docs/actionflows/references/components/personnel/AlterPersonStatus.md +30 -30
- package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +32 -32
- package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +41 -40
- package/skill-docs/actionflows/references/components/trigger/SimpleScheduler.md +19 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +17 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +19 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveEntrust.md +19 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveSave.md +17 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveTrigger.md +99 -84
- package/skill-docs/actionflows/references/dynamic_capability_matrix.md +39 -0
- package/skill-docs/references/common/guide-plan-template.md +251 -233
- package/skill-docs/references/common/ref-cli-commands.md +519 -373
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +1 -1
- package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -460
- package/skill-docs/references/ebuilder-designer/guide-designer.md +4 -4
- package/skill-docs/references/form/guide-create-form.md +232 -214
- package/skill-docs/references/form/guide-form-association.md +1 -1
- package/skill-docs/references/form/guide-form-view.md +318 -318
- package/skill-docs/references/form/guide-virtual-form.md +156 -0
- package/skill-docs/references/form/ref-form-fields.md +239 -100
- package/skill-docs/references/form/style-templates.md +80 -27
- package/skill-docs/references/report/add-dataset-registration-guide.md +139 -0
- package/skill-docs/references/report/ai-report-workflow.md +412 -0
- package/skill-docs/references/report/api-report-build-fast-path.md +275 -0
- package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -0
- package/skill-docs/references/report/cell-config-echo-guide.md +163 -0
- package/skill-docs/references/report/cell-transform-guide.md +147 -0
- package/skill-docs/references/report/condition-format-guide.md +140 -0
- package/skill-docs/references/report/cross-dataset-filter-guide.md +304 -0
- package/skill-docs/references/report/dataset-query-filter-guide.md +235 -0
- package/skill-docs/references/report/dataset-sidebar-ops-guide.md +280 -0
- package/skill-docs/references/report/dataset-table-field-contract-guide.md +339 -0
- package/skill-docs/references/report/datasource-metadata-guide.md +365 -0
- package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
- package/skill-docs/references/report/date-range-query-reference.md +102 -0
- package/skill-docs/references/report/default-header-style-guide.md +70 -0
- package/skill-docs/references/report/designer-blank-prevention-guide.md +111 -0
- package/skill-docs/references/report/event-hreflink-guide.md +184 -0
- package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -0
- package/skill-docs/references/report/formula-cell-api-guide.md +258 -0
- package/skill-docs/references/report/guide-report-build.md +131 -0
- package/skill-docs/references/report/guide-report-modify.md +100 -0
- package/skill-docs/references/report/guide-report-multisource.md +143 -0
- package/skill-docs/references/report/guide-report-query.md +98 -0
- package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +100 -0
- package/skill-docs/references/report/layout-showlocation-freeze-guide.md +167 -0
- package/skill-docs/references/report/preaggregate-auto-disable-guide.md +107 -0
- package/skill-docs/references/report/query-condition-api-guide.md +890 -0
- package/skill-docs/references/report/ref-report-commands.md +122 -0
- package/skill-docs/references/report/ref-report-pitfalls.md +226 -0
- package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -0
- package/skill-docs/references/report/report-building-guide.md +511 -0
- package/skill-docs/references/report/report-config-schema.md +445 -0
- package/skill-docs/references/report/report-create-modes-guide.md +182 -0
- package/skill-docs/references/report/report-data-model.md +447 -0
- package/skill-docs/references/report/report-delivery-contract.md +101 -0
- package/skill-docs/references/report/report-designer-feature-map.md +500 -0
- package/skill-docs/references/report/report-internal-error-guide.md +78 -0
- package/skill-docs/references/report/report-knowledge-base.md +389 -0
- package/skill-docs/references/report/report-lifecycle-api-guide.md +392 -0
- package/skill-docs/references/report/report-list-page-ops-guide.md +191 -0
- package/skill-docs/references/report/report-permission-guide.md +365 -0
- package/skill-docs/references/report/report-requirement-analysis-template.md +202 -0
- package/skill-docs/references/report/report-self-check-guide.md +164 -0
- package/skill-docs/references/report/safe-partial-save-guide.md +151 -0
- package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -0
- package/skill-docs/references/report/spec-build-schema.md +291 -0
- package/skill-docs/references/report/targeted-fix-guide.md +97 -0
- package/skill-docs/references/report/user-request-scope-only-guide.md +82 -0
- package/skill-docs/references/workflow/guide-workflow-auth-resp.md +190 -0
- package/skill-docs/references/workflow/guide-workflow-node-layout.md +181 -0
- package/skill-docs/references/workflow/guide-workflow.md +7 -3
- package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +0 -17
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# 数据集表名与字段映射契约(强制 · 历史回归保护)
|
|
2
|
+
|
|
3
|
+
> **事故(已验证 · 报表 `1313789294296735745`)**
|
|
4
|
+
> 技能包从「手工分步建表」重构为 `build spec`(spec_build 化)后,
|
|
5
|
+
> `e10-cli report build` 的 `fieldCell()` 在生成 `FieldCellType` 时**丢失了 4 个必需字段**:
|
|
6
|
+
>
|
|
7
|
+
> | 丢失字段 | 正确值 | 后果 |
|
|
8
|
+
> |----------|--------|------|
|
|
9
|
+
> | `tableName` | `数据集名(业务模块)` / `数据集名(表单)` | **左侧数据源不显示「模块类型」后缀** |
|
|
10
|
+
> | `fieldId` | 数据集字段雪花 id | 属性面板字段回显不全 |
|
|
11
|
+
> | `fieldName` | 字段技术名 `field_<id>` | 同上 |
|
|
12
|
+
> | `fieldText` | 字段显示名 | 同上 |
|
|
13
|
+
>
|
|
14
|
+
> 证据(同一报表内对照组):
|
|
15
|
+
> - Agent 建的 10 个 Field:`tableName=None`(异常)
|
|
16
|
+
> - 用户在设计器手动绑的 2 个 Field:`tableName='党员发展(业务模块)'`(正确)
|
|
17
|
+
> - 平台原生报表 `772466395278696448`:`tableName='轻资产处理(表单)'`,9/10 非空
|
|
18
|
+
> - 平台原生报表 `799097275701215232`:16/16 非空
|
|
19
|
+
>
|
|
20
|
+
> **根因不是接口、不是服务端** —— 是建表脚本写入的 `cellType` 本身就缺字段。
|
|
21
|
+
> 旧包 `references/data_source_rule.md` §2.2/§2.5 与 `e10-cli report verify bind` 有完整契约,
|
|
22
|
+
> 重构时**未迁移**,导致知识随重构丢失。
|
|
23
|
+
>
|
|
24
|
+
> **⚠️ 2026-09-11 二次实证校正(重要)**:修复该报表时,从设计器实际请求解出真实 workbook,
|
|
25
|
+
> 对照用户手绑字段发现 —— **`fieldId` / `fieldName` / `fieldText` / `dateTimeProp` 在服务端落库的
|
|
26
|
+
> cellType 里同样是缺失的**(用户手绑字段也没有),它们由设计器**运行时装配**,不属落库契约。
|
|
27
|
+
> **真正需要落库、且能对照验证的只有 `tableName` 一项。** 上表把三件套标为「必需」属过度设计,
|
|
28
|
+
> 但**写上去无害**(幂等),建表脚本保留即可;**修复存量报表时只需补 `tableName`**。
|
|
29
|
+
>
|
|
30
|
+
> **⚠️⚠️ 2026-09-11 第三次实证校正(关键 · 推翻上一条因果)**:
|
|
31
|
+
> 上文「`tableName` 缺失 → 左侧数据源不显示模块类型后缀」的**因果链是错的**。
|
|
32
|
+
>
|
|
33
|
+
> 决定性对照(同一环境,平台原生/健康报表):
|
|
34
|
+
>
|
|
35
|
+
> | 报表 | Field 单元格 `tableName` | 左侧面板显示 | 结论 |
|
|
36
|
+
> |---|---|---|---|
|
|
37
|
+
> | `1313798296523022337`(销售单,健康) | **全部 10 个为 `None`** | **完全正常** | `tableName` 与显示名**无关** |
|
|
38
|
+
> | `1313789294296735745`(党员发展,问题) | 10 个 `None` + 1 个有值 | 出现重复分组/缺后缀 | 真实原因见下 |
|
|
39
|
+
>
|
|
40
|
+
> **左侧数据源「分组显示名」的唯一权威来源** = `GET /api/bs/edc/dataset/listWithPageReport?hasField=true&reportId=`
|
|
41
|
+
> 返回的**源级记录**(`id` 即 **sourceId**,非 datasetId)的 `name` / `tableText`:
|
|
42
|
+
>
|
|
43
|
+
> | 状态 | `name` / `tableText` 形态 |
|
|
44
|
+
> |---|---|
|
|
45
|
+
> | 正常 | `事项清单(uf_ydsxqd_1)`、`进销存-销售单(uf_jxcxsd)`(业务模块名 + 物理表名/表单标识) |
|
|
46
|
+
> | 异常 | `党员发展`(纯中文名,无后缀) |
|
|
47
|
+
>
|
|
48
|
+
> **故 `tableName` 的正确落库意义**:它是**单元格级**的字段归属标记(供属性面板/导出识别「这个字段来自哪个源表」),
|
|
49
|
+
> **不是**左侧树的显示名来源。补它有益(属性面板回显更全),但**修不了面板显示名问题**。
|
|
50
|
+
>
|
|
51
|
+
> **面板显示名异常的真实定位路径** → 见 `dataset-sidebar-ops-guide.md` §5.3:
|
|
52
|
+
> ① `dataset/list` 是否挂载了重复数据集;② 遍历**全部 sheet** 找引用重复数据集的游离单元格;③ 源级 `name` 是否带后缀。
|
|
53
|
+
>
|
|
54
|
+
> **校验口径修正**:`tableName` 非空率**不能**作为「面板显示名正确」的判据;
|
|
55
|
+
> 应改用 `dataset/list` 去重 + `listWithPageReport.name` 含后缀 + 全 sheet 无游离 `dataSetId` 三项联合校验。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 一、`FieldCellType` 必需字段全表
|
|
60
|
+
|
|
61
|
+
服务端从 `workbook.sheets.Sheet1.data.dataTable[行][列].style.cellType`
|
|
62
|
+
反解出 `getReportDevInfo.fields[]`。**cellType 里没有的字段,回读就是 `None`。**
|
|
63
|
+
|
|
64
|
+
| 字段 | 是否必需 | 值 | 说明 |
|
|
65
|
+
|------|----------|-----|------|
|
|
66
|
+
| `typeName` | ✅ | `FieldCellType` | 固定 |
|
|
67
|
+
| `cellType` | ✅ | `Field` | 固定 |
|
|
68
|
+
| `name` | ✅ | `field_<雪花>` | 必须逐字等于 `fieldsKey[].name` |
|
|
69
|
+
| `nameIndex` | ✅ | 底层 FORM sourceId | **不是字段 id** |
|
|
70
|
+
| `text` | ✅ | 字段显示名 | |
|
|
71
|
+
| `dataSetId` | ✅ | 报表内部注册 id | `dataset/list` 的 `id` |
|
|
72
|
+
| **`tableName`** | ○ 建议写 | **`数据集名(业务模块)`** | 单元格级字段归属标记;**非**面板显示名来源(见开头三次校正) |
|
|
73
|
+
| `fieldId` | ○ 建议写 | 字段雪花 id | 落库本不含;设计器运行时装配,写入幂等无害 |
|
|
74
|
+
| `fieldName` | ○ 建议写 | `field_<雪花>` | 同上 |
|
|
75
|
+
| `fieldText` | ○ 建议写 | 字段显示名 | 同上 |
|
|
76
|
+
| `fieldKey` | ✅ | `dataSetId.nameIndex.name` | 三段式 |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 二、`tableName` 后缀由注册契约决定
|
|
81
|
+
|
|
82
|
+
`tableName` = **数据集显示名 + 后缀**,后缀取决于 `addDataset` 的注册类型:
|
|
83
|
+
|
|
84
|
+
| 注册形态 | `sourceType` / `sourceGroup` | 后缀 | 适用 |
|
|
85
|
+
|----------|------------------------------|------|------|
|
|
86
|
+
| **A(默认)** | `LOGIC` + `weaver-ebuilder-form-service` | **`(业务模块)`** | 普通应用表单 |
|
|
87
|
+
| **B(共享表)** | `form` + `<appId>` | **`(表单)`** | `xxx-共享表` 类应用 |
|
|
88
|
+
| **C(数据加工 SQL 视图)** | `ETEAMS` + `sql` | **无后缀**(= `datasetName` 原样) | 数据集来自「数据加工」SQL 视图 |
|
|
89
|
+
|
|
90
|
+
> **形态 C (2026-09-14 · 报表 `1314970921403138199`)**:数据集「考勤汇总报表(优化)」
|
|
91
|
+
> (`sourceType=ETEAMS` / `sourceGroup=sql`)→ 设计器手绑单元格 `tableName` = **`考勤汇总报表(优化)`**,
|
|
92
|
+
> 且 `dataset/fieldsAndOriginFields.fieldsKey[].datasetName` / `tableText` 也都是这个裸名。
|
|
93
|
+
> **判断口径(三条一致即可定值)**:① 设计器里已有手绑单元格 → 用它的 `tableName`;
|
|
94
|
+
> ② 否则用 `fieldsKey[].datasetName`;③ 都没有才按 `dataset/list[].name`。
|
|
95
|
+
|
|
96
|
+
> 与 `add-dataset-registration-guide.md` §一 的两种注册形态一一对应。
|
|
97
|
+
> **禁止**给共享表硬套 `(业务模块)` —— 后缀必须与注册形态一致。
|
|
98
|
+
|
|
99
|
+
**取值优先级**(服务端常不回传,必须脚本兜底):
|
|
100
|
+
|
|
101
|
+
1. `fieldsKey[].tableName`(服务端有则用)
|
|
102
|
+
2. `fieldsKey[].datasetName`
|
|
103
|
+
3. `datasetLabel + datasetSuffix(sourceType)` ← **兜底,保证恒非空**
|
|
104
|
+
|
|
105
|
+
`datasetLabel` 来自 `dataset/list` 的 `name`(即 `addDataset` 的 `sourceName`),
|
|
106
|
+
由 `spec_lib.resolveDataset()` 回传、`fieldsKeyOf()` 注入到每个字段。
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 三、字段三件套取值来源
|
|
111
|
+
|
|
112
|
+
| 字段 | 来源 |
|
|
113
|
+
|------|------|
|
|
114
|
+
| `fieldId` | `fieldsKey[].config.fieldId`(**首选**)→ `fieldsKey[].fieldId` |
|
|
115
|
+
| `fieldName` | `fieldsKey[].name` |
|
|
116
|
+
| `fieldText` | `fieldsKey[].text`(→ `showName` → 列标题) |
|
|
117
|
+
|
|
118
|
+
`fieldsKey[]` 可用键(`fieldsAndOriginFields?isFront=true`):
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
name / text / originName / fieldType / formatType
|
|
122
|
+
dataSetId / nameIndex / tableId / tableText / datasetName
|
|
123
|
+
config{ fieldId, formId, sformId, formName, componentKey, ... }
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 三点五、两接口返回格式对照(**以 `fieldsAndOriginFields` 为准** · 2026-09-11 )
|
|
127
|
+
|
|
128
|
+
同一表单 `sourceId=753880319550169088` 双接口 30/30 逐条比对:
|
|
129
|
+
|
|
130
|
+
| 接口 | 信封(顶层) | 字段元素 | `dataSetId` |
|
|
131
|
+
|------|--------------|----------|-------------|
|
|
132
|
+
| `GET /dataset/fieldsBySource?sourceId=&sourceType=logic&groupId=` | `data` = **裸数组** `[{…}]` | 18 键 | **恒 `"0"`**(未落库) |
|
|
133
|
+
| `GET /dataset/fieldsAndOriginFields?datasetId=&hasField=true&isFront=true&reportId=` | `data` = **对象** `{ fieldsKey:[…], originFieldsKey:[…] }` | 18 键 | **真实 datasetId** |
|
|
134
|
+
|
|
135
|
+
逐键差异统计:**仅 `dataSetId` 30/30 不同**;其余 17 键
|
|
136
|
+
(`name` / `text` / `originName` / `fieldType` / `originFieldType` / `usage` / `config` /
|
|
137
|
+
`formatType` / `showOrder` / `tableId` / `tableText` / `nameIndex` / `datasetName` /
|
|
138
|
+
`originField` / `dsSelectField` / `dsBrowserField` / `deleteType`)**完全一致**。
|
|
139
|
+
|
|
140
|
+
**统一归一化入口**:`spec_lib.normalizeFieldList(payload, { datasetId })`
|
|
141
|
+
|
|
142
|
+
```javascript
|
|
143
|
+
const { fields } = normalizeFieldList(res, { datasetId }); // 冒号:任一接口 → 字段元素数组
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- 抹平「裸数组 / `{fieldsKey}` 对象 / `{fields}` 对象」三种信封 → 一律返回**字段元素数组**;
|
|
147
|
+
- `datasetId` 传入时**覆盖** `dataSetId`(`fieldsBySource` 恒为 `0`,**直接落库会绑错数据集**);
|
|
148
|
+
- 返回 `{ fields, originFields, shape, dataSetIdInjected }`,`shape ∈ bare-array | fieldsKey-object | fields-array | empty`。
|
|
149
|
+
|
|
150
|
+
> **禁止**把 `fieldsBySource` 的原始 `data`(裸数组)当成 `{fieldsKey}` 取 —— `data.fieldsKey` 会是 `undefined`。
|
|
151
|
+
> **禁止**把 `fieldsBySource` 元素原样写入 `cellType.dataSetId` —— 必须换成**本报表真实 datasetId**。
|
|
152
|
+
> 另:语义上的「返回 data」= 接口的 `json.data`;`json.code === 200` 表示成功。
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 四、落库后强制门禁
|
|
157
|
+
|
|
158
|
+
`build spec` 已在 `getReportDevInfo` 回读阶段自动校验:
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
const fieldCells = fields.filter((f) => f.cellType === 'Field');
|
|
162
|
+
const missingTableName = fieldCells.filter((f) => !f.tableName);
|
|
163
|
+
if (missingTableName.length) {
|
|
164
|
+
console.error(`WARN ${missingTableName.length}/${fieldCells.length} 个 Field 单元格缺 tableName`);
|
|
165
|
+
process.exitCode = 2; // 非零退出,提示需修正
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
输出 JSON 附带:`tableName`(首格值)、`tableNameMissing`(缺失数)。
|
|
170
|
+
|
|
171
|
+
| 检查 | 通过标准 |
|
|
172
|
+
|------|----------|
|
|
173
|
+
| `tableName` 非空率 | **100%**(`tableNameMissing == 0`) |
|
|
174
|
+
| 后缀与注册形态一致 | LOGIC→`(业务模块)`;form→`(表单)` |
|
|
175
|
+
| `fieldId` / `fieldName` / `fieldText` 齐全 | 非空 |
|
|
176
|
+
| `name` ∈ fieldsKey | 见 `field-bind-exact-match-guide.md` |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 四点五、修复存量报表(tableName 缺失)— 最小侵入路径 ✅ 已验证
|
|
181
|
+
|
|
182
|
+
> **场景**:报表已落库,但 `tableName` 缺失(旧脚本产物)。
|
|
183
|
+
> **报表 `1313789294296735745` 修复成功(HTTP 200 + 双向验证通过)。**
|
|
184
|
+
|
|
185
|
+
**关键接口认知(务必先读)**
|
|
186
|
+
|
|
187
|
+
| 接口 | 提交物 | 易错点 |
|
|
188
|
+
|------|--------|--------|
|
|
189
|
+
| `saveReportDevInfo` | **`workbook`**(gzip + base64) | ❌ 用 `fields=<json>` 提交 → **400 Bad Request** |
|
|
190
|
+
| `getReportDevInfo` | 返回 `fields[]` | ⚠️ 只有 `cellType: "Field"/"Const"` **类型标记**,**不含字段绑定明细**;明细只在 workbook 里 |
|
|
191
|
+
|
|
192
|
+
**`saveReportDevInfo` 完整表单(7 字段,multipart)**
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
groupId / appId / reportId / name / nameLabelId / designKey / workbook
|
|
196
|
+
```
|
|
197
|
+
- `designKey` 是**乐观锁**,必须取线上当前值(`getReportDevInfo.data.designKey`),否则拒写
|
|
198
|
+
- `workbook` = `base64(gzip(json.dumps(workbook), mtime=0))`
|
|
199
|
+
|
|
200
|
+
**获取「当前真实 workbook」(唯一可靠来源)**
|
|
201
|
+
|
|
202
|
+
线上 `getReportDevInfo` **拿不到** `dataTable`(其 `workbookProps.sheets` 为空 `{}`)。正确做法:
|
|
203
|
+
|
|
204
|
+
1. CDP 打开设计器:`https://{host}/sp/edc/report/designer/{reportId}`
|
|
205
|
+
2. 派发 **Ctrl+S**(`Input.dispatchKeyEvent`,`modifiers:2`, `key:"s"`)触发一次保存
|
|
206
|
+
3. 从 `Network.requestWillBeSent` 抓 `saveReportDevInfo` 的 `postData`
|
|
207
|
+
4. 按 `name="workbook"\n\n(.*?)\n-{2,}`(**换行是 `\n`,不是 `\r\n`**)提取 → `gzip.decompress(base64.b64decode(...))`
|
|
208
|
+
|
|
209
|
+
**修复步骤**
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
wb = json.loads(解码后的workbook)
|
|
213
|
+
dt = wb["sheets"]["Sheet1"]["data"]["dataTable"] # {row: {col: {"style": {...}, "tag": {...}}}}
|
|
214
|
+
for r in dt:
|
|
215
|
+
for c in dt[r]:
|
|
216
|
+
ct = (dt[r][c].get("style") or {}).get("cellType") or {}
|
|
217
|
+
if ct.get("cellType") != "Field": continue
|
|
218
|
+
if str(ct.get("dataSetId")) == DS_OLD and not ct.get("tableName"):
|
|
219
|
+
newct = {}
|
|
220
|
+
for k, v in ct.items(): # 保持键顺序:插在 dataSetId 之后
|
|
221
|
+
newct[k] = v
|
|
222
|
+
if k == "dataSetId": newct["tableName"] = "党员发展(业务模块)"
|
|
223
|
+
dt[r][c]["style"]["cellType"] = newct
|
|
224
|
+
# 重新编码并提交 saveReportDevInfo
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**验证(双向)**
|
|
228
|
+
|
|
229
|
+
| 检查 | 通过标准 |
|
|
230
|
+
|------|----------|
|
|
231
|
+
| `getReportDevInfo` 回读 | `fields[]` 中带 `tableName` 的数量 = Field 总数 |
|
|
232
|
+
| 设计器实时 workbook | dataTable 内 `Field` 单元格 `tableName` 缺失数 = 0 |
|
|
233
|
+
|
|
234
|
+
> 结果:12/12 带 tableName ✅;设计器实时 workbook 11/11 Field 全齐、0 缺失 ✅
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 四点六、修复存量报表(tableName 缺失)— **免浏览器反向重建** ✅ 已验证(首选)
|
|
239
|
+
|
|
240
|
+
> **场景**:整张报表的 Field 单元格 `tableName` 全为空 → 设计器里单元格/属性面板不回显数据集名;
|
|
241
|
+
> 但**孤例**(某个手绑单元格)是对的。用户会说「参考 XX 单元格的规则才对,调整其他字段」。
|
|
242
|
+
>
|
|
243
|
+
> **报表 `1314970921403138199` 成功(2026-09-14)**:
|
|
244
|
+
> 48 个 Field 中 47 个 `tableName=""`,唯 `AM5`(row4,col38)为 `考勤汇总报表(优化)` → 一键补齐。
|
|
245
|
+
|
|
246
|
+
### 为什么优先走这条路(而不是 §四点五 的 CDP 实际请求)
|
|
247
|
+
|
|
248
|
+
`getReportDevInfo` 的 `workbookProps.sheets` **恒为 `{}`**,拿不到 `dataTable`;
|
|
249
|
+
但它的 **`fields[]` 是服务端对 workbook 的逐单元格回读**,字段足够重建:
|
|
250
|
+
`x/y`、`xCount/yCount`(合并跨度)、`leftX/leftY/topX/topY`(父子格)、`expandType/displayType`、
|
|
251
|
+
`countType`、`style`(整份 style JSON 串)、`name/text/nameIndex/dataSetId/fieldKey/tableName`、`width/height`。
|
|
252
|
+
**→ 不需要浏览器、不需要按键实际请求**。§四点五 的 CDP 路径仅作兜底。
|
|
253
|
+
|
|
254
|
+
### 重建规则(照抄即可)
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
dataTable[x][y] = { style: { ...JSON.parse(fields[].style), cellType }, tag: { fixed:false, formatterType:['common'] } }
|
|
258
|
+
spans = 每个 xCount>1 || yCount>1 的单元格 → { row:x, col:y, rowCount:xCount, colCount:yCount }
|
|
259
|
+
columns[c] = fields[].width(该列任一单元格); rows[r] = fields[].height
|
|
260
|
+
sheet.tag = sheetProps[0] 的 childMerge / showLocation / filterSheet / tableNameSuffix
|
|
261
|
+
+ JSON.parse(columnConfig) + JSON.parse(sheetConfig)
|
|
262
|
+
workbook = { version, __scrollbarShowMax, __excelSheet, workbookConfig:{}, sheets }
|
|
263
|
+
cellType 键序 = 设计器真实键序(见 §一,逐字照排)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### ⚠️ 四个坑(踩过,必须照做,否则 `{"code":500,"msg":"报表内部错误"}`)
|
|
267
|
+
|
|
268
|
+
| # | 坑 | 正确做法 |
|
|
269
|
+
|---|----|----------|
|
|
270
|
+
| 1 | **`fields[]` 不回传 `typeName`/`allowOverflow`/`editorType`/`groupType`/`isActiveParent`/`arrowType`**,但服务端保存**必须要 `typeName`** | 这 6 个键由脚本**强制兜底**:`typeName='FieldCellType'/'ConstCellType'`、`allowOverflow=true`、`editorType=1`、`groupType=null`;`arrowType` 由 `expandType` 派生(Vertical/Horizontal/None);`isActiveParent` = Field 且 `leftX=-1 && topX=-1 && expandType∈{Vertical,Horizontal}` |
|
|
271
|
+
| 2 | `dateTimeProps` / `highlightDatas` / `allNeedFields` / `fillDtIndex` / `fillShow` / `fillAddLine` / `fillDelLine` / `fillMergeShow` / `fillSelectId` / `fillTextLength` 是**服务端保存时自行派生**的,设计器保存的 workbook 里**没有** | **排除,不得回写**(回写即 500) |
|
|
272
|
+
| 3 | `cellType.formatterType` 设计器保存值是 **`[]`**(不是 `['common']`;`['common']` 在 `tag.formatterType`) | 强制 `formatterType: []` |
|
|
273
|
+
| 4 | `designKey` **每次 GET 都返回新值**(即时令牌,不是静态乐观锁)→ 读后隔久了再存会失败 | 读取 `designKey` 与 `saveReportDevInfo` 必须**紧邻** |
|
|
274
|
+
|
|
275
|
+
两个次要坑:
|
|
276
|
+
- `fields[].width/height` **可能合法为 0**(Excel 隐藏列,如「人员ID」)→ 不能用 `Number(w) || 40` 兜底,会把 0 吞成 40。
|
|
277
|
+
- 合并区覆盖但**无单元格**的列(日期块被合并掉的第 2/3 列)在 `fields[]` 里不存在 → 沿用左侧最近已知列宽,避免列宽塌成默认值。
|
|
278
|
+
|
|
279
|
+
> ⚠️ **与 `safe_report_save.js` 的一处分歧**:该脚本的 `stripWorkbookGridlineKeys()` 会删掉
|
|
280
|
+
> `gridline` / `__gridline`,注释称「存在即 500」。**在本环境(itsm.hongjing-wh.com:5001) 不成立**:
|
|
281
|
+
> 带 `__gridline: 0` 的 workbook 保存返回 200(报表 `1314970921403138199` 连续两次)。
|
|
282
|
+
> 该断言可能只对某站点成立 —— 保留删除动作更安全,但**不要据此判定其他 500 的成因**。
|
|
283
|
+
|
|
284
|
+
### 合并单元格的副作用(重要)
|
|
285
|
+
|
|
286
|
+
提交含合并区全部单元格的 workbook 时,**服务端/设计器会丢掉被合并覆盖的单元格,只留左上角**。
|
|
287
|
+
例:日期带 `(0,45)(0,46)(0,47)` 三格 + span → 回读只剩 `(0,45)`。
|
|
288
|
+
**→ 重建时不要凭空补这些格子**;`fields[]` 里没有就是不该有。
|
|
289
|
+
|
|
290
|
+
### 现成脚本
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
# 默认 dry-run(打印计划 + 保真自检,不落库)
|
|
294
|
+
node e10-cli report fix table-name --report-id <rid> [--app-id <aid>] \
|
|
295
|
+
[--table-name "<数据集名>"] [--restore-from <备份workbook.json>]
|
|
296
|
+
# 确认后落库
|
|
297
|
+
node e10-cli report fix table-name --report-id <rid> --apply
|
|
298
|
+
```
|
|
299
|
+
- 自动定值:`--table-name` > `fieldsKey[].datasetName` > `dataset/list[].name`
|
|
300
|
+
- `--restore-from`:把备份 workbook 中「线上已不存在」的单元格补回(例如被误删的手绑单元格)
|
|
301
|
+
- 内置门禁:重建保真度不一致即拒绝保存;保存后快照 diff 非 `tableName` 有差异则退出码 2
|
|
302
|
+
- 保存**必须** `--apply`(整份替换,防误覆盖)
|
|
303
|
+
|
|
304
|
+
### 验收口径(保存前后 fields[] 快照 diff)
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
保存前 fields = A(含孤例),保存后 fields = B
|
|
308
|
+
diff(A,B) 期望:仅 `tableName` 变化(条数 = 缺失数)+ 可选 `(新增)`(补回的手绑单元格)
|
|
309
|
+
其余键(cellType/name/dataSetId/父子格/expandType/displayType/style…)必须 0 差异
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
再跑 `e10-cli report verify all <rid> <appId>`(`ok:true, errors:[]`)+ 渲染回读
|
|
313
|
+
(`view/analysis` → `getJsonStr` → gunzip:`rowCount`/表头纵向合并条数/数据行非空数)确认版面未坏。
|
|
314
|
+
|
|
315
|
+
> ⚠️ **重建会覆盖服务端现状**:`saveReportDevInfo` 是**整份替换**。
|
|
316
|
+
> 若线上存在「`fields[]` 也看不到」的内容(未知键),重建会丢。故保存前**先把重建出的
|
|
317
|
+
> 『原样 workbook』落一份备份**(本脚本 `--restore-from` 亦依赖它补回被误删的手绑单元格)。
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
- ❌ 只在 `fields[]` 回读层「补」tableName —— 必须写入 workbook 的 `cellType`,服务端才会落库
|
|
323
|
+
- ❌ **照抄 `fields[]` 的键集重建 cellType** —— `typeName` 等 6 个键服务端不回传,漏了必 500(见 §四点六 坑 1)
|
|
324
|
+
- ❌ **把服务端派生键回写 cellType**(`dateTimeProps`/`highlightDatas`/`allNeedFields`/`fill*`)—— 必 500(坑 2)
|
|
325
|
+
- ❌ 给共享表(form 契约)写 `(业务模块)` 后缀;给 SQL 视图(ETEAMS/sql)硬加后缀(形态 C 无后缀)
|
|
326
|
+
- ❌ 用 `saveReportDevInfo` 的 `fields[]` 数组下发字段 —— 服务端**只认 workbook**
|
|
327
|
+
- ❌ 重构时把本契约从 references 删除(本事故成因)
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 六、相关文档
|
|
332
|
+
|
|
333
|
+
| 文档 | 关系 |
|
|
334
|
+
|------|------|
|
|
335
|
+
| `add-dataset-registration-guide.md` | 两种注册形态(决定后缀) |
|
|
336
|
+
| `field-bind-exact-match-guide.md` | `name` 逐字匹配 fieldsKey |
|
|
337
|
+
| `spec-build-schema.md` | `build spec` 声明式用法 |
|
|
338
|
+
| `query-condition-api-guide.md` §2.1.2 | `browserType` 富对象(关联浏览分类元数据接口) |
|
|
339
|
+
| 旧包 `data_source_rule.md` §2.2/§2.5 | 本契约原始出处(已迁回本文件) |
|