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,258 @@
|
|
|
1
|
+
# 公式单元格 API 写入规范
|
|
2
|
+
|
|
3
|
+
> **适用场景**:通过 API / 脚本写入报表 workbook(`saveReportWithCacheConfig` + `saveReportDevInfo`),或生成含 Formula 单元格的 ReportProps JSON。
|
|
4
|
+
> **权威原则**:设计器手动保存的格式为准;文档与脚本冲突时以 `getReportDevInfo` 回读结果为准。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、问题现象
|
|
9
|
+
|
|
10
|
+
设计器里输入 `=IF(J3=0,0,L3/J3)` 能正常保存并展示,但 **API 脚本写入「相同公式」可能导致设计器整页空白**。
|
|
11
|
+
|
|
12
|
+
**根因不是 IF 函数被禁用**,而是持久化字段格式与手动保存不一致:
|
|
13
|
+
|
|
14
|
+
| 字段 | 设计器手动保存 ✅ | 脚本 API 常见错误 ❌ |
|
|
15
|
+
|------|-------------------|----------------------|
|
|
16
|
+
| `cellText` / 顶层 `formula` | `IF(J3=0,0,L3/J3)` **无前导 `=`** | `=IF(J3=0,0,L3/J3)` **带 `=`** |
|
|
17
|
+
| `countType` | `count` | `none` |
|
|
18
|
+
| `displayType` | `Group` | `List` |
|
|
19
|
+
| `groupType` | `null` | `none` |
|
|
20
|
+
| `style.formatter` | 空字符串 | `0.00%`、`General` 等 |
|
|
21
|
+
|
|
22
|
+
平台源码(`EdcReportDevDesignServiceImpl`)从 workbook 提取 Formula 时:
|
|
23
|
+
|
|
24
|
+
```java
|
|
25
|
+
if (field.getCellType() == Formula) {
|
|
26
|
+
field.setCellText(cell.getFormula()); // 原样写入 DB
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
设计器保存时会去掉 leading `=`;脚本若 workbook 顶层 `formula` 带 `=`,DB 里 `cellText` 也会带 `=`。
|
|
31
|
+
设计器再次加载时 SpreadJS 可能再补 `=` → 变成 `==IF(...)` 或解析失败 → **整页空白**。
|
|
32
|
+
|
|
33
|
+
DB 种子数据同样 **不带 `=`**:`'IFERROR(G5/F5,"--")'`、`'SUM(F5)'`。
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 二、Agent 必遵守则(硬约束)
|
|
38
|
+
|
|
39
|
+
生成或修改含公式单元格的报表时,**必须**同时满足:
|
|
40
|
+
|
|
41
|
+
1. **`cellText` 与 workbook 顶层 `formula` 均不带前导 `=`**
|
|
42
|
+
- 设计器输入:`=IF(J3=0,0,L3/J3)`
|
|
43
|
+
- API 存储:`IF(J3=0,0,L3/J3)`
|
|
44
|
+
- 写入前统一:`bare = formula_expr.lstrip("=")`
|
|
45
|
+
|
|
46
|
+
2. **`countType` 必须为 `count`**(勿用 `none`)
|
|
47
|
+
|
|
48
|
+
3. **`displayType` 必须为 `Group`**(分组报表中的公式格;勿用 `List`)
|
|
49
|
+
|
|
50
|
+
4. **`groupType` 必须为 `null`**(JSON 中写 `null`,勿写 `"none"`)
|
|
51
|
+
|
|
52
|
+
5. **`expandType` 为 `NoExpand`**
|
|
53
|
+
|
|
54
|
+
6. **`style.formatter` 为空字符串**(与手动保存对齐;百分比展示依赖公式结果或后续在设计器设格式,脚本勿擅自写 `0.00%`)
|
|
55
|
+
|
|
56
|
+
7. **父格坐标**:公式格与同级 Field 子格一致,指向根格(如 `leftX=2, leftY=5` 对应 F 列责任人,0-based)
|
|
57
|
+
|
|
58
|
+
8. **双保存**:`saveReportWithCacheConfig` + `saveReportDevInfo`,保存后用 `getReportDevInfo` 回读验证
|
|
59
|
+
|
|
60
|
+
9. **除零保护**:占比/达成率类公式推荐 `IF(分母=0,0,分子/分母)`,与设计器手动写法一致
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 三、workbook 单元格结构(dataTable)
|
|
65
|
+
|
|
66
|
+
Formula 单元格在 workbook `dataTable[row][col]` 中的标准结构:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"formula": "IF(J3=0,0,L3/J3)",
|
|
71
|
+
"style": {
|
|
72
|
+
"hAlign": 1,
|
|
73
|
+
"vAlign": 1,
|
|
74
|
+
"formatter": "",
|
|
75
|
+
"cellType": {
|
|
76
|
+
"typeName": "FormulaCellType",
|
|
77
|
+
"editorType": 1,
|
|
78
|
+
"cellType": "Formula",
|
|
79
|
+
"cellText": "IF(J3=0,0,L3/J3)",
|
|
80
|
+
"displayType": "Group",
|
|
81
|
+
"countType": "count",
|
|
82
|
+
"groupType": null,
|
|
83
|
+
"expandType": "NoExpand",
|
|
84
|
+
"leftX": 2,
|
|
85
|
+
"leftY": 5,
|
|
86
|
+
"topX": -1,
|
|
87
|
+
"topY": -1,
|
|
88
|
+
"refX": -1,
|
|
89
|
+
"refY": -1,
|
|
90
|
+
"subordination": ["", ""],
|
|
91
|
+
"formatterType": [],
|
|
92
|
+
"orderType": "no",
|
|
93
|
+
"isActiveParent": false,
|
|
94
|
+
"arrowType": "None",
|
|
95
|
+
"textDirection": "FromLeftToRight",
|
|
96
|
+
"allowOverflow": true,
|
|
97
|
+
"hiddenContext": "0",
|
|
98
|
+
"transSelectOptions": [],
|
|
99
|
+
"browserType": [],
|
|
100
|
+
"thumbnail": "NoDisplay"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"tag": { "formatterType": ["common"] }
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**注意**:顶层 `formula` 与 `style.cellType.cellText` **内容相同且均无前导 `=`**。
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 四、参考实现 `make_formula()`
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
def make_formula(formula_expr, formatter=""):
|
|
115
|
+
"""构建 Formula 单元格,格式对齐设计器手动保存。"""
|
|
116
|
+
bare = formula_expr.lstrip("=")
|
|
117
|
+
ct = {
|
|
118
|
+
"allowOverflow": True,
|
|
119
|
+
"typeName": "FormulaCellType",
|
|
120
|
+
"editorType": 1,
|
|
121
|
+
"leftX": ROOT_ROW,
|
|
122
|
+
"leftY": ROOT_COL,
|
|
123
|
+
"topX": -1,
|
|
124
|
+
"topY": -1,
|
|
125
|
+
"refX": -1,
|
|
126
|
+
"refY": -1,
|
|
127
|
+
"expandType": "NoExpand",
|
|
128
|
+
"displayType": "Group",
|
|
129
|
+
"cellType": "Formula",
|
|
130
|
+
"cellText": bare,
|
|
131
|
+
"transSelectOptions": [],
|
|
132
|
+
"browserType": [],
|
|
133
|
+
"thumbnail": "NoDisplay",
|
|
134
|
+
"hiddenContext": "0",
|
|
135
|
+
"orderType": "no",
|
|
136
|
+
"formatterType": [],
|
|
137
|
+
"subordination": ["", ""],
|
|
138
|
+
"countType": "count",
|
|
139
|
+
"groupType": None,
|
|
140
|
+
"isActiveParent": False,
|
|
141
|
+
"arrowType": "None",
|
|
142
|
+
"textDirection": "FromLeftToRight",
|
|
143
|
+
}
|
|
144
|
+
fmt = formatter if formatter is not None else ""
|
|
145
|
+
return {
|
|
146
|
+
"style": {"hAlign": 1, "vAlign": 1, "formatter": fmt, "cellType": ct},
|
|
147
|
+
"formula": bare,
|
|
148
|
+
"tag": {"formatterType": ["common"]},
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
项目参考:`本地工作目录` 的 `make_formula()`。
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 五、公式表达式规范
|
|
157
|
+
|
|
158
|
+
### 5.1 单元格引用
|
|
159
|
+
|
|
160
|
+
- 使用 Excel A1 风格:`J3`、`L3`、`AA3`
|
|
161
|
+
- 行号与数据行一致(通常第 3 行即 `x=2` 的数据行写 `...3`)
|
|
162
|
+
- 引用同报表内 Field 汇总格,不引用数据集字段名
|
|
163
|
+
|
|
164
|
+
### 5.2 常用模式
|
|
165
|
+
|
|
166
|
+
| 场景 | 设计器输入 | API 存储(无前导 `=`) |
|
|
167
|
+
|------|-----------|------------------------|
|
|
168
|
+
| 达成率 | `=IF(J3=0,0,L3/J3)` | `IF(J3=0,0,L3/J3)` |
|
|
169
|
+
| 业绩占比 | `=IF(L3=0,0,M3/L3)` | `IF(L3=0,0,M3/L3)` |
|
|
170
|
+
| 合计 | `=SUM(F4:F10)` | `SUM(F4:F10)` |
|
|
171
|
+
| 安全除法 | `=IFERROR(G5/F5,"--")` | `IFERROR(G5/F5,"--")` |
|
|
172
|
+
|
|
173
|
+
### 5.3 IF / IFERROR
|
|
174
|
+
|
|
175
|
+
- **IF、IFERROR 均允许**通过 API 写入;此前「IF 导致空白」是格式错误,不是函数限制
|
|
176
|
+
- 占比类公式 **推荐** `IF(分母=0,0,...)` 而非裸除法
|
|
177
|
+
|
|
178
|
+
### 5.4 禁止写法
|
|
179
|
+
|
|
180
|
+
| 禁止 | 原因 |
|
|
181
|
+
|------|------|
|
|
182
|
+
| `cellText: "=SUM(A1)"` | 双 `=` 导致 SpreadJS 解析失败 |
|
|
183
|
+
| `countType: "none"` | 与手动保存不一致,可能引发展示异常 |
|
|
184
|
+
| `displayType: "List"` | 公式格应为 `Group` |
|
|
185
|
+
| `groupType: "none"` | 应为 `null` |
|
|
186
|
+
| 仅写 `style.cellType.cellText` 不写顶层 `formula` | workbook 与设计器可能不同步 |
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 六、验证清单
|
|
191
|
+
|
|
192
|
+
写入公式后,Agent **必须**执行:
|
|
193
|
+
|
|
194
|
+
### 6.1 `getReportDevInfo` 回读
|
|
195
|
+
|
|
196
|
+
对每个 Formula 格(如 K3 → `x=2, y=10`)检查:
|
|
197
|
+
|
|
198
|
+
- [ ] `cellType` 为 `Formula`
|
|
199
|
+
- [ ] `cellText` **不以 `=` 开头**
|
|
200
|
+
- [ ] `countType` 为 `count`
|
|
201
|
+
- [ ] `displayType` 为 `Group`
|
|
202
|
+
- [ ] `groupType` 为 `null`
|
|
203
|
+
- [ ] 公式内容与预期一致(如 `IF(J3=0,0,L3/J3)`)
|
|
204
|
+
|
|
205
|
+
### 6.2 保存接口
|
|
206
|
+
|
|
207
|
+
- [ ] `saveReportWithCacheConfig` 返回 200
|
|
208
|
+
- [ ] `saveReportDevInfo` 返回 200
|
|
209
|
+
- [ ] `checkSave` 返回 200(可选)
|
|
210
|
+
|
|
211
|
+
### 6.3 设计器 smoke test
|
|
212
|
+
|
|
213
|
+
- [ ] 刷新设计器 URL 后页面非空白
|
|
214
|
+
- [ ] 公式格可点击编辑,显示为 `=IF(...)`(设计器 UI 会自动加 `=`)
|
|
215
|
+
- [ ] 预览/解析后公式列有数值
|
|
216
|
+
|
|
217
|
+
### 6.4 本地预检
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
python e10-cli report validate <配置文件路径>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
脚本会对 Formula 单元格检查前导 `=`、`countType`、`displayType` 等(见脚本内 `validate_formula_fields`)。
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 七、与父格 / 跨数据集筛选的关系
|
|
228
|
+
|
|
229
|
+
- 公式格 **不参与** subordination / leftFilterField(通常 `subordination: ["", ""]`)
|
|
230
|
+
- 公式引用的是 **同报表内已配置好的 Field 汇总格**(如 L3 总业绩、J3 指标)
|
|
231
|
+
- 被引用的 Field 格若跨数据集,须先按 `cross-dataset-filter-guide.md` 配好筛选;公式本身不再重复配 fieldKey
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 八、EBU 经营报表示例(37 列)
|
|
236
|
+
|
|
237
|
+
| 列 | 字段 | 公式(API 存储,无前导 `=`) |
|
|
238
|
+
|----|------|------------------------------|
|
|
239
|
+
| K | 达成率 | `IF(J3=0,0,L3/J3)` |
|
|
240
|
+
| R | 新客户业绩占比 | `IF(L3=0,0,M3/L3)` |
|
|
241
|
+
| S | 纯专项业绩占比 | `IF(L3=0,0,N3/L3)` |
|
|
242
|
+
| T | 信创客户业绩占比 | `IF(L3=0,0,O3/L3)` |
|
|
243
|
+
| X | 新签合同个数占比 | `IF(V3=0,0,W3/V3)` |
|
|
244
|
+
| Z | 纯专项合同个数占比 | `IF(V3=0,0,Y3/V3)` |
|
|
245
|
+
| AB | 信创合同个数占比 | `IF(V3=0,0,AA3/V3)` |
|
|
246
|
+
|
|
247
|
+
报表 ID 示例:`1304979556231593985`
|
|
248
|
+
验证脚本:`本地工作目录`
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 九、相关文档
|
|
253
|
+
|
|
254
|
+
- `SKILL.md` — 能力一步骤 6.2 公式配置
|
|
255
|
+
- `ai-report-workflow.md` §六 — 工作流中的公式规则
|
|
256
|
+
- `report-config-schema.md` §2.5 — Formula Schema
|
|
257
|
+
- `cross-dataset-filter-guide.md` — 跨数据集筛选(与公式格配合)
|
|
258
|
+
- `report-building-guide.md` §8.2 — 占比/同环比为前端 SpreadJS 计算
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# 新建报表(声明式一步落库)
|
|
2
|
+
|
|
3
|
+
> 命令:`e10-cli report build --spec <spec.json>` · 结构详解见 `spec-build-schema.md`
|
|
4
|
+
> 交付形态:给出设计器地址即完成,详见 `report-delivery-contract.md`
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、一句话说清
|
|
9
|
+
|
|
10
|
+
报表 = **一张表单当数据源** + **若干列绑定到该表单的字段** + 可选布局/查询条件/权限。
|
|
11
|
+
|
|
12
|
+
`report build` 一次调用跑完:定源 → 字段预检 → 建表 → 挂数据集 → 落库 → 回读,中途不留空壳。
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
e10-cli report build --spec spec.json # 正式建表
|
|
16
|
+
e10-cli report build --spec spec.json --dry-run # 只看定源与字段绑定,不写任何数据
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 二、最小 spec
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"appId": "1315401436173942786",
|
|
26
|
+
"name": "销售明细报表",
|
|
27
|
+
"form": "销售订单",
|
|
28
|
+
"columns": [
|
|
29
|
+
{ "title": "客户名称", "width": 160 },
|
|
30
|
+
{ "title": "合同金额", "width": 120, "format": "货币" },
|
|
31
|
+
{ "title": "签订日期", "width": 140, "format": "短日期" }
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
| 键 | 说明 |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `appId` | 应用 ID(必填) |
|
|
39
|
+
| `name` | 报表名。**写入即最终名**,不留 `__build_*`、不落库后改名 |
|
|
40
|
+
| `form` / `sourceId` | 表单名或表单 id。**两个都不给就是没指明表**,会停下让你选 |
|
|
41
|
+
| `columns[]` | 列定义。`title` 同时是**字段匹配键** |
|
|
42
|
+
| `layout` | `{ title, freezeRows, showLocation }` |
|
|
43
|
+
| `style` / `titleStyle` / `headerStyle` / `bodyStyle` | 分层样式;不给就是默认表头样式 |
|
|
44
|
+
|
|
45
|
+
列的可选项:`width`、`format`(`货币`/`短日期`/`百分比`…,见 `cell-config-echo-guide.md`)、`formula`(公式列不参与字段绑定)、`groupType`(日期分组)、`rule`(条件格式,见 `condition-format-guide.md`)、`field` / `fieldName`(显式指定字段)。
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 三、两处「必须问用户」的门禁
|
|
50
|
+
|
|
51
|
+
这是本能力最重要的两条规则。两处都**不建表、不回退、不猜**。
|
|
52
|
+
|
|
53
|
+
### 规则 B · 表没指明或不是完全精准匹配
|
|
54
|
+
|
|
55
|
+
触发:需求没写表名;或应用内检索是模糊命中 / 同名多条 / 未命中。
|
|
56
|
+
|
|
57
|
+
行为:退出码 **3**,列出 `candidates[]`,**不建任何报表**。
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
e10-cli report find <appId> --list # 列应用内全部表单
|
|
61
|
+
e10-cli report find <appId> "销售订单" # 精确/模糊查找
|
|
62
|
+
e10-cli report build --spec spec.json --form-confirmed --source-id <id> # 用户确认后复跑
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 规则 A · 列字段没有精确匹配
|
|
66
|
+
|
|
67
|
+
触发:列标题与该表单字段的**显示名**对不上(归一化后仍不等),且没有显式指定。
|
|
68
|
+
|
|
69
|
+
行为:退出码 **4**,列出 `unmatched[]` + `allFields[]`(全量可选字段),**不建报表**(若已建到一半会删掉)。
|
|
70
|
+
|
|
71
|
+
**绝对禁止**用系统字段(`name`/`id`/`create_time`…)兜底。历史事故:需求写「姓名」,被静默绑到系统字段 `name`(真实显示名是「标题」),报表能用但数据全错,用户毫不知情。
|
|
72
|
+
|
|
73
|
+
三种收场方式:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 1) 从候选里挑,写进 spec.fieldMap
|
|
77
|
+
"fieldMap": { "党组织": "所属党委" }
|
|
78
|
+
|
|
79
|
+
# 2) 文案与字段真实显示名不同但确实有意如此
|
|
80
|
+
e10-cli report build --spec spec.json --field-confirmed "列名A,列名B"
|
|
81
|
+
e10-cli report build --spec spec.json --field-confirmed # 不带值 = 全部确认
|
|
82
|
+
|
|
83
|
+
# 3) 先看清楚再决定
|
|
84
|
+
e10-cli report build --spec spec.json --dry-run
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 四、退出码
|
|
90
|
+
|
|
91
|
+
| 码 | 含义 |
|
|
92
|
+
|---|---|
|
|
93
|
+
| 0 | 成功,已输出设计器地址 |
|
|
94
|
+
| 2 | 成功但有警告(显示名不一致 / tableName 缺失 / 重复数据集挂载) |
|
|
95
|
+
| 3 | 规则 B:需要用户指定表,**未建表** |
|
|
96
|
+
| 4 | 规则 A:需要用户指定字段,**未建表或已删掉未完成的报表** |
|
|
97
|
+
| 1 | 失败 |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 五、建完之后
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
e10-cli report read <reportId> --fields # 回读字段记录
|
|
105
|
+
e10-cli report verify bind <reportId> --app-id <appId> # 字段绑定体检
|
|
106
|
+
e10-cli report verify all <reportId> --app-id <appId> # 综合自检
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**搭表不要求渲染。** 落库成功、字段绑定正确就是交付完成。全量渲染超过 5 万格必然失败且空耗几十秒,
|
|
110
|
+
真要评估用 `e10-cli report verify limit <reportId>` 做算术预检(见 `report-designer-feature-map.md`)。
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 六、不要做的事
|
|
115
|
+
|
|
116
|
+
- ❌ 建 `__build_*` / `__probe_*` 空壳试探 —— 字段预检不需要报表就能做
|
|
117
|
+
- ❌ 落库后再改报表名 —— 直接用目标名建
|
|
118
|
+
- ❌ 跨报表复用 `datasetId` —— 数据集不能跨报表引用
|
|
119
|
+
- ❌ 同一张表挂两次 —— 左侧会出现重复数据源分组;`report dataset list` 可核对
|
|
120
|
+
- ❌ 一上来拉全系统表单分组树 —— 用户给了应用就在应用内找(`report find`)
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 相关文档
|
|
125
|
+
|
|
126
|
+
- `spec-build-schema.md` —— spec 全字段
|
|
127
|
+
- `add-dataset-registration-guide.md` —— 数据集注册契约
|
|
128
|
+
- `field-bind-exact-match-guide.md` —— 字段精确绑定细则
|
|
129
|
+
- `dataset-table-field-contract-guide.md` —— `tableName` 与字段三件套
|
|
130
|
+
- `api-report-build-fast-path.md` —— 接口层逐步流程
|
|
131
|
+
- `report-create-modes-guide.md` —— 空白 / 模板 / 快速构建三种建法
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# 修改已有报表(只改用户点名项)
|
|
2
|
+
|
|
3
|
+
> **最高优先级规则**:用户没点名的东西,一个都不动。
|
|
4
|
+
> 完整版见 `user-request-scope-only-guide.md`。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、铁律
|
|
9
|
+
|
|
10
|
+
改已有报表时,**默认什么都不改**。用户说了什么就改什么,其余部分原样写回。
|
|
11
|
+
|
|
12
|
+
**禁止**:
|
|
13
|
+
|
|
14
|
+
- ❌ 「顺便」改单元格内容、合并、样式、行高、父格、公式、查询条件、数据集、权限、快照、报表名
|
|
15
|
+
- ❌ 为了「好维护」把整张表重新识别、重扫字段、重建布局
|
|
16
|
+
- ❌ 用「全表重写更干净」当借口覆盖用户的手工调整
|
|
17
|
+
- ❌ 改列宽/冻结/居左时顺手改样式或拆掉合并 —— 这些是**独立**的改动
|
|
18
|
+
|
|
19
|
+
**允许**:只 patch 点名项;其余从回读结果原样写回。
|
|
20
|
+
|
|
21
|
+
拿不准就**问用户**,不要替用户决定。
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 二、典型改法
|
|
26
|
+
|
|
27
|
+
### 改字段(列)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
e10-cli report read <reportId> --fields # 先看清楚现状
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
改列 = 重建布局再整体保存。走 `report build` 的重跑不适用(会新建一张),
|
|
34
|
+
定点改要用 `report fix` 系列或重新组表后 `saveReportDevInfo`。
|
|
35
|
+
|
|
36
|
+
**关键**:保存前必须回读最新的 `designKey`(乐观锁),并且**从回读的 `fields[]` 重建工作簿**,
|
|
37
|
+
不能把读到的空 `sheets` 原样写回 —— 那会把整张表的布局清掉。详见 `safe-partial-save-guide.md`。
|
|
38
|
+
|
|
39
|
+
### 改显示名 / 改名
|
|
40
|
+
|
|
41
|
+
报表名走 `baseInfo`,字段显示名走字段接口,两者不是一回事。
|
|
42
|
+
|
|
43
|
+
### 改共享范围
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
e10-cli report scope list <reportId> --app-id <appId> # 先读
|
|
47
|
+
e10-cli report scope set <reportId> --app-id <appId> --scope "部门:销售部"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
⚠️ `savePermissions` 是**全量替换**:只改 `viewRight` 时,`disableRight` 与 `viewMatrixRight`
|
|
51
|
+
必须原样带回,否则会把「不可见」矩阵一起清掉。
|
|
52
|
+
|
|
53
|
+
### 冻结 / 居左
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
e10-cli report fix freeze <reportId> --anchor <x,y> # 预演
|
|
57
|
+
e10-cli report fix freeze <reportId> --anchor <x,y> --apply
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
唯一持久化标记是 `cell.tag.fixed`;`frozenRowCount` / `tag.fixedCell` 只影响设计器显示。
|
|
61
|
+
|
|
62
|
+
### 改查询条件
|
|
63
|
+
|
|
64
|
+
见 `guide-report-query.md`。**改条件不改显示方式**,除非用户点名。
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 三、改完必做
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
e10-cli report verify all <reportId> --app-id <appId> # 绑定 + 结构 + tableName
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
改坏了**立刻回滚**:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
e10-cli report version list <reportId> # 找版本
|
|
78
|
+
e10-cli report restore <reportId> --version <versionId> # 回滚
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
布局被冲掉(字段数骤降)时的首选是回滚,不是「再存一次试试」。
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 四、保存前的三道防线
|
|
86
|
+
|
|
87
|
+
CLI 已内置,改动时不要绕过:
|
|
88
|
+
|
|
89
|
+
1. **布局守卫** —— 字段与工作簿内容不能同时为空;保存后字段数不能掉。
|
|
90
|
+
2. **空白守卫** —— `showLocation=0` 会被纠正为 2;`scrollPage=1` 却没内容字段会拦下。
|
|
91
|
+
3. **雪花守卫** —— `snapshot.sheetId/id/jobId` 是 number 直接拒绝保存(`Number()` 截断会让设计区空白)。
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 相关文档
|
|
96
|
+
|
|
97
|
+
- `targeted-fix-guide.md` —— 定点改的细则
|
|
98
|
+
- `safe-partial-save-guide.md` —— 安全局部保存
|
|
99
|
+
- `designer-blank-prevention-guide.md` —— 设计区空白的成因与预防
|
|
100
|
+
- `report-delivery-contract.md` —— 改完交付什么
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# 多数据源报表(跨数据集)· spec 写法与落地
|
|
2
|
+
|
|
3
|
+
> **命令**:`e10-cli report build --spec <spec.json>`
|
|
4
|
+
> **校验**:`e10-cli report verify parents <reportId> --app-id <id>`
|
|
5
|
+
> **证明跑得通**:`e10-cli report render <reportId> --app-id <id>`
|
|
6
|
+
> 配套规则见 `cross-dataset-filter-guide.md`(fieldKey 写法)、
|
|
7
|
+
> `datasource-selection-and-parent-filter-guide.md`(区域与入口格)。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 一、什么时候需要多数据源
|
|
12
|
+
|
|
13
|
+
**先问能不能不加。** 主表上已有可展示字段时,不要为了"好看/完整"再挂一张表回显名称
|
|
14
|
+
(`datasource-selection-and-parent-filter-guide.md` §一)。只有主表确实取不到该字段、
|
|
15
|
+
且业务必须跨表关联时才加第二源。
|
|
16
|
+
|
|
17
|
+
典型:主从明细(客户 × 该客户的订单)、维度下钻(合同 × 供应商主数据)。
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 二、spec 写法
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"appId": "1316387504760741888",
|
|
26
|
+
"name": "客户订单综合分析",
|
|
27
|
+
"formConfirmed": true,
|
|
28
|
+
"sources": [
|
|
29
|
+
{ "key": "customer", "form": "客户信息表" },
|
|
30
|
+
{ "key": "order", "form": "销售订单表",
|
|
31
|
+
"link": { "parent": "customer", "parentField": "客户名称", "childField": "客户名称",
|
|
32
|
+
"type": "Equals" } }
|
|
33
|
+
],
|
|
34
|
+
"layout": { "title": "客户订单综合分析", "freezeRows": 1, "showLocation": "left" },
|
|
35
|
+
"columns": [
|
|
36
|
+
{ "source": "customer", "title": "客户名称", "field": "客户名称", "width": 170 },
|
|
37
|
+
{ "source": "customer", "title": "客户等级", "field": "客户等级", "width": 120 },
|
|
38
|
+
{ "source": "order", "title": "订单编号", "field": "订单编号", "width": 150 },
|
|
39
|
+
{ "source": "order", "title": "销售金额", "field": "销售金额", "width": 150, "format": "huobi" }
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
| 键 | 说明 |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `sources[0]` | **父源**。它的列区域是报表的根,不写 `link` |
|
|
47
|
+
| `sources[].key` | spec 内引用名,`columns[].source` 用它;必须唯一 |
|
|
48
|
+
| `sources[].form` / `sourceId` | 与单源 spec 同义;`sourceId` 是已确认的表单 ID |
|
|
49
|
+
| `sources[].sourceType/Group/Name` | 数据集注册契约,普通应用留空即可(默认 `LOGIC` + `weaver-ebuilder-form-service`) |
|
|
50
|
+
| `sources[].link.parent` | 挂在哪个源上;**必须是左边紧邻的那个源** |
|
|
51
|
+
| `link.parentField` / `childField` | 关联字段,写**显示名或 `field_xxx`**,各自在**本方**表里解析 |
|
|
52
|
+
| `link.type` | 比较方式,TitleCase 枚举,默认 `Equals` |
|
|
53
|
+
| `columns[].source` | 该列属于哪个源;**缺省 = 父源** |
|
|
54
|
+
|
|
55
|
+
**不写 `sources` 时行为与单源报表完全一致** —— 老 spec 不需要改。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 三、布局是怎么排的
|
|
60
|
+
|
|
61
|
+
平台侧"多数据集"的机制是:字段按来源排成**连续区域**,区域入口格挂到左边区域的父格上。
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
┌─ 父源区域 ────────┐┌─ 子源区域(连续) ──────────┐
|
|
65
|
+
│ 客户名称 客户等级 ││ 订单编号 销售金额 订单状态 │
|
|
66
|
+
│ ↑ ││ ↑ 入口格(挂父格筛选) │
|
|
67
|
+
│ └── 默认父格 ││ 其余格:普通链式父格 │
|
|
68
|
+
└───────────────────┘└─────────────────────────────┘
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
CLI 按 `columns[]` 的顺序自动切区域:
|
|
72
|
+
|
|
73
|
+
- **父源区域**:整行首列默认父格,其余逐列链式;
|
|
74
|
+
- **子源区域**:**只有入口格**(该区域第一列)写 `subordination` + `leftFilterField` 并指向父区域,
|
|
75
|
+
其余格一律普通链式父格 —— **不逐格重复配**(逐格重复会让预览异常)。
|
|
76
|
+
|
|
77
|
+
### 关键:关联键不必是入口格自己的字段
|
|
78
|
+
|
|
79
|
+
文档示例里入口格指向「联系方式」,而关联字段是「供应商名称」。**锚点看位置,关联键看字段引用**,
|
|
80
|
+
两者互不相干。所以 `link.parentField`/`childField` 只要能在那张表里唯一定位到字段即可,
|
|
81
|
+
**不需要**把关联字段单独排成一列。
|
|
82
|
+
|
|
83
|
+
### 当前限制
|
|
84
|
+
|
|
85
|
+
每个**子源只能占一段**连续区域(父源可以多段)。平台允许一段以上(每段各配一次入口筛选),
|
|
86
|
+
CLI 暂不支持——需要时请在设计器里手工补,或把该源的列排到一起。
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 四、落库时 CLI 自动做的事
|
|
91
|
+
|
|
92
|
+
1. 逐个源走**规则 B**(定源)与**规则 A**(字段精确绑定),任一不通过都不建表;
|
|
93
|
+
2. 逐个源挂数据集,并断言 N 个 datasetId 互不相同(两个源指向同一张表会退化成自引用,直接报错);
|
|
94
|
+
3. 按 `link` 解析关联字段(显示名歧义时报错,不取首条);
|
|
95
|
+
4. 组表时把 `subordination` / `leftFilterField` 写到入口格;
|
|
96
|
+
5. **双保存**:先 `saveReportDevInfo`,再 `saveReportWithCacheConfig`;
|
|
97
|
+
6. 跨源报表**自动关预聚合**(`dataPreAgg=false`)—— 父格筛选参与取数,预聚合结果不成立,
|
|
98
|
+
这是必然代价不是配置错误。设计器「预聚合」开关会显示为关闭。
|
|
99
|
+
|
|
100
|
+
> `saveReportWithCacheConfig` 并非所有站点都有。缺该路由时 CLI 降级为警告,
|
|
101
|
+
> 报表本身仍然建成;此时跨源缓存的生效情况需在设计器里手工保存一次确认。
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 五、验证
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
e10-cli report verify parents <reportId> --app-id <appId> # 结构合规
|
|
109
|
+
e10-cli report render <reportId> --app-id <appId> # 真跑一遍看行数
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`verify parents` 检查:入口格唯一、同区域其余格留空、`subordination[1] === leftFilterField[0].currentField`、
|
|
113
|
+
`id === currentField`、`type` 在白名单内、fieldKey 三段式且指向正确的数据集、锚点落在真实的父区域单元格上。
|
|
114
|
+
|
|
115
|
+
**`render` 是唯一能证明关联真的生效的手段** —— 结构对不代表数据对。判读方式:
|
|
116
|
+
|
|
117
|
+
- 父源 N 行、子表 M 条明细 → 展开后数据行数应 = 子表匹配到的明细数;
|
|
118
|
+
- 用 `--dump <file>` 把 workbook 写出来,逐行看父源字段是否只在该组第一行出现、后续行留空。
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 六、常见报错与处置
|
|
123
|
+
|
|
124
|
+
| 报错 | 含义 | 处置 |
|
|
125
|
+
|---|---|---|
|
|
126
|
+
| `源「b」的列排在源「a」后面,但没写 link` | 子源没声明怎么关联 | 补 `link` |
|
|
127
|
+
| `link.parent=「a」,但它左边紧邻的区域来自「b」` | 关联只能指向左边紧邻区域 | 调整列顺序或改 `link.parent` |
|
|
128
|
+
| `源「b」被拆成了 N 段连续区域` | 子源列没排在一起 | 把该源的列排到一起 |
|
|
129
|
+
| `源「x」与「y」解析到同一张表单` | 两个源指同一张表 | 改为单源布局 |
|
|
130
|
+
| `源「x」的父格关联字段「…」匹配到 N 个字段` | 显示名歧义 | 改用 `field_xxx` 精确指定 |
|
|
131
|
+
| `带缓存保存未成功` | 站点缺 `saveReportWithCacheConfig` 路由 | 见 §四 说明;在设计器里手工保存一次 |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 七、相关文档
|
|
136
|
+
|
|
137
|
+
| 文档 | 关系 |
|
|
138
|
+
|---|---|
|
|
139
|
+
| `cross-dataset-filter-guide.md` | fieldKey 三段式、`id=currentField`、filter 结构权威说明 |
|
|
140
|
+
| `datasource-selection-and-parent-filter-guide.md` | 区域/入口格规则、少挂源的判定顺序 |
|
|
141
|
+
| `spec-build-schema.md` | spec 全量字段 |
|
|
142
|
+
| `preaggregate-auto-disable-guide.md` | 为什么跨源必须关预聚合 |
|
|
143
|
+
| `api-report-build-fast-path.md` | 双保存顺序与禁忌 |
|