weaver-work-cli 0.1.8 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/dist/cmd/action.js +76 -0
- package/dist/cmd/index.js +2 -0
- package/dist/cmd/refs/index.js +103 -0
- package/dist/cmd/register.js +31 -0
- package/dist/cmd/root.js +1 -0
- package/dist/cmd/setup/index.js +25 -5
- package/dist/cmd/skills/index.js +37 -5
- package/dist/core/connector.js +54 -0
- package/dist/core/context.js +2 -1
- package/dist/core/input.js +48 -0
- package/dist/core/output.js +298 -3
- package/dist/core/refs.js +432 -0
- package/dist/core/state.js +26 -0
- package/dist/internal/e10/auth/commands.js +2 -2
- package/dist/internal/e10/auth/session.js +14 -0
- package/dist/internal/e10/auth/xiaoe.js +116 -51
- package/dist/internal/e10/request-runtime.js +5 -0
- package/dist/internal/skills/install.js +148 -28
- package/dist/internal/skills/reader.js +12 -9
- package/dist/shortcuts/blog/continuation.js +74 -0
- package/dist/shortcuts/blog/errors.js +60 -0
- package/dist/shortcuts/blog/host.js +175 -0
- package/dist/shortcuts/blog/index.js +324 -0
- package/dist/shortcuts/blog/manifest.js +415 -0
- package/dist/shortcuts/blog/operations/comment.js +125 -0
- package/dist/shortcuts/blog/operations/comments.js +31 -0
- package/dist/shortcuts/blog/operations/edit.js +131 -0
- package/dist/shortcuts/blog/operations/export.js +46 -0
- package/dist/shortcuts/blog/operations/like.js +80 -0
- package/dist/shortcuts/blog/operations/publish.js +157 -0
- package/dist/shortcuts/blog/operations/query-user.js +58 -0
- package/dist/shortcuts/blog/operations/query.js +96 -0
- package/dist/shortcuts/blog/operations/registry.js +54 -0
- package/dist/shortcuts/blog/operations/remind.js +176 -0
- package/dist/shortcuts/blog/operations/shared.js +330 -0
- package/dist/shortcuts/blog/operations/types.js +16 -0
- package/dist/shortcuts/blog/operations.js +9 -0
- package/dist/shortcuts/caizhilian/continuation.js +70 -0
- package/dist/shortcuts/caizhilian/errors.js +53 -0
- package/dist/shortcuts/caizhilian/host.js +190 -0
- package/dist/shortcuts/caizhilian/index.js +186 -0
- package/dist/shortcuts/caizhilian/manifest.js +42 -0
- package/dist/shortcuts/caizhilian/operations/api.js +801 -0
- package/dist/shortcuts/caizhilian/operations/confirm.js +75 -0
- package/dist/shortcuts/caizhilian/operations/files.js +306 -0
- package/dist/shortcuts/caizhilian/operations/form.js +170 -0
- package/dist/shortcuts/caizhilian/operations/handlers/collab.js +611 -0
- package/dist/shortcuts/caizhilian/operations/handlers/document.js +890 -0
- package/dist/shortcuts/caizhilian/operations/handlers/file-collection.js +346 -0
- package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +192 -0
- package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +570 -0
- package/dist/shortcuts/caizhilian/operations/handlers/folder.js +969 -0
- package/dist/shortcuts/caizhilian/operations/handlers/search.js +318 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +294 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-backup.js +423 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-encrypt.js +238 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-storage.js +364 -0
- package/dist/shortcuts/caizhilian/operations/handlers/system.js +106 -0
- package/dist/shortcuts/caizhilian/operations/registry.js +151 -0
- package/dist/shortcuts/caizhilian/operations/shared.js +408 -0
- package/dist/shortcuts/caizhilian/operations/specs.js +623 -0
- package/dist/shortcuts/caizhilian/operations/types.js +57 -0
- package/dist/shortcuts/caizhilian/operations.js +21 -0
- package/dist/shortcuts/contract/continuation.js +70 -0
- package/dist/shortcuts/contract/errors.js +62 -0
- package/dist/shortcuts/contract/host.js +205 -0
- package/dist/shortcuts/contract/index.js +318 -0
- package/dist/shortcuts/contract/manifest.js +596 -0
- package/dist/shortcuts/contract/operations/clause-reference.js +78 -0
- package/dist/shortcuts/contract/operations/form-info.js +371 -0
- package/dist/shortcuts/contract/operations/read.js +118 -0
- package/dist/shortcuts/contract/operations/registry.js +43 -0
- package/dist/shortcuts/contract/operations/request.js +300 -0
- package/dist/shortcuts/contract/operations/shared.js +133 -0
- package/dist/shortcuts/contract/operations/subject.js +157 -0
- package/dist/shortcuts/contract/operations/template.js +81 -0
- package/dist/shortcuts/contract/operations/types.js +7 -0
- package/dist/shortcuts/contract/operations/workflow.js +52 -0
- package/dist/shortcuts/contract/operations/write.js +131 -0
- package/dist/shortcuts/contract/operations.js +8 -0
- package/dist/shortcuts/hrm/index.js +83 -2
- package/dist/shortcuts/hrm/operations/employee.js +160 -30
- package/dist/shortcuts/hrm/operations/org.js +17 -3
- package/dist/shortcuts/hrm/operations/position.js +18 -2
- package/dist/shortcuts/index.js +5 -1
- package/dist/shortcuts/invoice/index.js +74 -36
- package/dist/shortcuts/invoice/manifest.js +674 -4
- package/dist/shortcuts/invoice/markdown.js +172 -0
- package/dist/shortcuts/invoice/operations/add.js +3 -3
- package/dist/shortcuts/invoice/operations/delete.js +2 -2
- package/dist/shortcuts/invoice/operations/get.js +10 -2
- package/dist/shortcuts/invoice/operations/import.js +2 -2
- package/dist/shortcuts/invoice/operations/registry.js +8 -1
- package/dist/shortcuts/invoice/operations/reim-auto.js +719 -0
- package/dist/shortcuts/invoice/operations/reim.js +85 -2
- package/dist/shortcuts/invoice/operations/shared.js +75 -8
- package/dist/shortcuts/invoice/operations/update.js +2 -2
- package/dist/shortcuts/invoice/operations/upload-and-validate.js +93 -0
- package/dist/shortcuts/invoice/operations/validate-preview.js +2 -1
- package/dist/shortcuts/invoice/projection.js +328 -0
- package/dist/shortcuts/meeting/host.js +18 -1
- package/dist/shortcuts/meeting/manifest.js +30 -18
- package/dist/shortcuts/meeting/operations/eb/catalog.js +390 -0
- package/dist/shortcuts/meeting/operations/eb/conflict.js +389 -0
- package/dist/shortcuts/meeting/operations/eb/factory.js +389 -0
- package/dist/shortcuts/meeting/operations/eb/index.js +22 -0
- package/dist/shortcuts/meeting/operations/env.js +8 -1
- package/dist/shortcuts/meeting/operations/registry.js +2 -0
- package/dist/shortcuts/meeting/operations/signs.js +216 -2
- package/dist/shortcuts/workflow/endpoints.js +2 -1
- package/dist/shortcuts/workflow/errors.js +8 -2
- package/dist/shortcuts/workflow/host.js +6 -3
- package/dist/shortcuts/workflow/operations/form.js +931 -589
- package/dist/shortcuts/workflow/operations/read.js +128 -205
- package/dist/shortcuts/workflow/operations/shared.js +21 -0
- package/dist/shortcuts/workflow/operations/write.js +750 -52
- package/dist/shortcuts/workflow/operations.js +36 -10
- package/docs/_catalog.md +6 -0
- package/docs/agent-invoice.md +5 -1
- package/docs/agent-io-channel-design.md +468 -0
- package/docs/agent-skill-install.md +9 -4
- package/docs/blog.md +123 -0
- package/docs/caizhilian.md +304 -0
- package/docs/contract.md +91 -0
- package/docs/e10-auth.md +2 -2
- package/docs/hrm.md +19 -9
- package/docs/invoice.md +5 -1
- package/docs/meeting.md +1 -1
- package/docs/operation-manual.md +15 -3
- package/docs/skill-review-2026-09-19.md +2 -2
- package/package.json +2 -2
- package/scripts/package-skill.mjs +32 -20
- package/skill-template/business-info.json +113 -14
- package/skill-template/domains/blog.md +24 -0
- package/skill-template/domains/caizhilian.md +22 -0
- package/skill-template/domains/jinchengda.md +23 -0
- package/skill-template/domains/meeting.md +1 -1
- package/skill-template/domains/workflow.md +1 -1
- package/skill-template/skill-template.md +1 -1
- package/skills/weaver-e10-blog/SKILL.md +111 -0
- package/skills/weaver-e10-blog/references/blog-comment.md +51 -0
- package/skills/weaver-e10-blog/references/blog-comments.md +39 -0
- package/skills/weaver-e10-blog/references/blog-default-permission.md +38 -0
- package/skills/weaver-e10-blog/references/blog-disabled-capabilities.md +11 -0
- package/skills/weaver-e10-blog/references/blog-edit.md +51 -0
- package/skills/weaver-e10-blog/references/blog-export.md +42 -0
- package/skills/weaver-e10-blog/references/blog-like.md +50 -0
- package/skills/weaver-e10-blog/references/blog-publish.md +52 -0
- package/skills/weaver-e10-blog/references/blog-query-user.md +45 -0
- package/skills/weaver-e10-blog/references/blog-query.md +49 -0
- package/skills/weaver-e10-blog/references/blog-remind.md +51 -0
- package/skills/weaver-e10-blog/references/blog-resolve-users.md +38 -0
- package/skills/weaver-e10-blog/references/source-manifest.json +1540 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +216 -0
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +106 -0
- package/skills/weaver-e10-caizhilian/references/collaboration.md +112 -0
- package/skills/weaver-e10-caizhilian/references/document.md +111 -0
- package/skills/weaver-e10-caizhilian/references/file-collection.md +136 -0
- package/skills/weaver-e10-caizhilian/references/file-upload.md +309 -0
- package/skills/weaver-e10-caizhilian/references/files.md +120 -0
- package/skills/weaver-e10-caizhilian/references/folder.md +118 -0
- package/skills/weaver-e10-caizhilian/references/org-browser.md +104 -0
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +410 -0
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +372 -0
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +399 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +603 -0
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +5079 -0
- package/skills/weaver-e10-caizhilian/references/withheld.md +93 -0
- package/skills/weaver-e10-caizhilian/references/write-protocol.md +120 -0
- package/skills/weaver-e10-calendar/SKILL.md +4 -3
- package/skills/weaver-e10-ebuilder-form/SKILL.md +4 -9
- package/skills/weaver-e10-ebuilder-form/references/context-routing.md +0 -9
- package/skills/weaver-e10-ebuilder-form/references/custom-api.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/fields-browser.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/list-nlist.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/openapi-read.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +1 -5
- package/skills/weaver-e10-esb/SKILL.md +2 -2
- package/skills/weaver-e10-esb/references/source-manifest.json +9 -9
- package/skills/weaver-e10-hrm/SKILL.md +54 -6
- package/skills/weaver-e10-hrm/references/employee.md +89 -15
- package/skills/weaver-e10-hrm/references/org.md +7 -4
- package/skills/weaver-e10-hrm/references/position.md +14 -7
- package/skills/weaver-e10-hrm/references/source-manifest.json +1 -1
- package/skills/weaver-e10-jinchengda/SKILL.md +166 -0
- package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +82 -0
- package/skills/weaver-e10-jinchengda/references/contract-clause-recommender.md +69 -0
- package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +78 -0
- package/skills/weaver-e10-jinchengda/references/contract-disabled-capabilities.md +27 -0
- package/skills/weaver-e10-jinchengda/references/contract-request-status.md +71 -0
- package/skills/weaver-e10-jinchengda/references/contract-request-write.md +94 -0
- package/skills/weaver-e10-jinchengda/references/contract-signing-subjects.md +89 -0
- package/skills/weaver-e10-jinchengda/references/contract-subject-create.md +77 -0
- package/skills/weaver-e10-jinchengda/references/contract-template-selector.md +66 -0
- package/skills/weaver-e10-jinchengda/references/contract-workflow-discovery.md +94 -0
- package/skills/weaver-e10-jinchengda/references/source-manifest.json +259 -0
- package/skills/weaver-e10-jiuchuanhui/SKILL.md +5 -11
- package/skills/weaver-e10-jucailin/SKILL.md +4 -3
- package/skills/weaver-e10-mail/SKILL.md +4 -11
- package/skills/weaver-e10-meeting/SKILL.md +66 -32
- package/skills/weaver-e10-meeting/references/meeting-change.md +5 -2
- package/skills/weaver-e10-meeting/references/meeting-create.md +2 -1
- package/skills/weaver-e10-meeting/references/meeting-eb.md +114 -0
- package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +9 -8
- package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +35 -7
- package/skills/weaver-e10-meeting/references/meeting-update.md +1 -1
- package/skills/weaver-e10-okr/SKILL.md +6 -11
- package/skills/weaver-e10-okr/references/source-manifest.json +3 -3
- package/skills/weaver-e10-plan/SKILL.md +3 -3
- package/skills/weaver-e10-plan/references/plan-collect-and-compose.md +1 -1
- package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +1 -1
- package/skills/weaver-e10-plan/references/source-manifest.json +13 -13
- package/skills/weaver-e10-qiyecheng/SKILL.md +4 -10
- package/skills/weaver-e10-qiyecheng/references/source-manifest.json +9 -9
- package/skills/weaver-e10-shared/SKILL.md +36 -25
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +10 -31
- package/skills/weaver-e10-shared/references/json-output-contract.md +20 -11
- package/skills/weaver-e10-shijingran/SKILL.md +2 -1
- package/skills/weaver-e10-shijingran/references/source-manifest.json +9 -9
- package/skills/weaver-e10-skill-maker/SKILL.md +4 -10
- package/skills/weaver-e10-skill-maker/references/business-skill-generation.md +5 -3
- package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +12 -27
- package/skills/weaver-e10-skill-maker/references/module-gap-audit-and-repair.md +17 -5
- package/skills/weaver-e10-skill-maker/references/source-update-detection.md +4 -27
- package/skills/weaver-e10-wenshuding/SKILL.md +5 -16
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +7 -7
- package/skills/weaver-e10-workflow/SKILL.md +32 -37
- package/skills/weaver-e10-workflow/references/source-manifest.json +39 -75
- package/skills/weaver-e10-workflow/references/workflow-batch.md +90 -29
- package/skills/weaver-e10-workflow/references/workflow-create.md +79 -109
- package/skills/weaver-e10-workflow/references/workflow-memory.md +19 -9
- package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -2
- package/skills/weaver-e10-workflow/references/workflow-query.md +38 -20
- package/skills/weaver-e10-workflow/references/workflow-share.md +18 -2
- package/skills/weaver-e10-workflow/references/workflow-view.md +3 -4
- package/skills/weaver-e10-yepiaotong/SKILL.md +75 -39
- package/skills/weaver-e10-yepiaotong/references/invoice-detail.md +22 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +3 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-output-view.md +135 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +15 -3
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +1 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-summarize.py +217 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-upload-and-validate.md +88 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-validation-preview.md +7 -2
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +89 -9
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +1 -0
- package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +70 -49
- package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +119 -0
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +55 -36
- package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +4 -0
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +149 -0
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +125 -5
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +430 -63
- package/skills/weaver-e10-yimiaoban/SKILL.md +4 -12
- package/skills/weaver-e10-yimiaoban/references/source-manifest.json +3 -3
- package/skills/weaver-e10-ziguanjia/SKILL.md +2 -1
- package/skills/weaver-e10-ziguanjia/references/ziguanjia-agent-entry.md +3 -3
- package/tools/weaver-skill-detector-1.0.13/SKILL.md +9 -9
- package/tools/weaver-skill-detector-1.0.13/references/checklist.md +3 -3
- package/tools/weaver-skill-detector-1.0.13/scripts/__pycache__/validate_skill.cpython-313.pyc +0 -0
- package/tools/weaver-skill-detector-1.0.13/scripts/validate_skill.py +98 -91
- package/scripts/sync-connector-skills.mjs +0 -172
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
| Operation | 风险 | 固定规则 |
|
|
12
12
|
| --- | --- | --- |
|
|
13
|
-
| `workflow.memoryPrompt` | read | 可选 `workflowId`;顺带返回 `oaContext`(OA 版本 + 当前用户身份),无需再单独查组织信息 |
|
|
13
|
+
| `workflow.memoryPrompt` | read | 可选 `workflowId`;顺带返回 `oaContext`(OA 版本 + **是否支持智能分组 `smartGrouping`** + 当前用户身份),无需再单独查组织信息 |
|
|
14
14
|
| `workflow.memoryExtract` | write | 高层抽取保存接口;`msgList` 或 `userMessage`+`assistantMessage` 二选一;返回真实 `saved` 结果,禁止 fire-and-forget |
|
|
15
15
|
|
|
16
16
|
## 输入
|
|
@@ -25,7 +25,12 @@
|
|
|
25
25
|
- `userMessage`(array of string,可选):用户消息列表,与 `msgList` 二选一。
|
|
26
26
|
- `assistantMessage`(array of string,可选):模型消息列表,与 `msgList` 二选一。
|
|
27
27
|
- `dynamicContext`(object,可选):动态上下文参数(合并进 dynamicContextParams)。
|
|
28
|
-
- `workflowId`(string
|
|
28
|
+
- `workflowId`(string,可选):**按"这条记忆是不是只对某个工作流成立"决定带不带**:
|
|
29
|
+
- ① 澄清**工作流本身**(业务别名、名称消歧、把口语简称落到具体工作流)⇒ **不要带**。这类事实跨工作流通用,属于全局 `memory.md`;带上 `workflowId` 会把它锁进该工作流维度,**而别名存在的意义恰是"还没有确定工作流时用它去找到工作流"**——锁进去后换个说法、换个工作流就查不到了。
|
|
30
|
+
- ② 澄清**该工作流内部**(表单字段与选项含义、节点与流转、提交节奏、审批规则与风险提醒)⇒ **带上**,抽取落到该工作流维度。
|
|
31
|
+
- **一句话判据:这条记忆换个工作流还成立吗?成立 ⇒ 不带;只在某个工作流里成立 ⇒ 带。**
|
|
32
|
+
- **保存「业务别名 → 工作流」映射时,ID 仍必须写进 `msgValue` 的事实句**(不要只依赖这个入参)——实测:别名条目的 `workflowId` 仍是「(待确认)」时,带 `workflowId` 的调用并没有把它补上。
|
|
33
|
+
- 维度**最终由服务端按 `msgValue` 语义与 `dynamicContextParams` 决定,CLI 只做透传**——带/不带 `workflowId` 不是"选维度"的开关,不要拿它当开关用。
|
|
29
34
|
- `memoryAppId`(string,可选):记忆应用 ID。
|
|
30
35
|
- `async`(boolean,可选):语义为同步发送并返回真实结果(禁止 fire-and-forget)。
|
|
31
36
|
|
|
@@ -98,14 +103,15 @@ weaver-work-cli --json workflow run workflow.memoryExtract --input ./mem-extract
|
|
|
98
103
|
## 返回
|
|
99
104
|
|
|
100
105
|
- memoryPrompt:`available`、记忆提示词、`oaContext`(可能缺失)。
|
|
101
|
-
- `oaContext.
|
|
106
|
+
- `oaContext.smartGrouping`:**当前环境是否支持「智能分组」**(布尔,由 CLI 按 OA 版本判定)。泛化待办查询**直接看它分流**:`true` → 先 `workflow.todoStat` 统计,再带 `planJson` 取数;`false` → 直接 `workflow.search`(CLI 自带分组统计)。**不要自己拿 `version` 比大小**;字段缺失(`oaContext` 为 `null`)时按 `false` 处理。
|
|
107
|
+
- `oaContext.version`:OA 版本(如 `10.0.9909.01`),**仅作背景信息**——判模式一律用 `smartGrouping`。
|
|
102
108
|
- `oaContext.user.position`:岗位;`oaContext.user.department`:部门;`oaContext.user.subcompany`:分部(可能为空,为空忽略);`oaContext.user.employeeId`:用户标识。
|
|
103
109
|
- `oaContext` 取不到时为 `null` 并带 `oaContextMissing: true`,不影响记忆主体。
|
|
104
110
|
- memoryExtract:`saved`(true/false 真实结果)。
|
|
105
111
|
|
|
106
112
|
## 记忆规则(保存时机与处理)
|
|
107
113
|
|
|
108
|
-
|
|
114
|
+
每轮完整实质任务结束后(输出最终回复前),必须自行判断本轮是否出现**新的、有价值的语义记忆**(例如用户新澄清/确认了具体工作流、字段名、字段选项;与已有记忆重复的不算,必填字段的填值偏好不算):
|
|
109
115
|
|
|
110
116
|
- **有** → 组装本轮"用户原始意图 + 澄清过程 + 确认结果"的消息列表并调用 `workflow.memoryExtract`(同步,`async` 语义为返回真实结果):
|
|
111
117
|
- `saved:true` → 用自然语言告知用户会记住什么(如"后续发起请假流程会默认按本次偏好填写"),不展示接口原文;
|
|
@@ -115,12 +121,12 @@ weaver-work-cli --json workflow run workflow.memoryExtract --input ./mem-extract
|
|
|
115
121
|
**硬禁令(必须遵守)**:
|
|
116
122
|
|
|
117
123
|
- **不允许只在思考中写"保存记忆"**:判断"有"后必须**实际调用** `workflow.memoryExtract` 命令,命令完成(拿到真实 `saved`)后再输出最终回复。只在思考/内心说"应该保存"而不执行命令 = 没保存,属于违规。
|
|
118
|
-
-
|
|
124
|
+
- 本次发起的工作流本身、业务别名、以及本次新确认的字段口径偏好(**「字段口径」指字段名、选项含义这类语义澄清,不含单据里填了什么值;必填字段的填值偏好不算**),只要符合开头「新的、有价值的」判据,就属于要保存的情形,不要漏。
|
|
119
125
|
- **别名条目的 `workflowId` 是「(待确认)」时,它是一张待办不是终态**:本轮只要把该别名唯一解析出了 `workflowId`(**`cards[].workflowId`** 或 `countDetails[].workflowId` 里就有),任务结束时**必须再保存一次把 ID 补上**,不要放着不管——否则下一轮读到的还是「(待确认)」,只能拿纯名称去试探,多命中还要再澄清一次。
|
|
120
126
|
|
|
121
127
|
消息列表由模型在本地组装并作为入参传入(`msgList` 或 `userMessage`+`assistantMessage`);可含多轮原始消息(尤其澄清链路),可精简无用消息(命令执行日志、大段接口原始返回、调试输出),不需要模型提前总结。
|
|
122
128
|
|
|
123
|
-
记不清字段结构时回读本文档,只用 schema
|
|
129
|
+
记不清字段结构时回读本文档,只用 schema 真实存在的字段名。`workflowId` **只在"这条记忆只对该工作流成立"时放**(别名/消歧类**不要放**,判据见「输入 · workflow.memoryExtract」;一次调用即可,不要 global/workflow 两次请求);**保存别名映射时把 ID 写进 `msgValue` 事实句**——写漏了就会留下「(待确认)」,而「(待确认)」是**待办不是终态**:后续任一轮只要把该别名唯一解析出 ID,就要再保存一次把它补掉。
|
|
124
130
|
|
|
125
131
|
**别名映射的保存口径(不要写漏 ID)**:`msgList` 每项的字段名固定为 `msgRole` / `msgValue`(不要写成 `role` / `content`);保存「业务别名 → 工作流」时,`msgValue` 里要写成可抽取的事实句,例如 `业务别名"问题流程"= 工作流"E10客户问题支持解决流程",workflowId=1003655203465764898`,并把同一个 ID 放进入参 `workflowId`。
|
|
126
132
|
|
|
@@ -129,16 +135,20 @@ weaver-work-cli --json workflow run workflow.memoryExtract --input ./mem-extract
|
|
|
129
135
|
| 场景 | 取 ID 的位置 |
|
|
130
136
|
| --- | --- |
|
|
131
137
|
| `workflow.search` / plan 查到流程(**含用户只澄清了工作流名称、CLI 内部唯一匹配成功那一轮**) | `cards[].workflowId` / `cards[].workflowName`(V12.1.37 起是**唯一**的结构化取 ID 通道) |
|
|
132
|
-
| `workflow.
|
|
138
|
+
| `workflow.createForm` 澄清候选过工作流(`candidates[]`) | 候选对象的 `id` / `name`(`display` 是 `名称(ID)`,可直接转写进事实句) |
|
|
133
139
|
| `workflow.todoStat` 统计过 | `countDetails[].workflowId` |
|
|
134
140
|
|
|
135
141
|
> `finalMarkdown` 按契约**不渲染工作流名、更不含 ID**,所以上面三个结构化字段是 ID 的**唯一出处**;"最终以 `finalMarkdown` 为准"指的是**渲染呈现**,不是让你只读 `finalMarkdown`。
|
|
136
142
|
|
|
137
143
|
## 三类记忆职责(保存时按维度选 `workflowId`)
|
|
138
144
|
|
|
145
|
+
**先按上面「`workflowId` 的判据」决定带不带,再按本表确认归属**——两者口径一致,冲突时以"这条记忆换个工作流还成立吗"为准:
|
|
146
|
+
|
|
139
147
|
- **user.md**(用户画像):稳定身份信息、展示偏好、协作方式、沟通风格、通用风险确认偏好。**适合**:不展示 requestId、不输出统计区块、中文简洁回复、异常直接停止。**不适合**:workflowId、fieldId、工作流审批规则、业务别名到工作流映射。
|
|
140
|
-
- **memory.md
|
|
141
|
-
- **workflow:{workflowId}
|
|
148
|
+
- **memory.md**(长期记忆):跨项目稳定事实、经验教训、通用工作流、工具配置、反复出现的规律。**适合**:**业务别名与工作流消歧(不带 `workflowId`)**、跨流程优先级规律、通用查询经验、接口使用教训。**不适合**:单个工作流关注字段、单个工作流审批规则、用户沟通风格。
|
|
149
|
+
- **workflow:{workflowId}**(工作流维度):单工作流专项记忆。**适合**:**该工作流内部**的字段偏好、选项含义、节点与流转、摘要偏好、优先级与处理节奏、审批规则、风险提醒。**不适合**:其他工作流规则、全局用户画像、临时 requestId、**业务别名到工作流的映射**(映射属于全局 `memory.md`——它要在"工作流还没确定"时就能被读出来用)。
|
|
150
|
+
|
|
151
|
+
> **别名映射只落 `memory.md`(全局),不要放进 `workflow:{workflowId}`**:这是历史上最容易混的一处——别名被锁进某个工作流维度后,"用别名找流程"这条链路在该工作流之外就断了。
|
|
142
152
|
|
|
143
153
|
## 记忆消费方式(影响哪些行为)
|
|
144
154
|
|
|
@@ -109,13 +109,13 @@ weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requ
|
|
|
109
109
|
Windows PowerShell:
|
|
110
110
|
|
|
111
111
|
```powershell
|
|
112
|
-
weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requestId":"1307945196792242242","action":"forceOver","opinion":"业务终止"
|
|
112
|
+
weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requestId":"1307945196792242242","action":"forceOver","opinion":"业务终止"}'
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
macOS/Linux(bash/zsh):
|
|
116
116
|
|
|
117
117
|
```bash
|
|
118
|
-
weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requestId":"1307945196792242242","action":"forceOver","opinion":"业务终止"
|
|
118
|
+
weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requestId":"1307945196792242242","action":"forceOver","opinion":"业务终止"}'
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
### 删除流程到回收站
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# 流程查询(workflow.search / workflow.todoStat)
|
|
2
2
|
|
|
3
|
-
> **分段索引 —— 本文件约
|
|
3
|
+
> **分段索引 —— 本文件约 108 KB / 838 行,必须按段读:单次 `limit` 不超过 150 行,不要整读。**
|
|
4
4
|
> 单次读取过大会被宿主落盘、只回一小段预览,而那个落盘文件**不可读**(去读它只会拿到 `Permission … has been denied`,白费一轮);读不全时回到本文件按行段重读即可。
|
|
5
5
|
>
|
|
6
6
|
> | 段落 | 行区间 | 读取方式 |
|
|
7
7
|
> | --- | --- | --- |
|
|
8
|
-
> | **契约段**:本索引 + Operation + 输入参数(分类 + 大分类判定 / 筛选 / 时间 / filterFields / 分页排序)+
|
|
9
|
-
> | `planJson` 批量编排 |
|
|
10
|
-
> | 汇报式分组骨架 + 七个维度 +
|
|
11
|
-
> | 智能分组示例(各业务域样例,**仅供格式参照,不要照抄内容**) |
|
|
12
|
-
> | **异常返回处理 + 澄清后回传**(澄清信封、修正指令、认证失效) |
|
|
13
|
-
> | 调用示例 |
|
|
14
|
-
> | 返回(返回结构 / 错误码 / 幂等口径) |
|
|
15
|
-
> | 注意 |
|
|
8
|
+
> | **契约段**:本索引 + Operation + 输入参数(分类 + 大分类判定 / 筛选 / 时间 / filterFields / 分页排序)+ 执行模式与返回形态(含模式判定 `smartGrouping`)+ 待办时间默认语义 + 命令参数反思 + 执行流程 | 1-244 | **首轮并行读两次**:`offset 1 limit 123`、`offset 124 limit 123`(合计覆盖 1-246,含本段全部) |
|
|
9
|
+
> | `planJson` 批量编排 | 245-324 | 泛化待办 / 一次取多组数时读:`offset 245 limit 80` |
|
|
10
|
+
> | 汇报式分组骨架 + 七个维度 + 参与身份说明与分组去向 + 常见业务重点字段 + 汇总渲染规则 + 渲染红线 | 325-524 | 需要输出分组结果前读(分两次):`offset 325 limit 100`、`offset 425 limit 100` |
|
|
11
|
+
> | 智能分组示例(各业务域样例,**仅供格式参照,不要照抄内容**) | 525-639 | 一般**不用读** |
|
|
12
|
+
> | **异常返回处理 + 澄清后回传**(澄清信封、修正指令、认证失效) | 640-705 | 拿到 `ok:false` 或 `NEEDS_CLARIFICATION` 时读:`offset 640 limit 66` |
|
|
13
|
+
> | 调用示例 | 706-784 | 需要时读:`offset 706 limit 79` |
|
|
14
|
+
> | 返回(返回结构 / 错误码 / 幂等口径) | 785-824 | 处理 `ok` / `error` 时读:`offset 785 limit 40` |
|
|
15
|
+
> | 注意 | 825-838 | 需要时读:`offset 825 limit 14` |
|
|
16
16
|
>
|
|
17
17
|
> 行号以本索引为准;**改本文件时同步更新本索引**。按 `##` 标题定位同样有效。
|
|
18
18
|
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
`workflow.todoStat` **不支持的 `workflow.search` 专有参数**(不要传,会报错或被忽略):
|
|
33
33
|
|
|
34
34
|
- `current` / `pageSize`:本 operation 为**全量分组计数、不分页**(不消费分页参数);
|
|
35
|
-
- `totalOnly`、`conditionType`、`
|
|
35
|
+
- `totalOnly`、`conditionType`、`batchType`、`planJson`、`queryJson`:均为 `workflow.search` 的查询/编排专有开关。
|
|
36
36
|
|
|
37
37
|
它的入参只有**查询筛选条件类字段**(`category` / `subCategory` / `tabid` / `workflow` / `workflowTerm` / `creator` / `creatorDept` / `creatorSubcom` / `requestName` / `requestMark` / `requestLevel` / `requestId` / `exRequestId` / `nodeId` / `flowStatus` / `createTime` / `receiveTime` / `finishTime` / `filterFields` / `sort` 等,与 `workflow.search` 的筛选条件一致)——**无分页、无编排、无批量**。
|
|
38
38
|
|
|
@@ -142,7 +142,6 @@
|
|
|
142
142
|
| `conditionType` | `and` | 多条件的组合关系 |
|
|
143
143
|
| `totalOnly` | false | 仅查数量不查列表(批量操作第一步查数量用) |
|
|
144
144
|
| `batchType` | 无 | 过滤允许对应批量操作的数据,取值 `submit`/`urge`/`read`/`share`/`forward`/`reject`;批量查询配合 `pageSize:100` |
|
|
145
|
-
| `mode` | `auto` | 执行模式强制覆盖(`auto`/`legacy`/`smart`);**一般不需要传**,CLI 已按 OA 版本自动路由,仅在回归验证/排障时显式指定 |
|
|
146
145
|
|
|
147
146
|
批量查询(`batchType`)语义:`submit` 可批量提交、`urge` 可批量催办、`read` 可批量置已读、`share` 可批量共享、`forward` 可批量转发、`reject` 可批量退回;返回 `total` 用于判断是否还有下一轮。**这是"取操作目标"的查询方式,不是批量操作的前置步骤**:已有明确 `requestId`(上一轮查询结果 / 用户点名)时直接执行对应的批量单命令(`workflow.batchSubmit` / `batchRead` / `batchSupervise` / `batchShare` / `batchForward` / `batchReject`),只有目标是新范围、或命令报 `batch_gate_required` 时才用它取 ID。
|
|
148
147
|
|
|
@@ -160,7 +159,9 @@ CLI 按 OA 版本自动路由,**两种模式的返回形态不同,按实际
|
|
|
160
159
|
| 序号定位 | 分组场景须显式传 `group`(`urgent`/`overdue`/`pending`)+ `index`;显式小分类时只传 `index` | 只传 `index`,不传 `group` |
|
|
161
160
|
| 分组标题 | 由 CLI 输出(`### 组名(共 N 条,第 X 页显示 M 条)`) | 由模型书写(`## 组名(N 条)`) |
|
|
162
161
|
|
|
163
|
-
`
|
|
162
|
+
**模式从哪看**:`workflow.memoryPrompt` 返回的 `oaContext.smartGrouping`(`true` = 智能分组模式,`false` = 低版本)。`workflow.search` **不返回**模式字段,**不要**为了判断模式额外调用命令,也**不要**自己拿版本号去比大小。
|
|
163
|
+
|
|
164
|
+
**模式怎么定**:一律以 `oaContext.smartGrouping` 为准——它是 CLI 按 OA 版本(基线 `10.0.9909.01`)算好的结论。**不要自己拿 `oaContext.version` 去比大小**(四段式逐段整数比较容易出错),`version` 只是背景信息;会话取不到版本时该值为 `false`,按低版本处理。
|
|
164
165
|
|
|
165
166
|
低版本模式的**探查/待阅接口异常时 CLI 直接失败返回**(`ok:false`),不会退化为「无超时/无紧急」——遇到这类失败按异常返回处理,**不要把它当作 0 条继续渲染**。
|
|
166
167
|
|
|
@@ -185,9 +186,9 @@ CLI 按 OA 版本自动路由,**两种模式的返回形态不同,按实际
|
|
|
185
186
|
|
|
186
187
|
# 智能分组(仅待办查询,OA ≥ `10.0.9909.01`)
|
|
187
188
|
|
|
188
|
-
|
|
189
|
+
**适用前提**:本节仅在 **`oaContext.smartGrouping === true`**(OA ≥ `10.0.9909.01`)时生效。`smartGrouping === false`(低版本)的待办查询**不执行本节**——直接 `workflow.search`,其返回自带统计行与分组标题,原样渲染即可。
|
|
189
190
|
|
|
190
|
-
|
|
191
|
+
**模式来源**:`workflow.memoryPrompt` 返回的 `oaContext.smartGrouping`(智能分组流程第一步本就读取记忆,**直接看这个布尔值即可,不要自己比版本号**)。`oaContext` 为 `null` 或字段缺失时按 `false`(低版本)处理,不要自行调用 whoami 或其他命令补齐。
|
|
191
192
|
|
|
192
193
|
**身份信息**:`oaContext.user.position`(岗位)/`department`(所属部门)/`subcompany`(所属分部)同源——`subcompany` **可能为空,为空时忽略分部**,不要臆造分部信息。这些身份信息用于「七个维度」分析与 ⑤ 重点流程判定。
|
|
193
194
|
|
|
@@ -195,9 +196,9 @@ CLI 按 OA 版本自动路由,**两种模式的返回形态不同,按实际
|
|
|
195
196
|
|
|
196
197
|
| 查询意图 | 必走路径 |
|
|
197
198
|
| --- | --- |
|
|
198
|
-
| 泛化待办查询(多工作流、未指明具体流程) |
|
|
199
|
+
| 泛化待办查询(多工作流、未指明具体流程) | **按 `oaContext.smartGrouping` 分流**:`false`(低版本)→ 直接 `workflow.search`(category=todo,**不带 `planJson`/`subCategory`**),CLI 已直接输出分组统计与卡片,**原样渲染即结束**;`true`(智能分组)→ 调 `workflow.todoStat` 统计 → 按「参与身份 → 分组去向表」+ 汇报式分组骨架规划 → 打包为一次带 `planJson` 的 `workflow.search` 取数 |
|
|
199
200
|
| 查询**单个工作流**的数据(用户意图聚焦某个工作流;或 `countDetails` 归并后仅剩单工作流) | **必须先做字段分组判断**(见下「按重点字段组织分组」):有可分层价值字段 → 按字段分组;确无价值字段 → 才可平铺 |
|
|
200
|
-
| `
|
|
201
|
+
| `oaContext.smartGrouping === false`(低版本 OA) | 不执行本节后续步骤——直接 `workflow.search`,CLI 已直接输出分组统计与卡片,原样渲染返回 |
|
|
201
202
|
|
|
202
203
|
> 判定只看**查询意图是否聚焦单个工作流的数据**,与数据来自哪个组无关——折叠组、非折叠组都可能包含多个工作流的数据,均按上表以意图为准走对应路径;不得因"该组是折叠组/展开组"而直接取数平铺。
|
|
203
204
|
|
|
@@ -209,7 +210,7 @@ CLI 按 OA 版本自动路由,**两种模式的返回形态不同,按实际
|
|
|
209
210
|
|
|
210
211
|
## 执行流程
|
|
211
212
|
|
|
212
|
-
1.
|
|
213
|
+
1. **先分流(看 `oaContext.smartGrouping`,不要探测、不要自己比版本号)**:泛化待办查询时——`smartGrouping === false`(低版本)→ **直接调 `workflow.search`(category=todo,不带 `planJson`/`subCategory`)**,CLI 已输出分组统计与卡片,**原样渲染即结束,不进入本节后续步骤**;`smartGrouping === true` → 先调用 `workflow.todoStat` 查询当前用户整体待办分组计数(按工作流 × 参与节点 × 参与身份三元组)再继续。**不要在 `smartGrouping === true` 之前先调 `workflow.todoStat`**——低版本会报 `todo_stat_requires_smart_mode`(错误 JSON 在 stderr、stdout 为空),纯属白费一次调用;如果查询意图是指向具体某个工作流的追问,可直接复用本对话之前 `workflow.todoStat` 结果中该工作流的工作流信息(`workflowId`/`workflowName`)与表单字段信息(`formFields`),不必重新调用;否则(泛化多工作流查询且已确认 smart 模式,或本对话尚无该工作流信息)必须先调用。
|
|
213
214
|
`countDetails` **行完整性由 CLI 保证**(行全量返回不随输出大小截断,大输出仅移除行内 `formFields`)——**无需自校验求和、无需读 `resultFile` 核对行数、也无需对 CLI 输出做管道截断**;`resultFile` 仅在需要对某工作流做**字段分组判断**(取其 `formFields`)时才读。
|
|
214
215
|
|
|
215
216
|
2. **规划分组结构与查询边界(先于任何查询锁定;既定即不得事后重组)**:**先分流查询意图**——
|
|
@@ -394,6 +395,23 @@ CLI 按 OA 版本自动路由,**两种模式的返回形态不同,按实际
|
|
|
394
395
|
|
|
395
396
|
## 参与身份说明
|
|
396
397
|
|
|
398
|
+
**`isRemark` 码位 ↔ 参与身份**(`workflow.search` 的 `cards[].isRemarkName` 与 `workflow.todoStat` 的 `countDetails[].isRemarkName` 都是这套身份;`todoStat` 的 `isRemarkName` 由服务端直接下发,列表侧的 `isRemarkName` 按本表由数字码位映射得出):
|
|
399
|
+
|
|
400
|
+
| 码位 | 参与身份 | 行为口径 |
|
|
401
|
+
| --- | --- | --- |
|
|
402
|
+
| `0` / `1` | 节点操作者 / 节点操作者(委托) | 正常待处理,可提交/退回/转办 |
|
|
403
|
+
| `10` / `11` | 意见征询接收人 / (委托) | 征询反馈 |
|
|
404
|
+
| `20` / `21` | 传阅接收人 / (委托) | 传阅需批示 |
|
|
405
|
+
| `30` / `31` | 抄送接收人 / (委托) | 抄送需提交 |
|
|
406
|
+
| `40` / `41` | 转发接收人 / (委托) | 转发需批注 |
|
|
407
|
+
| `60` / `61` | 传阅接收人不需反馈 / (委托) | 查看即已办(不需批示) |
|
|
408
|
+
| `70` / `71` | 抄送接收人不需反馈 / (委托) | 查看即已办(不需提交) |
|
|
409
|
+
| `80` / `81` | 转发接收人不需反馈 / (委托) | 查看即已办(不需批注) |
|
|
410
|
+
| `100` | —(不可操作) | 已处理完,`canSubmitRejectTransfer=false` |
|
|
411
|
+
|
|
412
|
+
- **尾位 `+1` 一律是「(委托)」变体**;上表**只覆盖有据可查的码位**——「超时指定干预人」「异常处理指定干预人」两族的码位尚未确证,**遇到未列出的码位不要推断身份**(列表侧返回空串)。
|
|
413
|
+
- 判身份一律看 `isRemarkName` **或查本表**,不要按节点名/流程名猜;`isRemark < 100` 才可操作,`100` 不可操作。
|
|
414
|
+
|
|
397
415
|
- **节点操作者**:需要审批流程的身份,拥有当前节点的审批操作权限,可对流程进行同意、驳回等处理。
|
|
398
416
|
- **节点操作者(委托)**:节点操作者的代理人,代为行使原审批人的全部审批权限,可代替本人完成节点审批操作。
|
|
399
417
|
- **超时指定干预人**:流程到达超时条件后,被指定介入处理流程的人员,有权限干预超时待办、推进流程流转。
|
|
@@ -637,7 +655,7 @@ CLI 按 OA 版本自动路由,**两种模式的返回形态不同,按实际
|
|
|
637
655
|
|
|
638
656
|
### 澄清后回传
|
|
639
657
|
|
|
640
|
-
名称类条件解析不出唯一对象时 CLI **不会静默放行**——统一判据如下(查询侧与发起侧 `
|
|
658
|
+
名称类条件解析不出唯一对象时 CLI **不会静默放行**——统一判据如下(查询侧与发起侧 `workflow.createForm` 同一套):
|
|
641
659
|
|
|
642
660
|
- **没匹配到数据 → 澄清**(工作流 0 命中;其余系统字段 0 命中则硬失败,见下表);
|
|
643
661
|
- **匹配到 1 个 → 不澄清**,直接用;
|
|
@@ -773,9 +791,9 @@ weaver-work-cli --json workflow run workflow.search --input-json '{"category":"t
|
|
|
773
791
|
| `type` | `workflowSearch`(单条)或 `workflowSearchPlan`(批量编排) |
|
|
774
792
|
| `total` | 命中总条数(用于翻页/批量循环) |
|
|
775
793
|
| `finalMarkdown` | **最终用户可见的渲染文本,直接原样输出**(卡片已含标题链接、状态徽标与「标签:值」元信息行)。本 operation **不再返回 `renderMarkdown`**(它与 `finalMarkdown` 内容重复,已被移除);`workflow.detail` 反过来只有 `renderMarkdown`、没有 `finalMarkdown`,两者不要混用 |
|
|
776
|
-
| `renderMode` | `smart`(智能分组)或 `legacy`(低版本);由 OA 版本自动路由 |
|
|
777
794
|
| `hasMore` / `current` / `pageSize` | 本页是否有更多 / 当前页 / 每页条数 |
|
|
778
|
-
| `cards` | 结构化条目数组(本 operation 的**唯一**结构化形态)。每条只含必要字段:`index`(序号定位)/ `requestId`(操作与详情)/ `requestMark`(用户可见编号)/ `flowName`(标题)/ `workflowId` + `workflowName`(工作流标识)/ `canSubmitRejectTransfer` + `isRemark` + `finished` + `overdue`(可操作性判断)。**渲染一律用 `finalMarkdown`**;渲染字段(`cardMeta`/`badgeObjects`/`badges`/`flowStatus`/`currentNode`/`creatorName`/`stayDuration`/`timeoutLabel` 等)与内部字段(`userMasterId`/`nodeid`)**已不再回显**——它们的内容都在 `finalMarkdown` 里渲染过了。**不存在 `cardItems`**(历史别名,已移除) |
|
|
795
|
+
| `cards` | 结构化条目数组(本 operation 的**唯一**结构化形态)。每条只含必要字段:`index`(序号定位)/ `requestId`(操作与详情)/ `requestMark`(用户可见编号)/ `flowName`(标题)/ `workflowId` + `workflowName`(工作流标识)/ `canSubmitRejectTransfer` + `isRemark` + **`isRemarkName`** + `finished` + `overdue`(可操作性判断)。**渲染一律用 `finalMarkdown`**;渲染字段(`cardMeta`/`badgeObjects`/`badges`/`flowStatus`/`currentNode`/`creatorName`/`stayDuration`/`timeoutLabel` 等)与内部字段(`userMasterId`/`nodeid`)**已不再回显**——它们的内容都在 `finalMarkdown` 里渲染过了。**不存在 `cardItems`**(历史别名,已移除) |
|
|
796
|
+
| `cards[].isRemarkName` | **当前用户在这条流程当前节点上的参与身份**(如 `节点操作者` / `抄送接收人` / `转发接收人不需反馈` / `传阅接收人(委托)`)。**这是判定"这条到底是不是抄送/传阅/转发给我的"的唯一可读依据**——用户问"抄送给我的有哪些""转发给我的是哪几条"时直接查本字段,**不要靠节点名、流程名或 `finalMarkdown` 的文字去猜**,也不要因为"卡片上看不出身份"就怀疑筛选没生效(`total` 与 `finalMarkdown` 是 CLI 最终交付,见「异常返回处理」)。⚠️ 列表接口的原始响应里**没有**这个字段(只有数字 `isRemark`),本字段**由码位映射得出**;未覆盖的码位返回**空串**(此时以 `workflow.todoStat` 的 `isRemarkName` 为准,不要臆断)。码位 ↔ 身份对照见「参与身份说明」 |
|
|
779
797
|
| `todoSummary` / `todoGroups` | **仅低版本模式的分组查询**返回:`todoSummary` 为各口径计数(`total` 之外含 `personalTotal`/`sharedTotal`/`overdueTotal`/`urgentTotal`/`forwardTotal`/`ccTotal`/`circulateTotal`),`todoGroups` 为实际输出的分组清单(`kind`/`label`/`total`/`current`/`displayed`) |
|
|
780
798
|
| `queryId` / `sessionMap` | 本次查询的序号映射标识(`index` 定位基于最近一次查询结果) |
|
|
781
799
|
| `resultFile` / `resultMdFile` / `largeOutputNotice` | **仅当输出超过 24 KB(美化口径)** 时出现(摆在结果**最前面**):完整结果已落盘。stdout **仍保留全量 `finalMarkdown`** ⇒ 渲染直接用 `finalMarkdown`、**不需要读文件**;只有需要逐条结构化明细(如逐条 `requestId`)时才从 `resultFile` 按需提取,并一次读完(不要 `\| head`/`\| tail`)。**出现这些字段时不要重跑命令**(结果一样,白烧一轮) |
|
|
@@ -88,13 +88,29 @@ weaver-work-cli --json workflow run workflow.shareApply --input-json '{"confirm"
|
|
|
88
88
|
Windows PowerShell:
|
|
89
89
|
|
|
90
90
|
```powershell
|
|
91
|
-
|
|
91
|
+
Set-Content -Encoding utf8 -LiteralPath .\share-limited.json -Value @'
|
|
92
|
+
{
|
|
93
|
+
"index": 3,
|
|
94
|
+
"shareObjects": ["{\"type\":\"user\",\"name\":\"张三\"}"],
|
|
95
|
+
"minSeclevel": "1",
|
|
96
|
+
"maxSeclevel": "3"
|
|
97
|
+
}
|
|
98
|
+
'@
|
|
99
|
+
weaver-work-cli --json workflow run workflow.sharePrepare --input .\share-limited.json
|
|
92
100
|
```
|
|
93
101
|
|
|
94
102
|
macOS/Linux(bash/zsh):
|
|
95
103
|
|
|
96
104
|
```bash
|
|
97
|
-
|
|
105
|
+
cat > ./share-limited.json <<'JSON'
|
|
106
|
+
{
|
|
107
|
+
"index": 3,
|
|
108
|
+
"shareObjects": ["{\"type\":\"user\",\"name\":\"张三\"}"],
|
|
109
|
+
"minSeclevel": "1",
|
|
110
|
+
"maxSeclevel": "3"
|
|
111
|
+
}
|
|
112
|
+
JSON
|
|
113
|
+
weaver-work-cli --json workflow run workflow.sharePrepare --input ./share-limited.json
|
|
98
114
|
```
|
|
99
115
|
|
|
100
116
|
## 返回
|
|
@@ -59,11 +59,10 @@
|
|
|
59
59
|
|
|
60
60
|
**B. 用户对流程具体内容提问**("审批人发表了什么意见/某字段是什么/为什么退回了/流程走到哪了")→ **不要原样输出完整详情**(三段堆出来对内容提问是噪音)。从 `renderMarkdown` / 返回数据里提取用户问的相关部分,用一段话直接回答;只引用相关的签字意见段、字段值或基础信息片段。后续用户明确要"看完整详情/打开流程"才输出完整 `renderMarkdown`。
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
签字意见每条两行(不论 A/B 场景,提取签字意见时按此格式组织):
|
|
63
63
|
|
|
64
64
|
1. 操作人、操作方式、操作时间。
|
|
65
|
-
2.
|
|
66
|
-
3. 签字意见。
|
|
65
|
+
2. 签字意见。
|
|
67
66
|
|
|
68
67
|
详情规则补充:
|
|
69
68
|
|
|
@@ -175,7 +174,7 @@ weaver-work-cli --json workflow run workflow.pageOpen --input-json '{"page":"vie
|
|
|
175
174
|
| `workflow.detail` | `renderMarkdown`(基础信息 + 表单内容 + 签字意见) | 直接原样输出,不改成 HTML/表格/多卡片;字段值原样展示,长文本保留换行,链接字段渲染为超链接 |
|
|
176
175
|
| `workflow.summary` | 业务摘要上下文 | 一句话概括业务事项 + 4–7 条要点;默认不体现发起人姓名 |
|
|
177
176
|
| `workflow.open` | `opened`、`requiresHostAction`、URL/clientAction | 仅 `opened=true` 才说已打开;`requiresHostAction=true` 时说明已生成宿主打开动作,等待客户端执行 |
|
|
178
|
-
| `workflow.requestLog` |
|
|
177
|
+
| `workflow.requestLog` | 签字意见数组(操作人/方式/时间、签字意见)、`hasMore` | 每条两行组织;仅 `hasMore=true` 才提示下一页 |
|
|
179
178
|
| `workflow.pageOpen` | `opened`、`requiresHostAction`、URL | 同 `open`;动态页按 `page` 生成对应地址 |
|
|
180
179
|
|
|
181
180
|
## 注意
|
|
@@ -5,7 +5,7 @@ display_name_en: Weaver Invoice
|
|
|
5
5
|
description: "泛微 E10 业票通发票管理:查询票夹、OCR/查验、附件、流程发票字段、报销填单、智能开票确认链。"
|
|
6
6
|
description_zh: "泛微 E10 业票通发票管理。支持查询个人/企业票夹、查看详情、上传、OCR/查验预览、下载附件、流程表单发票字段数据,通过 prepare/apply 确认链处理导入、新增、编辑、删除、报销单创建/更新、智能开票/存台账。"
|
|
7
7
|
description_en: "Weaver E10 Yepiaotong invoice skill for folder queries, detail lookup, OCR and validation previews, attachment downloads, workflow invoice field data, reimbursement form submission, and confirmed invoice issuing."
|
|
8
|
-
version: 1.0.
|
|
8
|
+
version: 1.0.3
|
|
9
9
|
author: 泛微网络科技股份有限公司
|
|
10
10
|
agent_created: true
|
|
11
11
|
requires:
|
|
@@ -13,7 +13,8 @@ requires:
|
|
|
13
13
|
cliHelp: "weaver-work-cli invoice --help"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [
|
|
16
|
+
**CRITICAL — 开始前 MUST 先用 Read 工具读取 `[../weaver-e10-shared/SKILL.md](../weaver-e10-shared/SKILL.md)`,其中包含安装、E10 认证、JSON 输出、超时与重试预算、非交互环境处置和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
17
|
+
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 `[../weaver-e10-shared/SKILL.md](../weaver-e10-shared/SKILL.md)`。
|
|
17
18
|
|
|
18
19
|
认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
19
20
|
所有命令通过 `weaver-work-cli --json invoice run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli invoice schema` 是 operation、字段和风险等级的合约来源。
|
|
@@ -22,6 +23,16 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
22
23
|
|
|
23
24
|
# 泛微E10业票通发票管理
|
|
24
25
|
|
|
26
|
+
## 执行预算(最小动作集,避免冗余读取与重复调用)
|
|
27
|
+
|
|
28
|
+
本文件在技能加载时已整体注入上下文,**不要再用 Read 读本 SKILL.md**;仅需核对 `version` / `agent_created` 时读前 15 行,且**修改本包内文件不必先确认 `agent_created`**(此处已声明 `true`)。
|
|
29
|
+
|
|
30
|
+
- **共享规则 `../weaver-e10-shared/SKILL.md` 同一会话只读一次**:内容已在本轮上下文时直接复用;仅新会话或内容明显过期时重读。
|
|
31
|
+
- **只读命中路由的那个 reference**。reference 是参数与字段的第一信息源;reference 已覆盖的参数不要再跑 `--help`,`schema` 只用于确认 operation 清单与风险等级。
|
|
32
|
+
- **单点查询压缩成三个动作**:读 1 个 reference → 1 条 CLI 命令 → 直接输出。已给出 `fid` / `number` 时禁止 `list → filter → get` 链路。
|
|
33
|
+
- **同一字段不重复查**:一轮内已有新鲜结果就复用,不要为"再确认一次"重跑同一个只读 operation。
|
|
34
|
+
- **改本包内 reference 时**,`Edit` 自身会读取原文件做精确匹配,不要在此之前额外 Read 一遍。
|
|
35
|
+
|
|
25
36
|
## 共享包依赖(发布与安装约束)
|
|
26
37
|
|
|
27
38
|
本包通过相对路径引用共享规则 `../weaver-e10-shared/`(SKILL.md 与 9 处 references 内联路径,合计 10 处)。这些引用**只有在共享包以同名目录 `weaver-e10-shared` 存在时才可解析**。
|
|
@@ -47,48 +58,68 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
47
58
|
|
|
48
59
|
**判定规则:** 只要最终动作是对业票通发票做查询、查看、上传、OCR、查验预览、下载、导入、新增、编辑、删除、流程表单发票字段、发票报销填单或开票/存台账,就归 `weaver-e10-yepiaotong`。只有当用户处理的是非发票类 E10 业务、通用工作流或尚未封装的业票通能力时,才不使用本 Skill。
|
|
49
60
|
|
|
61
|
+
**查验路由判断(常见误用):**
|
|
62
|
+
|
|
63
|
+
- 用户提供**文件/URL + 查验** → `invoice.upload-and-validate`(上传+OCR+查验一步到位)
|
|
64
|
+
- 用户提供**已有 fid + 查验** → `invoice.validate.preview`(仅适用于票夹已有发票)
|
|
65
|
+
- **不要**对尚未上传的文件使用 `invoice.validate.preview`,该命令需要 `fid`
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
50
69
|
## 选哪个命令
|
|
51
70
|
|
|
52
71
|
### 票夹管理(CLI 命令)
|
|
53
72
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
73
|
+
|
|
74
|
+
| 想做什么 | 命令 | 按需读取 reference |
|
|
75
|
+
| -------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- |
|
|
76
|
+
| 查看可用 operation、字段和风险等级 | `invoice schema` | `[invoice-agent-entry.md](references/invoice-agent-entry.md)` |
|
|
77
|
+
| 查询个人票夹 | `invoice run invoice.list` | `[invoice-personal-list.md](references/invoice-personal-list.md)` |
|
|
78
|
+
| 查询企业票夹 | `invoice run invoice.enterprise.list` | `[invoice-enterprise-list.md](references/invoice-enterprise-list.md)` |
|
|
79
|
+
| **让发票列表/详情直接可读(别写解析脚本)** | `invoice list --format markdown` / `invoice get --fid X --format markdown`;给程序消费用 `--view summary` / `--view detail` | `[invoice-output-view.md](references/invoice-output-view.md)` |
|
|
80
|
+
| 按 `fid` 或 `number` 查看详情 | `invoice run invoice.get` | `[invoice-detail.md](references/invoice-detail.md)` |
|
|
81
|
+
| 上传发票文件 | `invoice run invoice.upload` | `[invoice-file-upload.md](references/invoice-file-upload.md)` |
|
|
82
|
+
| OCR 预览,不保存到票夹 | `invoice run invoice.ocr.preview` | `[invoice-ocr-preview.md](references/invoice-ocr-preview.md)` |
|
|
83
|
+
| 查验已在票夹中的发票(必须已有 fid) | `invoice run invoice.validate.preview` | `[invoice-validation-preview.md](references/invoice-validation-preview.md)` |
|
|
84
|
+
| **上传文件并查验(上传+OCR+查验一步到位)** | `invoice run invoice.upload-and-validate` | `[invoice-upload-and-validate.md](references/invoice-upload-and-validate.md)` |
|
|
85
|
+
| 下载发票附件 | `invoice run invoice.download` | `[invoice-download.md](references/invoice-download.md)` |
|
|
86
|
+
| 准备/确认导入发票文件 | `invoice run invoice.import.prepare/apply` | `[invoice-import.md](references/invoice-import.md)` |
|
|
87
|
+
| 准备/确认手工新增发票 | `invoice run invoice.add.prepare/apply` | `[invoice-add.md](references/invoice-add.md)` |
|
|
88
|
+
| 准备/确认编辑发票 | `invoice run invoice.update.prepare/apply` | `[invoice-update.md](references/invoice-update.md)` |
|
|
89
|
+
| 准备/确认删除发票 | `invoice run invoice.delete.prepare/apply` | `[invoice-delete.md](references/invoice-delete.md)` |
|
|
90
|
+
| 生成流程表单发票浏览按钮 JSON | `invoice run invoice.browse-field.data` | `[invoice-browse-field-data.md](references/invoice-browse-field-data.md)` |
|
|
91
|
+
| 报销自动填单、报销单创建/更新 | `invoice run invoice.reim.`* | `[invoice-reim.md](references/invoice-reim.md)` |
|
|
92
|
+
| 报销完整工作流编排、行为准则 | AI 内部 | `[reim-workflow.md](references/reim-workflow.md)` |
|
|
93
|
+
| 批量获取多张发票预填信息 | `invoice run invoice.reim.row-info-batch` | `[reim-api-reference.md](references/reim-api-reference.md)` |
|
|
94
|
+
| 报销 CLI operation 入参与返回值 | AI 内部 | `[reim-api-reference.md](references/reim-api-reference.md)` |
|
|
95
|
+
| 发票与事前申请匹配规则 | AI 内部 | `[reim-matching-rules.md](references/reim-matching-rules.md)` |
|
|
96
|
+
| 费用科目自动匹配规则 | AI 内部 | `[reim-expense-subject-rules.md](references/reim-expense-subject-rules.md)` |
|
|
97
|
+
| 报销表单字段填充与 JSON 组装规则 | AI 内部 | `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)` |
|
|
98
|
+
| 话费补贴 / 话费报销硬拦截规则 | AI 内部 | `[reim-phone-subsidy-rules.md](references/reim-phone-subsidy-rules.md)` |
|
|
99
|
+
| 报销端到端示例 | 参考 | `[reim-examples.md](references/reim-examples.md)` |
|
|
100
|
+
| 智能开票或存入待开台账 | `invoice run invoice.issuing.make.prepare/apply` | `[invoice-issuing.md](references/invoice-issuing.md)` |
|
|
101
|
+
| 开票字段提取规则、税率推断、金额计算 | AI 内部 | `[invoice-issuing-field-rules.md](references/invoice-issuing-field-rules.md)` |
|
|
102
|
+
| 开票端到端示例 | 参考 | `[invoice-issuing-examples.md](references/invoice-issuing-examples.md)` |
|
|
103
|
+
| 共享、转让、标签或 schema 未列出的能力 | 无可用命令 | `[invoice-disabled-capabilities.md](references/invoice-disabled-capabilities.md)` |
|
|
104
|
+
|
|
80
105
|
|
|
81
106
|
处理链:
|
|
82
107
|
|
|
83
108
|
- 查票夹/详情:`invoice.list` 或 `invoice.enterprise.list` -> 必要时 `invoice.get`
|
|
84
109
|
- OCR 识别预览:`invoice.ocr.preview`;如果先上传,可复用 `invoice.upload` 返回的 `upload`
|
|
110
|
+
- **上传文件并查验(⚠️ 路由关键规则):**
|
|
111
|
+
- 用户提供了**文件/URL 并要求查验** → 用 `invoice.upload-and-validate`(上传 → OCR → 查验一步到位)
|
|
112
|
+
- 用户只说"查验"但给的是**已有 fid**(发票已在票夹中) → 用 `invoice.validate.preview`
|
|
113
|
+
- **绝对不要**对用户提供的文件/URL 使用 `invoice.validate.preview`,因为该命令需要已有 `fid`,文件还没上传时 `fid` 不存在
|
|
85
114
|
- 导入文件:先 `invoice.ocr.preview` 预览票面识别结果;用户确认导入后,默认用 `invoice.import.prepare` 且传 `validate=true`、`syncToOa=true` -> 用户确认 -> `invoice.import.apply` -> 按返回 `fid` 回查/报告。只有用户明确要求“跳过查验/不同步 OA”时,才使用 `validate=false` 或 `syncToOa=false`。
|
|
86
115
|
- 手工新增:`invoice.add.prepare` -> 用户确认 -> `invoice.add.apply`
|
|
87
116
|
- 编辑发票:`invoice.update.prepare` -> 用户确认 -> `invoice.update.apply`
|
|
88
117
|
- 删除发票:`invoice.delete.prepare` -> 用户确认 -> `invoice.delete.apply`
|
|
89
118
|
- 流程发票字段:已有 `fid` 或详情时,用 `invoice.browse-field.data` 生成浏览按钮对象;不要运行旧源码脚本或直接调接口。
|
|
90
|
-
-
|
|
91
|
-
-
|
|
119
|
+
- 报销快速路径(0.1.13 新增,流程为「总部费用报销」时优先用):查票分类 `invoice.reim.candidates.list` -> 用户确认范围 -> `invoice.reim.flow.create.auto-prepare`(或 `invoice.reim.template.build` + `flow.create.prepare`)-> 用户确认 -> `invoice.reim.flow.create.apply`,详见 `[reim-fast-path.md](references/reim-fast-path.md)`;明细字段与上级口径以该文档固化映射为准,其他流程仍走下面的手工路径。
|
|
120
|
+
- **⚠️ 报销单「合同编号」固定填 `20260999`**(除非用户当次明确给出别的合同号):`template.build` / `auto-prepare` 必须显式传 `contractNo`,不传时 `合同号(100003720000001376)` 会**整条缺失且 `warnings` 不提示**,等于静默留空;手工组装路径同样不能留空或放进 `unable_to_fill`。口径见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)` 主表字段映射。
|
|
121
|
+
- 报销填单(完整工作流见 `[reim-workflow.md](references/reim-workflow.md)`):先用 `invoice.list`/`invoice.get`/`invoice.reim.file-ocr.preview` 获取发票 -> 展示汇总并确认 -> 用 `invoice.reim.requests.list`、`invoice.reim.workflow.resolve`、`invoice.reim.form.structure`、`invoice.reim.row-info`(单张)或 `invoice.reim.row-info-batch`(多张,推荐)、`invoice.reim.employee-superiors` 组装报销单 JSON(匹配规则见 `[reim-matching-rules.md](references/reim-matching-rules.md)`,填单规则见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`,科目匹配见 `[reim-expense-subject-rules.md](references/reim-expense-subject-rules.md)`;命中话费补贴/话费报销时先读 `[reim-phone-subsidy-rules.md](references/reim-phone-subsidy-rules.md)`)-> `invoice.reim.flow.create.prepare` -> 用户确认 -> `invoice.reim.flow.create.apply`。创建成功后修改只能用 `invoice.reim.flow.update.prepare/apply`。
|
|
122
|
+
- 智能开票:Agent 读取 `invoice-issuing.md` 和 `invoice-issuing-field-rules.md`,从用户输入或附件中提取购方、税号、商品明细、金额和税率;资料不足时追问用户补齐,再执行 `invoice.issuing.make.prepare` -> 用户确认开票或存台账 -> `invoice.issuing.make.apply`。当前资料包没有客户档案查询 operation,不要调用 `invoice.customer.`*。
|
|
92
123
|
|
|
93
124
|
## 执行原则(减少误路由、误重试和无效消耗)
|
|
94
125
|
|
|
@@ -98,13 +129,16 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
98
129
|
- 列表默认先取小页,优先 `page_size=10`;用户没有要求全量时不要自动翻完整票夹
|
|
99
130
|
- 查询个人/企业票夹时,用户没有明确要求“全部发票/已报销/报销中/不可报销”就不要传 `sreim`;CLI 默认 `sreim="3"`,只查未报销发票
|
|
100
131
|
- 查询个人/企业票夹时,用户没有明确要求“凭证”就不要传 `bill_type`;CLI 默认 `bill_type=0`,只查发票
|
|
101
|
-
- 用户已经给出 `fid`
|
|
132
|
+
- 用户已经给出 `fid` 或 `number`(发票号码)时,不要先查列表再过滤,直接读 `[invoice-detail.md](references/invoice-detail.md)` 并用 `invoice.get`(两者都可直接传参)或对应 prepare;只有用户意图是“浏览/搜索票夹”而非“看这张票”时才先走 `invoice.list`
|
|
102
133
|
- 只有需要附件归属、可编辑/可删除状态或完整票面时,才补 `invoice.get`
|
|
103
134
|
|
|
104
135
|
### 1.5) 大结果只摘要给用户
|
|
105
136
|
|
|
106
137
|
- 当前 CLI 会把完整 JSON envelope 写 stdout;Agent 回复时不要原样贴完整 JSON
|
|
107
|
-
-
|
|
138
|
+
- **输出超过阈值(默认 24KB)时 CLI 会把完整结果暂存成 ref**:stdout 只剩预览 + `refId`,`operations` 之类的长数组会被截断。此时**不要**把预览当成完整结果解析,一律用 `weaver-work-cli refs get <refId> <JSON路径>`(如 `operations[2].outputViews` / `operations[0].name`)按需取字段。`refs show <refId>` 只对"小结果"可用:`invoice schema` 实测 231662 字节,`refs show` 会被直接拒绝并回显「结果太大,不能安全地一次显示」。
|
|
139
|
+
- **查询票夹时优先加 `--format markdown`(要展示给人看)或 `--view summary`(要喂给下游代码)**,一次调用即可得到可读清单,不要为此现写解析脚本;需要精确字段用 `--fields number,detailUrl`;旧版 CLI 用 `references/invoice-summarize.py` 兜底。**拿到 markdown 输出后要作为消息正文直接输出,不要用代码围栏包裹**(包上就退化成纯文本,号码链接失效)。完整规则见 `[invoice-output-view.md](references/invoice-output-view.md)`
|
|
140
|
+
- **发票号码必须附带可点击的超链接**:CLI 返回的列表项和详情中已包含 `detailUrl` 字段(格式为 `{baseUrl}/sp/inc/incDetail?fid=<fid>`)。Agent 向用户展示发票时,发票号码必须用 markdown 链接格式 `[发票号码](detailUrl)` 展示,让用户点击即可打开发票详情页。如果同时有发票代码,代码也附带同一链接。示例:`[00188205](https://e10.example.com/sp/inc/incDetail?fid=751293486469988353)`
|
|
141
|
+
- 列表最多先展示最相关的前 10 条,包含 `fid`、代码/号码(带超链接)、购销方、金额、日期、查验/报销状态和附件摘要
|
|
108
142
|
- 需要全量统计时,按 `start_pos` 分页读取并累计必要字段;说明已读取页数、命中数和是否还有更多
|
|
109
143
|
- OCR、详情或调试用完整响应过长时,优先落本地文件并向用户提供摘要和文件路径
|
|
110
144
|
|
|
@@ -121,8 +155,8 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
121
155
|
- 写请求已经发出后,遇到结果不确定必须停止;不要把 `.apply` 当成可重试读操作
|
|
122
156
|
- **错误为 `authentication`(未登录,如 `E10 auth not found`)或 `session_expired`(登录态失效)时:立即停止当前操作,不要用示例占位域名或自行猜域名登录,也不要盲目重试**。
|
|
123
157
|
- 认证失败后**先判定当前环境是否可交互**(能否向用户提问并等待回答、CLI 与浏览器是否同机、外部浏览器能否回调 `127.0.0.1:19800`):
|
|
124
|
-
- **不可交互**(容器 / 沙箱 / CI / 无 GUI / 无人值守):立即终止,不要调用宿主提问或弹框等待用户输入域名或选择 profile,直接读取并按共享规则 [
|
|
125
|
-
- **可交互**:读取共享规则 [
|
|
158
|
+
- **不可交互**(容器 / 沙箱 / CI / 无 GUI / 无人值守):立即终止,不要调用宿主提问或弹框等待用户输入域名或选择 profile,直接读取并按共享规则 `[../weaver-e10-shared/references/non-interactive-environment.md](../weaver-e10-shared/references/non-interactive-environment.md)` 处置,把完整登录命令交给用户在其本地终端执行。
|
|
159
|
+
- **可交互**:读取共享规则 `[../weaver-e10-shared/references/e10-auth-and-session.md](../weaver-e10-shared/references/e10-auth-and-session.md)`,用宿主提问/弹框让用户输入 E10 登录域名或选择已有 profile,完成登录后再继续原操作。
|
|
126
160
|
- 登录类命令必须带 timeout 限时(上限 300 秒 / 5 分钟,后台运行 + 限时观察):输出一旦出现 `Open browser login`、`Waiting for E10 authorization callback` 或 `Could not open browser automatically`,即判定已降级到浏览器 OAuth,立即终止该命令并反馈,不得继续等待。登录失败不自动重试。
|
|
127
161
|
- 需要浏览器登录时必须携带发起方标识 `--agent_type "<当前智能体名称>"`(授权确认页展示用;宿主无法确认名称时才可省略,交由 CLI 从环境变量推断)。
|
|
128
162
|
|
|
@@ -137,10 +171,10 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
137
171
|
|
|
138
172
|
1. **先停止盲目重试**,不要连续重复提交相同 `.apply`
|
|
139
173
|
2. 优先从以下角度解释:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
174
|
+
- 写请求可能已经到达服务端,但连接在结果确认前中断
|
|
175
|
+
- 服务端可能只处理了部分发票
|
|
176
|
+
- 写接口已返回成功,但详情回查失败或与预期不一致
|
|
177
|
+
- continuation、目标文件、目标发票或登录上下文可能已经变化
|
|
144
178
|
3. 如需确认,只补 **一次** 只读查询(例如 `invoice.get` 或列表查询),不要陷入 query/write 循环
|
|
145
179
|
4. 最终给用户明确结论、已知 `workflow.state`、成功/失败项和下一步人工确认建议,而不是继续无意义重试
|
|
146
180
|
|
|
@@ -173,12 +207,14 @@ weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fid
|
|
|
173
207
|
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":20}'
|
|
174
208
|
weaver-work-cli --json invoice run invoice.issuing.make.prepare --input-json '{"mode":"ledger","payload":{"invoiceType":"7","externalDocumentNo":"AI-EXAMPLE-001","purchaserName":"示例个人","totalAmount":100,"taxAmount":6,"totalAmountWithTax":106,"details":[{"goodsName":"信息技术咨询服务","taxRate":0.06,"amount":100,"amountWithTax":106,"taxAmount":6}]}}'
|
|
175
209
|
```
|
|
210
|
+
|
|
176
211
|
## 不在本 skill 范围
|
|
177
212
|
|
|
178
213
|
- 禁止加载原始 `weaver-e10-yepiaotong` Skill 代替 CLI。
|
|
179
214
|
- 已有 CLI 封装的能力(list/get/upload/OCR/import/add/update/delete/issuing/reim)禁止 curl、fetch、浏览器自动化或直接访问 E10 `/api/inc/*`,必须通过 CLI。
|
|
180
|
-
- 当前修正源资料未提供客户档案查询或红字发票红冲接口,`invoice.customer.*` 与 `invoice.red.*` 不属于可用 operation;遇到这类请求时读取 [
|
|
215
|
+
- 当前修正源资料未提供客户档案查询或红字发票红冲接口,`invoice.customer.*` 与 `invoice.red.*` 不属于可用 operation;遇到这类请求时读取 `[invoice-disabled-capabilities.md](references/invoice-disabled-capabilities.md)` 并说明当前 CLI 不支持绕过调用。
|
|
181
216
|
- 禁止读取或复制 CLI runtime 内部 Token、Cookie、ETEAMSID。
|
|
182
217
|
- 禁止读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
183
218
|
- 共享、转让和标签当前未纳入 CLI manifest;新版源资料已给出提交接口,但仍需要补稳定接收人/标签 ID 来源、写后回查和测试后再开放。
|
|
184
219
|
- 非发票类 E10 能力、通用流程编排、非业票通表单/审批/组织等业务不由本 Skill 承载。
|
|
220
|
+
|
|
@@ -10,6 +10,25 @@
|
|
|
10
10
|
| --- | --- |
|
|
11
11
|
| `invoice.get` | 优先用 `fid`;没有 `fid` 时可用 `number` 查询 |
|
|
12
12
|
|
|
13
|
+
## 要展示给用户时:`--format markdown`(首选)
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
weaver-work-cli invoice get --fid 12345 --format markdown
|
|
17
|
+
weaver-work-cli invoice get --number 26342000002783695141 --format markdown
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
用户直接给发票号码时,**不必先查列表**:`invoice get --number <号码> --format markdown` 可一次拿到同样的标头 + 字段表(已实测 0.1.20 可用)。
|
|
21
|
+
|
|
22
|
+
直接得到「标头 + 字段表」的 markdown:标头是 `**[发票号码](详情链接)** · 票种`(**号码本身即可点击**,直达 E10 发票详情页,不再单列 `[打开详情]` 行),字段表首两行固定为 `发票号码`(同一链接)与 `发票代码` —— 票面标识必须在「项目」列里可核对、可复制;数电票(全电发票)没有发票代码,如实显示 `—`,不要伪造。其后依次是开票日期、不含税金额、税额、价税合计、购销方、费用说明、开票人、查验标记、报销挂单、附件。**不要**再自己拼这些行;贴给用户时把这整段作为消息正文直接输出,不要用代码围栏包裹(包上会退化成纯文本,号码链接失效)。
|
|
23
|
+
|
|
24
|
+
需要给下游代码读时用 `--view detail`:语义字段平表(`data.items[]`),比 summary 多出 `attachments`(附件清单)、`expenseNote`(费用说明)、`issuer`(开票人)、`checkState`(查验标记,`0`=未做过查验登记,**与票面 `valid` 不是一个口径,不要混读**)。
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
weaver-work-cli --json invoice get --fid 12345 --view detail
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`--view detail` 只对 `invoice.get` 生效;`--format markdown` 与 `--json`、`--fields` 互斥(返回 `validation/input_conflict`)。
|
|
31
|
+
|
|
13
32
|
## 示例
|
|
14
33
|
|
|
15
34
|
Windows PowerShell:
|
|
@@ -30,7 +49,9 @@ weaver-work-cli --json invoice run invoice.get --input-json '{"number":"00188205
|
|
|
30
49
|
|
|
31
50
|
## 返回
|
|
32
51
|
|
|
33
|
-
`invoice.get`
|
|
52
|
+
`invoice.get` 返回服务端详情响应本身。每条 `infos[]` 项包含 `detailUrl`(如 `https://xxx/sp/inc/incDetail?fid=<fid>`),用于生成可点击的发票详情链接。常见字段包括 `infos[].info.fid`、`code`、`number`、`comm_info.pro`、`comm_info.price`、`comm_info.buyer`、`comm_info.payer`、`flist` 和 `modify_info`。交通类发票还可从 `infos[].info.from` / `infos[].info.to`(或 `ext.passengersService`)取出发地和目的地。
|
|
53
|
+
|
|
54
|
+
向用户展示发票详情时,**发票号码必须用 markdown 链接格式** `[号码](detailUrl)` 展示,让用户点击直接打开发票详情页。
|
|
34
55
|
|
|
35
56
|
## 注意
|
|
36
57
|
|
|
@@ -38,7 +38,9 @@ weaver-work-cli --json invoice run invoice.enterprise.list --input-json '{"page_
|
|
|
38
38
|
|
|
39
39
|
## 返回
|
|
40
40
|
|
|
41
|
-
返回 `items`、`total`、`totalAmount`、`totalAmountExcludingTax`、`hasMore` 和 `scope="enterprise"
|
|
41
|
+
返回 `items`、`total`、`totalAmount`、`totalAmountExcludingTax`、`hasMore` 和 `scope="enterprise"`。每条 item 包含 `detailUrl`(如 `https://xxx/sp/inc/incDetail?fid=<fid>`)。
|
|
42
|
+
|
|
43
|
+
向用户展示发票列表时,**发票号码必须用 markdown 链接格式** `[号码](detailUrl)` 展示,让用户点击直接打开发票详情页。
|
|
42
44
|
|
|
43
45
|
## 注意
|
|
44
46
|
|