weaver-e10-builder 1.1.8 → 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 +31 -2
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +179 -4
- 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 +194 -6
- 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 +78 -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 -99
- 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,164 @@
|
|
|
1
|
+
# 报表落库自检(强制)
|
|
2
|
+
|
|
3
|
+
> **适用**:API/脚本保存布局后、交付设计器链接前(可后台跑,但**不得跳过**)。
|
|
4
|
+
> **目标**:尽早发现字段丢失、伪父格、绑定失败、超链接被冲掉,避免「设计器看着有格、取数/父格全错」。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、父格坐标语义(勿混)
|
|
9
|
+
|
|
10
|
+
| API `leftX/leftY` 或 `topX/topY` | 设计器含义 | 说明 |
|
|
11
|
+
|----------------------------------|------------|------|
|
|
12
|
+
| **`-1, -1`** | **默认** 或 **无** | 普通 Const / 单数据集 Field 的常见正确态 |
|
|
13
|
+
| **`0, 0`** | **自定义 → 原点 (0,0)** | **不是默认**;写成 0,0 会显示父格「不对」 |
|
|
14
|
+
| **其它 `x,y`** | **自定义** 指向该坐标 | 多数据集入口、交叉、**超链接占位依赖**等 |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 二、按单元格类型的父格规则
|
|
19
|
+
|
|
20
|
+
### 2.1 普通 Const(表头 / 标题 / 无链接)
|
|
21
|
+
|
|
22
|
+
| 项 | 规则 |
|
|
23
|
+
|----|------|
|
|
24
|
+
| 左父格 | **`-1,-1`** |
|
|
25
|
+
| 上父格 | **`-1,-1`** |
|
|
26
|
+
| 禁止 | `(0,0)`;勿把「默认」误写成原点 |
|
|
27
|
+
|
|
28
|
+
### 2.2 超链接 Const(`pcHreflink` / `h5Hreflink`,URL 含 `{L4}` `{C4}` 等)
|
|
29
|
+
|
|
30
|
+
> **事故**:把「左父格默认」套到「点击查看」上 → 设计器左/上显示不对,且 `{L4}` 无法解析;或重建 workbook 时丢掉 `ConstCellType.cellText` → 保存后 `cellText` 变空、`pcHreflink` 丢失。
|
|
31
|
+
|
|
32
|
+
| 项 | 规则 | 例(供应商表 M4) |
|
|
33
|
+
|----|------|-------------------|
|
|
34
|
+
| **上父格** | 无横向扩展时必须 **`topX=topY=-1`**(不需要上父格) | `(-1,-1)` |
|
|
35
|
+
| **左父格** | **禁止**一律改成默认;须指向占位符依赖的数据格 | `{L4}` → 左父格 **`(3,11)`**(同行「数据ID」) |
|
|
36
|
+
| **链接元数据** | 须进 **workbook `ConstCellType`**(`pcHreflink`/`openType`/`cellText`/`left*`/`top*`);仅写 `fields[]` **不够** | `/sp/ebdfpage/card/0/{sourceId}/{L4}` |
|
|
37
|
+
| **workbook** | `ConstCellType` 必须含:`cellText`、`leftX/leftY/topX/topY`、有链接时还要 `pcHreflink` | 服务端 `saveReportDevInfo` **从 cellType 回写 fields**;缺 `leftX` → Java int **0** → 伪 `(0,0)`;缺 `pcHreflink` → 链接丢失 |
|
|
38
|
+
| **禁止** | 只塞 `{typeName,cellText}` 的残 ConstCellType;禁止左=`(0,0)`;禁止有 `{Ln}` 却左=`-1,-1` |
|
|
39
|
+
|
|
40
|
+
**占位符 → 左父格**(自检算法):
|
|
41
|
+
|
|
42
|
+
1. 从 `pcHreflink`/`h5Hreflink` 提取 `{L4}` / `{C4}` / `{Ln}` 等。
|
|
43
|
+
2. `{L4}`:同行纵向扩展语境下,左父格应指向同列(或约定列)上提供 ID 的 Field(本需求为 `(3,11)`)。
|
|
44
|
+
3. 若 URL 含占位而 `leftX/leftY === -1` → **FAIL**(不是「默认正确」)。
|
|
45
|
+
4. 若 `topX/topY !== -1` 且无横向交叉需求 → **FAIL**。
|
|
46
|
+
|
|
47
|
+
### 2.3 Field(单数据集、无指定计算)
|
|
48
|
+
|
|
49
|
+
| 场景 | 左父格 |
|
|
50
|
+
|------|--------|
|
|
51
|
+
| **新建**报表 | 优先 **`-1,-1`(默认)** |
|
|
52
|
+
| **已有**报表 | **禁止**用户未点名时批量改父格 |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 三、保存门禁(每次 `saveReportDevInfo`)
|
|
57
|
+
|
|
58
|
+
### 保存前
|
|
59
|
+
|
|
60
|
+
1. `fields` 中 `cellType=Field` 数量 ≥ 保存前(或与预期列数一致)。
|
|
61
|
+
2. workbook `dataTable` 内 `FieldCellType` 数量 ≥ Field 数。
|
|
62
|
+
3. 每个 **Const**:workbook `ConstCellType` 须含 `cellText`(有文案时)以及显式 **`leftX/leftY/topX/topY`(常用 -1,禁止省略)**。
|
|
63
|
+
4. 每个 **超链接 Const**:`ConstCellType` 须含非空 `pcHreflink`、`openType`,且父格与 `fields` 一致(服务端以 workbook 为准回写)。
|
|
64
|
+
5. 每个 Field:`name` ∈ `fieldsAndOriginFields.fieldsKey[].name`(须带 `field_`;禁止裸雪花 ID)。
|
|
65
|
+
- 拉 fieldsKey 参数名用 **`datasetId`**(不是 `dataSetId`)。
|
|
66
|
+
|
|
67
|
+
### 保存后立刻回读
|
|
68
|
+
|
|
69
|
+
| 检查项 | 失败标准 |
|
|
70
|
+
|--------|----------|
|
|
71
|
+
| Field 数量 | 比保存前减少 → **立即失败**,禁止再改,优先恢复 |
|
|
72
|
+
| Field.`name` | 裸 ID 或不在 fieldsKey → FAIL(`e10-cli report verify bind`) |
|
|
73
|
+
| 普通 Const 父格 | `left=top=(0,0)` → FAIL(伪自定义 A1) |
|
|
74
|
+
| 超链接 Const | 缺 `pcHreflink` / `cellText` 空 / `top≠-1` / 含 `{L*}` 但 `left=-1` 或 `left=(0,0)` → FAIL |
|
|
75
|
+
| 同数据集 leftFilterField | Field 上仍有跨源 leftFilter → WARN/FAIL |
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
e10-cli report verify bind <reportId> [appId] # 字段绑定
|
|
79
|
+
e10-cli report verify self <reportId> [appId] # 父格/超链接自检
|
|
80
|
+
e10-cli report verify all <reportId> [appId] # 自检 + 绑定(推荐)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 四、Agent 自检脚本逻辑(摘要)
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
function assertParents(fields) {
|
|
89
|
+
for (const f of fields) {
|
|
90
|
+
if (f.cellType !== 'Const') continue;
|
|
91
|
+
const origin =
|
|
92
|
+
f.leftX === 0 && f.leftY === 0 && f.topX === 0 && f.topY === 0;
|
|
93
|
+
const href = f.pcHreflink || f.h5Hreflink || '';
|
|
94
|
+
if (origin && !href) {
|
|
95
|
+
throw new Error(`Const(${f.x},${f.y}) 父格(0,0)=伪自定义A1,应为-1,-1`);
|
|
96
|
+
}
|
|
97
|
+
if (!href) continue;
|
|
98
|
+
// 超链接:上父格默认无
|
|
99
|
+
if (f.topX !== -1 || f.topY !== -1) {
|
|
100
|
+
throw new Error(`链接格(${f.x},${f.y}) 不需要上父格,top 应为 -1,-1`);
|
|
101
|
+
}
|
|
102
|
+
if (!f.cellText) {
|
|
103
|
+
throw new Error(`链接格(${f.x},${f.y}) cellText 为空(workbook 可能未写 ConstCellType)`);
|
|
104
|
+
}
|
|
105
|
+
// URL 占位依赖左父格,禁止「默认」
|
|
106
|
+
if (/\{L\d+\}|\{C\d+\}/.test(href)) {
|
|
107
|
+
if (f.leftX === -1 && f.leftY === -1) {
|
|
108
|
+
throw new Error(`链接格(${f.x},${f.y}) 含占位符但左父格为默认,应指向依赖数据格`);
|
|
109
|
+
}
|
|
110
|
+
if (f.leftX === 0 && f.leftY === 0) {
|
|
111
|
+
throw new Error(`链接格(${f.x},${f.y}) 左父格不能为(0,0)`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function assertWorkbookConstCellType(dataTable, fields) {
|
|
118
|
+
for (const f of fields) {
|
|
119
|
+
if (f.cellType !== 'Const') continue;
|
|
120
|
+
const cell = dataTable?.[String(f.x)]?.[String(f.y)];
|
|
121
|
+
const ct = cell?.style?.cellType;
|
|
122
|
+
if (!ct || ct.typeName !== 'ConstCellType') {
|
|
123
|
+
throw new Error(`workbook 缺 ConstCellType @(${f.x},${f.y})`);
|
|
124
|
+
}
|
|
125
|
+
if ((f.cellText || f.text) && !ct.cellText) {
|
|
126
|
+
throw new Error(`workbook 缺 cellText @(${f.x},${f.y}),保存会冲掉文案`);
|
|
127
|
+
}
|
|
128
|
+
// 缺 leftX 时服务端写成 0 → 伪自定义 A1
|
|
129
|
+
for (const k of ['leftX', 'leftY', 'topX', 'topY']) {
|
|
130
|
+
if (ct[k] === undefined || ct[k] === null) {
|
|
131
|
+
throw new Error(`workbook ConstCellType 缺 ${k} @(${f.x},${f.y}),会落成 0`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (f.pcHreflink && ct.pcHreflink !== f.pcHreflink) {
|
|
135
|
+
throw new Error(`workbook 缺/错 pcHreflink @(${f.x},${f.y})(服务端只认 cellType)`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function assertFieldPreserved(before, after) {
|
|
141
|
+
const n = (fs) => fs.filter((f) => f.cellType === 'Field').length;
|
|
142
|
+
if (n(after) < n(before)) throw new Error('Field 被冲掉,禁止继续改');
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 五、与交付节奏
|
|
149
|
+
|
|
150
|
+
- 布局落库成功 → **先交设计器地址**(`report-delivery-contract.md` §〇)。
|
|
151
|
+
- 本节自检可后台跑;**FAIL 必须补丁修复并告知**,不得假装完成。
|
|
152
|
+
- **禁止**:为修一格 Const 父格而提交残缺 workbook(会导致 Field 全变 Const,或 Const 文案/超链接被冲掉)。修父格必须 **整表 Field + ConstCellType 完整写入 workbook**。
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 六、相关文档
|
|
157
|
+
|
|
158
|
+
| 文档 | 关系 |
|
|
159
|
+
|------|------|
|
|
160
|
+
| `field-bind-exact-match-guide.md` | name ∈ fieldsKey |
|
|
161
|
+
| `datasource-selection-and-parent-filter-guide.md` §〇 | 单数据集左父格默认;**勿**套用到超链接 Const;勿擅自改已有表 |
|
|
162
|
+
| `safe-partial-save-guide.md` | 禁止空 workbook;须从 fields 重建 dataTable |
|
|
163
|
+
| `e10-cli report verify bind` | 绑定门禁 |
|
|
164
|
+
| `targeted-fix-guide.md` | 用户点名某处不对时禁止整表重扫 |
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# 局部功能保存 · 设计区保护规范
|
|
2
|
+
|
|
3
|
+
> **适用场景**:通过 API / 脚本修改**快照、权限、查询条件、数据集筛选、页面布局**等「非布局主体」能力时。
|
|
4
|
+
> **事故根因(已验证)**:对 `saveReportDevInfo` 提交**空 workbook** 或 **workbookProps.sheets 无单元格** 的 payload,会**全量替换** `edc_reportsheetfield_dev` 等表,导致设计器字段与单元格配置被清空。
|
|
5
|
+
> **硬约束**:除非用户**明确要求删除/清除字段**,否则设计区域内容**不得被置空**。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、核心原则
|
|
10
|
+
|
|
11
|
+
| 原则 | 说明 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| **布局不可丢** | `getReportDevInfo.fields.length > 0` 是保存前最低门槛;保存后必须回读验证 |
|
|
14
|
+
| **禁止空 workbook 落库** | `workbookProps.sheets` 为空 **且** `fields` 为空 → **禁止**调用 `saveReportDevInfo`;`fields>0` 但 sheets 空 → **必须从 fields 重建**(含 spans)后再存 |
|
|
15
|
+
| **剔除 `(0,0)` 空 Const** | `x=0,y=0` 且文案空的 Const 为异常幽灵格,保存前删除 |
|
|
16
|
+
| **workbookProps 不可盲信** | 线上常见 `fields=12` 但 `workbookProps.dataTable` 为空;此时必须从 **fields 重建** dataTable |
|
|
17
|
+
| **groupId 原样回传** | `saveReportDevInfo` 的 `groupId`/`nameLabelId` 取自 `baseInfo`,禁止硬编码改分组 |
|
|
18
|
+
| **专用接口优先** | 权限 → `savePermissions`;查询 → `saveQueryItem`;数据集筛选 → `queryInfoSave`;版本还原 → `rollbackReport` |
|
|
19
|
+
| **快照是唯一例外需写 workbook** | 快照配置挂在 `workbook.snapshot`,必须走 `saveReportDevInfo`,但须套用 **§三 安全合并** |
|
|
20
|
+
| **快照 ID 禁 Number()** | `sheetId`/`id`/`jobId` 必须 **String(雪花)**;`Number(reportId)` 截断 → **设计区空白**(见 `designer-blank-prevention-guide.md`) |
|
|
21
|
+
| **快照默认名** | 未指定时 **`{报表名}-{date}-{time}`** |
|
|
22
|
+
| **showLocation 禁 0** | 合并 workbook 时若为 0 → 改为 **2**(或用户点名居左则 1) |
|
|
23
|
+
| **保存前快照版本** | 对已有报表做任意 `saveReportDevInfo` 前,建议 `saveAsVersion --list-only` 确认有版本可还原 |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 二、接口与布局影响矩阵
|
|
28
|
+
|
|
29
|
+
| 操作 | 推荐接口 | 是否触及 layout/fields | 备注 |
|
|
30
|
+
|------|----------|------------------------|------|
|
|
31
|
+
| 使用/禁用权限 | `permission/table/savePermissions` | **否** | 全量替换权限 JSON,不动 fields |
|
|
32
|
+
| 矩阵权限 | `permission/matrix/save` | **否** | |
|
|
33
|
+
| 查询条件 | `saveQueryItem` / `saveQueryConfig` | **否** | |
|
|
34
|
+
| 数据集筛选 | `queryInfoSave` | **否** | |
|
|
35
|
+
| 存为新版本 | `saveAsVersion` | **否**(复制快照) | |
|
|
36
|
+
| 还原版本 | `GET rollbackReport` | **是**(整表替换) | 用户显式还原;会重置快照配置 |
|
|
37
|
+
| 页面布局/分页 | `allPageSetting` | **否**(pageSetting 独立) | |
|
|
38
|
+
| 定时快照 | `saveReportDevInfo` + `workbook.snapshot` | **是(若 workbook 空则灾难)** | 必须 §三 |
|
|
39
|
+
| 修改单元格/父格 | `saveReportDevInfo` +(可选)`saveReportWithCacheConfig` | **是** | **新空报表必须先 dev 后 cache**;见 `api-report-build-fast-path.md` |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 三、saveReportDevInfo 安全合并流程(强制)
|
|
44
|
+
|
|
45
|
+
凡必须调用 `saveReportDevInfo` 且**不是**「从零新建报表」或「用户要求清空」:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
1. GET getReportDevInfo?reportId=
|
|
49
|
+
2. fields = data.fields || []
|
|
50
|
+
3. IF fields.length === 0 → ABORT(提示先 rollbackReport 或从版本还原)
|
|
51
|
+
4. wb = mergeWorkbookSafe(data, patchFn)
|
|
52
|
+
├─ 若 countCells(workbookProps) > 0 → 深拷贝 workbookProps
|
|
53
|
+
└─ 否则 → buildWorkbookFromFields(fields, sheetProps) // 禁止提交空 sheets
|
|
54
|
+
5. patchFn(wb) // 仅改 snapshot / 必要字段,勿删 sheets/dataTable
|
|
55
|
+
6. POST saveReportDevInfo(带当前 designKey + ebBusinessId)
|
|
56
|
+
7. GET getReportDevInfo 回读:
|
|
57
|
+
- fields.length 不得小于保存前
|
|
58
|
+
- 若用户未要求删除,fields.length === 0 → 视为事故,立即 rollbackReport
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 3.1 buildWorkbookFromFields 最低要求
|
|
62
|
+
|
|
63
|
+
从 `fields[]` 重建时,每个 field 须写入 `data.dataTable[x][y].style`(含 `cellType` 关键属性:父格、fieldKey、leftFilterField 等)。
|
|
64
|
+
**禁止**只提交 `{ version, sheets: {} }` 或 `{ sheets: { Sheet1: { data: { dataTable: {} } } } }`。
|
|
65
|
+
|
|
66
|
+
**Const(强制)**:`style.cellType` 须为完整 `ConstCellType`,至少包含:
|
|
67
|
+
|
|
68
|
+
| 属性 | 说明 |
|
|
69
|
+
|------|------|
|
|
70
|
+
| `cellText` | 有展示文案时必填 |
|
|
71
|
+
| `leftX/leftY/topX/topY` | **禁止省略**(省略 → Java int 默认 0 → 伪自定义 A1) |
|
|
72
|
+
| `pcHreflink` / `openType` | 超链接 Const 必填;服务端**只认 workbook cellType**,不只认 `fields[]` 顶层 |
|
|
73
|
+
|
|
74
|
+
普通 Const 父格写 `-1`;超链接含 `{L4}` 时左父格指向依赖数据格。见 `report-self-check-guide.md` §2.2。
|
|
75
|
+
|
|
76
|
+
**定点修改**:用户只点一格时,语义上只改该格,但仍须整表 fields 原样写回 + 完整 workbook(见 `targeted-fix-guide.md`)。
|
|
77
|
+
|
|
78
|
+
### 3.2 快照配置 patch 示例
|
|
79
|
+
|
|
80
|
+
```javascript
|
|
81
|
+
const wb = mergeWorkbookSafe(dev.data, (wb) => {
|
|
82
|
+
wb.snapshot = {
|
|
83
|
+
enableSnapshot: true,
|
|
84
|
+
cron: '0 0 0 * * ?',
|
|
85
|
+
// 未指定名称时的平台默认
|
|
86
|
+
snapshotName: `${reportName}-{date}-{time}`,
|
|
87
|
+
params: JSON.stringify({ searchCondition: {} }),
|
|
88
|
+
// 雪花 ID 必须字符串,禁止 Number(reportId)(超 MAX_SAFE_INTEGER 会截断,设计器空白)
|
|
89
|
+
sheetId: String(reportId),
|
|
90
|
+
// 更新已有配置时可带 id/jobId(同样用 String);rollback 后建议 omit 让服务端重建调度
|
|
91
|
+
};
|
|
92
|
+
// 禁止 showLocation=0
|
|
93
|
+
for (const sh of Object.values(wb.sheets || {})) {
|
|
94
|
+
if (!sh.tag) sh.tag = {};
|
|
95
|
+
if (!sh.tag.showLocation || sh.tag.showLocation === 0) sh.tag.showLocation = 2;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 3.3 保存后验证清单
|
|
101
|
+
|
|
102
|
+
| 检查项 | 通过标准 |
|
|
103
|
+
|--------|----------|
|
|
104
|
+
| `fields.length` | ≥ 保存前数量(允许只增不减,除非用户要求删格) |
|
|
105
|
+
| 关键单元格抽样 | 如 `(1,0)` 供应商等级 `(1,5)` 进货单编号 仍存在 |
|
|
106
|
+
| `snapshot.enableSnapshot` | 若本次任务为开快照,回读为 true |
|
|
107
|
+
| 设计器肉眼 | 提示用户 Ctrl+F5 强刷 |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 四、事故恢复
|
|
112
|
+
|
|
113
|
+
| 现象 | 处理 |
|
|
114
|
+
|------|------|
|
|
115
|
+
| 设计器空白、`fields.length===0` | `GET rollbackReport?sheetId={版本snapshotId}&originSheetId={reportId}` |
|
|
116
|
+
| 无版本 | 查 `getVersionWithPage`;或本地 `inspect_*.json` / 脚本备份 |
|
|
117
|
+
| 快照误伤后 layout 已还原 | 快照需在设计器 **页面→快照设置** 重配,或 `set_snapshot_schedule.js`(已含保护) |
|
|
118
|
+
|
|
119
|
+
**版本 ID 来源**:`save_as_version.js --list-only` → `snapshotId` 列。
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 五、脚本与模块
|
|
124
|
+
|
|
125
|
+
| 文件 | 用途 |
|
|
126
|
+
|------|------|
|
|
127
|
+
| `e10-cli report fix(内部走安全局部保存)` | **安全合并 workbook**、保存前断言、保存后验证 |
|
|
128
|
+
| `e10-cli report snapshot set` | 定时快照(默认名 `{报表名}-{date}-{time}`;ID 字符串;依赖 safe_report_save) |
|
|
129
|
+
| `e10-cli report verify blank` | 防设计区空白门禁(sheetId/showLocation/scrollPage) |
|
|
130
|
+
| `e10-cli report restore` | 从版本 snapshotId 还原 layout |
|
|
131
|
+
| `references/designer-blank-prevention-guide.md` | **设计区空白禁令与定位** |
|
|
132
|
+
| `已由 CLI 取代` | `merge_workbook_safe` / `assert_layout_not_empty` / `verify_layout_preserved` |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 六、Agent 硬约束(写入 SKILL 摘要)
|
|
137
|
+
|
|
138
|
+
1. **默认禁止**对已有报表提交空 workbook 或 0 fields 的 `saveReportDevInfo`。
|
|
139
|
+
2. 设置权限 / 查询 / 数据集筛选 / 菜单 / 复制 → **不得**调用 `saveReportDevInfo`。
|
|
140
|
+
3. 设置快照 → **必须** `mergeWorkbookSafe` + 保存前后 `fields.length` 校验。
|
|
141
|
+
4. 用户未说「删除」「清空」「重置布局」→ **任何步骤不得使 fields 归零**。
|
|
142
|
+
5. 保存前:`saveAsVersion` 或确认 `getVersionWithPage` 有可用版本。
|
|
143
|
+
6. 保存后:`getReportDevInfo` 回读失败 → **停止后续操作**,优先 `rollbackReport`。
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 七、源码依据
|
|
148
|
+
|
|
149
|
+
- `EdcReportDevDesignServiceImpl.saveReportDevInfoLast`:解压 workbook → `getFieldsFromWorkbook(wb)` → **全量** `saveFields` 覆盖 DB。
|
|
150
|
+
- `Workbook.snapshot`:`saveSnapshot(wb, reportId)` 仅在 workbook 含 snapshot 对象时执行;与 fields 同一保存事务。
|
|
151
|
+
- `workbookProps` 与 `fields` 分离存储;API 返回的 `workbookProps.sheets` 常不含 dataTable,**不能**作为唯一布局来源。
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# 雪花 ID 精度安全指南
|
|
2
|
+
|
|
3
|
+
> **适用场景**:复制报表、权限绑定、添加到菜单、删除/回收站等一切涉及 `reportId` / `pageId` 的 API 链路。
|
|
4
|
+
> **事故案例**:`copySheet` 返回 `1311221384923619328`,Node `JSON.parse` 后变为 `1311221384923619300`(末位差 28),导致权限与菜单绑到不存在的 ID。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、根因
|
|
9
|
+
|
|
10
|
+
| 项 | 值 |
|
|
11
|
+
|----|-----|
|
|
12
|
+
| E10 ID 类型 | 64 位雪花 ID(19 位十进制) |
|
|
13
|
+
| JS 安全整数上限 | `Number.MAX_SAFE_INTEGER = 9007199254740991`(16 位) |
|
|
14
|
+
| 后果 | `JSON.parse('{"id":1311221384923619328}')` → `id === 1311221384923619300` |
|
|
15
|
+
|
|
16
|
+
**Python 注意**:`json.loads` 大整数默认可保留,但 `int(report_id)` 传给部分接口仍会溢出;**全程用 `str` 承载 ID**。
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 二、强制规则(Agent)
|
|
21
|
+
|
|
22
|
+
1. **禁止**对含 `id` / `reportId` / `pageId` 的 API 响应裸用 `JSON.parse` / `json.loads` 后直接当数字用。
|
|
23
|
+
2. **必须**使用 Skill 工具:
|
|
24
|
+
- Node:`内置雪花安全解析` → `parseJsonSnowflakeSafe` / `extractIdFromRaw`
|
|
25
|
+
- Python:`内置雪花安全解析` → 同名函数
|
|
26
|
+
3. **copySheet 后取新 ID 双保险**:
|
|
27
|
+
```javascript
|
|
28
|
+
const newId = extractIdFromRaw(copyRes.raw) || stringifyId(copyRes.json.data?.id);
|
|
29
|
+
```
|
|
30
|
+
```python
|
|
31
|
+
new_id = extract_id_from_raw(cli.last_raw) or str((result.get("data") or {}).get("id", ""))
|
|
32
|
+
```
|
|
33
|
+
4. **后续 API 一律字符串**:`pageId`、`sourceId`、`reportId`、`sheetId` 参数禁止 `Number(id)`。
|
|
34
|
+
5. **交付给用户/手册的 reportId** 必须来自 raw 提取或 snowflake 安全解析,禁止直接打印 `json.data.id`(未安全解析时)。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 三、安全解析原理
|
|
39
|
+
|
|
40
|
+
仅对**已知 ID 字段名**的 ≥16 位数字加引号后再 `JSON.parse`,**不**对嵌套 JSON 字符串内数字做全局替换(避免破坏 `tabs` 等字段)。
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
// 内置雪花安全解析
|
|
44
|
+
parseJsonSnowflakeSafe(rawText)
|
|
45
|
+
extractIdFromRaw(rawText, ['id', 'reportId', 'pageId'])
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
# 内置雪花安全解析
|
|
50
|
+
parse_json_snowflake_safe(raw_text)
|
|
51
|
+
extract_id_from_raw(raw_text, keys=("id", "reportId", "pageId"))
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 四、受影响 API(必用安全 ID)
|
|
57
|
+
|
|
58
|
+
| 操作 | API | ID 字段 |
|
|
59
|
+
|------|-----|---------|
|
|
60
|
+
| 复制 | `GET copySheet?sheetId=` | 响应 `data.id` |
|
|
61
|
+
| 权限 | `POST savePermissions` | body key、`sourceId` |
|
|
62
|
+
| 添加到菜单 | `POST savePublishMenu` | `page.pageId` |
|
|
63
|
+
| 删除 | `GET deleteReport?id=` | query `id` |
|
|
64
|
+
| 设计器 | `GET baseInfo?id=` | query `id` |
|
|
65
|
+
| 列表 | `GET report/list` | 每项 `id` |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 五、验证清单
|
|
70
|
+
|
|
71
|
+
- [ ] copySheet 后 `newReportId` 与设计器 URL 中 ID 一致(末四位无漂移)
|
|
72
|
+
- [ ] `baseInfo?id={newId}` 能返回报表名称
|
|
73
|
+
- [ ] 菜单 `allMenus` 中 `pageId` 与报表 ID 字符串完全一致
|
|
74
|
+
- [ ] 权限 `getQueryItem` / `permission/table/list/new` 的 `sourceId` 正确
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 六、相关文档
|
|
79
|
+
|
|
80
|
+
| 文件 | 用途 |
|
|
81
|
+
|------|------|
|
|
82
|
+
| `report-lifecycle-api-guide.md` | 复制 / 权限 / 添加到菜单 API |
|
|
83
|
+
| `已由 CLI 取代` | Python 客户端(已接入 snowflake 解析) |
|
|
84
|
+
| `内置雪花安全解析` / `.py` | 跨语言安全解析 |
|