weaver-work-cli 0.1.23 → 0.1.25
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 +33 -3
- package/dist/core/output.js +53 -1
- package/dist/internal/e10/auth/commands.js +210 -17
- package/dist/internal/e10/auth/crypto.js +52 -12
- package/dist/internal/e10/auth/xiaoe.js +117 -35
- package/dist/internal/e10/context.js +3 -3
- package/dist/internal/e10/request-runtime.js +46 -4
- package/dist/shortcuts/caizhilian/file-upload/metadata.js +124 -0
- package/dist/shortcuts/caizhilian/file-upload/multipart.js +47 -0
- package/dist/shortcuts/caizhilian/file-upload/protocol.js +116 -0
- package/dist/shortcuts/caizhilian/file-upload/receipt.js +37 -0
- package/dist/shortcuts/caizhilian/host.js +13 -5
- package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +72 -179
- package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
- package/dist/shortcuts/caizhilian/operations/handlers/folder.js +701 -4
- package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
- package/dist/shortcuts/caizhilian/operations/registry.js +5 -1
- package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
- package/dist/shortcuts/caizhilian/operations/specs.js +67 -0
- package/dist/shortcuts/workflow/continuation.js +14 -9
- package/dist/shortcuts/workflow/endpoints.js +11 -1
- package/dist/shortcuts/workflow/index.js +55 -1
- package/dist/shortcuts/workflow/operations/flow-status.js +63 -0
- package/dist/shortcuts/workflow/operations/form.js +1822 -547
- package/dist/shortcuts/workflow/operations/read.js +414 -13
- package/dist/shortcuts/workflow/operations/shared.js +28 -0
- package/dist/shortcuts/workflow/operations/write.js +5 -5
- package/dist/shortcuts/workflow/operations.js +8 -6
- package/dist/shortcuts/workflow/stdout-compact.js +33 -0
- package/docs/caizhilian.md +12 -5
- package/docs/e10-auth.md +25 -3
- package/node_modules/@napi-rs/keyring/LICENSE +21 -0
- package/node_modules/@napi-rs/keyring/README.md +19 -0
- package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
- package/node_modules/@napi-rs/keyring/index.js +514 -0
- package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
- package/node_modules/@napi-rs/keyring/keytar.js +26 -0
- package/node_modules/@napi-rs/keyring/package.json +125 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1149 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2662 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +709 -0
- package/node_modules/commander/lib/option.js +367 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +82 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +1045 -0
- package/package.json +5 -1
- package/skills/weaver-e10-builder/SKILL.md +281 -0
- package/skills/weaver-e10-builder/_catalog.md +94 -0
- package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
- package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
- package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
- package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
- package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
- package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
- package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
- package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
- package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
- package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
- package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
- package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
- package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
- package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
- package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
- package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
- package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
- package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
- package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
- package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
- package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
- package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
- package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
- package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
- package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
- package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
- package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
- package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
- package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
- package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
- package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
- package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
- package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
- package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
- package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
- package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
- package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
- package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
- package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
- package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
- package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
- package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
- package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
- package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
- package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
- package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
- package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
- package/skills/weaver-e10-builder/assets/icons.db +0 -0
- package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
- package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
- package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
- package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
- package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
- package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
- package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
- package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
- package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
- package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
- package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
- package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
- package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
- package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
- package/skills/weaver-e10-builder/references/common/map.md +153 -0
- package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
- package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
- package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
- package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
- package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
- package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
- package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
- package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
- package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
- package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
- package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
- package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
- package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
- package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
- package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
- package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
- package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
- package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
- package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
- package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
- package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
- package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
- package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
- package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
- package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
- package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
- package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
- package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
- package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
- package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
- package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
- package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
- package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
- package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
- package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
- package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
- package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
- package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
- package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
- package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
- package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
- package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
- package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
- package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
- package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
- package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
- package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
- package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
- package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
- package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
- package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
- package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
- package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
- package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
- package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
- package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
- package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
- package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
- package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
- package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
- package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
- package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
- package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
- package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
- package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
- package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
- package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
- package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
- package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
- package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
- package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
- package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
- package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
- package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
- package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
- package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
- package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
- package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
- package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
- package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
- package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
- package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
- package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
- package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
- package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
- package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
- package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
- package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
- package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
- package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
- package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
- package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
- package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
- package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
- package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
- package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
- package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
- package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
- package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
- package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
- package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
- package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
- package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
- package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
- package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
- package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
- package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
- package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
- package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +14 -4
- package/skills/weaver-e10-caizhilian/references/file-upload.md +100 -295
- package/skills/weaver-e10-caizhilian/references/files.md +15 -0
- package/skills/weaver-e10-caizhilian/references/folder.md +31 -3
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +634 -25
- package/skills/weaver-e10-jiuchuanhui/SKILL.md +9 -1
- package/skills/weaver-e10-shared/SKILL.md +19 -5
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +25 -5
- package/skills/weaver-e10-workflow/SKILL.md +28 -47
- package/skills/weaver-e10-workflow/references/source-manifest.json +46 -36
- package/skills/weaver-e10-workflow/references/workflow-batch.md +2 -4
- package/skills/weaver-e10-workflow/references/workflow-create.md +261 -86
- package/skills/weaver-e10-workflow/references/workflow-edit.md +2 -1
- package/skills/weaver-e10-workflow/references/workflow-memory.md +3 -6
- package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -1
- package/skills/weaver-e10-workflow/references/workflow-query.md +11 -9
- package/skills/weaver-e10-workflow/references/workflow-share.md +2 -0
|
@@ -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` | 跨语言安全解析 |
|