weaver-work-cli 0.1.29 → 0.1.31
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-U766FTFH.js +2537 -0
- package/dist/chunks/archive-oa-DMWEKX3L.js +1317 -0
- package/dist/chunks/asset-TCR7VDEV.js +2109 -0
- package/dist/chunks/attachment-content-AQNX5N3S.js +23 -0
- package/dist/chunks/blog-EVZWGDVM.js +2157 -0
- package/dist/chunks/caizhilian-JOWS6SL5.js +10087 -0
- package/dist/chunks/calendar-5WNCV66Q.js +1195 -0
- package/dist/chunks/chunk-2DUV44UX.js +15606 -0
- package/dist/chunks/chunk-324YPTC2.js +1607 -0
- package/dist/chunks/chunk-65QMVWHS.js +231 -0
- package/dist/chunks/chunk-6V7ZLF34.js +387 -0
- package/dist/chunks/chunk-AC7KJWC5.js +358 -0
- package/dist/chunks/chunk-AJ62BGAW.js +29 -0
- package/dist/chunks/chunk-BUSC6UAE.js +43 -0
- package/dist/chunks/chunk-CVZ2JOSW.js +62 -0
- package/dist/chunks/chunk-D4LTJSJD.js +477 -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-GCG2NMWR.js +703 -0
- package/dist/chunks/chunk-GPMFD4RD.js +75 -0
- package/dist/chunks/chunk-H3WDBYJW.js +508 -0
- package/dist/chunks/chunk-H6XSTSLM.js +2357 -0
- package/dist/chunks/chunk-J7RJTZSV.js +5556 -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-R2IJAK7T.js +464 -0
- package/dist/chunks/chunk-R7O5PUWO.js +205 -0
- package/dist/chunks/chunk-RCGYCOMG.js +6962 -0
- package/dist/chunks/chunk-VZTXRG6X.js +403 -0
- package/dist/chunks/chunk-WHD4XMRP.js +161 -0
- package/dist/chunks/chunk-YLCYX7LE.js +371 -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-NJ4YK6CC.js +2276 -0
- package/dist/chunks/ehr-MMYN36VA.js +5241 -0
- package/dist/chunks/employee-SAK2QYXX.js +11 -0
- package/dist/chunks/esb-HIWHOU7Q.js +141 -0
- package/dist/chunks/fna-KBACQTA5.js +1444 -0
- package/dist/chunks/host-3OHS5QUX.js +21 -0
- package/dist/chunks/host-IG6KEH5Q.js +19 -0
- package/dist/chunks/host-KQL5N4HO.js +23 -0
- package/dist/chunks/host-LLSZQCWR.js +17 -0
- package/dist/chunks/hrm-LYEC67ZQ.js +244 -0
- package/dist/chunks/im-RN2UKAEU.js +252 -0
- package/dist/chunks/invoice-EEPHLAF6.js +5179 -0
- package/dist/chunks/jiuchuanhui-WVVZYSJE.js +1940 -0
- package/dist/chunks/lazy-dispatch-MDOFFL2S.js +28 -0
- package/dist/chunks/mail-LNQLTF6L.js +2695 -0
- package/dist/chunks/meeting-XSD3BDVQ.js +504 -0
- package/dist/chunks/msg-parse-4GSQ2WTO.js +41 -0
- package/dist/chunks/okr-TMWTIU2K.js +2482 -0
- package/dist/chunks/plan-A2FSFA7T.js +2025 -0
- package/dist/chunks/project-T26QLBQF.js +1361 -0
- package/dist/chunks/registry-2VLUAESA.js +14 -0
- package/dist/chunks/registry-JCFEYXOE.js +18 -0
- package/dist/chunks/registry-NYPYMZXG.js +16 -0
- package/dist/chunks/registry-Q7OQJ3SU.js +19 -0
- package/dist/chunks/registry-ZJMJVWFA.js +19 -0
- package/dist/chunks/room-recommend-UR4ZDZS6.js +20 -0
- package/dist/chunks/schedule-5L2PM4M6.js +24 -0
- package/dist/chunks/state-Y2XBP6YE.js +15 -0
- package/dist/chunks/workflow-TR6PG2SL.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 +47 -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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# 会议模块全功能验证清单(
|
|
1
|
+
# 会议模块全功能验证清单(132 个 operation)
|
|
2
2
|
|
|
3
|
-
> **给执行方(其他智能体)的结论**:本 skill 通过 `weaver-work-cli` 暴露会议模块**全部
|
|
4
|
-
> (标准版 28 + EB 版
|
|
3
|
+
> **给执行方(其他智能体)的结论**:本 skill 通过 `weaver-work-cli` 暴露会议模块**全部 132 个 operation**
|
|
4
|
+
> (标准版 28 + EB 版 91 + 跨模式 13),**除本文「第 6 节 不在范围」列出的 8 项外,全部可在实测上验证完成**。
|
|
5
5
|
> 本文提供可直接照做的流程、逐条判据与负向用例;请按本文顺序执行,逐条留证据。
|
|
6
6
|
|
|
7
7
|
## 1. 先决条件(缺一不可)
|
|
@@ -106,8 +106,8 @@
|
|
|
106
106
|
| 50 | `meeting.eb.roomUsage.detail` | read | `id` | `R-DETAIL` | — |
|
|
107
107
|
| 51 | `meeting.eb.roomUsage.create.prepare` | read-before-write | `mt_id` | `W-PREP` | 记 `continuation` |
|
|
108
108
|
| 52 | `meeting.eb.roomUsage.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list;**表关联字段是 `room_id`** |
|
|
109
|
-
| 53 | `meeting.eb.roomUsage.delete.prepare` | read-before-write |
|
|
110
|
-
| 54 | `meeting.eb.roomUsage.delete.apply` | high-risk-write | `confirm`,`continuation` |
|
|
109
|
+
| 53 | `meeting.eb.roomUsage.delete.prepare` | read-before-write | **`mt_id`** | `W-PREP` | 2026-10-27 更正:按会议**批量删**,不是按 id |
|
|
110
|
+
| 54 | `meeting.eb.roomUsage.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 实测 45→41,删掉该会议全部占用 |
|
|
111
111
|
|
|
112
112
|
### 4.4 EB 版 · 签到 / 回执
|
|
113
113
|
|
|
@@ -167,8 +167,11 @@
|
|
|
167
167
|
| 96 | `meeting.eb.decisionTask.list` | read | — | `R-LIST`+`R-COUNT`;`data.progress.summary={total,done,overdue,inProgress,pending}`、`items[].progress.members[]` | 人员基准取主表 `executors`,**未跟进的执行人也计入 total 且算 pending** |
|
|
168
168
|
| 97 | `meeting.eb.decisionTask.update.prepare` | read-before-write | `id`,`detail1` | `W-PREP`;`finish_status` 非法枚举需报 `invalid_enum` | 记 `continuation` |
|
|
169
169
|
| 98 | `meeting.eb.decisionTask.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `decisionTask.list` 的 `detail1.finish_status`(改回未完成需传空格清空 `finish_date`) |
|
|
170
|
+
| 98a | `meeting.eb.decision.update.prepare` | read-before-write | `id` +(`mt_content` / `detail1`) | `W-PREP`;`detail1Mode=cover` 必须同时传 `detail1`,否则 `invalid_detail_mode` | 记 `continuation` |
|
|
171
|
+
| 98b | `meeting.eb.decision.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY`;cover 时 `operationinfo.operateType.detail1="cover"` | 回读 `decision.list`:概述文本 / 明细行数;**默认追加会多一行**,实测 16:46 验证 |
|
|
170
172
|
|
|
171
|
-
> **计数**:标准版 28
|
|
173
|
+
> **计数**:标准版 28 + EB 版 91 + 跨模式 13 = **132**(含 2026-10-27 议题 create、决议任务 create/delete、决议 update;2026-10-28 二维码 render、日程空闲 schedule.free、会议室推荐 room.recommend)。
|
|
174
|
+
> 本表历史新增项用 `98a/98b` 这类后缀编号,未整体重排;**operation 总数以 `weaver-work-cli meeting schema` 为准**。
|
|
172
175
|
|
|
173
176
|
### 4.7 跨模式(EB / 标准版都可用)
|
|
174
177
|
|
|
@@ -215,16 +218,21 @@ weaver-work-cli --json meeting run meeting.eb.meeting.create.prepare --input-jso
|
|
|
215
218
|
|
|
216
219
|
## 6. 不在范围(8 项,**不可验证**,需如实答复,禁止伪造)
|
|
217
220
|
|
|
221
|
+
> **2026-10-27 更新(本节部分条目已过时)**:
|
|
222
|
+
> - 纪要创建/更新/删除 **已实现**(`meeting.eb.minute.create/update/delete`,走 `create_mt_minute` 等自定义接口),不再需要 OpenAPI 兜底;
|
|
223
|
+
> - `meeting.eb.roomUsage.delete` **已可用**,但入参是 `mt_id`(按会议批量删),不是 `id`;
|
|
224
|
+
> - 其余条目(标准版会议室/类型管理、提前结束、扫码签到、回收站)仍成立。
|
|
225
|
+
|
|
218
226
|
| 功能 | 事实与证据 | 正确答复 |
|
|
219
227
|
|---|---|---|
|
|
220
|
-
| EB 会议纪要**创建 / 更新 / 删除** |
|
|
221
|
-
|
|
|
228
|
+
| EB 会议纪要**创建 / 更新 / 删除** | ✅ 2026-10-23 起已支持(`create_mt_minute` / `update_mt_minute` / `delete_mt_minute`) | 见 4.6 上方的纪要章节与 `meeting-minute-file.md` |
|
|
229
|
+
| ~~`meeting.eb.roomUsage.delete` 按 id 删~~ | ✅ 2026-10-27 已修正:该接口按 **`mt_id` 批量删除**(传 id 才报「批量操作数据条件不能为空」) | `meeting.eb.roomUsage.delete` 入参已改为 `mt_id` |
|
|
222
230
|
| 标准版会议室管理(增/改/删/锁定) | 服务端接口未实现 | EB 环境用 `meeting.eb.room.*`;标准版引导页面操作 |
|
|
223
231
|
| 标准版会议类型管理 | 服务端接口未实现 | EB 环境用 `meeting.eb.type.*` |
|
|
224
232
|
| 提前结束会议 `meeting.over` | 服务端为空实现(假成功),CLI 不提供 | 引导用户在系统页面结束 |
|
|
225
233
|
| 本人扫码签到(`signMeeting`)、签到二维码、大屏签到 | 依赖现场二维码票据 + 设备 IP,AI 代签破坏签到真实性 | 引导用户现场扫码/H5 签到 |
|
|
226
234
|
| 回收站(列表 / 还原 / 强制还原) | 本阶段未实现(`delete` 为软删,数据可还原但 CLI 无入口) | 引导用户到会议回收站页面操作 |
|
|
227
|
-
|
|
|
235
|
+
| ~~决议任务删除~~ | ✅ 2026-10-27 已支持:`delete_mt_decision_task`(实测验证:删完 `decisionTask.list` 条数减少);进度仍用 `decisionTask.update` 维护 | 删除只影响任务表,不影响决议概述 |
|
|
228
236
|
|
|
229
237
|
> 附加归属事实(避免误报):**排座在 EB 版没有该功能**;**标准版会议本身没有议题/纪要**(EB 独有);两套数据互不相通。
|
|
230
238
|
|
|
@@ -262,12 +270,12 @@ weaver-work-cli --json meeting run meeting.eb.meeting.create.prepare --input-jso
|
|
|
262
270
|
|
|
263
271
|
```text
|
|
264
272
|
你是会议模块的验证执行方。请读取本 skill 的 references/meeting-verification.md,按其中的顺序与判据,
|
|
265
|
-
对当前环境的会议功能做一次**全量验证**(标准版 28 + EB 版
|
|
273
|
+
对当前环境的会议功能做一次**全量验证**(标准版 28 + EB 版 91 + 跨模式 13,共 132 个 operation):
|
|
266
274
|
|
|
267
275
|
1. 先做先决条件 4 步(CLI 版本、共享规则、登录态、meeting.env.detect 判定 mode),并把结果报给我。
|
|
268
276
|
2. 按 mode 选择对应的一套 operation,逐条执行第 4 节表格中的判据;只读直接跑,
|
|
269
277
|
写入按「prepare → 我给确认 → apply → 回读 → 清理」四步走,**只用自建数据**(名称带 CLI-VERIFY- 前缀)。
|
|
270
|
-
3. 第 6 节的 8 项不在范围,**不要尝试**,如实说明即可;第 7 节的
|
|
278
|
+
3. 第 6 节的 8 项不在范围,**不要尝试**,如实说明即可;第 7 节的 15 个负向用例必须逐个跑。
|
|
271
279
|
4. 任何失败都要给出原始 error.type/subtype 与报错文案,禁止把失败写成"没有数据"。
|
|
272
280
|
5. 最后按第 8 节模板给我一份完整回执,并列出未清理干净的数据 id。
|
|
273
281
|
```
|
|
Binary file
|
|
@@ -92,6 +92,7 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
92
92
|
| 报销单创建 / 修改 | `workflow run workflow.createForm/createRequest`、`workflow.editLoad/editPrepare/editApply`(`weaver-e10-workflow` 技能) | `[reim-workflow.md](references/reim-workflow.md)` Step 3~6;命令契约见 `[workflow-create.md](../weaver-e10-workflow/references/workflow-create.md)` |
|
|
93
93
|
| 报销完整工作流编排、行为准则 | AI 内部 | `[reim-workflow.md](references/reim-workflow.md)` |
|
|
94
94
|
| 批量获取多张发票预填信息 | `invoice run invoice.reim.row-info-batch` | `[reim-api-reference.md](references/reim-api-reference.md)` |
|
|
95
|
+
| 相关客户 / 相关项目模糊搜索 | `invoice run invoice.reim.field.search` | `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`「相关客户模糊搜索」 |
|
|
95
96
|
| 报销 CLI operation 入参与返回值 | AI 内部 | `[reim-api-reference.md](references/reim-api-reference.md)` |
|
|
96
97
|
| 发票与事前申请匹配规则 | AI 内部 | `[reim-matching-rules.md](references/reim-matching-rules.md)` |
|
|
97
98
|
| 费用科目自动匹配规则 | AI 内部 | `[reim-expense-subject-rules.md](references/reim-expense-subject-rules.md)` |
|
|
@@ -117,10 +118,13 @@ cliHelp: "weaver-work-cli invoice --help"
|
|
|
117
118
|
- 编辑发票:`invoice.update.prepare` -> 用户确认 -> `invoice.update.apply`
|
|
118
119
|
- 删除发票:`invoice.delete.prepare` -> 用户确认 -> `invoice.delete.apply`
|
|
119
120
|
- 流程发票字段:已有 `fid` 或详情时,用 `invoice.browse-field.data` 生成浏览按钮对象;不要运行旧源码脚本或直接调接口。
|
|
120
|
-
- 报销填单(完整工作流见 `[reim-workflow.md](references/reim-workflow.md)`):先用 `invoice.reim.candidates.list`(按日期批量)/`invoice.list`/`invoice.get`/`invoice.reim.file-ocr.preview`
|
|
121
|
+
- 报销填单(完整工作流见 `[reim-workflow.md](references/reim-workflow.md)`):先用 `invoice.reim.candidates.list`(按日期批量)/`invoice.list`/`invoice.get`/`invoice.reim.file-ocr.preview` 获取发票(日期筛选默认 `consumption_tm_begin` / `consumption_tm_end`)-> 展示汇总并确认 -> `invoice.reim.requests.list` 只按开票日期和事前申请发起日期关联(只比日期不比钟点,发起日与开票日同一天算对上,默认绑定),一张发票同时落在多条上时让用户选 -> `invoice.reim.workflow.resolve` 得到报销工作流 -> 并行 `workflow.createForm`(`weaver-e10-workflow`,传 `{workFlowName}({workFlowId})`,**不传 `userQuestion`**,也不用 `workflow.createRequestDirect`)、`invoice.reim.row-info-batch`、`invoice.browse-field.data`(只传发票)-> 按规则组装 `data`(**`requestName` 与「报销事由」必传**,按 form-fill-rules 的标题/事由公式生成,禁止留用表单默认标题或留空;发票与事前申请只按时间关联,见 `[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)`;工作流是「总部费用报销」时,用本次 `createForm` 的 `historyRequestData` 在项目确认后带出合同号,**不要询问合同号**;相关客户和相关项目需要填写时同一次让用户一起输入,未确认不建单,见 `[reim-workflow.md](references/reim-workflow.md)` Step 4.4、Step 4.5;明细「费用说明」「费用明细」不写入 `data`,由发票联动带出)-> 直接 `workflow.createRequest` 存草稿(`action` 固定 `"draft"`,**不问用户「存草稿 / 提交审批」**,草稿由用户在 E10 核对后自己提交)-> 原样粘贴 `finalMarkdown` -> **必须做 Step 5.3**:查客户 / 项目是否被联动冲空(已确认值直接写回,不要先建空草稿再问)。创建成功后修改只能用 `workflow.editLoad` -> `workflow.editPrepare` -> 用户确认 -> `workflow.editApply`。
|
|
121
122
|
- 报销单创建/修改依赖同级的 `weaver-e10-workflow` 技能(`../weaver-e10-workflow/`);该技能不存在时停止并告知用户需要安装,不要改用其他方式创建报销单。
|
|
122
|
-
- **⚠️
|
|
123
|
-
- **⚠️
|
|
123
|
+
- **⚠️ 报销单不询问合同号。** 默认 `20260999`。用户本轮自己说了才用用户的;否则按已确认的相关项目,从 `historyRequestData` 里该项目最近一条带出。对不上或项目「不填」则用默认。带出的合同号不是 `20260999` 时,创建阶段承担主体不传。**相关客户和相关项目同一次让用户一起输入**,确认后再写入 `data`,禁止空着先建草稿,也不要拆成两轮。名称先 `invoice.reim.field.search`。明细「费用说明」不自己生成,交给发票联动。口径见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`「总部费用报销历史参考」「费用明细字段规则」。
|
|
124
|
+
- **⚠️ 明细列「费用明细」禁止填值**:`createForm` 的 `fields` 里名称是「费用明细」的明细列不要写入 `data`。只传「相关发票」,由发票联动带出。用户给了文字也不要写入。建单后这一列仍空,就说明联动没带出,不要补写。见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`「费用明细字段规则」。
|
|
125
|
+
- **⚠️ 明细「费用说明」禁止自己生成**:`createForm` 的 `fields` 里名称是「费用说明」或「摘要」的明细列不要写入 `data`。不要用 `fysm`、起止点、消费内容或话费账单说明去填。只传「相关发票」,由发票联动带出。用户给了文字也不要写入。建单后仍空,只说明联动没带出,不要补写。见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`「费用明细字段规则」。
|
|
126
|
+
- **⚠️ 明细「相关凭证」不允许赋值**:创建和修改都不写入 `data`,由「相关发票」联动带出。不做凭证配对,`invoice.browse-field.data` 只传发票。建单后仍空只告知联动没带出,不补写,也不让用户挂行程单。见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`「3. 相关凭证不赋值」。
|
|
127
|
+
- **⚠️ 主表「事前申请流程」不允许赋值**:创建报销单时不写入 `data.main`,保留空值。匹配到的事前申请只写到明细每行「相关流程」(`{requestname}({requestid})`)。见 `[reim-form-fill-rules.md](references/reim-form-fill-rules.md)`「主表字段规则」。
|
|
124
128
|
- **AI 开票(默认主链路,所有开票意图先走这条)**:`invoice.issuing.qys.list`(合同号传 `contractNo`,公司名等传 `keyword`;没有线索只问一句合同号或客户名)-> 按返回的 `groups`(一组 = 合同号 + 购方 = 一张流程)让用户选组 -> **购方无税号却是专票(`specialInvoiceWithoutTaxNo=true`)时硬拦截:没有税号只能开普票,请用户先在台账改为普票,不发起流程** -> 展示确认卡片(明确"只建草稿,不会直接开票";必填的「预计收款时间」在卡片里请用户从本月底 / 下月底 / 30 天后候选里选或直接给日期,不自己定默认值,**用户没给日期就不建草稿**)-> 用户确认 -> `workflow.createForm`(`weaver-e10-workflow`,按台账「核算公司」`sellerNames` 选择,名称必须完全相同:只有「上海亘岩网络科技有限公司」时传 `契约锁合同收款发票开具及快递申请(100003460000001852)`;是泛微网络、泛微软件、上海田亩、成都泛微、泛微国际、北京泛微、浙江泛微之一时传 `合同收款发票开具及快递申请(100003460000000214)`;为空或不在这份名单里时先问用户,选定前不建草稿。用户要退票、冲红或红冲时改为 `合同开票冲红流程(887410479139758085)`,不套用开票填单规则。**不传 `userQuestion`**,**不要按宽词“开票”检索**)-> 按 `[invoice-issuing-form-fill-rules.md](references/invoice-issuing-form-fill-rules.md)` 组装 `data`(用户说了就按用户的,没说就按默认值,例如本次开票金额默认 = 总金额、开票事由自动生成、所售产品版本号取明细规格类型(与下拉选项完全一致才填);「开票内容」只在 `契约锁合同收款发票开具及快递申请(100003460000001852)` 上按明细货物名称推断后传入,其他流程忽略该字段;明细每行只传「金额(含税)」,其余列(货物名称、明细行id、单价、规格类型、税率、总开票金额 / 已开票金额 / 未开票金额等)由合同号联动带出,多传会让总开票金额带不出来;明细「数量」和主表「开户行名称」「开户行银行帐号」创建时不传(数量会被联动写成税率选项 id;开户行会被写成名称账号混写串);其余购方信息由合同号联动带出,不传);`requestName` 按 `开票申请-{购方名称}-{合同号}` 必传 -> `workflow.createRequest`(`action` 固定 `"draft"`)-> 原样粘贴 `finalMarkdown`,再用 `linkageResult` 的「是否存在合同明细数据」「总开票金额」和「本次开票总金额」核对明细是否带出、本次填的开票金额是否一致(台账开票金额为含税金额)-> **创建后补正**:`workflow.editLoad` 读草稿。开户行名称 / 账号取分组里 CLI 拆好的 `purchaserBankName` / `purchaserBankAccount`(为空时按「,账号:」拆只读字段「开户行及帐号」),`workflow.editPrepare` **只传主表这两个字段**,用户确认后 `workflow.editApply`。只有契约锁开票流程才在创建时写入「开票内容」,不要再用编辑链改(`editPrepare` 会报错);没有匹配到选项时才提醒用户在 E10 选择。其他流程没有这个字段,不推断、不提醒。明细数量不经编辑链改(会多出一行):回复末尾把每行数量改成台账 `items[].quantity`(按「明细行id」对应)。创建成功后修改只走 `workflow.editLoad/editPrepare/editApply`,禁止重复创建。详见 `[invoice-issuing-workflow.md](references/invoice-issuing-workflow.md)`。
|
|
125
129
|
- **开票没有兜底链路(0.1.27 起)**:CLI 已移除 `invoice.issuing.make.prepare/apply`、`invoice.issuing.qys.prepare`、`invoice.issuing.result`,**不存在"直接开票/存待开台账"的接口**。用户说"直接开票""不走流程""存待开台账"时,一律走上面的主链路创建开票流程草稿,并向用户说明:开票必须经所选开票流程审批后由流程侧完成;数据不在待开票合同数据里时,提示用户先录入合同商品信息,再按主链路发起。
|
|
126
130
|
- 开票流程的创建/修改依赖同级 `weaver-e10-workflow` 技能;该技能不存在时停止并告知用户需要安装,**不要尝试用其他方式直接开票**。
|
|
@@ -197,7 +201,7 @@ weaver-work-cli --json invoice run invoice.ocr.preview --input-json '{"file":"./
|
|
|
197
201
|
weaver-work-cli --json invoice run invoice.import.prepare --input-json '{"file":"./invoice.pdf","validate":true,"syncToOa":true}'
|
|
198
202
|
weaver-work-cli --json invoice run invoice.import.apply --input-json '{"file":"./invoice.pdf","continuation":"PREPARE_CONTINUATION","confirm":true}'
|
|
199
203
|
weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fid":"12345"}'
|
|
200
|
-
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":
|
|
204
|
+
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100}'
|
|
201
205
|
```
|
|
202
206
|
|
|
203
207
|
macOS/Linux(bash/zsh):
|
|
@@ -210,7 +214,7 @@ weaver-work-cli --json invoice run invoice.ocr.preview --input-json '{"file":"./
|
|
|
210
214
|
weaver-work-cli --json invoice run invoice.import.prepare --input-json '{"file":"./invoice.pdf","validate":true,"syncToOa":true}'
|
|
211
215
|
weaver-work-cli --json invoice run invoice.import.apply --input-json '{"file":"./invoice.pdf","continuation":"PREPARE_CONTINUATION","confirm":true}'
|
|
212
216
|
weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fid":"12345"}'
|
|
213
|
-
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":
|
|
217
|
+
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100}'
|
|
214
218
|
```
|
|
215
219
|
|
|
216
220
|
## 不在本 skill 范围
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
## 输入
|
|
14
14
|
|
|
15
|
-
列表字段以 `weaver-work-cli invoice schema` 为准,字段语义与个人票夹一致。常用字段包括 `page_size`、`start_pos`、`content
|
|
15
|
+
列表字段以 `weaver-work-cli invoice schema` 为准,字段语义与个人票夹一致。常用字段包括 `page_size`、`start_pos`、`content`、购销方、消费日期(`consumption_tm_begin` / `consumption_tm_end`)、开票日期、金额、票种、查验状态、来源和排序。`sreim` 只有用户明确指定报销状态时才传;`bill_type` 只有用户明确要求查凭证时才传。报销默认按消费日期筛选。
|
|
16
16
|
|
|
17
17
|
`sreim` 是字符串类型的查询筛选参数:`"0"` 获取全部发票,`"1"` 发票报销中,`"2"` 报销完成,`"3"` 获取未报销发票,`"4"` 获取不可报销。用户没有明确要求“全部发票/已报销/报销中/不可报销”时,必须省略 `sreim`,让 CLI 默认传 `"3"` 查询未报销发票。
|
|
18
18
|
|
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
- `page_size`、`start_pos`
|
|
18
18
|
- `content`
|
|
19
|
-
- `date_begin`、`date_end
|
|
19
|
+
- `date_begin`、`date_end`(开票日期含当日;用户明确说“开票日期”时才传)
|
|
20
20
|
- `create_tm_begin`、`create_tm_end`(创建时间含当日)
|
|
21
|
+
- `consumption_tm_begin`、`consumption_tm_end`(消费日期含当日;报销默认用这对筛选)
|
|
21
22
|
- `payer_company`、`buyer_company`
|
|
22
23
|
- `payer_taxno`、`buyer_taxno`
|
|
23
24
|
- `code`、`number`
|
|
@@ -40,7 +41,7 @@ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"s
|
|
|
40
41
|
|
|
41
42
|
weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"sreim":"2"}'
|
|
42
43
|
|
|
43
|
-
weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"
|
|
44
|
+
weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"consumption_tm_begin":"2026-10-01","consumption_tm_end":"2026-10-27"}'
|
|
44
45
|
```
|
|
45
46
|
|
|
46
47
|
macOS/Linux(bash/zsh):
|
|
@@ -50,7 +51,7 @@ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"s
|
|
|
50
51
|
|
|
51
52
|
weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"sreim":"2"}'
|
|
52
53
|
|
|
53
|
-
weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"
|
|
54
|
+
weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0,"consumption_tm_begin":"2026-10-01","consumption_tm_end":"2026-10-27"}'
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
## 返回
|
|
@@ -63,8 +64,8 @@ weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"s
|
|
|
63
64
|
|
|
64
65
|
不要在输入里传 `flag`;即使传入也会被 CLI 忽略并固定为个人票夹。空筛选条件直接省略,不要把空字符串传给 integer 字段。除非用户明确要求全部或某个报销状态,否则不要传 `sreim`;除非用户明确要求凭证,否则不要传 `bill_type`。
|
|
65
66
|
|
|
66
|
-
**时间字段两种写法都接受**(0.1.15 起):`date_begin`/`date_end`/`create_tm_begin`/`create_tm_end` 既可以传 `"YYYY-MM-DD"
|
|
67
|
+
**时间字段两种写法都接受**(0.1.15 起):`date_begin`/`date_end`/`create_tm_begin`/`create_tm_end`/`consumption_tm_begin`/`consumption_tm_end` 既可以传 `"YYYY-MM-DD"`,也可以传秒级时间戳 integer(E10 `/api/inc/sync` 的原生格式)。CLI 会在本地归一成秒级时间戳:起始日按东八区 `00:00:00`;`consumption_tm_end` 按东八区当天 `23:59:59`(例如 `"2026-10-27"` → `1793116799`),其余结束日仍按零点。非法值直接报 `validation/input_invalid`,不会再透传到 E10 变成不透明的 `400 系统错误`。`page_size`/`start_pos`/`req_type`/`mask`/`mext` 同样会归一:数字串(如 `"20"`)可以,`"abc"`、`-1`、`1.5` 会被本地拦下。
|
|
67
68
|
|
|
68
69
|
> 0.1.14 及更早:CLI 不做本地归一,字符串日期会一路透传到 E10 并返回 `api/business_error`/`400 系统错误`。用 `doctor --e10` 的 package 字段确认版本。
|
|
69
70
|
|
|
70
|
-
> `invoice.reim.candidates.list` 的 `date_begin`/`date_end` 同样接受 `YYYY-MM-DD` 或秒级时间戳,与 `invoice.list`
|
|
71
|
+
> `invoice.reim.candidates.list` 的 `date_begin`/`date_end`/`consumption_tm_begin`/`consumption_tm_end` 同样接受 `YYYY-MM-DD` 或秒级时间戳,与 `invoice.list` 口径一致。报销默认传消费日期。
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
| 获取发票明细行预填信息 | `invoice.reim.row-info` / `invoice.reim.row-info-batch` | yepiaotong | read |
|
|
18
18
|
| 取发票字段对象 | `invoice.browse-field.data` | yepiaotong | read |
|
|
19
19
|
| 获取当前人员及上级(兜底) | `invoice.reim.employee-superiors` | yepiaotong | read |
|
|
20
|
+
| 相关客户 / 相关项目模糊搜索 | `invoice.reim.field.search` | yepiaotong | read |
|
|
20
21
|
| 载入报销表单 | `workflow.createForm` | workflow | read |
|
|
21
22
|
| 创建报销单(固定存草稿) | `workflow.createRequest` | workflow | high-risk-write |
|
|
22
23
|
| 修改已创建的报销单 | `workflow.editLoad` / `workflow.editPrepare` / `workflow.editApply` | workflow | read / read-before-write / high-risk-write |
|
|
@@ -25,30 +26,30 @@
|
|
|
25
26
|
|
|
26
27
|
## 处理链
|
|
27
28
|
|
|
28
|
-
1. 获取发票:已有 `fid` 时可用 `invoice.get`;已有 E10 `fileId` 时用 `invoice.reim.file-ocr.preview`;按日期批量报销用 `invoice.reim.candidates.list`(只取 `available`),按关键词/号码筛选用 `invoice.list
|
|
29
|
+
1. 获取发票:已有 `fid` 时可用 `invoice.get`;已有 E10 `fileId` 时用 `invoice.reim.file-ocr.preview`;按日期批量报销用 `invoice.reim.candidates.list`(只取 `available`),按关键词/号码筛选用 `invoice.list`,默认未报销发票。日期筛选默认用消费日期 `consumption_tm_begin` / `consumption_tm_end`。
|
|
29
30
|
2. 展示发票汇总,让用户确认哪些发票进入报销。
|
|
30
|
-
3. 用 `invoice.reim.requests.list`
|
|
31
|
+
3. 用 `invoice.reim.requests.list` 获取事前申请,再只按开票日期和事前申请发起日期关联。一张发票时间上只落在一条里就直接绑定;落在多条里,或没有开票日期,先让用户选。原始 ID、日期、金额必须逐字符保留。用户没有指定结束日期时不要传 `cusCreateDateEnd`,CLI 按东八区当天 + 1 天填入。传入的结束日 CLI 也会再 + 1 天后发给接口。
|
|
31
32
|
4. 用 `invoice.reim.workflow.resolve` 得到报销工作流,必要时按工作流分组。
|
|
32
|
-
5. 对每组并行调用 `workflow.createForm`(`workflow` 传 `{workFlowName}({workFlowId})`)、`invoice.reim.row-info-batch`、`invoice.browse-field.data
|
|
33
|
-
6. 按 [`reim-form-fill-rules.md`](reim-form-fill-rules.md) 组装 `createRequest` 的 `data
|
|
34
|
-
7.
|
|
33
|
+
5. 对每组并行调用 `workflow.createForm`(`workflow` 传 `{workFlowName}({workFlowId})`)、`invoice.reim.row-info-batch`、`invoice.browse-field.data`(只传发票的 `fid`,不传凭证)。
|
|
34
|
+
6. 按 [`reim-form-fill-rules.md`](reim-form-fill-rules.md) 组装 `createRequest` 的 `data`。差旅 / 外出报销时,每一行明细「相关流程」必须是 `{requestname}({requestid})`,没有事前申请就先让用户选,禁止空着建单。**相关客户和相关项目同一次让用户一起输入**(项目可「不填」),不要先建空草稿,也不要拆成两轮,不要询问合同号。用户给出名称时,先 `invoice.reim.field.search`:一条直接填 `名称(ID)`,多条让用户选,零条请用户换名称。合同号按已确认的项目从 `historyRequestData` 最近一条带出,对不上则用 `20260999`(见 [`reim-workflow.md`](reim-workflow.md) Step 4.4、Step 4.5)。明细「费用说明」「费用明细」「相关凭证」禁止写入,由「相关发票」联动自动填充。然后直接调用 `workflow.createRequest` 存草稿(`action` 固定 `"draft"`,不问用户「存草稿 / 提交审批」),结果原样粘贴 `finalMarkdown`。命中「话费补贴标准审批流程」或「话费报销」时,必须先读 [`reim-phone-subsidy-rules.md`](reim-phone-subsidy-rules.md),按月度标准核算实报金额,不能直接用发票金额填单。
|
|
35
|
+
7. 报销单创建成功后,先按 [reim-workflow.md](reim-workflow.md) Step 5.3 检查落库结果:客户 / 项目是否被联动冲空。已确认过的名称直接写回,不要再问。再用 `workflow.editLoad` → `workflow.editPrepare` → `workflow.editApply` 写回。不要重复创建同一组发票的报销单。用户主动改已有报销单时同样走这条修改链。
|
|
35
36
|
|
|
36
37
|
完整编排见 [`reim-workflow.md`](reim-workflow.md)。
|
|
37
38
|
|
|
38
39
|
## 命令
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
查询事前申请。下面示例里的 `cusCreateDateEnd` 是业务结束日,CLI 会再 + 1 天后发给接口。只查列表、用户没指定结束日期时,去掉该字段,CLI 按东八区当天 + 1 天填入:
|
|
41
42
|
|
|
42
43
|
Windows PowerShell:
|
|
43
44
|
|
|
44
45
|
```powershell
|
|
45
|
-
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":
|
|
46
|
+
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100,"requestname":"交通","cusCreateDateStart":"2026-07-01","cusCreateDateEnd":"2026-07-31"}'
|
|
46
47
|
```
|
|
47
48
|
|
|
48
49
|
macOS/Linux(bash/zsh):
|
|
49
50
|
|
|
50
51
|
```bash
|
|
51
|
-
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":
|
|
52
|
+
weaver-work-cli --json invoice run invoice.reim.requests.list --input-json '{"pageNo":1,"pageSize":100,"requestname":"交通","cusCreateDateStart":"2026-07-01","cusCreateDateEnd":"2026-07-31"}'
|
|
52
53
|
```
|
|
53
54
|
|
|
54
55
|
载入报销表单(拿 `continuation` 与可写字段 `fields`):
|
|
@@ -101,16 +102,18 @@ JSON
|
|
|
101
102
|
weaver-work-cli --json workflow run workflow.createRequest --input ./reim-create-request.json
|
|
102
103
|
```
|
|
103
104
|
|
|
104
|
-
示例里的字段 id 来自「总部费用报销」,实际一律以本次 `createForm` 返回的 `fields`
|
|
105
|
+
示例里的字段 id 来自「总部费用报销」,实际一律以本次 `createForm` 返回的 `fields` 为准;明细行的「相关发票」要放 `invoice.browse-field.data` 返回的发票对象数组;「相关凭证」不传,由发票联动带出。
|
|
105
106
|
|
|
106
107
|
## 输出处理
|
|
107
108
|
|
|
108
|
-
`workflow.createRequest` 在成功(`CREATED` / `CREATED_SUBMITTED`)、提交失败(`CREATED_SUBMIT_FAILED`)和缺必填(`NEEDS_INPUT`)时返回 `finalMarkdown
|
|
109
|
+
`workflow.createRequest` 在成功(`CREATED` / `CREATED_SUBMITTED`)、提交失败(`CREATED_SUBMIT_FAILED`)和缺必填(`NEEDS_INPUT`)时返回 `finalMarkdown`,**原样粘贴给用户**,不要自己重拼表格;链接只出现在回复文本里,不要主动打开。`CREATED` / `CREATED_SUBMIT_FAILED` 贴完后按 [reim-workflow.md](reim-workflow.md) Step 5.3 检查客户 / 项目是否被联动冲空。若返回 `partial/write_uncertain`,停止,不要重放;最多做一次只读查询或请用户在 E10 页面核对。
|
|
109
110
|
|
|
110
111
|
## 注意
|
|
111
112
|
|
|
112
113
|
载入表单的 `workflow.createForm` **不传 `userQuestion`**、也不用 `workflow.createRequestDirect`:报销的 `data` 由本技能规则组装,不用流程侧智能填参。AI 报销**一律存草稿**(`action:"draft"`),组装完直接调用 `workflow.createRequest`,不让用户选「存草稿 / 提交审批」;草稿由用户在 E10 里核对后自己提交。同一组发票创建成功后禁止再次创建,修改只能走 `workflow.edit*`。
|
|
113
114
|
|
|
114
|
-
|
|
115
|
+
相关客户和相关项目必须在建单前**一次**让用户一起填写(项目可「不填」),**禁止先建空草稿再问,也不要询问合同号**。出差/差旅流程需要具体相关客户,不能用「泛微上海」顶替。用户给出的名称先用 `invoice.reim.field.search` 消歧后再写入。合同号按已确认的项目从历史报销单带出,对不上则用 `20260999`。
|
|
116
|
+
|
|
117
|
+
明细「费用说明」「费用明细」禁止自己生成,由「相关发票」联动自动填充;落库后仍空也只告知,不要补写。
|
|
115
118
|
|
|
116
119
|
`invoice.reim.file-ocr.preview` 会让 E10 侧文件进入发票识别流程;如果 fileId 来自用户新上传或附件解析,先提醒用户文件内容可能进入大模型上下文,也可能发送到 E10/OCR 服务,并等待明确确认。
|