dsh-crwu-workbench 0.0.10
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/CHANGELOG.md +1516 -0
- package/LICENSE +26 -0
- package/README.en.md +204 -0
- package/README.md +521 -0
- package/SECURITY.md +39 -0
- package/bin/darwin-arm64/crwu +0 -0
- package/bin/darwin-arm64/dws +0 -0
- package/bin/darwin-arm64/ossutil +0 -0
- package/bin/manifest.json +82 -0
- package/bin/win32-x64/crwu.exe +0 -0
- package/bin/win32-x64/dws.exe +4 -0
- package/bin/win32-x64/ossutil.exe +0 -0
- package/common/skills/.synced.json +8 -0
- package/common/skills/crwu-dws/SKILL.md +208 -0
- package/common/skills/crwu-dws/references/00-/347/233/256/345/275/225/345/277/253/347/205/247schema.md +113 -0
- package/common/skills/crwu-dws/references/01-/345/256/241/346/240/270/344/270/213/350/275/275/344/270/216manifest/350/247/204/350/214/203.md +115 -0
- package/common/skills/crwu-dws/references/02-/347/274/223/345/255/230/344/270/216/345/205/234/345/272/225/346/237/245/346/211/276/350/247/204/350/214/203.md +119 -0
- package/common/skills/crwu-dws/scripts/test_dws_source_contract.py +493 -0
- package/common/skills/crwu-h3yun-login/SKILL.md +130 -0
- package/common/skills/crwu-h3yun-query/SKILL.md +192 -0
- package/config/crwu-workbench.yml +26 -0
- package/cordis.patch.yml +46 -0
- package/lib/client.js +10346 -0
- package/lib/index.js +11584 -0
- package/package.json +119 -0
- package/scripts/prepare.mjs +59 -0
- package/skills/README.md +26 -0
- package/skills/crwu/crwu-audit/SKILL.md +152 -0
- package/skills/crwu/crwu-audit/references/00-input-and-route-profile.md +232 -0
- package/skills/crwu/crwu-audit/references/01-report-id-resolution.md +13 -0
- package/skills/crwu/crwu-audit/references/02-scope-classification.md +25 -0
- package/skills/crwu/crwu-audit/references/03-asset-classification.md +27 -0
- package/skills/crwu/crwu-audit/references/04-business-classification.md +63 -0
- package/skills/crwu/crwu-audit/references/05-method-classification.md +66 -0
- package/skills/crwu/crwu-audit/references/06-overlay-classification.md +42 -0
- package/skills/crwu/crwu-audit/references/07-skill-registry.md +57 -0
- package/skills/crwu/crwu-audit/references/08-union-dispatch-rules.md +142 -0
- package/skills/crwu/crwu-audit/references/09-review-risk-classification.md +85 -0
- package/skills/crwu/crwu-audit/references/10-capability-gap-proposal.md +68 -0
- package/skills/crwu/crwu-audit/references/11-html-delivery-spec.md +881 -0
- package/skills/crwu/crwu-audit/references/12-leaf-common-contract.md +202 -0
- package/skills/crwu/crwu-audit/references/13-dingtalk-result-publish.md +88 -0
- package/skills/crwu/crwu-audit/references/14-orchestration-workflow.md +52 -0
- package/skills/crwu/crwu-audit/references/99-maintenance.md +62 -0
- package/skills/crwu/crwu-audit/scripts/README.md +157 -0
- package/skills/crwu/crwu-audit/scripts/audit_delivery.py +2736 -0
- package/skills/crwu/crwu-audit/scripts/audit_result.schema.json +1659 -0
- package/skills/crwu/crwu-audit/scripts/examples/audit-result.sample.json +739 -0
- package/skills/crwu/crwu-audit/scripts/fetch_review_records.py +85 -0
- package/skills/crwu/crwu-audit/scripts/media_extract.py +513 -0
- package/skills/crwu/crwu-audit/scripts/prepare_materials.py +1252 -0
- package/skills/crwu/crwu-audit/scripts/test_audit_delivery.py +1678 -0
- package/skills/crwu/crwu-audit/scripts/test_audit_multiaxis_router.py +1339 -0
- package/skills/crwu/crwu-audit/scripts/test_fetch_review_records.py +77 -0
- package/skills/crwu/crwu-audit/scripts/test_media_extract.py +332 -0
- package/skills/crwu/crwu-audit/scripts/test_prepare_materials.py +1081 -0
- package/skills/crwu/crwu-audit/template/audit-report.html +435 -0
- package/skills/crwu/crwu-audit-asset-asset-group-goodwill/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/00-applicability.md +28 -0
- package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/01-kb-assembly.md +31 -0
- package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/02-review-focus.md +21 -0
- package/skills/crwu/crwu-audit-asset-asset-group-goodwill/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-debt/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-debt/references/00-applicability.md +40 -0
- package/skills/crwu/crwu-audit-asset-debt/references/01-kb-assembly.md +41 -0
- package/skills/crwu/crwu-audit-asset-debt/references/02-review-focus.md +54 -0
- package/skills/crwu/crwu-audit-asset-debt/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-enterprise-value/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-enterprise-value/references/00-applicability.md +31 -0
- package/skills/crwu/crwu-audit-asset-enterprise-value/references/01-kb-assembly.md +35 -0
- package/skills/crwu/crwu-audit-asset-enterprise-value/references/02-review-focus.md +33 -0
- package/skills/crwu/crwu-audit-asset-enterprise-value/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-equipment/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-equipment/references/00-applicability.md +40 -0
- package/skills/crwu/crwu-audit-asset-equipment/references/01-kb-assembly.md +39 -0
- package/skills/crwu/crwu-audit-asset-equipment/references/02-review-focus.md +52 -0
- package/skills/crwu/crwu-audit-asset-equipment/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-intangible/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-intangible/references/00-applicability.md +36 -0
- package/skills/crwu/crwu-audit-asset-intangible/references/01-kb-assembly.md +40 -0
- package/skills/crwu/crwu-audit-asset-intangible/references/02-review-focus.md +68 -0
- package/skills/crwu/crwu-audit-asset-intangible/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-inventory/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-inventory/references/00-applicability.md +28 -0
- package/skills/crwu/crwu-audit-asset-inventory/references/01-kb-assembly.md +31 -0
- package/skills/crwu/crwu-audit-asset-inventory/references/02-review-focus.md +21 -0
- package/skills/crwu/crwu-audit-asset-inventory/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-mining-right/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-mining-right/references/00-applicability.md +31 -0
- package/skills/crwu/crwu-audit-asset-mining-right/references/01-kb-assembly.md +35 -0
- package/skills/crwu/crwu-audit-asset-mining-right/references/02-review-focus.md +33 -0
- package/skills/crwu/crwu-audit-asset-mining-right/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-other/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-other/references/00-applicability.md +28 -0
- package/skills/crwu/crwu-audit-asset-other/references/01-kb-assembly.md +31 -0
- package/skills/crwu/crwu-audit-asset-other/references/02-review-focus.md +21 -0
- package/skills/crwu/crwu-audit-asset-other/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-portfolio/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-portfolio/references/00-applicability.md +28 -0
- package/skills/crwu/crwu-audit-asset-portfolio/references/01-kb-assembly.md +31 -0
- package/skills/crwu/crwu-audit-asset-portfolio/references/02-review-focus.md +21 -0
- package/skills/crwu/crwu-audit-asset-portfolio/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-realestate/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-realestate/references/00-applicability.md +43 -0
- package/skills/crwu/crwu-audit-asset-realestate/references/01-kb-assembly.md +75 -0
- package/skills/crwu/crwu-audit-asset-realestate/references/02-review-focus.md +93 -0
- package/skills/crwu/crwu-audit-asset-realestate/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-scrap-materials/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-scrap-materials/references/00-applicability.md +28 -0
- package/skills/crwu/crwu-audit-asset-scrap-materials/references/01-kb-assembly.md +31 -0
- package/skills/crwu/crwu-audit-asset-scrap-materials/references/02-review-focus.md +21 -0
- package/skills/crwu/crwu-audit-asset-scrap-materials/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-asset-transport-equipment/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-asset-transport-equipment/references/00-applicability.md +31 -0
- package/skills/crwu/crwu-audit-asset-transport-equipment/references/01-kb-assembly.md +35 -0
- package/skills/crwu/crwu-audit-asset-transport-equipment/references/02-review-focus.md +33 -0
- package/skills/crwu/crwu-audit-asset-transport-equipment/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-asset-operation/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-asset-operation/references/00-applicability.md +30 -0
- package/skills/crwu/crwu-audit-biz-asset-operation/references/01-kb-assembly.md +32 -0
- package/skills/crwu/crwu-audit-biz-asset-operation/references/02-review-focus.md +42 -0
- package/skills/crwu/crwu-audit-biz-asset-operation/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-consulting-review/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-consulting-review/references/00-applicability.md +30 -0
- package/skills/crwu/crwu-audit-biz-consulting-review/references/01-kb-assembly.md +32 -0
- package/skills/crwu/crwu-audit-biz-consulting-review/references/02-review-focus.md +40 -0
- package/skills/crwu/crwu-audit-biz-consulting-review/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-financial-reporting/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-financial-reporting/references/00-applicability.md +41 -0
- package/skills/crwu/crwu-audit-biz-financial-reporting/references/01-kb-assembly.md +40 -0
- package/skills/crwu/crwu-audit-biz-financial-reporting/references/02-review-focus.md +64 -0
- package/skills/crwu/crwu-audit-biz-financial-reporting/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-financing-debt/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-financing-debt/references/00-applicability.md +31 -0
- package/skills/crwu/crwu-audit-biz-financing-debt/references/01-kb-assembly.md +34 -0
- package/skills/crwu/crwu-audit-biz-financing-debt/references/02-review-focus.md +47 -0
- package/skills/crwu/crwu-audit-biz-financing-debt/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-investment-capital/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-investment-capital/references/00-applicability.md +31 -0
- package/skills/crwu/crwu-audit-biz-investment-capital/references/01-kb-assembly.md +34 -0
- package/skills/crwu/crwu-audit-biz-investment-capital/references/02-review-focus.md +47 -0
- package/skills/crwu/crwu-audit-biz-investment-capital/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/00-applicability.md +30 -0
- package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/01-kb-assembly.md +32 -0
- package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/02-review-focus.md +40 -0
- package/skills/crwu/crwu-audit-biz-judicial-liquidation-compensation/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-tax-history/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-tax-history/references/00-applicability.md +29 -0
- package/skills/crwu/crwu-audit-biz-tax-history/references/01-kb-assembly.md +30 -0
- package/skills/crwu/crwu-audit-biz-tax-history/references/02-review-focus.md +33 -0
- package/skills/crwu/crwu-audit-biz-tax-history/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-biz-transaction-disposal/SKILL.md +38 -0
- package/skills/crwu/crwu-audit-biz-transaction-disposal/references/00-applicability.md +31 -0
- package/skills/crwu/crwu-audit-biz-transaction-disposal/references/01-kb-assembly.md +34 -0
- package/skills/crwu/crwu-audit-biz-transaction-disposal/references/02-review-focus.md +47 -0
- package/skills/crwu/crwu-audit-biz-transaction-disposal/references/03-common-contract.md +202 -0
- package/skills/crwu/crwu-audit-datacheck/SKILL.md +59 -0
- package/skills/crwu/crwu-audit-datacheck/references/00-KB/350/243/205/351/205/215/350/241/250.md +25 -0
- package/skills/crwu/crwu-audit-datacheck/references/01-runtime-and-check-catalog.md +139 -0
- package/skills/crwu/crwu-audit-datacheck/scripts/recalc_check.py +521 -0
- package/skills/crwu/crwu-audit-datacheck/scripts/test_recalc_check.py +419 -0
- package/skills/crwu/crwu-audit-datacheck/scripts/test_skill_self_containment.py +44 -0
- package/skills/crwu/crwu-audit-external-data/SKILL.md +73 -0
- package/skills/crwu/crwu-audit-external-data/references/00-KB/350/243/205/351/205/215/350/241/250.md +38 -0
- package/skills/crwu/crwu-audit-external-data/references/01-connector-access.md +116 -0
- package/skills/crwu/crwu-audit-external-data/references/02-verification-workflow.md +78 -0
- package/skills/crwu/crwu-audit-external-data/scripts/connector_probe.py +374 -0
- package/skills/crwu/crwu-audit-external-data/scripts/test_connector_probe.py +264 -0
- package/skills/crwu/crwu-audit-output-filter/SKILL.md +34 -0
- package/skills/crwu/crwu-audit-output-filter/references/00-applicability.md +7 -0
- package/skills/crwu/crwu-audit-output-filter/references/01-kb-assembly.md +11 -0
- package/skills/crwu/crwu-audit-output-filter/references/02-review-focus.md +25 -0
- package/skills/crwu/crwu-audit-public-general-standards/SKILL.md +46 -0
- package/skills/crwu/crwu-audit-public-general-standards/references/00-applicability.md +41 -0
- package/skills/crwu/crwu-audit-public-general-standards/references/01-kb-assembly.md +66 -0
- package/skills/crwu/crwu-audit-public-general-standards/references/02-review-focus.md +111 -0
- package/skills/crwu/crwu-audit-public-general-standards/references/03-execution-contract.md +89 -0
- package/skills/crwu/crwu-dev-audit-optimize/SKILL.md +98 -0
- package/skills/crwu/crwu-dev-audit-optimize/references/00-/344/274/230/345/214/226/350/247/204/350/214/203/344/270/216/346/226/207/344/273/266/350/220/275/347/202/271.md +132 -0
- package/skills/crwu/crwu-dev-audit-optimize/references/01-/345/217/215/351/246/210/345/256/232/344/275/215/344/270/216/347/224/273/345/203/217/346/265/201/347/250/213.md +108 -0
- package/skills/crwu/crwu-dev-audit-optimize/references/02-/346/226/271/346/241/210/346/250/241/346/235/277/344/270/216/347/241/256/350/256/244/351/227/250/347/246/201.md +92 -0
- package/skills/crwu/crwu-dev-audit-optimize/references/03-AI/344/272/272/345/267/245/345/267/256/350/267/235/345/210/206/346/236/220/346/265/201/347/250/213.md +95 -0
- package/skills/crwu/crwu-dev-audit-optimize/scripts/examples/gap-analysis.sample.json +116 -0
- package/skills/crwu/crwu-dev-audit-optimize/scripts/gap_analysis.schema.json +33 -0
- package/skills/crwu/crwu-dev-audit-optimize/scripts/gap_analysis_delivery.py +475 -0
- package/skills/crwu/crwu-dev-audit-optimize/scripts/test_gap_analysis_delivery.py +855 -0
- package/skills/crwu/crwu-dev-audit-optimize/template/NOTICE.echarts.txt +7 -0
- package/skills/crwu/crwu-dev-audit-optimize/template/echarts.min.js +45 -0
- package/skills/crwu/crwu-dev-audit-optimize/template/gap-analysis-report.html +71 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/SKILL.md +74 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/00-responsibility-and-modes.md +62 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/01-kb-source-discovery.md +89 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/02-child-skill-contract.md +99 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/03-review-item-execution-contract.md +51 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/04-registry-and-mapping-update.md +73 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/05-validation-and-delivery.md +127 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/06-live-routing-reconciliation.md +136 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/references/07-kb-skill-map.md +411 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/README.md +200 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/check_audit_skill_mappings.py +2477 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/kb_tool.py +577 -0
- package/skills/crwu/crwu-dev-audit-skill-maintainer/scripts/test_audit_skill_maintainer.py +5097 -0
- package/skills/dws/LICENSE +178 -0
- package/skills/dws/NOTICE +17 -0
- package/skills/dws/dingtalk-aisearch/SKILL.md +83 -0
- package/skills/dws/dingtalk-aisearch/references/aisearch.md +249 -0
- package/skills/dws/dingtalk-aisearch/references/intent-guide.md +15 -0
- package/skills/dws/dingtalk-aisearch/references/lite-recipes.md +31 -0
- package/skills/dws/dingtalk-aitable/SKILL.md +139 -0
- package/skills/dws/dingtalk-aitable/references/06-data-analytics.md +11 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-advperm.md +251 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-attachment.md +49 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-best-practices.md +48 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-cell-value.md +346 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-dashboard-chart.md +46 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-data-analysis-sop.md +131 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-datasource.md +272 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-error-recovery.md +128 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-export-import.md +113 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-field-properties.md +238 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-field.md +186 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-filter-sort.md +135 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-form.md +130 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-formula-guide.md +224 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-primary-doc.md +58 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-create.md +52 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-delete.md +20 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-history.md +97 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-name-key.md +47 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-query.md +120 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-share.md +54 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-stats.md +59 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-update.md +66 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-record-upsert.md +89 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-view-config.md +140 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-view-extras.md +195 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-view-types.md +95 -0
- package/skills/dws/dingtalk-aitable/references/aitable/aitable-workflow.md +384 -0
- package/skills/dws/dingtalk-aitable/references/aitable-record-ops.md +80 -0
- package/skills/dws/dingtalk-aitable/references/aitable-section.md +30 -0
- package/skills/dws/dingtalk-aitable/references/aitable.md +59 -0
- package/skills/dws/dingtalk-aitable/references/field-rules.md +17 -0
- package/skills/dws/dingtalk-aitable/references/intent-guide.md +17 -0
- package/skills/dws/dingtalk-aitable/references/recipes/conventions.md +44 -0
- package/skills/dws/dingtalk-aitable/references/url-patterns.md +144 -0
- package/skills/dws/dingtalk-aitable/scripts/aitable_export_via_task.py +210 -0
- package/skills/dws/dingtalk-aitable/scripts/aitable_import_via_task.py +173 -0
- package/skills/dws/dingtalk-aitable/scripts/bulk_add_fields.py +273 -0
- package/skills/dws/dingtalk-aitable/scripts/import_records.py +333 -0
- package/skills/dws/dingtalk-aitable/scripts/upload_attachment.py +190 -0
- package/skills/dws/dingtalk-calendar/SKILL.md +137 -0
- package/skills/dws/dingtalk-calendar/references/03-meeting.md +56 -0
- package/skills/dws/dingtalk-calendar/references/calendar.md +760 -0
- package/skills/dws/dingtalk-calendar/references/intent-guide.md +9 -0
- package/skills/dws/dingtalk-calendar/references/lite-recipes.md +25 -0
- package/skills/dws/dingtalk-calendar/scripts/calendar_free_slot_finder.py +199 -0
- package/skills/dws/dingtalk-calendar/scripts/calendar_schedule_meeting.py +233 -0
- package/skills/dws/dingtalk-calendar/scripts/calendar_today_agenda.py +139 -0
- package/skills/dws/dingtalk-chat/SKILL.md +127 -0
- package/skills/dws/dingtalk-chat/references/01-messaging.md +103 -0
- package/skills/dws/dingtalk-chat/references/card/callback.md +10 -0
- package/skills/dws/dingtalk-chat/references/card/create.md +27 -0
- package/skills/dws/dingtalk-chat/references/card/schema.md +14 -0
- package/skills/dws/dingtalk-chat/references/card/update.md +13 -0
- package/skills/dws/dingtalk-chat/references/chat/chat-bot.md +187 -0
- package/skills/dws/dingtalk-chat/references/chat/chat-conversation.md +165 -0
- package/skills/dws/dingtalk-chat/references/chat/group-admin.md +144 -0
- package/skills/dws/dingtalk-chat/references/chat/group-discovery.md +121 -0
- package/skills/dws/dingtalk-chat/references/chat/message-actions.md +132 -0
- package/skills/dws/dingtalk-chat/references/chat/message-media.md +76 -0
- package/skills/dws/dingtalk-chat/references/chat/message-query.md +135 -0
- package/skills/dws/dingtalk-chat/references/chat/thread.md +46 -0
- package/skills/dws/dingtalk-chat/references/chat-emoji-list.md +216 -0
- package/skills/dws/dingtalk-chat/references/chat.md +140 -0
- package/skills/dws/dingtalk-chat/references/contracts.md +70 -0
- package/skills/dws/dingtalk-chat/references/intent-guide.md +56 -0
- package/skills/dws/dingtalk-contact/SKILL.md +122 -0
- package/skills/dws/dingtalk-contact/references/08-directory.md +51 -0
- package/skills/dws/dingtalk-contact/references/contact.md +595 -0
- package/skills/dws/dingtalk-contact/references/intent-guide.md +14 -0
- package/skills/dws/dingtalk-contact/references/lite-recipes.md +30 -0
- package/skills/dws/dingtalk-contact/references/recipes/conventions.md +44 -0
- package/skills/dws/dingtalk-contact/scripts/contact_dept_members.py +130 -0
- package/skills/dws/dingtalk-doc/SKILL.md +112 -0
- package/skills/dws/dingtalk-doc/references/04-document.md +57 -0
- package/skills/dws/dingtalk-doc/references/contracts.md +40 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-block.md +39 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-comment.md +29 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-create.md +54 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-export.md +30 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-import.md +28 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-info.md +12 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-media.md +46 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-read.md +56 -0
- package/skills/dws/dingtalk-doc/references/doc/doc-update.md +87 -0
- package/skills/dws/dingtalk-doc/references/doc/format/doc-jsonml-cookbook.md +469 -0
- package/skills/dws/dingtalk-doc/references/doc/format/doc-jsonml-schema.json +526 -0
- package/skills/dws/dingtalk-doc/references/doc/format/doc-jsonml-schema.md +711 -0
- package/skills/dws/dingtalk-doc/references/doc/style/doc-create-workflow.md +414 -0
- package/skills/dws/dingtalk-doc/references/doc/style/doc-style-guideline.md +404 -0
- package/skills/dws/dingtalk-doc/references/doc/style/doc-update-workflow.md +316 -0
- package/skills/dws/dingtalk-doc/references/doc.md +82 -0
- package/skills/dws/dingtalk-doc/references/intent-guide.md +20 -0
- package/skills/dws/dingtalk-drive/SKILL.md +128 -0
- package/skills/dws/dingtalk-drive/references/drive.md +126 -0
- package/skills/dws/dingtalk-drive/references/folder-sync.md +40 -0
- package/skills/dws/dingtalk-drive/references/intent-guide.md +22 -0
- package/skills/dws/dingtalk-drive/references/lite-recipes.md +39 -0
- package/skills/dws/dingtalk-event/SKILL.md +106 -0
- package/skills/dws/dingtalk-event/references/event-im-keys.md +54 -0
- package/skills/dws/dingtalk-event/references/event-im-lifecycle.md +35 -0
- package/skills/dws/dingtalk-event/references/event-im-operations.md +52 -0
- package/skills/dws/dingtalk-event/references/event-im-output.md +39 -0
- package/skills/dws/dingtalk-event/references/event-im.md +58 -0
- package/skills/dws/dingtalk-event/references/event-oa.md +155 -0
- package/skills/dws/dingtalk-event/references/event-todo.md +50 -0
- package/skills/dws/dingtalk-event/references/event-voip.md +69 -0
- package/skills/dws/dingtalk-mail/SKILL.md +113 -0
- package/skills/dws/dingtalk-mail/references/09-mail.md +45 -0
- package/skills/dws/dingtalk-mail/references/intent-guide.md +8 -0
- package/skills/dws/dingtalk-mail/references/lite-recipes.md +45 -0
- package/skills/dws/dingtalk-mail/references/mail.md +1889 -0
- package/skills/dws/dingtalk-mail/references/recipes/conventions.md +44 -0
- package/skills/dws/dingtalk-mail/scripts/mail_send_with_cc.py +122 -0
- package/skills/dws/dingtalk-mail/scripts/mail_unread_summary.py +114 -0
- package/skills/dws/dingtalk-minutes/SKILL.md +116 -0
- package/skills/dws/dingtalk-minutes/references/07-minutes.md +149 -0
- package/skills/dws/dingtalk-minutes/references/10-minutes-speaker-match.md +32 -0
- package/skills/dws/dingtalk-minutes/references/11-minutes-speaker-correct.md +40 -0
- package/skills/dws/dingtalk-minutes/references/intent-guide.md +79 -0
- package/skills/dws/dingtalk-minutes/references/lite-recipes.md +25 -0
- package/skills/dws/dingtalk-minutes/references/minutes.md +210 -0
- package/skills/dws/dingtalk-minutes/references/recipes/conventions.md +33 -0
- package/skills/dws/dingtalk-minutes/scripts/minutes_recent_summary.py +196 -0
- package/skills/dws/dingtalk-minutes/scripts/test_minutes_scripts.py +222 -0
- package/skills/dws/dingtalk-misc/SKILL.md +55 -0
- package/skills/dws/dingtalk-misc/references/05-reporting.md +29 -0
- package/skills/dws/dingtalk-misc/references/agoal.md +302 -0
- package/skills/dws/dingtalk-misc/references/attendance-intent-guide.md +7 -0
- package/skills/dws/dingtalk-misc/references/attendance-report.md +109 -0
- package/skills/dws/dingtalk-misc/references/attendance-schedule.md +115 -0
- package/skills/dws/dingtalk-misc/references/attendance-vacation.md +129 -0
- package/skills/dws/dingtalk-misc/references/attendance.md +149 -0
- package/skills/dws/dingtalk-misc/references/dev/app.md +42 -0
- package/skills/dws/dingtalk-misc/references/dev/connect.md +108 -0
- package/skills/dws/dingtalk-misc/references/dev/credentials.md +26 -0
- package/skills/dws/dingtalk-misc/references/dev/dev-index.md +13 -0
- package/skills/dws/dingtalk-misc/references/dev/event.md +47 -0
- package/skills/dws/dingtalk-misc/references/dev/mcp.md +106 -0
- package/skills/dws/dingtalk-misc/references/dev/member.md +19 -0
- package/skills/dws/dingtalk-misc/references/dev/permission.md +56 -0
- package/skills/dws/dingtalk-misc/references/dev/recipes.md +58 -0
- package/skills/dws/dingtalk-misc/references/dev/robot.md +74 -0
- package/skills/dws/dingtalk-misc/references/dev/security.md +21 -0
- package/skills/dws/dingtalk-misc/references/dev/version.md +99 -0
- package/skills/dws/dingtalk-misc/references/dev/webapp.md +22 -0
- package/skills/dws/dingtalk-misc/references/devapp.md +148 -0
- package/skills/dws/dingtalk-misc/references/devdoc-intent-guide.md +7 -0
- package/skills/dws/dingtalk-misc/references/devdoc.md +42 -0
- package/skills/dws/dingtalk-misc/references/ding.md +184 -0
- package/skills/dws/dingtalk-misc/references/hrbrain.md +67 -0
- package/skills/dws/dingtalk-misc/references/live.md +23 -0
- package/skills/dws/dingtalk-misc/references/markdown.md +167 -0
- package/skills/dws/dingtalk-misc/references/oa/oa-form-components.md +345 -0
- package/skills/dws/dingtalk-misc/references/oa/oa-process-nodes.md +374 -0
- package/skills/dws/dingtalk-misc/references/oa.md +1014 -0
- package/skills/dws/dingtalk-misc/references/openapi-explorer.md +47 -0
- package/skills/dws/dingtalk-misc/references/pat.md +52 -0
- package/skills/dws/dingtalk-misc/references/profile.md +41 -0
- package/skills/dws/dingtalk-misc/references/recruit.md +89 -0
- package/skills/dws/dingtalk-misc/references/report-conventions.md +44 -0
- package/skills/dws/dingtalk-misc/references/report-intent-guide.md +11 -0
- package/skills/dws/dingtalk-misc/references/report-lite-recipes.md +25 -0
- package/skills/dws/dingtalk-misc/references/report.md +109 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-batch-operations.md +104 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-chart.md +69 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-comment.md +166 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-conditional-format.md +59 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-dimension-operations.md +60 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-dropdown.md +103 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-export.md +135 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-filter-view.md +51 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-filter.md +181 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-formula.md +192 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-import.md +76 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-media-image.md +263 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-pivot-table.md +292 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-range-operations.md +161 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-read-data.md +60 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-revision-changeset.md +46 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-search-replace.md +120 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-style-format.md +71 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-version.md +84 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-workbook.md +59 -0
- package/skills/dws/dingtalk-misc/references/sheet/sheet-write-data.md +93 -0
- package/skills/dws/dingtalk-misc/references/sheet-conventions.md +44 -0
- package/skills/dws/dingtalk-misc/references/sheet-intent-guide.md +12 -0
- package/skills/dws/dingtalk-misc/references/sheet.md +166 -0
- package/skills/dws/dingtalk-misc/references/skill.md +98 -0
- package/skills/dws/dingtalk-misc/references/unsupported-scripts.md +49 -0
- package/skills/dws/dingtalk-misc/references/url-patterns.md +144 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/compose.md +200 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/01-overview.md +57 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/02-query.md +288 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/03-update.md +249 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/04-text-style.md +395 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/05-shape-frame-group-connector.md +186 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/06-vector-icon-path.md +313 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/07-examples-errors-write-support.md +270 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1/08-catalogs.md +61 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/open-nodes-v1.md +54 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/replace.md +41 -0
- package/skills/dws/dingtalk-misc/references/whiteboard/vector.md +51 -0
- package/skills/dws/dingtalk-misc/references/whiteboard.md +115 -0
- package/skills/dws/dingtalk-misc/scripts/aiapp_create_and_poll.py +138 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_my_record.py +91 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_report_checkin.py +440 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_report_common.py +1698 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_report_daily.py +558 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_report_detail.py +809 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_report_monthly.py +758 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_report_record.py +947 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_schedule_export.py +344 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_schedule_import.py +498 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_team_shift.py +89 -0
- package/skills/dws/dingtalk-misc/scripts/attendance_vacation_balance.py +617 -0
- package/skills/dws/dingtalk-misc/scripts/finance_daily_cashflow.py +70 -0
- package/skills/dws/dingtalk-misc/scripts/finance_expense_flow.py +138 -0
- package/skills/dws/dingtalk-misc/scripts/oa_batch_approve.py +158 -0
- package/skills/dws/dingtalk-misc/scripts/oa_pending_review.py +132 -0
- package/skills/dws/dingtalk-misc/scripts/report_received_today.py +315 -0
- package/skills/dws/dingtalk-misc/scripts/yida_custom_page_update.py +401 -0
- package/skills/dws/dingtalk-misc/scripts/yida_form_builder.py +526 -0
- package/skills/dws/dingtalk-misc/scripts/yida_form_fields.py +315 -0
- package/skills/dws/dingtalk-misc/scripts/yida_form_inspector.py +311 -0
- package/skills/dws/dingtalk-misc/scripts/yida_form_update.py +185 -0
- package/skills/dws/dingtalk-misc/scripts/yida_jsx_pipeline.py +1588 -0
- package/skills/dws/dingtalk-misc/scripts/yida_page_compiler.py +1441 -0
- package/skills/dws/dingtalk-misc/scripts/yida_page_generate.py +514 -0
- package/skills/dws/dingtalk-misc/scripts/yida_page_schema.py +519 -0
- package/skills/dws/dingtalk-misc/scripts/yida_page_self_check.py +398 -0
- package/skills/dws/dingtalk-misc/scripts/yida_process_flow.py +1478 -0
- package/skills/dws/dingtalk-misc/scripts/yida_process_update.py +589 -0
- package/skills/dws/dingtalk-misc/scripts/yida_report_builder.py +494 -0
- package/skills/dws/dingtalk-misc/scripts/yida_report_charts.py +1434 -0
- package/skills/dws/dingtalk-misc/scripts/yida_report_update.py +244 -0
- package/skills/dws/dingtalk-misc/scripts/yida_schema_common.py +340 -0
- package/skills/dws/dingtalk-shared/SKILL.md +83 -0
- package/skills/dws/dingtalk-shared/references/capability-limits.md +31 -0
- package/skills/dws/dingtalk-shared/references/channel-login.md +26 -0
- package/skills/dws/dingtalk-shared/references/confirmation.md +59 -0
- package/skills/dws/dingtalk-shared/references/error-codes.md +155 -0
- package/skills/dws/dingtalk-shared/references/global-reference.md +122 -0
- package/skills/dws/dingtalk-shared/references/intent-guide.md +537 -0
- package/skills/dws/dingtalk-shared/references/recipes/conventions.md +45 -0
- package/skills/dws/dingtalk-shared/references/recipes/lite-catalog.md +275 -0
- package/skills/dws/dingtalk-shared/references/recipes/meta.md +67 -0
- package/skills/dws/dingtalk-shared/references/routing.md +52 -0
- package/skills/dws/dingtalk-shared/references/runtime-contract.md +11 -0
- package/skills/dws/dingtalk-shared/references/schema-usage.md +88 -0
- package/skills/dws/dingtalk-shared/references/url-patterns.md +144 -0
- package/skills/dws/dingtalk-shared/references/workflow-routing.md +45 -0
- package/skills/dws/dingtalk-todo/SKILL.md +119 -0
- package/skills/dws/dingtalk-todo/references/02-task.md +70 -0
- package/skills/dws/dingtalk-todo/references/intent-guide.md +15 -0
- package/skills/dws/dingtalk-todo/references/lite-recipes.md +68 -0
- package/skills/dws/dingtalk-todo/references/recipes/conventions.md +44 -0
- package/skills/dws/dingtalk-todo/references/todo.md +517 -0
- package/skills/dws/dingtalk-todo/scripts/todo_batch_create.py +354 -0
- package/skills/dws/dingtalk-todo/scripts/todo_daily_summary.py +153 -0
- package/skills/dws/dingtalk-todo/scripts/todo_overdue_check.py +101 -0
- package/skills/dws/dingtalk-wiki/SKILL.md +117 -0
- package/skills/dws/dingtalk-wiki/references/intent-guide.md +14 -0
- package/skills/dws/dingtalk-wiki/references/lite-recipes.md +44 -0
- package/skills/dws/dingtalk-wiki/references/wiki-members.md +32 -0
- package/skills/dws/dingtalk-wiki/references/wiki-node-ops.md +46 -0
- package/skills/dws/dingtalk-wiki/references/wiki.md +65 -0
- package/skills/dws/provenance.json +27 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 读取文档:`+fetch` Golden Route
|
|
2
|
+
|
|
3
|
+
## 唯一推荐入口
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
dws doc +fetch --node <DOC_ID_OR_URL> --format json
|
|
7
|
+
dws doc +fetch --query "项目周报" --scope keyword --keyword "结论" --format json
|
|
8
|
+
dws doc +fetch --node <PUBLIC_URL> --password <ACCESS_PASSWORD> --format json
|
|
9
|
+
dws doc +fetch --node <DOC_ID> --version <VERSION> --format json
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
- 已知 ID 或 URL:传 `--node`。
|
|
13
|
+
- 只知道标题:传 `--query`;跨页解析必须唯一命中,否则停止并要求用户选择。
|
|
14
|
+
- `--node` 与 `--query` 必须且只能提供一个。
|
|
15
|
+
- 默认 `--detail simple --scope full`,适合普通阅读,避免加载不必要的 JSONML。
|
|
16
|
+
|
|
17
|
+
## 互联网公开文档与历史版本
|
|
18
|
+
|
|
19
|
+
- **互联网公开文档**:公开链接直接传 `--node`;文档开启了密码保护时,通过 `--password <ACCESS_PASSWORD>` 提供访问密码,普通文档无需传入。密码只进入读取请求,不会回显在读取结果里(`--dry-run` 预览会包含所传参数,注意输出环境)。
|
|
20
|
+
- **历史版本**:`--version <N>` 读取指定历史版本内容;版本号从 `dws doc +version-list` 获取,`0` 表示文档初始版本,需要文档编辑权限(EDITOR 及以上);缺省读最新版。注意区分:`revision` 是文档编辑版本号(JSONML 读取响应返回、供 `+update --expected-revision` 条件写使用),不是历史版本号,`+fetch` 不支持 `--revision`。
|
|
21
|
+
- **跨组织文档**:非互联网公开的跨组织文档,`+fetch` 整体被组织边界拦截(提示「不支持跨组织访问数据」),最新版与历史版本内容都读不到;互联网公开(含密码)文档的 `+fetch` 不受影响,但 `+version-list` 与写操作仍会被拦截,版本号无法从列表获取。
|
|
22
|
+
- 只要看历史内容、不打算恢复时用 `--version`;要把文档整体恢复到历史版本才用 `+version-revert`(危险操作,需确认)。
|
|
23
|
+
|
|
24
|
+
## 局部读取
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
dws doc +fetch --node <DOC_ID> --scope outline --detail with-ids --format json
|
|
28
|
+
dws doc +fetch --node <DOC_ID> --scope section --start-block-id <BLOCK_ID> --detail full --format json
|
|
29
|
+
dws doc +fetch --node <DOC_ID> --scope range --start-block-id <A> --end-block-id <B> --detail full --format json
|
|
30
|
+
dws doc +fetch --node <DOC_ID> --scope tags --tags table,img --detail full --format json
|
|
31
|
+
dws doc +fetch --node <DOC_ID> --scope keyword --keyword "风险|结论" --context-before 120 --context-after 240 --format json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
只有需要块 ID、revision 或 JSONML 保真结构时才提高 `--detail`;先读取最小必要范围,避免把整篇大文档放入上下文。
|
|
35
|
+
|
|
36
|
+
整篇读取使用默认 scope 或 `--scope full`;`full` 不是关键词,禁止写成 `--keyword full`。
|
|
37
|
+
|
|
38
|
+
## 最小读取漏斗
|
|
39
|
+
|
|
40
|
+
按用户已经给出的线索选最短路径,不先拉全文:
|
|
41
|
+
|
|
42
|
+
1. 已知稳定 ID/URL,且任务确实涉及整篇:直接默认 `full + simple`,一次返回 Markdown。
|
|
43
|
+
2. 用户给出具体术语、错误码或同义词:直接 `keyword`;`foo|bar` 是 OR,`context-before/after` 是字符数。该模式会缩小 Agent 输出与 token,但当前 Runtime 仍需取得正文后做本地投影,不把它误述为减少上游传输。
|
|
44
|
+
3. 用户指向某章但没有 block ID:先 `outline --detail with-ids`,再用返回的真实标题 ID 执行 `section`。通常两次小结果比反复处理整篇更稳定。
|
|
45
|
+
4. 已知起止 block:直接 `range`;只找表格、图片等结构时用 `tags`。
|
|
46
|
+
5. 只有确需全文总结、全局一致性检查或整篇保真改写时,才读取完整内容。
|
|
47
|
+
|
|
48
|
+
`simple` 用于阅读;`with-ids` 用于定位下一次写操作;`full` 只用于必须保留样式、引用或 JSONML 结构的编辑。局部结果只能证明所选范围,不得据此声称已检查整篇。
|
|
49
|
+
|
|
50
|
+
## 后续路由
|
|
51
|
+
|
|
52
|
+
- 读后修改:把稳定的 `nodeId` 交给 [`doc-update.md`](doc-update.md) 的 `+update` 或 `+checkpoint-update`。
|
|
53
|
+
- 附件/图片:先用 [`doc-media.md`](doc-media.md) 的 `+media-list` 取得稳定 `resourceId`,再下载;不要复用正文中的临时签名 URL。
|
|
54
|
+
- 富结构专家编辑:确实需要原始 JSONML 或 shortcut 未公开的参数时,先读取精确 leaf Schema,再使用原子 `doc read`/`doc block`。
|
|
55
|
+
|
|
56
|
+
禁止把原子 `doc read` 当作默认入口,也不要在读取后无条件整篇回写。筛选结果只用于读取,不能把虚拟 fragment 容器整体写回文档;同一次任务里已拿到稳定 `nodeId` 后,后续调用直接复用,避免再次按标题搜索。
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# 更新在线文字文档
|
|
2
|
+
|
|
3
|
+
## 唯一推荐入口
|
|
4
|
+
|
|
5
|
+
普通追加、覆盖和 block 编辑统一使用 `+update`:
|
|
6
|
+
|
|
7
|
+
`--command` 只接受下列枚举值,不接受 JSON、自然语言或拼接子命令;动作参数必须分别传给 `--content/--old/--new/--block-id/--before-block-id/--after-block-id`。
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
dws doc +update --node <DOC_ID> --command append --content "补充说明" --format json
|
|
11
|
+
dws doc +update --node <DOC_ID> --command append --content @append.md --format json
|
|
12
|
+
dws doc +update --node <DOC_ID> --command overwrite --content @full.md --format json
|
|
13
|
+
dws doc +update --node <DOC_ID> --command overwrite --doc-format jsonml --content @full.json --expected-revision <REVISION> --format json
|
|
14
|
+
dws doc +update --node <DOC_ID> --command block_insert_before --before-block-id <BLOCK_ID> --content "发布说明" --heading-level 1 --format json
|
|
15
|
+
dws doc +update --node <DOC_ID> --command block_replace --block-id <BLOCK_ID> --content "新内容" --format json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
重要覆盖或明确要求恢复点时使用:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
dws doc +checkpoint-update --node <DOC_ID> --mode overwrite --content @full.md --format json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`+checkpoint-update` 负责保存版本、写入和回读,不要手工编排 `version save → update → read`。
|
|
25
|
+
|
|
26
|
+
## 动作与输入
|
|
27
|
+
|
|
28
|
+
| `--command` | 用途 | 必要参数 |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| `append` | 末尾追加 | `--content` |
|
|
31
|
+
| `overwrite` | 整篇覆盖 | `--content`;JSONML 可加 `--expected-revision` 做服务端原子条件写 |
|
|
32
|
+
| `block_insert_before` | 在指定 block 前插入段落或标题 | `--before-block-id --content`;标题加 `--heading-level 1..6` |
|
|
33
|
+
| `block_insert_after` | 在指定 block 后插入段落或标题 | `--after-block-id --content`;标题加 `--heading-level 1..6` |
|
|
34
|
+
| `block_replace` | 替换指定 block | `--block-id --content` |
|
|
35
|
+
| `block_delete` | 删除指定 block | `--block-id` |
|
|
36
|
+
| `str_replace` | 唯一普通文本替换 | `--old --new` |
|
|
37
|
+
| `block_copy_insert_after` | 复制 block 后插入 | `--block-id --after-block-id` |
|
|
38
|
+
|
|
39
|
+
统一输入协议:已有或临时文件先暂存到当前工作目录后传 `@相对文件`;单次生成文本可用 `--content -` 从 stdin 读取。禁止绝对路径、`..`,也不要猜测 `--content-file`、`--content-format` 或 `replace_all`。
|
|
40
|
+
|
|
41
|
+
block ID 必须来自 `+fetch --detail with-ids` 或真实 block 列表,禁止编造。
|
|
42
|
+
|
|
43
|
+
`--expected-revision` 只允许 `--command overwrite --doc-format jsonml`。Markdown、append 和 block 接口没有服务端原子 revision 契约,禁止用写前读取模拟乐观锁。
|
|
44
|
+
|
|
45
|
+
## 新增结构化标题
|
|
46
|
+
|
|
47
|
+
“新增/插入标题”与“修改现有块文字”不是同一动作。`+update block_replace --content "# 标题"` 会替换原块并可能落成普通 paragraph,不能用它冒充 heading。
|
|
48
|
+
|
|
49
|
+
需要在已有首块前新增标题时,先用 `+fetch --detail with-ids` 取得真实首块 ID,再走结构化插入:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
dws doc block insert --node <DOC_ID> --heading "发布说明 v1.0" --level 1 --ref-block <FIRST_BLOCK_ID> --where before --format json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
插入回执有新 block ID 时定点 `block list --block-id`;只有插入 index 时执行一次完整 `block list --content-format jsonml` 并按 index 验证 `blockType=heading`、回读投影 `heading.level="heading-1"` 和文字。`block list` 没有 `--limit`,禁止通过 Help 猜参数;CLI 写入仍用 `--level 1`。只核对可见文字不算结构验收。已有标题改级别或改文字时使用结构化 `doc block update --heading/--level`;更多块边界见 [`doc-block.md`](doc-block.md)。
|
|
56
|
+
|
|
57
|
+
## 最小改写决策
|
|
58
|
+
|
|
59
|
+
| 已知条件 | 推荐路径 | 成本与成功率理由 |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| 用户明确要求在末尾追加 | 直接 `append` | 不为找末尾先拉全文;需要语气衔接时只读末节 |
|
|
62
|
+
| 已知唯一旧文本与新文本 | 直接 `str_replace --old --new` | 省掉 block 解析;旧文本不唯一时 Runtime 必须失败,不放宽匹配 |
|
|
63
|
+
| 指定章节但没有 block ID | `+fetch outline` → `+fetch section --detail with-ids` → block 动作 | 两个小读取换取稳定锚点,避免全文 token 和误改相邻章节 |
|
|
64
|
+
| 已知真实 block ID | 直接 `block_replace/delete/insert_before/insert_after` | 最小副作用;不改无关 block |
|
|
65
|
+
| 多个待删除 block ID 已全部取得 | 在同一个 fail-fast 工具轮中按顺序执行全部 `block_delete` | 中间不重读 Reference、不重复 fetch;任一失败立即停止并保留未执行清单 |
|
|
66
|
+
| 多处富结构保真修改 | `+fetch --detail full` 后定点 JSONML 更新 | 保留图片、附件、引用、表格和样式;不要从 Markdown 有损重建 |
|
|
67
|
+
| 整篇重要覆盖 | `+checkpoint-update --mode overwrite` | 自动保存恢复点、执行并回读;普通 overwrite 只用于明确不需恢复点的场景 |
|
|
68
|
+
|
|
69
|
+
同一篇文档的正文由一个主上下文串行维护:Plan(确定最小变更)→ Execute(一次写)→ Observe(先消费回执)→ Iterate(只修未达标部分)。不要按章节并行写同一文档,也不要每次迭代都重新读取全文或 Schema。
|
|
70
|
+
|
|
71
|
+
## Block ID 生命周期与保真
|
|
72
|
+
|
|
73
|
+
- `block_replace` 成功后 Runtime 使用同一 `blockId` 回读验证,该 ID 可继续作为锚点;验证失败时先局部 `+fetch` 核对现状。`block_delete` 成功后旧 ID 失效,不得继续复用。
|
|
74
|
+
- `block_insert_before` / `block_insert_after` / `block_copy_insert_after` 后,原锚点通常仍可识别,但新 block 的 ID 必须来自真实返回或局部回读,禁止按顺序猜测。
|
|
75
|
+
- `str_replace` 的简单行内替换通常不要求重新取 ID;若后续依赖块结构,仍以局部回读为准。
|
|
76
|
+
- 从 Markdown 读取后覆盖整篇可能丢失图片、附件、@人/@文档、评论锚点、表格样式和嵌套块。只改局部时使用 block 手术;确需整篇保真改写时使用 `full` JSONML,并以 `--expected-revision` 防止覆盖并发修改。
|
|
77
|
+
|
|
78
|
+
## 确认与验证
|
|
79
|
+
|
|
80
|
+
- `+update` 与 `+checkpoint-update` 当前都要求用户确认。目标、动作、内容范围或参数变化后必须重新确认;只有发现本地文档与 live leaf 漂移时才查一次精确 Schema,禁止每次写入都重复发现。
|
|
81
|
+
- `+update` 已负责回读验证。除非结果为 `unknown` 或任务需要额外结构验收,不要再做一次全篇读取。
|
|
82
|
+
- `doc_write_verification_failed` 表示写入已经发生,必须先读取现状;禁止直接重复写入。
|
|
83
|
+
- `partial_success` 只恢复未完成步骤,不能重放成功步骤。
|
|
84
|
+
|
|
85
|
+
## 高级通道
|
|
86
|
+
|
|
87
|
+
只有 shortcut 未公开底层参数或必须保留原始响应时,才读取精确 leaf Schema 后使用 `dws doc update` / `doc block`。富结构保真按需读取 [doc-update-workflow.md](style/doc-update-workflow.md),但执行入口仍优先使用 `+update/+checkpoint-update`。
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
# JSONML Cookbook
|
|
2
|
+
|
|
3
|
+
> 本文档提供 JSONML **结构范例**。正常执行入口是 `+create --content @./相对文件 --doc-format jsonml` 与 `+update --content @./相对文件 --doc-format jsonml`;原子 `doc create/update/block` 仅用于 shortcut 未公开字段的专家路径,使用前读取精确 leaf Schema。
|
|
4
|
+
> 所有示例均基于真实文档 serialize 输出验证。节点结构详细定义见 [doc-jsonml-schema.md](./doc-jsonml-schema.md)。
|
|
5
|
+
> 合法节点类型和属性的权威参考为 `wukong/products/jsonml-schema-v2.json`。
|
|
6
|
+
|
|
7
|
+
## 决策型文档骨架范例(doc create 用)
|
|
8
|
+
|
|
9
|
+
以下是一个"方案对比汇报"的完整 JSONML 文件内容,展示摘要 callout + 彩色表格 + 状态高亮。
|
|
10
|
+
**可保存到工作目录内的 `./drafts/<name>.json`,再用 `dws doc +create --name "..." --content @./drafts/<name>.json --doc-format jsonml` 创建。**
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
["root", {},
|
|
14
|
+
["container", {"subType": "colorBlocks", "metadata": {"bgcolor": "#E8F5E9", "border": "left"}},
|
|
15
|
+
["p", {}, ["span", {"data-type": "text"},
|
|
16
|
+
["span", {"data-type": "leaf", "bold": true, "sz": 14, "szUnit": "pt"}, "✅ 推荐方案 A:上线快、依赖已有流程"]
|
|
17
|
+
]],
|
|
18
|
+
["p", {}, ["span", {"data-type": "text"},
|
|
19
|
+
["span", {"data-type": "leaf"}, "主要风险:权限配置需补 | 决策时限:本周五前"]
|
|
20
|
+
]]
|
|
21
|
+
],
|
|
22
|
+
["h2", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "方案对比"]]],
|
|
23
|
+
["table", {"colsWidth": [120, 200, 200]},
|
|
24
|
+
["tr", {},
|
|
25
|
+
["tc", {"fill": "#F5F5F5"}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "bold": true}, "维度"]]]],
|
|
26
|
+
["tc", {"fill": "#E8F5E9"}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "bold": true}, "方案 A(推荐)"]]]],
|
|
27
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "bold": true}, "方案 B"]]]]
|
|
28
|
+
],
|
|
29
|
+
["tr", {},
|
|
30
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "上线周期"]]]],
|
|
31
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "color": "#2E7D32"}, "1 周"]]]],
|
|
32
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "3 周"]]]]
|
|
33
|
+
],
|
|
34
|
+
["tr", {},
|
|
35
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "风险"]]]],
|
|
36
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "低"]]]],
|
|
37
|
+
["tc", {}, ["p", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "color": "#C62828"}, "高:需新流程审批"]]]]
|
|
38
|
+
]
|
|
39
|
+
],
|
|
40
|
+
["h2", {}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "下一步"]]],
|
|
41
|
+
["p", {}, ["span", {"data-type": "text"},
|
|
42
|
+
["span", {"data-type": "leaf"}, "• "],
|
|
43
|
+
["span", {"data-type": "leaf", "highlight": "#FFF9C4"}, "待确认"],
|
|
44
|
+
["span", {"data-type": "leaf"}, " @负责人 完成权限配置"]
|
|
45
|
+
]]
|
|
46
|
+
]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**设计要点**:
|
|
50
|
+
- 根节点固定 `"root"`,不是 `"body"`
|
|
51
|
+
- 摘要用 `container`(callout),`metadata.bgcolor` 选浅绿表示"推荐结论"
|
|
52
|
+
- 表格用 `table → tr → tc`(无 th/td),表头底色用 `tc` 的 `"fill"` 属性
|
|
53
|
+
- 关键数据着色用 leaf 的 `"color"`(绿=好 / 红=风险)
|
|
54
|
+
- 状态标记用 leaf 的 `"highlight"`(黄=待确认、绿=完成、红=阻塞)
|
|
55
|
+
- uuid 必须显式提供——CLI 不再自动补充
|
|
56
|
+
|
|
57
|
+
## ⚠️ JSONML 结构严格约束(生成时必须遵守)
|
|
58
|
+
|
|
59
|
+
每个节点是一个 JSON 数组:`[tagName, attributes?, ...children]`
|
|
60
|
+
|
|
61
|
+
- **第一个元素**是字符串,表示标签名(如 `"p"`, `"h1"`, `"span"`, `"container"`)
|
|
62
|
+
- **第二个元素**(可选)是一个 JSON 对象,表示属性(如 `{"uuid": "abc"}`)。如果无属性,可以直接进入子节点
|
|
63
|
+
- **随后的元素**是子节点,可以是纯字符串(仅限 leaf span 内),也可以是另一个 JSONML 数组
|
|
64
|
+
- **所有 `[` 必须有对应 `]`,所有 `{` 必须有对应 `}`,数组元素之间用 `,` 分隔,最后一个元素后不加 `,`**
|
|
65
|
+
|
|
66
|
+
常见 LLM 生成错误(务必避免):
|
|
67
|
+
|
|
68
|
+
| 错误类型 | 示例 | 后果 |
|
|
69
|
+
|---------|------|------|
|
|
70
|
+
| 缺少闭合 `]` | `["p", {}, ["span", ...]` | JSON 解析失败 |
|
|
71
|
+
| 多余逗号 | `["p", {},]` | JSON 解析失败 |
|
|
72
|
+
| 缺少逗号 | `["p", {} ["span"]]` | JSON 解析失败 |
|
|
73
|
+
| 引号不匹配 | `["p", {"uuid": "abc}]` | JSON 解析失败 |
|
|
74
|
+
|
|
75
|
+
## 文本节点格式(最重要)
|
|
76
|
+
|
|
77
|
+
钉钉文档的文本是**三层结构**,不是裸字符串:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
["p", {"uuid": "xxx"},
|
|
81
|
+
["span", {"data-type": "text"},
|
|
82
|
+
["span", {"data-type": "leaf"}, "文本内容"]
|
|
83
|
+
]
|
|
84
|
+
]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- **text 容器**:`["span", {"data-type": "text"}, ...leaves]` — 包裹所有文本 leaf
|
|
88
|
+
- **leaf 节点**:`["span", {"data-type": "leaf", ...格式属性}, "文字"]` — 实际文本,可带 bold/italic 等
|
|
89
|
+
- 一个 block 节点只有一个 text 容器,但可以有多个 leaf(不同格式的文字片段)
|
|
90
|
+
|
|
91
|
+
**简写**:无格式纯文本可以省略格式属性:
|
|
92
|
+
```json
|
|
93
|
+
["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "纯文本"]]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 核心规则
|
|
97
|
+
|
|
98
|
+
1. **每个 block 节点应有 uuid**:`["tag", {"uuid": "唯一ID"}, ...children]`
|
|
99
|
+
- insert 时必须提供 uuid(可自行生成任意唯一字符串,后端会自动分配正式 uuid)
|
|
100
|
+
- update 时 uuid **必须**与 `--block-id` 一致
|
|
101
|
+
- uuid 必须显式提供,不再自动补充
|
|
102
|
+
2. **文本必须用 span + leaf 三层结构**,不要直接写裸字符串
|
|
103
|
+
- ✅ `["p", {"uuid": "x"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "hello"]]]`
|
|
104
|
+
- ❌ `["p", {"uuid": "x"}, "hello"]` — validator 会报错,请手动包成 ✅ 的形式
|
|
105
|
+
- ⚠️ `["p", {"uuid": "x"}, ["text", {}, "hello"]]` — `text` 是历史 inline tag,validator 不会报错,但建议改写为 ✅ 形式以与 `dws doc read --content-format jsonml` 的输出保持一致
|
|
106
|
+
3. **attrs 对象必须存在**(即使为空):`["p", {}, ...]` 不能省略 `{}`
|
|
107
|
+
|
|
108
|
+
> **严格模式(缺省)**:CLI 不做结构修复,裸字符串等错误会被 validator 以 `JSONPath + Suggestion` 形式逐条报错。如果输入来自 LLM 且可能有 JSON 语法错误(缺括号/逗号),用 `--fix-jsonml` 启用 JSON 语法修复。
|
|
109
|
+
|
|
110
|
+
## 段落 (p)
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 纯文本段落
|
|
114
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
115
|
+
--element '["p", {"uuid": "new1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "这是一段普通文本"]]]'
|
|
116
|
+
|
|
117
|
+
# 带格式文本(多个 leaf)
|
|
118
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
119
|
+
--element '["p", {"uuid": "new2"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "bold": true}, "加粗"], ["span", {"data-type": "leaf"}, "普通"], ["span", {"data-type": "leaf", "italic": true}, "斜体"]]]'
|
|
120
|
+
|
|
121
|
+
# 多行文本(每行一个 p,同一 p 内的多个 span 不会换行)
|
|
122
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
123
|
+
--element '["p", {"uuid": "line1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf", "bold": true}, "第一行标题"]]]' \
|
|
124
|
+
--element '["p", {"uuid": "line2"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "第二行正文内容"]]]'
|
|
125
|
+
|
|
126
|
+
# 带链接(link 是与 text 并列的子节点)
|
|
127
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
128
|
+
--element '["p", {"uuid": "new3"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "请访问"]], ["a", {"href": "https://example.com"}, "链接文字"]]'
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**leaf 支持的格式属性**:
|
|
132
|
+
- `bold: true` — 加粗
|
|
133
|
+
- `italic: true` — 斜体
|
|
134
|
+
- `underline: {"value": "single"}` — 下划线(value: `single`/`dash`/`wave`/`double`/`none`,可选 `color`)
|
|
135
|
+
- `strike: true` — 删除线
|
|
136
|
+
- `dstrike: true` — 双删除线
|
|
137
|
+
- `color: "#ff0000"` — 文字颜色(`#rrggbb` 格式)
|
|
138
|
+
- `highlight: "#ffff00"` — 高亮背景色
|
|
139
|
+
- `sz: 14` / `szUnit: "pt"` — 字号(szUnit 默认 `"px"`,推荐显式写 `"pt"`)
|
|
140
|
+
`fonts: {"ascii": "Arial", "eastAsia": "SimHei"}` — 字体(四分区:ascii/hAnsi/cs/eastAsia,值必须使用 font-family 名称,见下方字体表)
|
|
141
|
+
- `vertAlign: "superscript"` — 上标(`"subscript"` 下标,`"baseline"` 基线)
|
|
142
|
+
- `spacing: 2` — 字间距(单位 pt)
|
|
143
|
+
|
|
144
|
+
**字体名称映射**(`fonts` 字段必须使用 font-family 值,不能写中文名):
|
|
145
|
+
|
|
146
|
+
| 用户说法 | font-family 值 | 用户说法 | font-family 值 |
|
|
147
|
+
|---------|---------------|---------|---------------|
|
|
148
|
+
| 宋体 | `SimSun` | 黑体 | `SimHei` |
|
|
149
|
+
| 微软雅黑 | `Microsoft YaHei` | 微软雅黑UI | `Microsoft YaHei UI` |
|
|
150
|
+
| 仿宋 | `FangSong` | 仿宋_GB2312 | `FangSong_GB2312` |
|
|
151
|
+
| 楷体 | `KaiTi` | 楷体_GB2312 | `KaiTi_GB2312` |
|
|
152
|
+
| 等线 | `DengXian` | 新宋体 | `NSimSun` |
|
|
153
|
+
| 宋体-简 | `SimSun SC` | 宋体-繁 | `SimSun TC` |
|
|
154
|
+
| 黑体-简 | `Heiti SC` | 黑体-繁 | `Heiti TC` |
|
|
155
|
+
| 华文宋体 | `STSong` | 华文黑体 | `STHeiti` |
|
|
156
|
+
| 华文楷体 | `STKaiti` | 华文仿宋 | `STFangsong` |
|
|
157
|
+
| 华文中宋 | `STZhongsong` | 华文行楷 | `STXingkai` |
|
|
158
|
+
| 华文隶书 | `STLiti` | 华文新魏 | `STXinwei` |
|
|
159
|
+
| 华文细黑 | `STXihei` | 华文琥珀 | `STHupo` |
|
|
160
|
+
| 苹方-简 | `PingFang SC` | 苹方-繁 | `PingFang TC` |
|
|
161
|
+
| 苹方-港 | `PingFang HK` | 冬青黑-简 | `Hiragino Sans GB` |
|
|
162
|
+
| 兰亭黑-简 | `Lantinghei SC` | 兰亭黑-繁 | `Lantinghei TC` |
|
|
163
|
+
| 凌慧体-简 | `LingWai SC` | 幼圆 | `YouYuan` |
|
|
164
|
+
| 思源黑体 | `Source Han Sans CN` | 思源宋体 | `Source Han Serif CN` |
|
|
165
|
+
| 思源等宽 | `Source Han Mono SC` | 思源黑体Regular | `Source Han Sans CN Regular` |
|
|
166
|
+
| 阿里普惠体2.0 | `"Alibaba PuHuiTi 2.0"` | 阿里普惠体3.0 | `"Alibaba PuHuiTi 3.0"` |
|
|
167
|
+
| 钉钉进步体 | `DingTalk JinBuTi` | Adobe仿宋 | `Adobe 仿宋 Std` |
|
|
168
|
+
| 方正小标宋_GBK | `FZXiaoBiaoSong-B05` | 方正小标宋简体 | `FZXiaoBiaoSong-B05S` |
|
|
169
|
+
| 方正黑体 | `FZHei-B01S` | 方正楷体 | `FZKai-Z03S` |
|
|
170
|
+
| 方正仿宋 | `FZFangSong-Z02S` | 方正仿宋_GBK | `FZFangSong-Z02` |
|
|
171
|
+
| PMingLiU | `PMingLiU` | — | — |
|
|
172
|
+
|
|
173
|
+
**英文字体**(font-family 值即为字体名):
|
|
174
|
+
`Arial` ・ `Calibri` ・ `Cambria` ・ `Centaur` ・ `Comfortaa` ・ `Comic Sans MS` ・ `Courier New` ・ `Franklin Gothic` ・ `Garamond` ・ `Georgia` ・ `Helvetica` ・ `Impact` ・ `Lora` ・ `Lucida Sans` ・ `Merriweather` ・ `Montserrat` ・ `Nunito` ・ `Oswald` ・ `Playfair Display` ・ `Roboto` ・ `Spectral` ・ `Times New Roman` ・ `Trebuchet MS` ・ `Verdana`
|
|
175
|
+
|
|
176
|
+
> **规则**:优先从上表匹配;用户指定的字体不在列表时,使用该字体在操作系统中的真实 font-family 名称(如"更纱黑体" → `Sarasa Gothic SC`)。
|
|
177
|
+
|
|
178
|
+
**leaf 组合示例**:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
["span", {"data-type": "leaf", "bold": true, "color": "#C62828", "sz": 16, "szUnit": "pt"}, "红色加粗大字"]
|
|
182
|
+
["span", {"data-type": "leaf", "strike": true, "color": "#9E9E9E"}, "已废弃内容"]
|
|
183
|
+
["span", {"data-type": "leaf", "vertAlign": "superscript"}, "[1]"]
|
|
184
|
+
["span", {"data-type": "leaf", "fonts": {"ascii": "Courier New", "eastAsia": "DengXian"}}, "等宽字体"]
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**段落级排版属性**(写在 p/h1-h6 的 attrs 上):
|
|
188
|
+
- `jc: "center"` — 对齐(`left`/`center`/`right`/`both`/`justify`)
|
|
189
|
+
- `spacing: {"line": 1.5, "lineRule": "auto"}` — 行距(lineRule=auto 时 line 为倍数:1=单倍、1.5=1.5倍、2=双倍)
|
|
190
|
+
- `spacing: {"before": 12, "after": 8}` — 段前/段后间距(单位 pt)
|
|
191
|
+
- `ind: {"firstLine": 32}` — 首行缩进(≈ 2 中文字符)
|
|
192
|
+
- `ind: {"left": 96}` — 左缩进
|
|
193
|
+
|
|
194
|
+
**段落排版示例**:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
["p", {"uuid": "p1", "jc": "center"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "居中段落"]]]
|
|
198
|
+
["p", {"uuid": "p2", "spacing": {"line": 1.5, "lineRule": "auto"}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "1.5倍行距"]]]
|
|
199
|
+
["p", {"uuid": "p3", "spacing": {"line": 2, "lineRule": "auto", "before": 12, "after": 8}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "双倍行距+段前后间距"]]]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## 标题 (h1-h6)
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
206
|
+
--element '["h1", {"uuid": "new4"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "一级标题"]]]'
|
|
207
|
+
|
|
208
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
209
|
+
--element '["h2", {"uuid": "new5"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "二级标题"]]]'
|
|
210
|
+
|
|
211
|
+
# 更新已有标题
|
|
212
|
+
dws doc block update --node <DOC_ID> --block-id <BLOCK_ID> --content-format jsonml \
|
|
213
|
+
--element '["h2", {"uuid": "<BLOCK_ID>"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "修改后的标题"]]]'
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 列表 (list)
|
|
217
|
+
|
|
218
|
+
列表在 JSONML 中是 **带 `list` 属性的 `p` 节点**,不是独立 tag。
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# 无序列表项
|
|
222
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
223
|
+
--element '["p", {"uuid": "li1", "list": {"listId": "mylist1", "level": 0, "isOrdered": false}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "无序列表第一项"]]]'
|
|
224
|
+
|
|
225
|
+
# 有序列表项(仅第一项设 start,后续项不设,系统自动递增)
|
|
226
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
227
|
+
--element '["p", {"uuid": "li2", "list": {"listId": "mylist2", "level": 0, "isOrdered": true, "start": 1}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "有序列表第一项"]]]'
|
|
228
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
229
|
+
--element '["p", {"uuid": "li2b", "list": {"listId": "mylist2", "level": 0, "isOrdered": true}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "有序列表第二项"]]]'
|
|
230
|
+
|
|
231
|
+
# 缩进子项(level: 1)
|
|
232
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
233
|
+
--element '["p", {"uuid": "li3", "list": {"listId": "mylist2", "level": 1, "isOrdered": true}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "子列表项"]]]'
|
|
234
|
+
|
|
235
|
+
# 待办列表(checkbox)
|
|
236
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
237
|
+
--element '["p", {"uuid": "li4", "list": {"listId": "todo1", "level": 0, "isOrdered": false, "isTaskList": true, "isChecked": false}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "待办事项"]]]'
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## 引用 (blockquote)
|
|
241
|
+
|
|
242
|
+
引用是 **带 `quote` 属性的 `p` 节点**。
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
246
|
+
--element '["p", {"uuid": "q1", "quote": true}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "这是一段引用文字"]]]'
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## 高亮块 / Callout (container)
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# 蓝色高亮块
|
|
253
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
254
|
+
--element '["container", {"uuid": "co1", "subType": "colorBlocks", "metadata": {"bgcolor": "#E8F2FE", "border": "#B3D4FC"}}, ["p", {"uuid": "co1p1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "这是一段提示内容"]]]]'
|
|
255
|
+
|
|
256
|
+
# 黄色警告块(多段落)
|
|
257
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
258
|
+
--element '["container", {"uuid": "co2", "subType": "colorBlocks", "metadata": {"bgcolor": "#FFF2CC", "border": "#FFE599"}}, ["p", {"uuid": "co2p1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "⚠️ 注意事项"]]], ["p", {"uuid": "co2p2"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "请仔细阅读以下内容"]]]]'
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**常用颜色预设**:
|
|
262
|
+
|
|
263
|
+
| 含义 | bgcolor | border |
|
|
264
|
+
|------|---------|--------|
|
|
265
|
+
| 信息(蓝) | `#E8F2FE` | `#B3D4FC` |
|
|
266
|
+
| 成功(绿) | `#E6F7E6` | `#B7EB8F` |
|
|
267
|
+
| 警告(黄) | `#FFF2CC` | `#FFE599` |
|
|
268
|
+
| 危险(红) | `#FFF1F0` | `#FFA39E` |
|
|
269
|
+
| 紫色 | `#F3E8FF` | `#D3ADF7` |
|
|
270
|
+
|
|
271
|
+
## 代码块 (code)
|
|
272
|
+
|
|
273
|
+
代码内容存在 attrs.code 中,不需要 text/leaf 子节点。
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
277
|
+
--element '["code", {"uuid": "cd1", "syntax": "javascript", "code": "function hello() {\n return \"world\";\n}"}]'
|
|
278
|
+
|
|
279
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
280
|
+
--element '["code", {"uuid": "cd2", "syntax": "python", "code": "print(\"hello\")", "showLineNumber": true, "theme": "dracula"}]'
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## 分割线 (hr)
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
287
|
+
--element '["hr", {"uuid": "hr1"}]'
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## 表格 (table)
|
|
291
|
+
|
|
292
|
+
> colsWidth 单位为 **pt**(页宽约 650pt)。如配合 `tblW: {"type": "pct"}` 则为百分比权重。
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# 2行2列表格(各列 200pt)
|
|
296
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
297
|
+
--element '["table", {"uuid": "tb1", "colsWidth": [200, 200]}, ["tr", {"uuid": "tr1"}, ["tc", {"uuid": "tc1", "colSpan": 1, "rowSpan": 1}, ["p", {"uuid": "tcp1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "标题A"]]]], ["tc", {"uuid": "tc2", "colSpan": 1, "rowSpan": 1}, ["p", {"uuid": "tcp2"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "标题B"]]]]], ["tr", {"uuid": "tr2"}, ["tc", {"uuid": "tc3", "colSpan": 1, "rowSpan": 1}, ["p", {"uuid": "tcp3"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "数据1"]]]], ["tc", {"uuid": "tc4", "colSpan": 1, "rowSpan": 1}, ["p", {"uuid": "tcp4"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "数据2"]]]]]]]'
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
> 表格较复杂时建议写入文件后用 `--element "$(cat table.json)"` 传入。
|
|
301
|
+
|
|
302
|
+
## 图片 (img)
|
|
303
|
+
|
|
304
|
+
> `img` 是 inline 元素,必须包裹在 `p` 段落中才能作为 block 插入。
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
308
|
+
--element '["p", {"uuid": "p-img1"}, ["img", {"uuid": "img1", "src": "https://example.com/photo.png", "width": 400, "height": 300}], ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, ""]]]'
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## 分栏布局 (columns)
|
|
312
|
+
|
|
313
|
+
分栏复用 table tag,通过 `sr: true` 区分。分栏的 `tc` 可设置 `fill`(背景色)和 `border`(边框)属性提升视觉效果。
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
# 两栏布局(带背景色)
|
|
317
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
318
|
+
--element '["table", {"uuid": "col1", "sr": true, "colsWidth": [300, 300]}, ["tr", {"uuid": "coltr"}, ["tc", {"uuid": "coltc1", "fill": "#EEF6FF", "vAlign": "top"}, ["p", {"uuid": "colp1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "左栏内容"]]]], ["tc", {"uuid": "coltc2", "fill": "#FFF3E0", "vAlign": "top"}, ["p", {"uuid": "colp2"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "右栏内容"]]]]]]'
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**分栏视觉属性**:
|
|
322
|
+
- `fill` — 单元格背景色(推荐淡色,如 `#EEF6FF` / `#FFF8E1` / `#F3E5F5`)
|
|
323
|
+
- `border` — 边框配置(可选)
|
|
324
|
+
- 分栏建议始终设置 `fill` 背景色,纯白底分栏视觉上与普通段落无异,读者无法感知分栏结构
|
|
325
|
+
|
|
326
|
+
## 嵌入块 (embed)
|
|
327
|
+
|
|
328
|
+
通用文件/iframe 嵌入。`embed` 是 void 块,仅含 attrs,无子节点。
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# 嵌入文件预览
|
|
332
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
333
|
+
--element '["embed", {"uuid": "em1", "name": "design.pdf", "type": "pdf", "src": "https://example.com/design.pdf", "size": 524288, "viewType": "preview", "previewSize": {"height": 600}}]'
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**关键 attrs**:
|
|
337
|
+
- `src`(**必填**)— 资源 URL
|
|
338
|
+
- `type` — `pdf` / `xlsx` / `html` 等
|
|
339
|
+
- `name` — 展示名
|
|
340
|
+
- `previewSize.height` — 预览高度(px)
|
|
341
|
+
|
|
342
|
+
## 在线视频 (onlineVideo)
|
|
343
|
+
|
|
344
|
+
外链视频(B 站 / 优酷 / 自定义 mp4 等)。
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
348
|
+
--element '["onlineVideo", {"uuid": "ov1", "src": "https://player.bilibili.com/player.html?aid=12345", "type": "bilibili", "poster": "https://example.com/poster.jpg"}]'
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**关键 attrs**:
|
|
352
|
+
- `src`(**必填**)— 视频播放页或 mp4 URL
|
|
353
|
+
- `type` — 平台标识(`bilibili` / `youku` / `mp4` 等)
|
|
354
|
+
- `poster` — 封面图 URL
|
|
355
|
+
|
|
356
|
+
## 卡片 (card)
|
|
357
|
+
|
|
358
|
+
群名片 / 应用卡片等富交互卡片。`cardType` 决定渲染形态,`metadata` 内容随类型变化。
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
# 群名片
|
|
362
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml \
|
|
363
|
+
--element '["card", {"uuid": "cd1", "cardType": "groupChatCard", "metadata": {"id": "63953109506", "name": "测试组", "inviteUrl": "https://qr.dingtalk.com/...", "expires": 1810865989}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, ""]]]'
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
> 注意:服务端 serialize 出来的 card 通常带一个空的 span/leaf 占位子节点,建议保留以避免反序列化差异。
|
|
367
|
+
|
|
368
|
+
## 目录 (toc)
|
|
369
|
+
|
|
370
|
+
目录块 attrs 上必带 4 个字段:`title` / `mode` / `styles` / `content`。如果不知道怎么填,**最简方式**是先在 web 端插入一个 toc,然后 `block list --content-format jsonml` 把现成结构拿下来改。
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml --element '
|
|
374
|
+
["toc", {
|
|
375
|
+
"uuid": "toc1",
|
|
376
|
+
"title": "目录",
|
|
377
|
+
"mode": "outline",
|
|
378
|
+
"styles": {
|
|
379
|
+
"global": {"maxLevel": 5, "bgColor": "#F0EBF7", "css": {}},
|
|
380
|
+
"title": {"font": "DingTalk JinBuTi", "color": "#6940A5", "numbering": true, "css": {"fontWeight": "normal"}},
|
|
381
|
+
"item": {"symbol": "disc", "css": {}}
|
|
382
|
+
},
|
|
383
|
+
"content": []
|
|
384
|
+
}]'
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**关键 attrs**:
|
|
388
|
+
- `mode` — `outline`(大纲)/ `column`(分栏)
|
|
389
|
+
- `styles.global.maxLevel` — 最大显示层级
|
|
390
|
+
- `content` — 目录条目数组;**留空数组即可**,服务端会基于文档 heading 自动重建
|
|
391
|
+
|
|
392
|
+
## 引用块 (refblock)
|
|
393
|
+
|
|
394
|
+
引用另一文档的内容片段。`refblock` 像容器一样包子节点。
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml --element '
|
|
398
|
+
["refblock", {"uuid": "rb1", "docKey": "OTHER_DOC_NODE_ID", "refblockUUID": "BLOCK_UUID_IN_OTHER_DOC"},
|
|
399
|
+
["p", {"uuid": "rb1p1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "(引用预览内容,服务端会回填)"]]]
|
|
400
|
+
]'
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**关键 attrs**:
|
|
404
|
+
- `docKey` — 被引用文档的 nodeId
|
|
405
|
+
- `refblockUUID` — 被引用块的 uuid
|
|
406
|
+
|
|
407
|
+
> 引用块的子节点是「快照」,真实内容由服务端按 docKey/refblockUUID 拉取覆写。
|
|
408
|
+
|
|
409
|
+
## 表格单元格嵌套块 (tableCell with nested blocks)
|
|
410
|
+
|
|
411
|
+
`tc` 的子节点是**块级节点**(不仅是 `p`)。可以塞多个段落、列表、代码块、甚至嵌套表格。
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
# 单元格内含多段落 + 代码块
|
|
415
|
+
dws doc block insert --node <DOC_ID> --content-format jsonml --element '
|
|
416
|
+
["table", {"uuid": "tbn1", "colsWidth": [400]},
|
|
417
|
+
["tr", {"uuid": "tbn1r1"},
|
|
418
|
+
["tc", {"uuid": "tbn1c1", "colSpan": 1, "rowSpan": 1},
|
|
419
|
+
["p", {"uuid": "tbn1p1"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "标题段落"]]],
|
|
420
|
+
["p", {"uuid": "tbn1p2", "list": {"listId": "tbn1list", "level": 0, "isOrdered": false}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "列表项 1"]]],
|
|
421
|
+
["p", {"uuid": "tbn1p3", "list": {"listId": "tbn1list", "level": 0, "isOrdered": false}}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "列表项 2"]]],
|
|
422
|
+
["code", {"uuid": "tbn1code", "syntax": "bash", "code": "echo hello"}]
|
|
423
|
+
]
|
|
424
|
+
]
|
|
425
|
+
]'
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
**规则**:
|
|
429
|
+
- `tc` 子节点 **必须是块节点数组**,不能直接放 `span` 或裸字符串
|
|
430
|
+
- 至少包含一个 `["p", {...}, ...]`(即使空也要),否则单元格无法渲染光标
|
|
431
|
+
- 单元格可嵌套 `table`,但嵌套时务必保证内层每个 `tc` 也满足上述规则
|
|
432
|
+
|
|
433
|
+
## Update 操作注意事项
|
|
434
|
+
|
|
435
|
+
1. **uuid 必须与 --block-id 一致**
|
|
436
|
+
2. Update 是**整块替换**,不是 patch — 需提供完整节点结构
|
|
437
|
+
3. 推荐流程:先 `block list --content-format jsonml --block-id <ID>` 获取当前结构,修改后写回
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
# 典型 update 流程
|
|
441
|
+
# 1. 获取当前结构
|
|
442
|
+
dws doc block list --node <DOC_ID> --content-format jsonml --block-id <BLOCK_ID>
|
|
443
|
+
|
|
444
|
+
# 2. 修改后写回(uuid 不变)
|
|
445
|
+
dws doc block update --node <DOC_ID> --block-id <BLOCK_ID> --content-format jsonml \
|
|
446
|
+
--element '["p", {"uuid": "<BLOCK_ID>"}, ["span", {"data-type": "text"}, ["span", {"data-type": "leaf"}, "修改后的内容"]]]'
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
## 常见错误
|
|
450
|
+
|
|
451
|
+
| 错误写法 | 问题 | 正确写法 |
|
|
452
|
+
|---------|------|---------|
|
|
453
|
+
| `["p", {}, "文字"]` | 裸字符串。validator 会报 `段落子节点不能是裸字符串`,请手动包成右侧形式 | `["p", {}, ["span", {"data-type":"text"}, ["span", {"data-type":"leaf"}, "文字"]]]` |
|
|
454
|
+
| `["p", {}, ["text", {}, "文字"]]` | `text` 是历史 inline tag,validator 不报错但服务端实际渲染的 canonical 形式是 span/leaf;为与 `doc read` 输出一致,建议改写 | 同上,用 span + data-type |
|
|
455
|
+
| `["callout", {}, ...]` | 不存在 callout tag | `["container", {"subType": "colorBlocks", ...}, ...]` |
|
|
456
|
+
| `["list", {}, ...]` | 不存在 list tag | `["p", {"list": {...}}, ...]` |
|
|
457
|
+
| `["blockquote", {}, ...]` | 不存在 blockquote tag | `["p", {"quote": true}, ...]` |
|
|
458
|
+
| `["ul", {}, ["li", ...]]` | 不存在 ul/li tag | 多个 `["p", {"list": {...}}, ...]` |
|
|
459
|
+
|
|
460
|
+
## 快捷模板
|
|
461
|
+
|
|
462
|
+
为方便使用,以下是最常用节点的最小完整模板:
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
纯文本段落: ["p", {"uuid":"U"}, ["span", {"data-type":"text"}, ["span", {"data-type":"leaf"}, "TEXT"]]]
|
|
466
|
+
标题: ["h2", {"uuid":"U"}, ["span", {"data-type":"text"}, ["span", {"data-type":"leaf"}, "TITLE"]]]
|
|
467
|
+
代码块: ["code", {"uuid":"U", "syntax":"LANG", "code":"CODE"}]
|
|
468
|
+
分割线: ["hr", {"uuid":"U"}]
|
|
469
|
+
```
|