weaver-work-cli 0.1.29 → 0.1.32
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/dist/chunks/archive-UMGX72K6.js +2537 -0
- package/dist/chunks/archive-oa-N2IYBLF3.js +1317 -0
- package/dist/chunks/asset-GLEGKFG5.js +2109 -0
- package/dist/chunks/attachment-content-AQNX5N3S.js +23 -0
- package/dist/chunks/blog-E44OTVDA.js +2157 -0
- package/dist/chunks/caizhilian-DQUFZXZL.js +10087 -0
- package/dist/chunks/calendar-JKPIRKFD.js +1195 -0
- package/dist/chunks/chunk-2GA5ZIQL.js +1615 -0
- package/dist/chunks/chunk-4YC43QQ4.js +403 -0
- package/dist/chunks/chunk-6EFWDL7Y.js +161 -0
- package/dist/chunks/chunk-6RKD4DRZ.js +5556 -0
- package/dist/chunks/chunk-AJ62BGAW.js +29 -0
- package/dist/chunks/chunk-BUSC6UAE.js +43 -0
- package/dist/chunks/chunk-C6R3B2ML.js +358 -0
- package/dist/chunks/chunk-CVZ2JOSW.js +62 -0
- package/dist/chunks/chunk-DW6AUUKS.js +508 -0
- package/dist/chunks/chunk-E4Z23GHM.js +6962 -0
- package/dist/chunks/chunk-EG6ZU444.js +654 -0
- package/dist/chunks/chunk-EZALDOQH.js +383 -0
- package/dist/chunks/chunk-FMPJJYYI.js +106 -0
- package/dist/chunks/chunk-G2JSIUWF.js +769 -0
- package/dist/chunks/chunk-G3QJULO2.js +387 -0
- package/dist/chunks/chunk-GCG2NMWR.js +703 -0
- package/dist/chunks/chunk-GPMFD4RD.js +75 -0
- package/dist/chunks/chunk-H6XSTSLM.js +2357 -0
- package/dist/chunks/chunk-H7J4DC5R.js +464 -0
- package/dist/chunks/chunk-IURUFGZK.js +477 -0
- package/dist/chunks/chunk-LUSPKZKY.js +53 -0
- package/dist/chunks/chunk-NIAJ5ZCG.js +73 -0
- package/dist/chunks/chunk-NOODWMCL.js +584 -0
- package/dist/chunks/chunk-OOUTBLZ4.js +51 -0
- package/dist/chunks/chunk-P26ZWSKU.js +73 -0
- package/dist/chunks/chunk-QWY6PGL6.js +3472 -0
- package/dist/chunks/chunk-WKI2FBIQ.js +15606 -0
- package/dist/chunks/chunk-WSKBSQ2U.js +231 -0
- package/dist/chunks/chunk-YLCYX7LE.js +371 -0
- package/dist/chunks/chunk-YRVDW4WN.js +205 -0
- package/dist/chunks/chunk-ZEDWSH32.js +68 -0
- package/dist/chunks/continuation-2CKSBLA6.js +11 -0
- package/dist/chunks/continuation-HZIZRZBX.js +13 -0
- package/dist/chunks/continuation-NLECEJPX.js +11 -0
- package/dist/chunks/ebuilder-form-V5FG2EHC.js +2276 -0
- package/dist/chunks/ehr-HMFY6VIL.js +5241 -0
- package/dist/chunks/employee-SAK2QYXX.js +11 -0
- package/dist/chunks/esb-ZYSVB7SG.js +141 -0
- package/dist/chunks/fna-B7RKPAZD.js +1444 -0
- package/dist/chunks/host-45WED2KK.js +21 -0
- package/dist/chunks/host-I4Z6BFYX.js +23 -0
- package/dist/chunks/host-KNZ52LJZ.js +17 -0
- package/dist/chunks/host-OCH2BCCV.js +19 -0
- package/dist/chunks/hrm-2KAZGUHI.js +244 -0
- package/dist/chunks/im-ACJJWH4U.js +252 -0
- package/dist/chunks/invoice-ZK3WCX2U.js +5179 -0
- package/dist/chunks/jiuchuanhui-5PQD3IL2.js +1940 -0
- package/dist/chunks/lazy-dispatch-JQXBW3GM.js +28 -0
- package/dist/chunks/mail-S2HDDXO2.js +2695 -0
- package/dist/chunks/meeting-QVN3I37L.js +504 -0
- package/dist/chunks/msg-parse-4GSQ2WTO.js +41 -0
- package/dist/chunks/okr-QNG4VC2Q.js +2482 -0
- package/dist/chunks/plan-A25EMW6U.js +2025 -0
- package/dist/chunks/project-G6XV66DZ.js +1361 -0
- package/dist/chunks/registry-2VLUAESA.js +14 -0
- package/dist/chunks/registry-7C5UMIPL.js +19 -0
- package/dist/chunks/registry-DC6KR3NH.js +18 -0
- package/dist/chunks/registry-NYPYMZXG.js +16 -0
- package/dist/chunks/registry-TI3CIUXF.js +19 -0
- package/dist/chunks/room-recommend-WRTHO6Y2.js +20 -0
- package/dist/chunks/schedule-KFIITGSK.js +24 -0
- package/dist/chunks/state-Y2XBP6YE.js +15 -0
- package/dist/chunks/workflow-DJ7SYWAF.js +245 -0
- package/dist/cmd/argv.js +45 -0
- package/dist/cmd/docs/index.js +3 -3
- package/dist/cmd/lazy-dispatch.js +20 -0
- package/dist/cmd/root.js +2 -4
- package/dist/cmd/setup/index.js +2 -2
- package/dist/cmd/skills/index.js +2 -2
- package/dist/core/package-paths.js +61 -0
- package/dist/index.js +163 -7
- package/dist/internal/e10/auth/xiaoe.js +3 -3
- package/dist/internal/e10/request-runtime.js +18 -62
- package/dist/internal/skills/detector.js +2 -2
- package/dist/shortcuts/contract/data/performance-catalog.js +1306 -0
- package/dist/shortcuts/contract/host.js +91 -35
- package/dist/shortcuts/contract/index.js +213 -0
- package/dist/shortcuts/contract/manifest.js +928 -0
- package/dist/shortcuts/contract/ooxml/docx.js +295 -0
- package/dist/shortcuts/contract/ooxml/xlsx.js +221 -0
- package/dist/shortcuts/contract/ooxml/zip.js +158 -0
- package/dist/shortcuts/contract/operations/assistant.js +1156 -0
- package/dist/shortcuts/contract/operations/clause-library.js +522 -0
- package/dist/shortcuts/contract/operations/compare.js +193 -0
- package/dist/shortcuts/contract/operations/credit-page.js +34 -0
- package/dist/shortcuts/contract/operations/flow.js +98 -0
- package/dist/shortcuts/contract/operations/page.js +66 -0
- package/dist/shortcuts/contract/operations/performance.js +733 -0
- package/dist/shortcuts/contract/operations/quote.js +557 -0
- package/dist/shortcuts/contract/operations/recommend.js +78 -0
- package/dist/shortcuts/contract/operations/registry.js +18 -0
- package/dist/shortcuts/contract/operations/review.js +83 -0
- package/dist/shortcuts/contract/operations/shared.js +37 -0
- package/dist/shortcuts/contract/operations/upload.js +108 -0
- package/dist/shortcuts/contract/operations/write.js +3 -2
- package/dist/shortcuts/index.js +140 -40
- package/dist/shortcuts/invoice/manifest.js +34 -11
- package/dist/shortcuts/invoice/operations/reim-auto.js +9 -0
- package/dist/shortcuts/invoice/operations/reim.js +81 -5
- package/dist/shortcuts/invoice/operations/shared.js +12 -5
- package/dist/shortcuts/meeting/host.js +45 -3
- package/dist/shortcuts/meeting/invitation/docx.js +442 -0
- package/dist/shortcuts/meeting/operations/attachment-content.js +418 -0
- package/dist/shortcuts/meeting/operations/attachment.js +442 -0
- package/dist/shortcuts/meeting/operations/eb/cache.js +57 -0
- package/dist/shortcuts/meeting/operations/eb/catalog.js +343 -28
- package/dist/shortcuts/meeting/operations/eb/conflict.js +372 -11
- package/dist/shortcuts/meeting/operations/eb/create-flow.js +710 -0
- package/dist/shortcuts/meeting/operations/eb/decision.js +47 -1
- package/dist/shortcuts/meeting/operations/eb/factory.js +129 -11
- package/dist/shortcuts/meeting/operations/eb/index.js +122 -2
- package/dist/shortcuts/meeting/operations/eb/room-recommend.js +378 -0
- package/dist/shortcuts/meeting/operations/eb/room-summary.js +84 -0
- package/dist/shortcuts/meeting/operations/eb/schedule.js +450 -0
- package/dist/shortcuts/meeting/operations/from-group-chat.js +576 -0
- package/dist/shortcuts/meeting/operations/invitation.js +458 -0
- package/dist/shortcuts/meeting/operations/minute-content.js +266 -0
- package/dist/shortcuts/meeting/operations/pipeline.js +489 -0
- package/dist/shortcuts/meeting/operations/qrcode.js +131 -0
- package/dist/shortcuts/meeting/operations/receipts.js +1 -1
- package/dist/shortcuts/meeting/operations/registry.js +18 -0
- package/dist/shortcuts/meeting/operations/summary.js +276 -0
- package/dist/shortcuts/meeting/operations/task-notify.js +325 -0
- package/dist/shortcuts/meeting/operations.js +42 -1
- package/dist/shortcuts/meeting/qr/encoder.js +427 -0
- package/dist/shortcuts/meeting/qr/render.js +103 -0
- package/dist/shortcuts/workflow/operations/form.js +17 -5
- package/docs/contract.md +39 -4
- package/docs/invoice.md +5 -5
- package/package.json +3 -2
- package/scripts/bundle.mjs +63 -0
- package/skill-template/business-info.json +25 -4
- package/skill-template/domains/jinchengda.md +16 -3
- package/skill-template/domains/yepiaotong.md +1 -1
- package/skills/weaver-e10-jinchengda/SKILL.md +111 -31
- package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +7 -13
- package/skills/weaver-e10-jinchengda/references/contract-ai-assistant.md +150 -0
- package/skills/weaver-e10-jinchengda/references/contract-ai-review.md +87 -0
- package/skills/weaver-e10-jinchengda/references/contract-clause-library-crud.md +111 -0
- package/skills/weaver-e10-jinchengda/references/contract-clause-recommender.md +0 -15
- package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +0 -13
- package/skills/weaver-e10-jinchengda/references/contract-credit-page.md +50 -0
- package/skills/weaver-e10-jinchengda/references/contract-disabled-capabilities.md +4 -2
- package/skills/weaver-e10-jinchengda/references/contract-doc-compare.md +74 -0
- package/skills/weaver-e10-jinchengda/references/contract-flow-launch.md +84 -0
- package/skills/weaver-e10-jinchengda/references/contract-performance-query.md +29 -0
- package/skills/weaver-e10-jinchengda/references/contract-quote-to-contract.md +28 -0
- package/skills/weaver-e10-jinchengda/references/contract-request-status.md +2 -21
- package/skills/weaver-e10-jinchengda/references/contract-request-write.md +0 -24
- package/skills/weaver-e10-jinchengda/references/contract-signing-subjects.md +0 -15
- package/skills/weaver-e10-jinchengda/references/contract-subject-create.md +0 -17
- package/skills/weaver-e10-jinchengda/references/contract-template-recommend.md +70 -0
- package/skills/weaver-e10-jinchengda/references/contract-template-selector.md +0 -15
- package/skills/weaver-e10-jinchengda/references/contract-workflow-discovery.md +0 -15
- package/skills/weaver-e10-jinchengda/references/source-manifest.json +1168 -152
- package/skills/weaver-e10-meeting/SKILL.md +493 -17
- package/skills/weaver-e10-meeting/references/meeting-change.md +4 -4
- package/skills/weaver-e10-meeting/references/meeting-create.md +6 -6
- package/skills/weaver-e10-meeting/references/meeting-eb.md +503 -27
- package/skills/weaver-e10-meeting/references/meeting-invitation.md +113 -0
- package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +6 -6
- package/skills/weaver-e10-meeting/references/meeting-minute-file.md +425 -0
- package/skills/weaver-e10-meeting/references/meeting-queries.md +4 -4
- package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +15 -15
- package/skills/weaver-e10-meeting/references/meeting-verification.md +19 -11
- package/skills/weaver-e10-meeting.zip +0 -0
- package/skills/weaver-e10-yepiaotong/SKILL.md +9 -5
- package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +1 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +6 -5
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +14 -11
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +97 -56
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +84 -60
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +142 -105
- package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +53 -194
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +7 -7
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +164 -72
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +6 -0
- package/templates/meeting/invitation.docx +0 -0
package/docs/contract.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
源码位于 `src/shortcuts/contract`。命令注册、operation manifest 和业务执行逻辑分离;具体执行逻辑在 `src/shortcuts/contract/operations` 中按 operation class 维护。
|
|
6
6
|
|
|
7
|
-
面向 Agent 的说明位于 `skills/weaver-e10-jinchengda`。入口 `SKILL.md` 只负责共享规则和 reference 路由;具体细节拆在 `skills/weaver-
|
|
7
|
+
面向 Agent 的说明位于 `skills/weaver-e10-jinchengda`。入口 `SKILL.md` 只负责共享规则和 reference 路由;具体细节拆在 `skills/weaver-e10-jinchengda/references/`,与飞书 CLI 的业务 Skill 组织方式保持一致。
|
|
8
8
|
|
|
9
9
|
## 公共前置
|
|
10
10
|
|
|
@@ -49,24 +49,48 @@ weaver-work-cli --json contract run contract.workflow.query --input-json '{"work
|
|
|
49
49
|
|---|---|
|
|
50
50
|
| 合同类型与模板 | `contract.type.tree`、`contract.template.tree`、`contract.template.list`、`contract.template.detail` |
|
|
51
51
|
| 条款查询 | `contract.clause.tree`、`contract.clause.list`、`contract.clause.group.list`、`contract.clause.search`、`contract.clause.tags` |
|
|
52
|
+
| 条款库维护 | `contract.clause.permission`、`contract.clause.types`、`contract.clause.check`、`contract.clause.browser`、`contract.clause.subcompany`;`contract.clause.category.*` / `contract.clause.*` / `contract.clause.group.*` 的 `create|update|delete` + `.prepare/.apply` |
|
|
52
53
|
| 条款引用 | `contract.clause.reference.get`、`contract.clause.reference.save.prepare/apply` |
|
|
53
54
|
| 签约主体 | `contract.subject.app`、`contract.subject.form`、`contract.subject.fields`、`contract.subject.options`、`contract.subject.query`、`contract.subject.create.prepare/apply` |
|
|
54
55
|
| 流程解析 | `contract.workflow.query`、`contract.workflow.list`、`contract.workflow.form.info`(三段式:loadBaseParam → loadFrameParam → getFormLayout)、`contract.workflow.field.options` |
|
|
55
56
|
| 流程写操作 | `contract.request.create.prepare/apply`、`contract.request.save.prepare/apply`、`contract.request.submit.prepare/apply`、`contract.request.supervise.prepare/apply` |
|
|
56
57
|
| 流程状态 | `contract.request.status`、`contract.request.log` |
|
|
58
|
+
| 合同智能审查 | `contract.review.upload`(ebContract 两段式上传 + 审查页)、`contract.review.export`(`getAiReviewRecord`) |
|
|
59
|
+
| 发起流程入口 | `contract.flow.page`、`contract.flow.launch`(workflow 模块上传 + `automaticFormFilling`) |
|
|
60
|
+
| 模板推荐 | `contract.recommend.doc`(`recommendContractDoc`) |
|
|
61
|
+
| 文档比对 | `contract.compare.upload`(docCompared)、`contract.compare.search`、`contract.compare.versions`、`contract.compare.page`、`contract.compare.diff` |
|
|
62
|
+
| 企业资信 | `contract.credit.page`(仅页面入口) |
|
|
63
|
+
| 业绩核算 | `contract.performance.link/fields/source.entry`(纯本地)+ `contract.performance.menu.search/list.init/list.filters/list.query/receipt.query`(只读查询) |
|
|
64
|
+
| 报价单转合同 | `contract.quote.rmb/sheets/parse/fill`(本地 OOXML 读写,零依赖) |
|
|
65
|
+
| 合同智能助手 | `contract.assistant.init`、`contract.assistant.meta`、`contract.assistant.list`、`contract.assistant.doc.query`、`contract.assistant.config.query`、`contract.assistant.tips.query`、`contract.assistant.doc.folder.search`、`contract.assistant.keygroup.search`;`contract.assistant.create/delete`、`contract.assistant.doc.save`、`contract.assistant.agent.update`、`contract.assistant.tips.create/delete`、`contract.assistant.rule.classification.*`、`contract.assistant.rule.*`、`contract.assistant.rule.group.*`、`contract.assistant.element.create/delete`、`contract.assistant.flow.*`(写操作均 prepare/apply) |
|
|
57
66
|
|
|
58
67
|
完整字段与风险等级以 `weaver-work-cli contract schema` 为准。
|
|
59
68
|
|
|
69
|
+
## 文件上传与页面地址
|
|
70
|
+
|
|
71
|
+
- 上传统一走 `POST /api/file/preUploadCheck` → `POST /api/file/module/upload`;`module` 按场景固定:审查 `ebContract`、流程 `workflow`、比对 `docCompared`,不可混用。
|
|
72
|
+
- 预检返回非空 `fileid` 即为秒传,跳过第二段;否则用 `preUploadId` + `uploadType` 带文件本体上传。
|
|
73
|
+
- 成功判据是拿到非空 `fileId`,HTTP 200 不算成功;`uploadType=chunk` 时以 `upload_chunk_unsupported` 停止。
|
|
74
|
+
- 只接受 `.doc` / `.docx`,单文件上限 200MB。
|
|
75
|
+
- `sp/` 页面地址由字符串字面拼接生成,**不做整体编码**:`:`、`/`、`?`、`&`、`=`、`[`、`]` 与中文保持原样;仅资信页 `name[N]` 的值做一次 `encodeURIComponent`。
|
|
76
|
+
|
|
77
|
+
## 条款库鉴权门
|
|
78
|
+
|
|
79
|
+
条款库全部 operation(含查询类)在发请求前先调 `GET /api/ebd/contract/component/checkPermissionV2?moduleFlag=termComponent`(带业务头 `ebbusinessid: 10000000000000000`),只有 `data.checkPermission === true` 才放行;否则返回 `policy/clause_no_permission`(退出码 6)并中止。条款写操作要求 `clauseNum` / `clauseVersion` / `clauseGroup` 必传,`contractType` 与 `contractTypeName` 成对,条款组 `belongSub` 必传(不分部传空串)。
|
|
80
|
+
|
|
60
81
|
## 业务成功码适配
|
|
61
82
|
|
|
62
83
|
源资料中各接口的成功码字段并不统一,适配层按路径分组判定,不凭 HTTP 200 判定业务成功:
|
|
63
84
|
|
|
64
85
|
| 路径 | 成功判定 |
|
|
65
86
|
|---|---|
|
|
66
|
-
| `/api/ebd/**` | 顶层 `code = 0` |
|
|
87
|
+
| `/api/ebd/**` | 顶层 `code = 0` 或 `200`,且 `status` 不为 false、`fail` 不为 true |
|
|
88
|
+
| `/api/file/**`、`/api/doc/**` | 顶层 `code = 0`/`200` 且 `status`/`fail` 未置失败;无 code 时以 `data` 是否落地为准 |
|
|
67
89
|
| `/api/ebuilder/form/obj/getObjsByTag`、`/api/bs/ebuilder/app/tags/getAppIds`、`/api/ebuilder/common/ds/fields`、`/api/ebuilder/common/ds/options` | 顶层 `code = 200` 且 `status` 不为 false |
|
|
90
|
+
| `/api/ebuilder/form/list/**`(助手列表 getListDatas) | 顶层 `code = 0`/`200` 且 `status` 不为 false |
|
|
68
91
|
| `/api/ebuilder/form/dataset/v2/**` | `message.code = "0"` |
|
|
69
92
|
| `/api/workflow/**` | `message.errcode = "0"`(`getFieldOption` 上游示例为 `200`,同样视为成功) |
|
|
93
|
+
| `/api/workflow/core/flowPage/**`、`/api/workflow/core/form/**`、`/api/ebuilder/flow/form/**` | 无 `message` 节点;只有非 0/200 的 `errcode` 或 `fail=true` / `status=false` 才算失败 |
|
|
70
94
|
|
|
71
95
|
## 环境与 ID 约束
|
|
72
96
|
|
|
@@ -82,10 +106,21 @@ weaver-work-cli --json contract run contract.workflow.query --input-json '{"work
|
|
|
82
106
|
- 写请求超时或断线返回 `partial/write_uncertain`(退出码 11),禁止自动重放。
|
|
83
107
|
- `submitRequest` 返回 `1200306` 时解析缺失字段补全后重试(最多 3 轮);返回 `1200301` 时停止并诊断会话状态。
|
|
84
108
|
|
|
109
|
+
## 合同智能助手要点
|
|
110
|
+
|
|
111
|
+
- ID 链路:`init` -> `meta`(ebFormId/viewId)-> `list`(ai_id)-> `config.query`(Control=rule_config_id、Extract=config_id)。
|
|
112
|
+
- 列表接口 `total` 恒为 0,以返回行数为准;助手列表 type 固定 `ai_background_config`。
|
|
113
|
+
- 启用/停用智能体只改 `status_info`;`display` 是平台保留字段,输入含 `display` 直接拒绝(`policy/display_forbidden`)。
|
|
114
|
+
- 删除类接口普遍假成功(删助手/提示语/关联流程),apply 强制回读复核;关联流程删除强制带 `type=contract_ai_workflow_data`。
|
|
115
|
+
- 内控规则三步:分类 -> 规则 -> 规则组关联 Control,缺最后一步页面不可见;`default_type` 服务端互斥(后写覆盖先写)。
|
|
116
|
+
- `pzxx` / `element_mxb` / `contract_rule_source` 必须是 JSON 字符串,对象入参由 CLI 自动转换;`element_content` 与 `element_mxb` 两份重复数据都要传(缺省 content 由 CLI 生成)。
|
|
117
|
+
- 助手关联流程 `toolId=803297036482249914` 固定;一个流程全局只能绑定一次;`showPosition=3` 需 `fieldId`、`term_config` 需 `contractTypeField`、`key_config` 不能为空(NEED-CONFIRM 由 CLI 强制校验)。
|
|
118
|
+
- 提示语无编辑接口(先删后增),`aizjid` 序号由 CLI 按最大序号 +1 自动补算;saveAiDoc 同表按 id 覆盖,传 id 前先经 `queryAiDoc` 校验记录类型。
|
|
119
|
+
|
|
85
120
|
## 暂未实现
|
|
86
121
|
|
|
87
|
-
|
|
122
|
+
企业资信**数据**查询(诉讼、被执行、变更、监控)和撤回/退回流程在源资料中缺少接口路径、参数或确认契约,已列入 `withheldOperations`;资信只提供页面入口 `contract.credit.page`。详见 `skills/weaver-e10-jinchengda/references/contract-disabled-capabilities.md`。
|
|
88
123
|
|
|
89
124
|
## 源资料指纹
|
|
90
125
|
|
|
91
|
-
`skills/weaver-
|
|
126
|
+
`skills/weaver-e10-jinchengda/references/source-manifest.json` 记录了源资料的 `sha256` 与聚合指纹,用于后续检测源资料更新;更新检测确认前不要覆盖已生成的 CLI 与 Skill。
|
package/docs/invoice.md
CHANGED
|
@@ -56,7 +56,7 @@ weaver-work-cli --json invoice list --fields number,detailUrl
|
|
|
56
56
|
|
|
57
57
|
| Operation | 风险 | 固定规则 |
|
|
58
58
|
| --- | --- | --- |
|
|
59
|
-
| `invoice.list` | 只读 | 个人票夹固定 `flag=0` |
|
|
59
|
+
| `invoice.list` | 只读 | 个人票夹固定 `flag=0`;报销默认按消费日期 `consumption_tm_begin` / `consumption_tm_end` 筛选,CLI 将日期转成秒级时间戳 |
|
|
60
60
|
| `invoice.enterprise.list` | 只读 | 企业票夹固定 `flag=6`,权限失败不降级个人票夹 |
|
|
61
61
|
| `invoice.get` | 只读 | `fid` 优先,或按 `number` 查询 |
|
|
62
62
|
| `invoice.upload` | 外部制品 | 固定上传 `ocr=0`,只取上传文件 ID,不做上传阶段解析 |
|
|
@@ -69,12 +69,12 @@ weaver-work-cli --json invoice list --fields number,detailUrl
|
|
|
69
69
|
| `invoice.delete.prepare/apply` | 高风险写 | 固定软删除 `flag=0`,确认后执行并回查 |
|
|
70
70
|
| `invoice.browse-field.data` | 只读 | 基于详情接口生成流程表单发票浏览按钮 JSON |
|
|
71
71
|
| `invoice.reim.file-ocr.preview` | 文件识别预览 | 对 E10 fileId 调用报销场景的发票识别接口,只保留成功项 |
|
|
72
|
-
| `invoice.reim.requests.list` | 只读 | 查询事前申请流程列表,默认 `pageNo=1`、`pageSize=
|
|
72
|
+
| `invoice.reim.requests.list` | 只读 | 查询事前申请流程列表,默认 `pageNo=1`、`pageSize=100`;未传 `cusCreateDateEnd` 时按东八区当天 + 1 天填入,传入时按该日期再 + 1 天发给接口;每条只输出 `requestid` / `workflowid` / `requestname` / `flowStatus` / `creatorId` / `creatorName` / `createTime` |
|
|
73
73
|
| `invoice.reim.workflow.resolve` | 只读 | 根据事前申请 ID 获取报销工作流;无事前申请时传空数组 |
|
|
74
74
|
| `invoice.reim.form.structure` | 只读 | 获取报销流程表单字段结构 |
|
|
75
75
|
| `invoice.reim.row-info` | 只读 | 使用 urlencoded 请求获取单张发票明细行预填信息 |
|
|
76
76
|
| `invoice.reim.employee-superiors` | 只读 | 获取当前人员和上级信息 |
|
|
77
|
-
| `invoice.reim.field.search` | 只读 |
|
|
77
|
+
| `invoice.reim.field.search` | 只读 | `GET /api/government/formStructure/fieldRelateSearch`;按名称模糊搜相关客户或相关项目。返回 `match=unique/multiple/none`:一条直接填 `名称(ID)`,多条让用户选。报销时客户和项目必须在建草稿前确认 |
|
|
78
78
|
| `invoice.reim.flow.create.prepare/apply` | 高风险写 | continuation 绑定已组装报销单 JSON;`work_flow_id/mainFormId/request_name/main_fields/detail_rows` 等字段在 schema 顶层逐项暴露,确认后调用 `createFlowNew` |
|
|
79
79
|
| `invoice.reim.flow.update.prepare/apply` | 高风险写 | continuation 绑定更新报销单 JSON;确认后调用 `updateFlow` |
|
|
80
80
|
| `invoice.issuing.qys.list` | 只读 | 获取待开票合同数据(含契约锁、泛微及其他合同),返回可开票行 `items` 与按「合同号 + 购方」汇总的 `groups`(开票金额合计按分累加、`blockedRows` 计不可开票行、`sellerNames` 为核算公司);AI 开票据此调用 `weaver-e10-workflow` 发起开票流程草稿 |
|
|
@@ -94,7 +94,7 @@ weaver-work-cli --json invoice ocr preview --file ./invoice.pdf
|
|
|
94
94
|
weaver-work-cli --json invoice validate preview --fid INVOICE_FID --scope personal
|
|
95
95
|
weaver-work-cli --json invoice download --fid INVOICE_FID --file-id FILE_ID --output ./invoice.pdf
|
|
96
96
|
weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fid":"INVOICE_FID"}'
|
|
97
|
-
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":
|
|
97
|
+
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100}'
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
写操作必须先 prepare,再 apply:
|
|
@@ -125,7 +125,7 @@ weaver-work-cli --json invoice run invoice.reim.flow.create.prepare --input ./re
|
|
|
125
125
|
|
|
126
126
|
导入发票文件或远程 URL 时,面向 Agent 的正常链路是先 `invoice.ocr.preview`,再 `invoice.import.prepare` 使用 `validate=true`、`syncToOa=true`。只有用户明确要求跳过查验或离线导入时才传 `validate=false`;`validate=false` 表示跳过查验,不能描述为“查验通过”。`filedMap`、嵌套字段映射等 JSON 参数在 `--input-json` 中保持对象,CLI 只在 multipart 提交前序列化。
|
|
127
127
|
|
|
128
|
-
报销单创建只接受 Agent 已组装好的结构化 JSON;开票按销售方选择流程后,通过 `weaver-e10-workflow` 发起对应开票流程草稿(退票、冲红、红冲发起「合同开票冲红流程」),CLI
|
|
128
|
+
报销单创建只接受 Agent 已组装好的结构化 JSON;开票按销售方选择流程后,通过 `weaver-e10-workflow` 发起对应开票流程草稿(退票、冲红、红冲发起「合同开票冲红流程」),CLI 不再提供直接开票接口。发票与事前申请只按时间关联,一张发票同时落在多条事前申请上时由用户选择。CLI 不负责猜测出差客户或税率;这些规则在 Skill reference 中指导 Agent 组装和展示预览。报销单创建的字段必须在 operation 顶层逐项传入,不再包一层通用 `payload`。当前修正资料包没有客户档案查询或红字发票红冲接口,`invoice.customer.*` 和 `invoice.red.*` 不暴露为 operation,Agent 不能绕过 CLI 调用原始接口。写操作出现网络中断、部分成功、缺少回执 ID 或回查失败时,CLI 返回 `partial/write_uncertain`,Agent 禁止自动重复提交。
|
|
129
129
|
|
|
130
130
|
## 编辑白名单
|
|
131
131
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "weaver-work-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32",
|
|
4
4
|
"description": "面向泛微工作工具链的可扩展 TypeScript CLI 基础框架(E10 业票通等能力)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"scripts": {
|
|
20
20
|
"dev": "tsx src/index.ts",
|
|
21
21
|
"clean": "node scripts/clean.mjs",
|
|
22
|
-
"build": "npm run clean && tsc && node scripts/postbuild.mjs",
|
|
22
|
+
"build": "npm run clean && tsc && node scripts/bundle.mjs && node scripts/postbuild.mjs",
|
|
23
23
|
"test": "node --import tsx --test $(find test -name '*.test.ts' -type f | sort)",
|
|
24
24
|
"start": "node dist/index.js",
|
|
25
25
|
"build:skill": "node scripts/package-skill.mjs",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
],
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/node": "^22.0.0",
|
|
53
|
+
"esbuild": "^0.28.2",
|
|
53
54
|
"tsx": "^4.19.0",
|
|
54
55
|
"typescript": "^5.6.0"
|
|
55
56
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// B 方案:把整个 CLI 打成一个 ESM 包(入口 dist/index.js + 按需分块),替代"几千个 js 文件各读一次"。
|
|
3
|
+
//
|
|
4
|
+
// 为什么要它:沙箱里每次 `stat`/`open`/`read` 都很贵,而 tsc 产物是 390 个 js 文件 ——
|
|
5
|
+
// 每条命令光是把这些文件一个个读进来就要几百次系统调用。打包后入口只有 1 个文件,
|
|
6
|
+
// 懒加载(A 方案)产生的那几个 shortcut 各成一个 chunk,仍然只在需要时才 import。
|
|
7
|
+
//
|
|
8
|
+
// 关键约定:
|
|
9
|
+
// - `@napi-rs/keyring` 必须保持 external:它是原生模块,不能内联进 bundle。
|
|
10
|
+
// - 用 `splitting` 保住动态 import 的边界,否则 A 方案的懒加载会被打回单文件。
|
|
11
|
+
// - 入口仍是 dist/index.js(package.json 的 bin 指向它),其余 tsc 产物保持不动。
|
|
12
|
+
import { createRequire } from 'node:module';
|
|
13
|
+
import { existsSync } from 'node:fs';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
import { fileURLToPath } from 'node:url';
|
|
16
|
+
|
|
17
|
+
const require = createRequire(import.meta.url);
|
|
18
|
+
const esbuild = require('esbuild');
|
|
19
|
+
|
|
20
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
21
|
+
const srcDir = path.join(repoRoot, 'src');
|
|
22
|
+
const outDir = process.argv[2] ? path.resolve(process.argv[2]) : path.join(repoRoot, 'dist');
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* tsc 的产物用 `.js` 后缀指源码(NodeNext 要求),但源码文件其实是 `.ts`。
|
|
26
|
+
* esbuild 不会自动做这个映射,这里补一个 onResolve:`.js` 不存在就换成同名的 `.ts`。
|
|
27
|
+
*/
|
|
28
|
+
const tsFromJs = {
|
|
29
|
+
name: 'ts-from-js',
|
|
30
|
+
setup(build) {
|
|
31
|
+
build.onResolve({ filter: /\.js$/ }, (args) => {
|
|
32
|
+
if (args.kind === 'entry-point') return null;
|
|
33
|
+
if (!args.path.startsWith('.')) return null;
|
|
34
|
+
const absolute = path.resolve(args.resolveDir, args.path);
|
|
35
|
+
if (existsSync(absolute)) return null;
|
|
36
|
+
const asTs = absolute.replace(/\.js$/, '.ts');
|
|
37
|
+
if (existsSync(asTs)) return { path: asTs };
|
|
38
|
+
return null;
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const startedAt = Date.now();
|
|
44
|
+
await esbuild.build({
|
|
45
|
+
entryPoints: [path.join(srcDir, 'index.ts')],
|
|
46
|
+
outdir: outDir,
|
|
47
|
+
bundle: true,
|
|
48
|
+
platform: 'node',
|
|
49
|
+
format: 'esm',
|
|
50
|
+
target: 'node18',
|
|
51
|
+
splitting: true,
|
|
52
|
+
chunkNames: 'chunks/[name]-[hash]',
|
|
53
|
+
external: ['@napi-rs/keyring'],
|
|
54
|
+
legalComments: 'none',
|
|
55
|
+
logLevel: 'warning',
|
|
56
|
+
// commander 是 CJS,内部会 `require('node:events')`。esbuild 的 ESM 输出在模块作用域里
|
|
57
|
+
// 找不到 `require` 就会抛 "Dynamic require of ... is not supported",所以给每个产物文件
|
|
58
|
+
// 补一个真正的 CJS require(banner 会加到 entry 与所有 chunk 上)。
|
|
59
|
+
banner: { js: "import { createRequire as __esbuildCreateRequire } from 'node:module';\nconst require = __esbuildCreateRequire(import.meta.url);" },
|
|
60
|
+
plugins: [tsFromJs],
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
console.log(`bundle: ${path.relative(repoRoot, outDir)}/index.js (+chunks) in ${Date.now() - startedAt} ms`);
|
|
@@ -444,19 +444,40 @@
|
|
|
444
444
|
"weaver-e10-jinchengda": [
|
|
445
445
|
"合同",
|
|
446
446
|
"合同管理",
|
|
447
|
+
"今承达",
|
|
447
448
|
"合同类型",
|
|
448
449
|
"合同模板",
|
|
450
|
+
"模板推荐",
|
|
451
|
+
"范文推荐",
|
|
449
452
|
"合同条款",
|
|
453
|
+
"条款分类",
|
|
454
|
+
"条款标签",
|
|
450
455
|
"条款引用",
|
|
451
456
|
"签约主体",
|
|
457
|
+
"我方签约主体",
|
|
458
|
+
"客户签约主体",
|
|
459
|
+
"供应商签约主体",
|
|
460
|
+
"合同智能审查",
|
|
461
|
+
"AI 审查",
|
|
462
|
+
"审查报告",
|
|
463
|
+
"风险点",
|
|
464
|
+
"内控问题",
|
|
465
|
+
"法审",
|
|
466
|
+
"纠错",
|
|
467
|
+
"合同比对",
|
|
468
|
+
"文档比对",
|
|
469
|
+
"版本对比",
|
|
470
|
+
"比对报告",
|
|
471
|
+
"企业资信",
|
|
472
|
+
"资信查询",
|
|
473
|
+
"合同发起",
|
|
452
474
|
"合同审批",
|
|
453
|
-
"
|
|
454
|
-
"
|
|
475
|
+
"发起合同",
|
|
476
|
+
"保存合同表单",
|
|
455
477
|
"提交审批",
|
|
456
478
|
"催办",
|
|
457
479
|
"审批进度",
|
|
458
|
-
"审批意见"
|
|
459
|
-
"今承达"
|
|
480
|
+
"审批意见"
|
|
460
481
|
],
|
|
461
482
|
"weaver-e10-archive-oa": [
|
|
462
483
|
"档案定位",
|
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
本业务域用于泛微 E10 今承达合同管理。入口 `SKILL.md` 按飞书 `lark-approval` 风格组织:CRITICAL 共享前置、路由优先级、选命令表、处理链、执行原则、写操作失败决策树和“不在本 skill 范围”。具体用法拆到 `references/`:
|
|
2
2
|
|
|
3
3
|
- `contract-agent-entry.md`:schema、`contract run` 统一入口、退出码与输入方式。
|
|
4
|
+
- `contract-ai-review.md`:合同智能审查的上传(`ebContract`)、审查页地址与审查记录导出。
|
|
5
|
+
- `contract-flow-launch.md`:四个合同流程的 page/launch,`workflow` 模块上传与 `automaticFormFilling`。
|
|
6
|
+
- `contract-template-recommend.md`:自然语言需求驱动的模板/范文推荐。
|
|
7
|
+
- `contract-doc-compare.md`:`docCompared` 上传、文档检索、历史版本、比对页与差异结果。
|
|
8
|
+
- `contract-credit-page.md`:企业资信页入口与主体全称规则。
|
|
4
9
|
- `contract-template-selector.md`:合同类型树、模板分类树、模板列表与模板详情。
|
|
5
10
|
- `contract-clause-recommender.md`:条款标签、条款分类树、条款搜索、条款列表与条款组。
|
|
11
|
+
- `contract-clause-library-crud.md`:条款库 `checkPermissionV2` 鉴权门,分类/条款/条款组的 `prepare → apply` 写入与回读复核。
|
|
12
|
+
- `contract-ai-assistant.md`:合同智能助手——助手/16 智能体/提示语/内控规则/要素抽取/关联流程与假成功防护。
|
|
13
|
+
- `contract-performance-query.md`:业绩核算六菜单过滤链接与来源/收款台账只读查询(needs_ui 不代操作、组合页不透传、total 取 Count)。
|
|
14
|
+
- `contract-quote-to-contract.md`:报价单转合同(sheet 用户选、真实模板硬门禁、分层打分、纵向合并数值列只归首行)。
|
|
6
15
|
- `contract-clause-reference-save.md`:已引用条款查询与条款引用写入的 `prepare -> apply` 协议。
|
|
7
16
|
- `contract-signing-subjects.md`:应用 Tag、表单 Tag、字段定义、字段选项与签约主体查询。
|
|
8
17
|
- `contract-subject-create.md`:新建签约主体的 `prepare -> apply` 写入协议。
|
|
9
18
|
- `contract-workflow-discovery.md`:workflowId、表单字段与字段选项的运行时解析链。
|
|
10
19
|
- `contract-request-write.md`:创建、保存、提交、催办四个写操作的确认链与错误边界。
|
|
11
20
|
- `contract-request-status.md`:流程状态、签字意见与 `flowStatus.code` 枚举。
|
|
12
|
-
- `contract-disabled-capabilities.md
|
|
21
|
+
- `contract-disabled-capabilities.md`:资信数据、撤回/退回等未实现能力的处理边界。
|
|
13
22
|
- `source-manifest.json`:源资料指纹,用于后续更新检测。
|
|
14
23
|
|
|
15
24
|
Agent 调优重点:
|
|
16
25
|
|
|
17
26
|
- `weaver-work-cli contract schema` 是 operation 合约第一信息源。
|
|
18
27
|
- 业务输入不得包含 `userid`、`userId`、Cookie、ETEAMSID、Token 或内部控制字段,用户 ID 由 CLI 从会话注入。
|
|
19
|
-
- 环境相关 ID(`appId`、`objId`、`formId`、`workflowId`、`nodeId`)必须运行时解析,未找到就停止,不使用标准环境 ID
|
|
20
|
-
-
|
|
28
|
+
- 环境相关 ID(`appId`、`objId`、`formId`、`workflowId`、`nodeId`)必须运行时解析,未找到就停止,不使用标准环境 ID 兜底;固定业务常量(审查 `ai_id`、范文 `textObjId`、四个流程的 `workflowId`/`fieldId`、上传 `module`)反之禁止替换。
|
|
29
|
+
- 上传统一两段式:`preUploadCheck` → `module/upload`,三个场景的 `module`(`ebContract` / `workflow` / `docCompared`)不可混用;成功判据是非空 `fileId`。
|
|
30
|
+
- 页面地址不做整体编码:中文与 `[]` 字面保留,只有资信页 `name[N]` 的值编码一次。
|
|
31
|
+
- 各接口成功码不统一(`code=0`、`code=200`、`message.code="0"`、`message.errcode="0"`、文件服务无 message),HTTP 200 不等于业务成功。
|
|
32
|
+
- 条款库全部 operation 先过 `checkPermissionV2`(`data.checkPermission === true` 才放行);`clauseNum` 漏传会静默存空编号,必须在回读时校验。
|
|
21
33
|
- 写操作只接受 CLI 生成的 continuation,不手工构造或复用;提交审批与催办需要与“创建并保存”分开的第二次确认。
|
|
22
34
|
- 提交后必须回读 `contract.request.status` 的 `flowStatus.code`(1 审批中 / 3 已归档)才算生效。
|
|
23
35
|
- 结果为 `partial/write_uncertain` 时停止,不自动重放写请求。
|
|
36
|
+
- 打开页面 ≠ 完成业务:不得把“已打开审查页/流程页”报告成“审查完成/流程已发起”。
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- `invoice-add.md`:手工新增发票的 `prepare -> apply` 写入协议。
|
|
14
14
|
- `invoice-update.md`:编辑发票的 `prepare -> apply` 写入协议。
|
|
15
15
|
- `invoice-delete.md`:删除发票的 `prepare -> apply` 写入协议。
|
|
16
|
-
- `invoice-reim.md`:发票报销自动填单的数据准备;报销单创建/修改调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` / `workflow.edit
|
|
16
|
+
- `invoice-reim.md`:发票报销自动填单的数据准备;报销单创建/修改调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` / `workflow.edit*`。相关客户、相关项目必须在建单前确认(项目可「不填」),禁止先建空草稿再问。用户给出名称时先 `invoice.reim.field.search` 消歧。
|
|
17
17
|
- `invoice-issuing-workflow.md`:AI 开票主链路——获取待开票合同数据(含契约锁、泛微及其他合同)后按合同号分组,按核算公司选择开票流程(上海亘岩网络科技有限公司走契约锁开票流程;泛微网络、泛微软件、上海田亩、成都泛微、泛微国际、北京泛微、浙江泛微走合同收款发票开具及快递申请;为空或不在名单里时先问用户;退票、冲红、红冲走合同开票冲红流程),调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` 发起草稿。
|
|
18
18
|
- `invoice-issuing-form-fill-rules.md`:开票流程填单规则,用户没说的字段按默认值填(如本次开票金额 = 总金额)。
|
|
19
19
|
- `invoice-issuing-qys-ledger.md`:兜底链路,用户明确要求时按台账行直接开票或存待开台账。
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
name: weaver-e10-jinchengda
|
|
3
3
|
display_name: 泛微今承达合同管理
|
|
4
4
|
display_name_en: Weaver Jinchengda Contract Management
|
|
5
|
-
description: "泛微 E10
|
|
6
|
-
description_zh: "
|
|
7
|
-
description_en: "Weaver E10 Jinchengda contract management skill
|
|
8
|
-
version: 1.
|
|
5
|
+
description: "泛微 E10 今承达合同管理:业绩核算六菜单过滤链接与来源/收款台账只读查询、报价单转合同(真实 docx 模板)、合同智能审查与报告导出、文档比对、模板/范文推荐、资信页、合同类型/模板/条款库增删改查与条款引用、签约主体、合同智能助手,及 12 类合同审批流程的发起/保存/提交/催办。"
|
|
6
|
+
description_zh: "泛微今承达合同管理。触发场景:审查合同/上传合同做 AI 审查/导出审查报告、比对两版合同/查差异、推荐合同模板或范文、查企业资信、找合同模板、维护条款库(新增/修改/删除条款、条款分类、条款组)、查或新建签约主体、业绩核算(直销合同/直销业绩/合同收款/项目验收/渠道订单六菜单过滤链接、按合同号查来源台账与收款台账)、报价单转合同(解析报价 xlsx、用真实 docx 模板生成合同)、维护合同智能助手(新建助手、启用停用智能体、提示语、内控规则、要素抽取、关联流程)、发起/带文件打开合同审批流程、保存/提交/催办合同审批。所有能力通过 weaver-work-cli contract 命令执行。"
|
|
7
|
+
description_en: "Weaver E10 Jinchengda contract management skill covering AI contract review with report export, document comparison, template recommendation, enterprise credit page, contract types/templates, clause library CRUD (categories, clauses, clause groups), clause references, signing subjects, AI assistant configuration (agents, tips, control rules, element extraction, flow bindings), and prepare/apply confirmation chains across 12 contract approval workflows, driven by weaver-work-cli contract."
|
|
8
|
+
version: 1.5.1
|
|
9
9
|
author: 泛微网络科技股份有限公司
|
|
10
10
|
agent_created: true
|
|
11
11
|
requires:
|
|
@@ -16,34 +16,24 @@ cliHelp: "weaver-work-cli contract --help"
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
19
|
-
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
|
|
20
19
|
认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
21
20
|
业务命令返回 `authentication` / `session_expired` 时必须停止并读取共享认证规则:Agent 复用任务开始时的宿主判定且禁止调用任何其他登录 Skill;明确为 XiaoE 时只执行 `weaver-work-cli auth xiaoe`,返回 `xiaoe_credential_unavailable` 时停止且不自动改用浏览器登录;非 XiaoE 时取得用户确认的真实 E10 域名后执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。登录恢复后读操作可重放,写操作不得复用旧 continuation,必须重新 prepare 和确认,`partial` / `write_uncertain` 必须先只读回查。
|
|
22
21
|
所有命令通过 `weaver-work-cli --json contract run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli contract schema` 是 operation、字段和风险等级的合约来源。
|
|
23
22
|
命令示例、提示词和临时说明必须同时兼容 Windows 和 macOS/Linux;涉及 JSON 输入、用户目录、路径分隔符、Python 启动器、文件删除、目录查看或文件比对时,同时给 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例。Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
|
|
24
23
|
涉及合同正文、附件、图片、本地文件或远程 URL 文件的操作,执行前必须提醒用户:文件内容可能被上传到 E10 今承达,并可能进入当前大模型上下文用于理解和处理;必须等待用户明确确认后才继续。
|
|
25
24
|
|
|
26
|
-
## 请求头 / 认证
|
|
27
|
-
|
|
28
|
-
本技能发起的 API 请求通过 `weaver-work-cli` 执行,CLI 从 E10 登录会话自动注入以下凭证头:
|
|
29
|
-
|
|
30
|
-
| 请求头 | 值 |
|
|
31
|
-
|--------|-----|
|
|
32
|
-
| `Cookie` | `<e10-login 返回的完整原始 Cookie 串>`(禁止裁剪/去重/改写) |
|
|
33
|
-
| `eteamsid` | `<e10-login 返回的 ETEAMSID>` |
|
|
34
|
-
| `User-Agent` | `AgentType=<agentType>,IsAgent=true` |
|
|
35
|
-
|
|
36
|
-
上述凭证由 CLI 按共享认证规则建立会话后自动注入,业务输入(`--input-json` / `--input`)**不得包含** `userid`、`userId`、`token`、`cookie`、`eteamsid` 等字段,用户 ID 由 CLI 从会话注入。
|
|
37
|
-
|
|
38
25
|
## 适用场景与触发条件
|
|
39
26
|
|
|
40
27
|
当用户表达命中以下任一类意图时,优先加载本 skill 并路由到 `weaver-work-cli contract`:
|
|
41
28
|
|
|
42
|
-
-
|
|
29
|
+
- 关键词:合同类型、合同模板、模板推荐、范文推荐、条款、条款分类、条款标签、条款推荐、条款引用、维护条款库、新增条款、修改条款、删除条款、条款组、签约主体、智能助手、AI 助手、助手配置、智能体、提示语、内控规则、规则组、要素抽取、关联流程、我方签约主体、客户签约主体、供应商签约主体
|
|
30
|
+
- 合同智能审查:审查合同、AI 审查、上传合同、风险点、内控问题、法审、纠错、导出审查报告
|
|
31
|
+
- 文档比对:比对合同、比对两个版本、合同差异、版本对比、导出比对报告
|
|
32
|
+
- 企业资信:查资信、企业工商信息、主体资信、合作方背景
|
|
43
33
|
- 合同审批场景:销售合同、采购合同、协议合同、合同变更、合同解除、合同关闭、合同开票、合同收款、合同付款、履约计划、进度提报、供应商准入
|
|
44
|
-
- 动作词:查条款 / 推荐条款 /
|
|
34
|
+
- 动作词:查条款 / 推荐条款 / 引用条款、查或新建签约主体、发起合同、带文件打开流程、保存合同表单、提交审批、催办、查审批进度、查审批意见
|
|
45
35
|
|
|
46
|
-
使用时机:最终动作落在今承达合同对象上,且必须通过 CLI
|
|
36
|
+
使用时机:最终动作落在今承达合同对象上,且必须通过 CLI 完成查询、上传或写入时。仅需工商数据明细(诉讼、被执行、股权)时本 skill 只能打开资信页,不能返回数据;通用 E10 对象操作用对应模块 skill(见 [`contract-disabled-capabilities.md`](references/contract-disabled-capabilities.md))。
|
|
47
37
|
|
|
48
38
|
## 路由优先级(先判断是不是今承达合同,再选 operation)
|
|
49
39
|
|
|
@@ -51,22 +41,53 @@ cliHelp: "weaver-work-cli contract --help"
|
|
|
51
41
|
|
|
52
42
|
### 明确归 `weaver-e10-jinchengda` 的高优先级语义
|
|
53
43
|
|
|
44
|
+
- 合同智能审查 / AI 审查 / 上传合同 / 审查报告 / 风险点 / 内控问题 / 法审 / 纠错
|
|
45
|
+
- 合同文档比对 / 版本对比 / 合同差异 / 比对报告
|
|
46
|
+
- 合同模板推荐 / 范文推荐(自然语言描述需求)
|
|
47
|
+
- 企业资信页 / 合作方资信入口
|
|
48
|
+
- 业绩核算:直销合同 / 直销业绩 / 合同收款 / 项目验收 / 渠道订单 / 渠道订单-商务的过滤链接与台账查询
|
|
49
|
+
- 报价单转合同:解析报价单 xlsx、人民币大写、用真实合同模板生成 docx
|
|
54
50
|
- 合同类型 / 合同模板 / 模板分类 / 模板详情
|
|
55
|
-
- 条款 / 条款分类 / 条款标签 / 条款搜索 / 条款推荐 / 条款引用
|
|
51
|
+
- 条款 / 条款分类 / 条款标签 / 条款搜索 / 条款推荐 / 条款引用 / 条款库维护(新增、修改、删除条款与条款组)
|
|
56
52
|
- 我方签约主体 / 客户签约主体 / 供应商主体 / 签约主体库
|
|
57
53
|
- 销售合同、采购合同、协议、变更、解除、关闭、开票、收款、付款、履约计划、进度提报、供应商准入的合同审批流程
|
|
58
|
-
-
|
|
54
|
+
- 合同智能助手 / 助手配置 / 智能体启用停用 / 提示语 / 内控规则与规则组 / 要素抽取 / 助手关联流程
|
|
55
|
+
- 发起合同 / 带文件打开流程 / 保存合同表单 / 提交合同审批 / 催办 / 审批进度 / 审批意见
|
|
59
56
|
|
|
60
|
-
**判定规则:**
|
|
57
|
+
**判定规则:** 只要最终动作是对今承达合同做审查、比对、模板推荐、资信页、业绩核算查询、报价单转合同、模板条款查询、主体查询、主体新建、条款引用写入、流程发起、表单保存、提交审批或催办,或维护合同智能助手(助手、智能体、提示语、内控规则、要素抽取、关联流程),就归 `weaver-e10-jinchengda`。企业资信**数据明细**(诉讼、被执行、变更、监控)与撤回/退回流程等源资料未给出接口的能力不在范围内(见 [`contract-disabled-capabilities.md`](references/contract-disabled-capabilities.md))。
|
|
61
58
|
|
|
62
59
|
## 选哪个命令
|
|
63
60
|
|
|
64
61
|
| 想做什么 | 命令 | 按需读取 reference |
|
|
65
62
|
|---|---|---|
|
|
66
63
|
| 查看可用 operation、字段和风险等级 | `contract schema` | [`contract-agent-entry.md`](references/contract-agent-entry.md) |
|
|
64
|
+
| 上传合同并打开 AI 审查页 | `contract run contract.review.upload` | [`contract-ai-review.md`](references/contract-ai-review.md) |
|
|
65
|
+
| 导出审查记录(内控/法审/纠错) | `contract run contract.review.export` | [`contract-ai-review.md`](references/contract-ai-review.md) |
|
|
66
|
+
| 打开合同流程页(不带文件) | `contract run contract.flow.page` | [`contract-flow-launch.md`](references/contract-flow-launch.md) |
|
|
67
|
+
| 上传合同并打开流程页(自动回填) | `contract run contract.flow.launch` | [`contract-flow-launch.md`](references/contract-flow-launch.md) |
|
|
68
|
+
| 按需求描述推荐模板/范文 | `contract run contract.recommend.doc` | [`contract-template-recommend.md`](references/contract-template-recommend.md) |
|
|
69
|
+
| 上传待比对文件 | `contract run contract.compare.upload` | [`contract-doc-compare.md`](references/contract-doc-compare.md) |
|
|
70
|
+
| 检索系统内文件 / 取历史版本 | `contract run contract.compare.search/versions` | [`contract-doc-compare.md`](references/contract-doc-compare.md) |
|
|
71
|
+
| 打开文档比对页 | `contract run contract.compare.page` | [`contract-doc-compare.md`](references/contract-doc-compare.md) |
|
|
72
|
+
| 拉取比对差异结果 | `contract run contract.compare.diff` | [`contract-doc-compare.md`](references/contract-doc-compare.md) |
|
|
73
|
+
| 打开企业资信页 | `contract run contract.credit.page` | [`contract-credit-page.md`](references/contract-credit-page.md) |
|
|
74
|
+
| 助手初始化 / 列表 / 16 智能体查询 | `contract run contract.assistant.init/list/config.query` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
75
|
+
| 查存储目录 / 执行方式 / 提示语 | `contract run contract.assistant.doc.query/tips.query` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
76
|
+
| 检索文档目录 / 关键词组 | `contract run contract.assistant.doc.folder.search/keygroup.search` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
77
|
+
| 准备/确认新建、删除助手 | `contract run contract.assistant.create/delete.prepare/apply` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
78
|
+
| 准备/确认改存储目录、执行方式、智能体配置 | `contract run contract.assistant.doc.save/agent.update.prepare/apply` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
79
|
+
| 准备/确认维护提示语 | `contract run contract.assistant.tips.create/delete.prepare/apply` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
80
|
+
| 查内控分类 / 规则 / 规则组;准备/确认其增删改 | `contract run contract.assistant.rule.classification.list` 与 `rule.*.prepare/apply` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
81
|
+
| 查要素集合;准备/确认新增删除要素集合 | `contract run contract.assistant.element.query/create/delete.prepare/apply` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
82
|
+
| 查 / 准备 / 确认维护助手关联流程 | `contract run contract.assistant.flow.list/save/update/delete.prepare/apply` | [`contract-ai-assistant.md`](references/contract-ai-assistant.md) |
|
|
67
83
|
| 查合同类型树 | `contract run contract.type.tree` | [`contract-template-selector.md`](references/contract-template-selector.md) |
|
|
68
84
|
| 查模板分类树 / 模板列表 / 模板详情 | `contract run contract.template.tree/list/detail` | [`contract-template-selector.md`](references/contract-template-selector.md) |
|
|
69
85
|
| 查条款分类 / 条款列表 / 条款组 / 条款搜索 / 条款标签 | `contract run contract.clause.tree/list/group.list/search/tags` | [`contract-clause-recommender.md`](references/contract-clause-recommender.md) |
|
|
86
|
+
| 检查条款库权限 | `contract run contract.clause.permission` | [`contract-clause-library-crud.md`](references/contract-clause-library-crud.md) |
|
|
87
|
+
| 判重 / 按名称检索条款 / 检索分部 | `contract run contract.clause.check/browser/subcompany` | [`contract-clause-library-crud.md`](references/contract-clause-library-crud.md) |
|
|
88
|
+
| 准备/确认新增、修改、删除条款 | `contract run contract.clause.create/update/delete.prepare/apply` | [`contract-clause-library-crud.md`](references/contract-clause-library-crud.md) |
|
|
89
|
+
| 准备/确认维护条款分类(删除会级联) | `contract run contract.clause.category.create/update/delete.prepare/apply` | [`contract-clause-library-crud.md`](references/contract-clause-library-crud.md) |
|
|
90
|
+
| 准备/确认维护条款组 | `contract run contract.clause.group.create/update/delete.prepare/apply` | [`contract-clause-library-crud.md`](references/contract-clause-library-crud.md) |
|
|
70
91
|
| 查合同文档已引用条款 | `contract run contract.clause.reference.get` | [`contract-clause-reference-save.md`](references/contract-clause-reference-save.md) |
|
|
71
92
|
| 准备/确认把条款写入合同文档 | `contract run contract.clause.reference.save.prepare/apply` | [`contract-clause-reference-save.md`](references/contract-clause-reference-save.md) |
|
|
72
93
|
| 解析 appId / objId / 字段 / 选项 | `contract run contract.subject.app/form/fields/options` | [`contract-signing-subjects.md`](references/contract-signing-subjects.md) |
|
|
@@ -78,12 +99,26 @@ cliHelp: "weaver-work-cli contract --help"
|
|
|
78
99
|
| 准备/确认提交合同审批 | `contract run contract.request.submit.prepare/apply` | [`contract-request-write.md`](references/contract-request-write.md) |
|
|
79
100
|
| 准备/确认催办 | `contract run contract.request.supervise.prepare/apply` | [`contract-request-write.md`](references/contract-request-write.md) |
|
|
80
101
|
| 查审批状态 / 签字意见 | `contract run contract.request.status/log` | [`contract-request-status.md`](references/contract-request-status.md) |
|
|
81
|
-
|
|
|
102
|
+
| 构造业绩菜单过滤链接 / 查台账字段 | `contract run contract.performance.link/fields` | [`contract-performance-query.md`](references/contract-performance-query.md) |
|
|
103
|
+
| 按合同号查三类来源台账 / 收款台账 | `contract run contract.performance.list.query/receipt.query` | [`contract-performance-query.md`](references/contract-performance-query.md) |
|
|
104
|
+
| 解析报价单 xlsx / 人民币大写 | `contract run contract.quote.parse/rmb` | [`contract-quote-to-contract.md`](references/contract-quote-to-contract.md) |
|
|
105
|
+
| 用真实模板生成合同 docx | `contract run contract.quote.fill` | [`contract-quote-to-contract.md`](references/contract-quote-to-contract.md) |
|
|
106
|
+
| 企业资信数据明细、撤回/退回等未实现能力 | 无可用命令 | [`contract-disabled-capabilities.md`](references/contract-disabled-capabilities.md) |
|
|
82
107
|
|
|
83
108
|
处理链:
|
|
84
109
|
|
|
110
|
+
- 智能审查:`contract.review.upload`(拿 `files[].fileId/docId`)-> 打开结果 `url`(`width: 1000`,不编码)-> 用户要报告时 `contract.review.export` -> 按 `sclx` 生成 Markdown 报告并 `present_files`
|
|
111
|
+
- 文档比对:确定 baseFile(`contract.compare.upload` / `contract.compare.search` / `contract.compare.versions`)-> 确定 compareFile -> `contract.compare.page` 打开页面 -> 用户要报告时 `contract.compare.diff`
|
|
112
|
+
- 模板推荐:`contract.recommend.doc`(超时 180 秒,慢不重试)-> 表格展示 `recommendations` -> 打开 `url`
|
|
113
|
+
- 带文件发起流程:`contract.flow.launch`(内部先 `loadBaseParam` 取 `requestId`,再按 `module=workflow` 上传)-> 打开 `url`(带 `fileId` 与 `automaticFormFilling=true`)
|
|
114
|
+
- 资信页:确认企业全称 -> `contract.credit.page` -> 打开 `url`(`name[N]` 只对值编码一次)
|
|
115
|
+
- 业绩核算:本地直算(不发起网络请求) `contract.performance.link`(`needs_ui` 项由用户在页面补填,AI 不代操作)-> 实际数据走 `contract.performance.list.query`(精确 eq)/`contract.performance.receipt.query`(收款台账)
|
|
116
|
+
- 报价单转合同:`contract.quote.sheets` 让用户选 sheet -> `contract.quote.parse`(校验 warnings/checks)-> 用户确认数据 -> 必须先有真实 .docx 模板 -> `contract.quote.fill`(unfilled 交给用户补,不编造)
|
|
85
117
|
- 选模板:`contract.type.tree` -> `contract.template.tree`(取 `belongId`)-> `contract.template.list` -> 必要时 `contract.template.detail`
|
|
86
118
|
- 推荐条款:`contract.clause.tags`(取 `tagId`)-> `contract.clause.tree`(取 `belongId`)-> `contract.clause.search` -> 展示候选名称、状态与推荐理由,**不伪造"智能评分"**
|
|
119
|
+
- 维护条款库:`contract.clause.permission`(未放行立即停)-> `contract.clause.tree` 取 `belongId` -> `contract.clause.check` 判重 -> `contract.clause.create.prepare` -> 用户确认 -> `contract.clause.create.apply` -> 读 `readback.clauseNum` 确认编号落库 -> 打开 `terms-library?tab=1`
|
|
120
|
+
- 维护条款组:`contract.clause.browser` 取条款 id(多条必须让用户选)-> `contract.clause.subcompany` 取分部或 `belongSub: ""` -> `contract.clause.group.create.prepare` -> `apply` -> 用 `getListPage` 回读
|
|
121
|
+
- 维护智能助手:`contract.assistant.list` 先解析助手(多个必须让用户选)-> `contract.assistant.config.query` 拿 Control/Extract 智能体 id -> 内控规则走「建分类 -> 建规则 -> 建规则组关联 Control」三步 -> 写操作全部 prepare -> 用户确认 -> apply -> 用对应 query 接口回读 -> 打开 `ai-setting` 页
|
|
87
122
|
- 引用条款:`contract.clause.reference.get` 查已引用 -> 用户确认具体条款、合同和文件 -> `contract.clause.reference.save.prepare` -> 用户确认 -> `contract.clause.reference.save.apply` -> 回查 `contract.clause.reference.get`
|
|
88
123
|
- 签约主体:`contract.subject.app`(应用 Tag 固定 `合同管理`)-> `contract.subject.form`(按意图选 `我方签约主体库` / `客户签约主体库` / `供应商签约主体库`)-> `contract.subject.fields` / `contract.subject.options` -> `contract.subject.query` 或 `contract.subject.create.prepare/apply`
|
|
89
124
|
- 发起合同审批:`contract.workflow.query` 或 `contract.workflow.list` 解析 `workflowId`(无需预先获取活动版本)-> `contract.workflow.form.info` 读字段 -> `contract.workflow.field.options` 把业务名称转成选项 ID -> `contract.request.create.prepare/apply` 取 `requestId` -> `contract.request.save.prepare/apply` -> **第二次确认** -> `contract.request.submit.prepare/apply` -> `contract.request.status` 回读 `flowStatus.code`
|
|
@@ -96,8 +131,29 @@ cliHelp: "weaver-work-cli contract --help"
|
|
|
96
131
|
- 未找到就停止并提示用户配置 Tag 或确认名称;**不使用标准环境 ID 兜底**
|
|
97
132
|
- 同名流程返回多条时展示候选请用户选择或加 `status=1` 收敛,**不默认取第一条**
|
|
98
133
|
- 名称匹配不到选项时展示候选请用户确认,**不得猜测 optionId**
|
|
134
|
+
- 例外:下面这些是**固定业务常量**,不是环境占位符,禁止替换或"运行时解析":
|
|
135
|
+
- 审查上传 `module=ebContract`、`createDoc=true`;审查导出 `ai_id=1326842382967570463`
|
|
136
|
+
- 流程上传 `module=workflow`、`folderId=300`,以及四个流程的 `workflowId` / `fieldId`(见 [`contract-flow-launch.md`](references/contract-flow-launch.md))
|
|
137
|
+
- 范文推荐 `textObjId=1290191829260230657`
|
|
138
|
+
- 比对上传 `module=docCompared`,以及比对页 10 个 `options[...]` 默认值
|
|
139
|
+
- 助手关联流程 `toolId=803297036482249914`,删除绑定 `type=contract_ai_workflow_data`
|
|
140
|
+
|
|
141
|
+
### 2) 文件上传统一走两段式 HTTP
|
|
142
|
+
|
|
143
|
+
- 所有上传都是 `POST /api/file/preUploadCheck` -> `POST /api/file/module/upload`;三个场景的 `module` **不能混用**:审查 `ebContract`、流程 `workflow`、比对 `docCompared`
|
|
144
|
+
- 预检返回非空 `fileid` 即秒传,**跳过第二段**;否则必须拿 `preUploadId` 再带文件本体
|
|
145
|
+
- 成功判据是**非空 `fileId`**,HTTP 200 不算成功
|
|
146
|
+
- `uploadType=chunk` 时停止(分片链路未实现),不要盲目重试
|
|
147
|
+
- 只接受 `.doc` / `.docx`;单文件 ≤ 200MB
|
|
99
148
|
|
|
100
|
-
###
|
|
149
|
+
### 3) 页面地址不做整体编码
|
|
150
|
+
|
|
151
|
+
- 所有 `sp/` 页面地址(审查页、比对页、流程页、推荐结果页、资信页)都由 CLI 用字面拼接生成
|
|
152
|
+
- `:`、`/`、`?`、`&`、`=`、`[`、`]` 与中文文件名保持原样,**禁止**再做 `encodeURIComponent`、`URLSearchParams` 或套 `redirectUrl`
|
|
153
|
+
- 唯一例外:资信页 `name[N]` 的**值**由 CLI 做一次 `encodeURIComponent`
|
|
154
|
+
- 打开页面时统一带 `"width": 1000`(资信页另有 `"title": "资信查询"`、`"activate": true`)
|
|
155
|
+
|
|
156
|
+
### 4) HTTP 200 不是业务成功的充分条件
|
|
101
157
|
|
|
102
158
|
- 本组接口的成功码字段不统一:
|
|
103
159
|
- `/api/ebd/**`:顶层 `code = 0` 或 `code = 200` 均视为成功(实测 E10 10.0.9807.01 返回 `200` 且 `msg = "接口返回成功"`),同时要求 `status` 不为 false、`fail` 不为 true
|
|
@@ -107,14 +163,21 @@ cliHelp: "weaver-work-cli contract --help"
|
|
|
107
163
|
- `/api/workflow/core/flowPage/**`、`/api/workflow/core/form/**`、`/api/ebuilder/flow/form/**`(表单三段式):**没有 `message` 节点**,只有出现非 0/200 的 `errcode`、或 `fail=true` / `status=false` 才算失败;载荷包在 `data` 里
|
|
108
164
|
- CLI 已按路径分组判定;Agent 仍需把"请求成功"与"业务生效"分开报告
|
|
109
165
|
|
|
110
|
-
###
|
|
166
|
+
### 5) 条款库必须先过 checkPermissionV2
|
|
167
|
+
|
|
168
|
+
- 任何条款库接口(含查询类)之前,CLI 都会先调 `checkPermissionV2?moduleFlag=termComponent`,并带固定业务头 `ebbusinessid: 10000000000000000`
|
|
169
|
+
- 放行依据**只有** `data.checkPermission === true`;`hasLicense`/`privateDeploy`/`isRelease` 不作依据
|
|
170
|
+
- 未放行时返回 `policy/clause_no_permission`(退出码 6),必须**立即中止**,不重试、不换接口绕行
|
|
171
|
+
- 条款写操作的已知陷阱(`clauseNum` 静默失败、`clauseVersion`/`clauseGroup` 缺失 500、`contractType` 必须成对、条款组 `belongSub` 必传)见 [`contract-clause-library-crud.md`](references/contract-clause-library-crud.md)
|
|
172
|
+
|
|
173
|
+
### 6) 写操作必须走 prepare -> apply 两段确认
|
|
111
174
|
|
|
112
175
|
- 创建签约主体、引用条款、开启企业监控、创建/保存合同审批流程前,必须展示目标、关键字段和影响的脱敏摘要并获得明确确认
|
|
113
176
|
- **提交合同审批和催办需要与"创建并保存"分开的第二次确认**
|
|
114
177
|
- 提交后必须回读 `contract.request.status` 的 `flowStatus.code`(1 审批中 / 3 已归档)才算生效,不能只凭第一步返回就宣称"提交成功"
|
|
115
178
|
- 创建流程 ≠ 保存表单 ≠ 提交审批,必须分别报告每一步结果,不得概括为"成功"
|
|
116
179
|
|
|
117
|
-
###
|
|
180
|
+
### 7) 错误语义驱动,而不是盲目重试
|
|
118
181
|
|
|
119
182
|
- 失败后先看退出码、`error.type`、`error.subtype` 和 `error.message`
|
|
120
183
|
- 写请求超时或断线时不得盲目重试,先用查询接口确认是否已生效
|
|
@@ -122,9 +185,15 @@ cliHelp: "weaver-work-cli contract --help"
|
|
|
122
185
|
- `submitRequest` 返回 `1200306`(服务端必填校验):解析缺失字段列表,逐字段补全后重试(最多 3 轮),不切换接口
|
|
123
186
|
- 错误为 `authentication` 或 `session_expired` 时立即停止,先读取共享规则 `../weaver-e10-shared/references/e10-auth-and-session.md` 让用户完成登录
|
|
124
187
|
|
|
125
|
-
###
|
|
188
|
+
### 8) 智能助手的三个高频误伤
|
|
189
|
+
|
|
190
|
+
- **启用/停用智能体只允许改 `status_info`**(1 开 / 0 关);`display` 是平台保留字段(前端卡片展示),技术上会被静默落库导致卡片从界面消失——CLI 检测到输入含 `display` 直接拒绝
|
|
191
|
+
- **删除类接口普遍假成功**:删助手、删提示语、删关联流程对不存在的 id 也返回 success;CLI 的 apply 强制回读复核,`type=contract_ai_workflow_data` 由 CLI 强制携带
|
|
192
|
+
- **内控规则三步缺一不可**:分类 -> 规则 -> 规则组关联 Control 智能体;只建规则页面看不到。`pzxx` / `element_mxb` / `contract_rule_source` 必须是 JSON 字符串(对象入参由 CLI 自动转换),`element_content` 与 `element_mxb` 两份重复数据必须都传
|
|
193
|
+
|
|
194
|
+
### 9) 附件、图片和文件解析确认
|
|
126
195
|
|
|
127
|
-
- 执行涉及合同正文、附件、本地文件或远程 URL
|
|
196
|
+
- 执行涉及合同正文、附件、本地文件或远程 URL 文件的步骤前(含上传、审查、比对、流程回填),必须先提醒用户文件内容可能进入大模型上下文,也可能发送到 E10 今承达;用户未明确确认前不要运行。
|
|
128
197
|
|
|
129
198
|
## 写操作失败处理:`partial/write_uncertain` 决策树
|
|
130
199
|
|
|
@@ -143,6 +212,11 @@ weaver-work-cli contract schema
|
|
|
143
212
|
weaver-work-cli --json contract run contract.type.tree
|
|
144
213
|
weaver-work-cli --json contract run contract.subject.app --input-json '{"tag":"合同管理"}'
|
|
145
214
|
weaver-work-cli --json contract run contract.workflow.query --input-json '{"workflowName":"销售合同起草","status":"1"}'
|
|
215
|
+
weaver-work-cli --json contract run contract.review.upload --input-json '{"paths":["D:/contracts/销售合同.docx"]}'
|
|
216
|
+
weaver-work-cli --json contract run contract.review.export --input-json '{"fileId":"12345","sclx":"1,2,3"}'
|
|
217
|
+
weaver-work-cli --json contract run contract.assistant.list --input-json '{"name":"采购"}'
|
|
218
|
+
weaver-work-cli --json contract run contract.compare.page --input-json '{"baseFileId":"9000","baseFileName":"原版.docx","compareFileId":"9001","compareFileName":"修订版.docx"}'
|
|
219
|
+
weaver-work-cli --json contract run contract.recommend.doc --input-json '{"content":"销售一套协同办公系统,含实施服务,金额80万"}'
|
|
146
220
|
weaver-work-cli --json contract run contract.request.create.prepare --input-json '{"workflowId":"12345","requestname":"WB-SKILL-TEST 销售合同"}'
|
|
147
221
|
weaver-work-cli --json contract run contract.request.create.apply --input-json '{"workflowId":"12345","requestname":"WB-SKILL-TEST 销售合同","continuation":"PREPARE_CONTINUATION","confirm":true}'
|
|
148
222
|
```
|
|
@@ -154,6 +228,10 @@ weaver-work-cli contract schema
|
|
|
154
228
|
weaver-work-cli --json contract run contract.type.tree
|
|
155
229
|
weaver-work-cli --json contract run contract.subject.app --input-json '{"tag":"合同管理"}'
|
|
156
230
|
weaver-work-cli --json contract run contract.workflow.query --input-json '{"workflowName":"销售合同起草","status":"1"}'
|
|
231
|
+
weaver-work-cli --json contract run contract.review.upload --input-json '{"paths":["/data/contracts/销售合同.docx"]}'
|
|
232
|
+
weaver-work-cli --json contract run contract.review.export --input-json '{"fileId":"12345","sclx":"1,2,3"}'
|
|
233
|
+
weaver-work-cli --json contract run contract.compare.page --input-json '{"baseFileId":"9000","baseFileName":"原版.docx","compareFileId":"9001","compareFileName":"修订版.docx"}'
|
|
234
|
+
weaver-work-cli --json contract run contract.recommend.doc --input-json '{"content":"销售一套协同办公系统,含实施服务,金额80万"}'
|
|
157
235
|
weaver-work-cli --json contract run contract.request.create.prepare --input-json '{"workflowId":"12345","requestname":"WB-SKILL-TEST 销售合同"}'
|
|
158
236
|
weaver-work-cli --json contract run contract.request.create.apply --input-json '{"workflowId":"12345","requestname":"WB-SKILL-TEST 销售合同","continuation":"PREPARE_CONTINUATION","confirm":true}'
|
|
159
237
|
```
|
|
@@ -162,7 +240,9 @@ weaver-work-cli --json contract run contract.request.create.apply --input-json '
|
|
|
162
240
|
|
|
163
241
|
- 禁止绕过本 skill 的命令面自行复刻旧版「今承达」接口文档里的裸调用,所有能力必须走 `weaver-work-cli contract`。
|
|
164
242
|
- 禁止 curl、fetch、浏览器自动化或直接访问 E10 `/api/ebd/**`、`/api/ebuilder/**`、`/api/workflow/**`。
|
|
165
|
-
-
|
|
243
|
+
- 禁止绕过 CLI 读取或复制其运行时凭据;用户身份与请求上下文由 CLI 从会话注入,业务输入不传身份字段。
|
|
166
244
|
- 禁止读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
167
|
-
-
|
|
245
|
+
- 企业资信:`contract.credit.page` 只负责打开资信页面,**不返回**工商、诉讼、被执行、变更、监控等数据;`contract.credit.query` / `contract.credit.change` / `contract.credit.monitor` 源资料缺少接口契约,未实现。
|
|
168
246
|
- 撤回/退回流程:源资料只提及接口存在,未给出路径与参数,未实现。
|
|
247
|
+
- 打开页面 ≠ 完成业务:不得把"已打开审查页"报告成"审查完成",也不得把"已打开流程页"报告成"流程已发起"。
|
|
248
|
+
- 审查报告与比对报告的**文件生成**(Markdown/HTML/Office)由 Agent 在工作区完成;CLI 只提供结构化审查记录与差异结果,禁止用空内容拼报告充数。
|