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
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
|
|
36
36
|
| 常量 | 值 | 说明 |
|
|
37
37
|
|------|-----|------|
|
|
38
|
-
| 默认合同编号 | `"20260999"` |
|
|
39
|
-
| 非出差相关客户 | `"泛微上海(100504500000311504)"` |
|
|
38
|
+
| 默认合同编号 | `"20260999"` | **不向用户询问合同号。** 用户本轮自己说了才用用户的;否则用已确认相关项目在 `historyRequestData` 里对上的那条合同号(多条取最近一条);对不上或项目「不填」则用它。表单默认已是它时不必再传。合同号不是它时,承担主体以合同联动为准;相关客户 / 相关项目仍按 Step 4.5 一次问齐并写入 |
|
|
39
|
+
| 非出差相关客户 | `"泛微上海(100504500000311504)"` | 仅非出差且合同号仍是 `20260999` 时使用。合同号不是它、或出差单,必须先问用户,禁止空着先建草稿。见 [reim-form-fill-rules.md](reim-form-fill-rules.md#相关客户相关项目必须在建单前确认) |
|
|
40
40
|
| 发票金额 | 价税合计 `info.comm_info.price.total` | 报销金额字段一律填它;**不是** `price.amount` / `invoice.get` 的 `amount`(都是不含税) |
|
|
41
41
|
| 兜底费用科目 | `"其他-管理费用(100502270000000104)"` | 所有科目匹配策略均未命中时使用 |
|
|
42
42
|
| 人民币币种 | `"人民币(100001050000000001)"` | 明细每行必传(即使表单默认带出),否则字段联动失效,见 [reim-form-fill-rules.md](reim-form-fill-rules.md) |
|
|
43
43
|
| 报销方式默认值 | `"银行(个人报销)"` | Select 传选项名;表单默认带出时不传 |
|
|
44
44
|
| 全额红冲状态值 | `status = 8` | `comm_info.pro.status`;此类发票必须过滤,不允许报销 |
|
|
45
|
-
| 相关凭证 typeCode | 17, 18, 57, 58 |
|
|
45
|
+
| 相关凭证 typeCode | 17, 18, 57, 58 | 不能独立成行;明细「相关凭证」不赋值,由发票联动带出 |
|
|
46
46
|
| 直接上级取值 | `directSuperior` | ⚠️ **不是 `allSuperiors[0]`**(后者是上级链最高层) |
|
|
47
47
|
| 总部费用报销 | `总部费用报销(100003460000000060)` | 费用明细 `subFormId` = `100003690000000011`(字段清单以 `createForm` 实际返回为准) |
|
|
48
48
|
|
|
@@ -74,14 +74,14 @@
|
|
|
74
74
|
|
|
75
75
|
### 发票查询默认入参
|
|
76
76
|
|
|
77
|
-
CLI 已默认 `sreim="3"`、`bill_type=0`、`page_size=10
|
|
77
|
+
CLI 已默认 `sreim="3"`、`bill_type=0`、`page_size=10`。报销查票时默认按**消费日期**筛选,只传日期范围;也可直接传 `"YYYY-MM-DD"`,由 CLI 转成秒级时间戳(结束日按当天 `23:59:59`):
|
|
78
78
|
|
|
79
79
|
```json
|
|
80
80
|
{
|
|
81
81
|
"page_size": 20,
|
|
82
82
|
"start_pos": 0,
|
|
83
|
-
"
|
|
84
|
-
"
|
|
83
|
+
"consumption_tm_begin": "{begin}",
|
|
84
|
+
"consumption_tm_end": "{end}"
|
|
85
85
|
}
|
|
86
86
|
```
|
|
87
87
|
|
|
@@ -90,8 +90,8 @@ CLI 已默认 `sreim="3"`、`bill_type=0`、`page_size=10`。报销查票时只
|
|
|
90
90
|
- `"number"`: 发票号码精确匹配
|
|
91
91
|
- `"types"`: 发票类型 ID 数组
|
|
92
92
|
|
|
93
|
-
> 按发票号码查询时不设 `
|
|
94
|
-
> 不要传 `flag`、`fylxs
|
|
93
|
+
> 按发票号码查询时不设 `consumption_tm_begin` / `consumption_tm_end`。
|
|
94
|
+
> 不要传 `flag`、`fylxs`。用户明确说“开票日期”时才改用 `date_begin` / `date_end`。
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
@@ -175,10 +175,10 @@ CLI 已默认 `sreim="3"`、`bill_type=0`、`page_size=10`。报销查票时只
|
|
|
175
175
|
- **用户已提供发票数据 → 跳过 Step 1A,直接用已有数据继续**
|
|
176
176
|
- 发票列表有数据 → **先展示发票汇总信息(Step 1C),告知用户查询范围,等用户确认后再往下走**
|
|
177
177
|
- 最近一周无结果 → **自动 fallback 到最近一个月再查一次,不需要问用户**
|
|
178
|
-
- 事前申请有数据 →
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
178
|
+
- 事前申请有数据 → 只按开票日期和事前申请发起日期关联(只比日期,同一天算对上)。一张发票时间上只落在一条里 → 直接绑定,不问「是否关联」
|
|
179
|
+
- 一张发票时间上落在多条事前申请里,或发票没有开票日期 → 把候选列给用户选,选定前不往下填「相关流程」
|
|
180
|
+
- 事前申请为空,或时间上一条都对不上 → 非差旅 / 外出时跳过关联,直接用发票数据填单。差旅 / 外出必须先让用户选定事前申请,明细「相关流程」不能空
|
|
181
|
+
- **只有在必须用户做选择时才暂停**(如:一张发票在时间上对上多条事前申请、发票列表为空无法继续、**相关客户 / 相关项目还没在建单前一次问齐**、**差旅 / 外出明细「相关流程」还没有事前申请**、话费材料不齐);**不询问合同号**;**创建报销单不再问「存草稿 / 提交审批」,直接存草稿**。明细「费用说明」不自己生成,不要为了它暂停问起点和终点
|
|
182
182
|
- **⚠️ 严禁篡改任何原始数据值**
|
|
183
183
|
|
|
184
184
|
---
|
|
@@ -210,12 +210,16 @@ Step 2.6: 按工作流分组(多个工作流 → 多组,各组独立执行
|
|
|
210
210
|
↓ (全部返回后)
|
|
211
211
|
Step 4: 组装 createRequest 的 data (reim-form-fill-rules.md)
|
|
212
212
|
↓
|
|
213
|
-
Step 4.
|
|
213
|
+
Step 4.4: 总部费用报销 → 历史客户 / 项目与默认不同时,和用户要填的客户、项目放在同一次提问里;合同号按确认后的项目从历史带出,不问
|
|
214
|
+
Step 4.5: 相关客户、相关项目必须在建单前一次问齐(空着禁止 createRequest;出差客户不能用泛微上海顶;不问合同号)
|
|
214
215
|
Step 4.6: 话费报销 → 核对材料并按标准核算实报金额
|
|
216
|
+
Step 4.7: 差旅 / 外出 → 每一行明细「相关流程」必须填事前申请,空着禁止 createRequest
|
|
215
217
|
↓
|
|
216
218
|
Step 5: workflow.createRequest(action 固定 draft,直接存草稿,不问用户)→ 原样展示 finalMarkdown
|
|
217
219
|
↓
|
|
218
|
-
Step
|
|
220
|
+
Step 5.3: 查落库结果:客户 / 项目若被联动冲空,用建单前已确认的值写回,不要先建空草稿再问
|
|
221
|
+
↓
|
|
222
|
+
Step 6 (可选): workflow.editLoad / editPrepare / editApply → 用户修正(含 Step 5.3 补上的值)
|
|
219
223
|
```
|
|
220
224
|
|
|
221
225
|
### ⚡ 并行调用策略(必须遵守)
|
|
@@ -267,7 +271,7 @@ Step 6 (可选): workflow.editLoad / editPrepare / editApply → 用户修正
|
|
|
267
271
|
|
|
268
272
|
用户提到了去某个城市(「去北京」「重庆的发票」)时,**不能只按开票日期筛**:出差的票常在回来后才开,用户说的"上周"是出差时间,不是开票时间。
|
|
269
273
|
|
|
270
|
-
1.
|
|
274
|
+
1. **时间范围(消费日期 `consumption_tm_begin` / `consumption_tm_end`)**
|
|
271
275
|
- 用户说了出差时间(「上周」「10月12日到15日」)→ 从**出差开始日**查到**今天**
|
|
272
276
|
- 没说时间 → 最近一个月;没有与该城市相关的票 → 扩到最近 90 天
|
|
273
277
|
2. **按城市逐张筛**(不按 `content` 关键词筛,城市不在消费内容里):
|
|
@@ -287,7 +291,8 @@ Step 6 (可选): workflow.editLoad / editPrepare / editApply → 用户修正
|
|
|
287
291
|
|
|
288
292
|
| 参数 | 用途 | 使用时机 |
|
|
289
293
|
|------|------|----------|
|
|
290
|
-
| `
|
|
294
|
+
| `consumption_tm_begin` / `consumption_tm_end` | 消费日期范围 | **默认使用** |
|
|
295
|
+
| `date_begin` / `date_end` | 开票日期范围 | 用户明确说"开票日期"时 |
|
|
291
296
|
| `create_tm_begin` / `create_tm_end` | 录入/创建日期范围 | 用户明确说"录入日期"/"创建日期"时 |
|
|
292
297
|
|
|
293
298
|
**⚠️ 数据过滤(红冲票排除):**
|
|
@@ -333,17 +338,17 @@ Step 6 (可选): workflow.editLoad / editPrepare / editApply → 用户修正
|
|
|
333
338
|
|
|
334
339
|
通过 `invoice.reim.requests.list` 获取。
|
|
335
340
|
|
|
336
|
-
默认入参:`{"pageNo": 1, "pageSize":
|
|
341
|
+
默认入参:`{"pageNo": 1, "pageSize": 100}`。不传 `pageSize` 时 CLI 也按 100 填入。不传 `cusCreateDateEnd` 时,CLI 按东八区当天 + 1 天填入。传入时 CLI 用该日期再 + 1 天后发给接口,调用方传业务结束日本身,不要自己再加 1 天。用户没有指定结束日期、也不按发票日期收窄上界时,不要传该字段。
|
|
337
342
|
|
|
338
343
|
### Step 1 执行顺序与预筛选策略
|
|
339
344
|
|
|
340
|
-
>
|
|
345
|
+
> **核心时间关系:事前申请发起日期不晚于开票日期。** 只比日期不比钟点,同一天算对上,默认允许绑定。
|
|
341
346
|
|
|
342
347
|
| 场景 | 筛选方式 |
|
|
343
348
|
|------|----------|
|
|
344
349
|
| 先有发票 → 筛选事前申请 | `cusCreateDateEnd` = 最晚 invoiceDate,`cusCreateDateStart` = 最早 invoiceDate - 90天 |
|
|
345
350
|
| 先有发票 → **话费报销** | `cusCreateDateEnd` = 最晚 invoiceDate,`cusCreateDateStart` = 最早 invoiceDate - **1095天(3年)**,且加 `requestname="话费"` 缩小范围(见 [reim-phone-subsidy-rules.md](reim-phone-subsidy-rules.md)) |
|
|
346
|
-
| 先有事前申请 → 筛选发票 | `
|
|
351
|
+
| 先有事前申请 → 筛选发票 | `consumption_tm_begin` = 最早 createTime 秒时间戳 |
|
|
347
352
|
| 并行获取 | 不做预筛选,Step 2 匹配时统一过滤 |
|
|
348
353
|
|
|
349
354
|
---
|
|
@@ -352,7 +357,7 @@ Step 6 (可选): workflow.editLoad / editPrepare / editApply → 用户修正
|
|
|
352
357
|
|
|
353
358
|
> **详细匹配规则见 [reim-matching-rules.md](reim-matching-rules.md)**
|
|
354
359
|
|
|
355
|
-
|
|
360
|
+
只比较开票日期和事前申请发起日期,规则见匹配文档。时间上只对上一条就直接绑定,产出:
|
|
356
361
|
|
|
357
362
|
```json
|
|
358
363
|
[
|
|
@@ -361,34 +366,28 @@ Step 6 (可选): workflow.editLoad / editPrepare / editApply → 用户修正
|
|
|
361
366
|
"preApprovalId": "1298294241967177729",
|
|
362
367
|
"preApprovalName": "交通费报销-后端开发111-2026-07-25",
|
|
363
368
|
"preApprovalWorkflowId": "1181057526276915214",
|
|
364
|
-
"
|
|
365
|
-
"matchReasons": ["时间范围匹配", "费用类型一致"]
|
|
369
|
+
"matchReason": "开票日期只落在这一条的时间范围内"
|
|
366
370
|
}
|
|
367
371
|
]
|
|
368
372
|
```
|
|
369
373
|
|
|
370
|
-
> `preApprovalName`
|
|
374
|
+
> `preApprovalName` 要保留:填明细「相关流程」时写成 `{preApprovalName}({preApprovalId})`。主表「事前申请流程」不赋值,保留空值。
|
|
371
375
|
|
|
372
|
-
###
|
|
376
|
+
### 时间对上多条时必须问用户
|
|
373
377
|
|
|
374
|
-
|
|
378
|
+
一张发票同时落在 2 条及以上事前申请的时间范围内,或发票没有开票日期:**停在这里**,把候选的名称和发起日期列给用户选。不要按费用类型、金额、申请人或「谁更近」自己选。用户选定前不要进入 Step 2.5 之后的填单。
|
|
375
379
|
|
|
376
380
|
```markdown
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
| # | 发票号码 | 金额 | 匹配到的事前申请 | 置信度 | 匹配原因 |
|
|
380
|
-
|---|----------|------|------------------|--------|----------|
|
|
381
|
-
| 1 | 36901189 | ¥108.20 | 交通费报销-后端开发111-2026-07-25 | ✅ 高 | 费用类型匹配、时间匹配 |
|
|
382
|
-
| 2 | 36901201 | ¥380.00 | (未匹配) | — | 无匹配的事前申请 |
|
|
381
|
+
这张发票在时间上对上了 2 条事前申请,请选一条:
|
|
383
382
|
|
|
384
|
-
|
|
383
|
+
| # | 发票号码 | 开票日期 | 可选事前申请 | 发起日期 |
|
|
384
|
+
| --- | --- | --- | --- | --- |
|
|
385
|
+
| 1 | 36901189 | 2026-07-30 | 交通费报销-后端开发111-2026-07-01 | 2026-07-01 |
|
|
386
|
+
| 2 | 36901189 | 2026-07-30 | 上海出差申请-后端开发111-2026-07-20 | 2026-07-20 |
|
|
385
387
|
```
|
|
386
388
|
|
|
387
|
-
-
|
|
388
|
-
-
|
|
389
|
-
- 未匹配的标记 —,说明将跳过事前申请关联
|
|
390
|
-
- **只有全部都是 high 且用户已在 Step 1C 确认过 → 可以静默跳过本展示直接继续**
|
|
391
|
-
- medium 或 low 出现时**必须展示并等用户确认**
|
|
389
|
+
- 每张发票时间上都只有 1 条 → 直接绑定,不展示、不问「是否关联」
|
|
390
|
+
- 时间上一条都对不上 → 非差旅 / 外出不绑定,继续填单;差旅 / 外出按 Step 4.7 让用户选
|
|
392
391
|
|
|
393
392
|
---
|
|
394
393
|
|
|
@@ -433,7 +432,7 @@ weaver-work-cli --json workflow run workflow.createForm --input-json '{"workflow
|
|
|
433
432
|
```
|
|
434
433
|
|
|
435
434
|
> ⚠️ **AI 报销调用 `createForm` 时不传 `userQuestion`**(`workflow-create.md` 里「强烈建议每次都传」**不适用于报销**),也**不用 `workflow.createRequestDirect`**(一步发起)。
|
|
436
|
-
> 传了 `userQuestion` 会让流程侧的智能填参按用户原话算 `data`:发票字段只给 `"invoice"`
|
|
435
|
+
> 传了 `userQuestion` 会让流程侧的智能填参按用户原话算 `data`:发票字段只给 `"invoice"` 占位符、承担主体会按用户口述填(与「合同联动为准」冲突)、不会逐行传币种,标题也不按本技能格式;同时 `historyRequestData` 不再返回。报销的 `data` 一律按本技能 Step 4 的规则自己组装。费用说明不在这份 `data` 里。
|
|
437
436
|
> 万一返回里还是带了 `data`(例如别的环节传了 `userQuestion`),**忽略它**,照常按 Step 4 组装;此时没有 `historyRequestData`,费用承担公司交给 `missingFields` 提醒。
|
|
438
437
|
|
|
439
438
|
从返回里取:
|
|
@@ -443,33 +442,28 @@ weaver-work-cli --json workflow run workflow.createForm --input-json '{"workflow
|
|
|
443
442
|
| `continuation`(= `contextId`) | Step 5 `createRequest` 的 `context` |
|
|
444
443
|
| `fields` | **可写字段全集**:按 `name` 找业务字段取 `id`;带 `subFormId` 的是明细字段;带 `initialValue` 的有默认值 |
|
|
445
444
|
| `requestName` | 表单默认标题(报销单标题按 [reim-form-fill-rules.md](reim-form-fill-rules.md#流程标题requestname) 生成后用 `requestName` 参数覆盖) |
|
|
446
|
-
| `historyRequestData` |
|
|
445
|
+
| `historyRequestData` | **总部费用报销**用它对照历史客户 / 项目,并在项目确认后带出合同号。**不要把合同号列进提问。** 客户和项目需要用户填时,同一次让用户一起输入。其余本技能没覆盖的字段(如费用承担公司)仍按 `workflow-create.md`「历史流程数据参考规则」。**只有不传 `userQuestion` 时才返回**。不要再 `workflow.search` / `workflow.detail` |
|
|
447
446
|
| `workflowMemory` | 该工作流的记忆(可能没有这个键);只能补本技能规则没覆盖的非必填字段,与本技能规则冲突时以本技能为准 |
|
|
448
447
|
|
|
449
448
|
- `NEEDS_CLARIFICATION`(`workflow_not_exist` / `no_create_right`)→ 按 `workflow-create.md` 如实告知用户,停止本组。
|
|
450
449
|
- 大表单超线(stdout 只有一句话 + `resultFile`)→ 按 `workflow-create.md` 读一次 `resultFile`,不要重跑。
|
|
451
|
-
- **不再需要** `invoice.reim.form.structure
|
|
450
|
+
- **不再需要** `invoice.reim.form.structure`:字段清单由 `createForm` 给出。
|
|
451
|
+
- **相关客户、相关项目必须先** `invoice.reim.field.search` 再写入:用户给了名称时,用本次对应字段 id + 工作流 id 模糊搜索。`match=unique` 直接填 `selected` 的 `名称(ID)`;`match=multiple` 把 `items` 列给用户选;`match=none` 请用户换更完整的名称。**不要**把未消歧的简称直接丢给 `createRequest` / `editPrepare`。已是完整 `名称(ID)`(含默认「泛微上海」、已确认的历史值)时不必再搜。见 [reim-form-fill-rules.md](reim-form-fill-rules.md#相关客户模糊搜索)。客户和项目必须在 **Step 4.5 建单前**问清,禁止空着先建草稿。
|
|
452
452
|
|
|
453
453
|
---
|
|
454
454
|
|
|
455
455
|
## Step 3.5: 获取发票预填信息(`invoice.reim.row-info-batch`)
|
|
456
456
|
|
|
457
457
|
- 入参:`invoiceIds`=本组全部**发票**(不含凭证)ID,`requestid`=匹配到的事前申请 ID(无则留空)
|
|
458
|
-
- 返回的 `date`、`
|
|
459
|
-
- 某张失败或字段为空 → 该行回退到 AI
|
|
460
|
-
- `itineraryData`(行程单逐段明细)**暂不拆行**,仍一张发票一行,见 [reim-form-fill-rules.md](reim-form-fill-rules.md#4-行程单多段行程暂不拆行)
|
|
461
|
-
|
|
462
|
-
### 交通类发票额外处理
|
|
463
|
-
|
|
464
|
-
交通类发票(`expenseType` 含交通/出行/打车,或 `consumeContent` 含客运服务费/运输服务,或 `sellerName` 含滴滴/享道等),以及出差报销里的火车票 / 机票 → **额外并行调用 `invoice.get`** 获取出发地和目的地。`invoice.get` 取不到起止点时,用行程单 `itineraryData` 兜底。
|
|
465
|
-
|
|
466
|
-
> 费用说明统一写 `起点-终点`,规则见 [reim-form-fill-rules.md](reim-form-fill-rules.md#行程--出差费用说明)
|
|
458
|
+
- 返回的 `date`、`subjectId`、`subjectName` **在 Step 4 中优先使用**。`fysm` 不要写入「费用说明」;`itinerary` 不用来写「相关凭证」
|
|
459
|
+
- 某张失败或字段为空 → 该行回退到 AI 推断逻辑(费用说明除外,失败也不要自己生成)
|
|
460
|
+
- `itineraryData`(行程单逐段明细)**暂不拆行**,仍一张发票一行,见 [reim-form-fill-rules.md](reim-form-fill-rules.md#4-行程单多段行程暂不拆行)。不要为了费用说明额外调用 `invoice.get`。
|
|
467
461
|
|
|
468
462
|
---
|
|
469
463
|
|
|
470
464
|
## Step 3.6: 取发票对象(`invoice.browse-field.data`)
|
|
471
465
|
|
|
472
|
-
发票字段(`EinvoiceComponent`)只接受发票对象,不接受文本或裸 ID
|
|
466
|
+
发票字段(`EinvoiceComponent`)只接受发票对象,不接受文本或裸 ID。把本组所有**发票**的 `fid` 一次传入;凭证不传(明细「相关凭证」不赋值,由发票联动带出):
|
|
473
467
|
|
|
474
468
|
macOS/Linux(bash/zsh):
|
|
475
469
|
|
|
@@ -483,7 +477,7 @@ Windows PowerShell:
|
|
|
483
477
|
weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fids":["1295366637717012482","1298798990831518001"]}'
|
|
484
478
|
```
|
|
485
479
|
|
|
486
|
-
>
|
|
480
|
+
> 只传发票,不依赖 Step 3.5 的返回,可以和 Step 3 其他调用并行;`itinerary` 返回了凭证 ID 也不补调。
|
|
487
481
|
|
|
488
482
|
> 发票都来自用户已确认的票夹,属于 `workflow-create.md` 里"指名从票夹取"的情形,**不需要**上传提醒。
|
|
489
483
|
|
|
@@ -517,27 +511,78 @@ weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fid
|
|
|
517
511
|
- **⚠️ 主表必填「报销事由」**:按 [reim-form-fill-rules.md](reim-form-fill-rules.md)「报销事由」公式生成写入 `data.main`,**禁止留空**
|
|
518
512
|
- 键只取 `createForm` 的 `fields[].id`;`fields` 里没有的字段不传,带默认值且不需改写的字段不传(例外:明细「币种」每行必传)
|
|
519
513
|
- 浏览按钮写 `名称(ID)`;Select 写选项名;发票字段写 `[发票对象]`
|
|
520
|
-
- 一张发票一行;相关凭证(17/18/57/58
|
|
514
|
+
- 一张发票一行;相关凭证(17/18/57/58)不成行
|
|
515
|
+
- **明细「费用说明」「费用明细」「相关凭证」都不传**,由「相关发票」联动自动填充。不要用 `fysm`、起止点或账单说明自己生成费用说明
|
|
521
516
|
- 行程单有多段行程也**不拆行**
|
|
522
|
-
- 有行程单 / 交通类 / 出差报销的明细,费用说明写精简后的 `起点-终点`:**整串最多 1 个 `-`、不含 `|` 和空格**,禁止原样填 `大道|重庆财经学院-西门 - 鱼胡路-地铁站` 这类原始地址
|
|
523
517
|
- **费用类型(科目)每行必须有值**,匹配不到填 `"其他-管理费用(100502270000000104)"`
|
|
524
|
-
-
|
|
525
|
-
-
|
|
526
|
-
- **⚠️
|
|
518
|
+
- **合同号不问用户。** 用户本轮自己说了才用用户的;否则按已确认的相关项目,从 `historyRequestData` 里该项目最近一条带出合同号;对不上或项目「不填」则用 `"20260999"`(表单默认已是它时不传)
|
|
519
|
+
- **带出的合同号不是 `20260999` → 创建时承担主体不传,以合同联动为准**。**相关客户、相关项目不能空着等联动**:必须先按 Step 4.5 **一次**问齐(项目可「不填」),把已确认的值写入 `data` 再 `createRequest`。创建后从 `linkageResult` 读出实际带出的承担主体和合同号告诉用户;客户 / 项目若被联动改成别的值,如实告诉用户已按合同联动为准;若被冲空,用已确认值走 Step 6 写回。见 [reim-form-fill-rules.md](reim-form-fill-rules.md#相关客户相关项目必须在建单前确认)
|
|
520
|
+
- **⚠️ 总部费用报销历史参考见 Step 4.4;相关客户 / 相关项目建单前确认见 Step 4.5;话费报销规则见 Step 4.6;差旅 / 外出明细「相关流程」见 Step 4.7。**
|
|
527
521
|
|
|
528
522
|
---
|
|
529
523
|
|
|
530
|
-
## Step 4.
|
|
524
|
+
## Step 4.4: 总部费用报销用历史项目带出合同号
|
|
531
525
|
|
|
532
|
-
>
|
|
533
|
-
>
|
|
526
|
+
> **不询问合同号。** 相关客户、相关项目若还要用户填,与历史参考放在同一次提问里。未确认前禁止进入 Step 5。
|
|
527
|
+
> 完整落值见 [reim-form-fill-rules.md - 总部费用报销历史参考](reim-form-fill-rules.md#总部费用报销历史参考)。
|
|
534
528
|
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
529
|
+
只在 `workFlowName` 含「总部费用报销」,或工作流 ID 为 `100003460000000060` 时执行。其他报销流程不问合同号,合同号仍用默认 `20260999`。
|
|
530
|
+
|
|
531
|
+
数据用 Step 3 `workflow.createForm` 已返回的 `historyRequestData`。流程技能取的就是本工作流、近一年、非草稿、我发起的、按发起时间倒序的前 5 条。**不要再调用 `workflow.search` 或 `workflow.detail`**。`historyRequestData` 为 `null` 时,合同号用默认,客户和项目仍按 Step 4.5 一次问齐。大表单超线时,这些字段在 `resultFile` 里,和 `fields` 一起读。
|
|
532
|
+
|
|
533
|
+
按 `fields[].name` 对上字段 id,从 `fieldValues` 取合同号、相关客户、相关项目。值逐字符原样使用。**不从历史里带**发票、金额、费用日期、费用说明、费用科目、附件、报销事由、流程标题。
|
|
534
|
+
|
|
535
|
+
**合同号怎么定(不问用户):**
|
|
536
|
+
|
|
537
|
+
1. 用户本轮自己说了合同号 → 用用户的
|
|
538
|
+
2. 已确认的相关项目能对上某一条历史的相关项目(名称或 `名称(ID)`)→ 用该项目**最近一条**的合同号
|
|
539
|
+
3. 项目「不填」,或历史里没有这个项目 → `20260999`(表单默认已是它则不传)
|
|
540
|
+
|
|
541
|
+
对上的合同号不是 `20260999` 时,承担主体不传,交给合同联动。建单后把带出的合同号告诉用户,不要再请用户改合同号。
|
|
542
|
+
|
|
543
|
+
客户或项目与默认不同、且用户本轮还没说时,**一次**问完,例如:
|
|
544
|
+
|
|
545
|
+
```markdown
|
|
546
|
+
请一起填写本次的相关客户和相关项目(一条消息即可)。上次总部费用报销({requestName},{createdatetime})是:
|
|
547
|
+
|
|
548
|
+
- 相关客户:中国航空集团有限公司(非出差默认是泛微上海;出差必须给具体客户)
|
|
549
|
+
- 相关项目:中航集团办公平台改造及升级项目(没有可以说「不填」)
|
|
550
|
+
|
|
551
|
+
回复「用上次的」,或直接写下客户和项目。合同号不用填,会按你确认的项目从历史报销单带出。
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
| 用户回答 | 处理 |
|
|
555
|
+
| --- | --- |
|
|
556
|
+
| 用上次的 | 客户、项目用这条历史原值;合同号用**同一条**历史的合同号,不问 |
|
|
557
|
+
| 自己写下客户和项目 | 名称先 `invoice.reim.field.search` 消歧;合同号按上面第 2、3 条从历史带出 |
|
|
558
|
+
| 只给了其中一项 | 该项用用户的,另一项再在同一话题里补问一次,不要改去问合同号 |
|
|
559
|
+
| 取消 | 停止,不调用 `workflow.createRequest` |
|
|
560
|
+
|
|
561
|
+
出差流程里,用户确认采用的历史相关客户算「已提供具体客户」。用户拒绝且没有另给客户 → 结束,**不要先建草稿**。
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
## Step 4.5: 相关客户、相关项目必须在建单前确认
|
|
566
|
+
|
|
567
|
+
> **相关客户没有已确认的值,或相关项目还没问过(也没说「不填」)时,禁止进入 Step 5。不要先建空草稿再问。**
|
|
568
|
+
> 完整规则见 [reim-form-fill-rules.md - 相关客户、相关项目必须在建单前确认](reim-form-fill-rules.md#相关客户相关项目必须在建单前确认)。
|
|
569
|
+
|
|
570
|
+
**相关客户已确认(满足任一):** 用户本轮给了名称并已 `invoice.reim.field.search` 消歧;或 Step 4.4 确认采用了历史相关客户;或非出差且合同号仍是 `20260999`,可用默认 `"泛微上海(100504500000311504)"`。
|
|
571
|
+
|
|
572
|
+
**相关项目已确认(满足任一):** 用户本轮给了项目名称并已按「相关项目」字段 `invoice.reim.field.search` 消歧;或用户明确说「不填」;或 Step 4.4 确认采用了非空的历史相关项目。
|
|
573
|
+
|
|
574
|
+
未确认时**一次**让用户把两项一起输入,不要拆成两轮,也不要另问合同号。例如:
|
|
575
|
+
|
|
576
|
+
```markdown
|
|
577
|
+
请一起填写相关客户和相关项目(一条消息即可)。
|
|
578
|
+
相关客户:出差请给具体客户名称。
|
|
579
|
+
相关项目:没有可以说「不填」。
|
|
580
|
+
合同号不用填。
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
用户给出名称 → **先** `invoice.reim.field.search`:一条直接填 `名称(ID)`,多条列给用户选,零条请换名称。**不要**把未消歧简称丢给 `createRequest`。相关客户说「不填」无效,必须问到名称。出差 / 差旅不能用「泛微上海」顶替;用户拒绝提供客户 → **结束报销**。
|
|
584
|
+
|
|
585
|
+
项目确认后按 Step 4.4 带出合同号。带出的合同号不是 `20260999` 时,承担主体创建时不传;**相关客户、相关项目写入 `data` 再 `createRequest`**,不要空着等联动。
|
|
541
586
|
|
|
542
587
|
---
|
|
543
588
|
|
|
@@ -555,16 +600,29 @@ weaver-work-cli --json invoice run invoice.browse-field.data --input-json '{"fid
|
|
|
555
600
|
|
|
556
601
|
---
|
|
557
602
|
|
|
603
|
+
## Step 4.7: 差旅 / 外出明细「相关流程」必须赋值
|
|
604
|
+
|
|
605
|
+
> **差旅 / 外出报销时,每一行明细「相关流程」都必须是 `{requestname}({requestid})`。任一行没有值,禁止进入 Step 5。**
|
|
606
|
+
> 完整规则见 [reim-form-fill-rules.md - 差旅 / 外出明细相关流程](reim-form-fill-rules.md#差旅外出明细相关流程硬拦截)。
|
|
607
|
+
|
|
608
|
+
**如何判断(满足任一):** `workFlowName` 含「差旅」「出差」或「外出」;事前申请名称含「出差」「差旅」或「外出」;用户明确说「出差报销」「差旅报销」「外出报销」。
|
|
609
|
+
|
|
610
|
+
取值:该行已绑定的事前申请 → 本次只有一条差旅 / 外出事前申请时未绑定的行也用它 → 多条未绑定则让用户指定 → 一条都没有则先列出事前申请让用户选。用户说「不填」、拒绝或不选 → **结束报销**。主表「事前申请流程 / 相关流程」不赋值,保留空值。
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
558
614
|
## Step 5: 直接存草稿(`workflow.createRequest`,`action:"draft"`)
|
|
559
615
|
|
|
560
|
-
> **⚠️ AI 报销一律存草稿,组装完 `data` 直接调用,不展示「存草稿 /
|
|
616
|
+
> **⚠️ AI 报销一律存草稿,组装完 `data` 直接调用,不展示「存草稿 / 提交审批」让用户选。** 草稿不进审批,用户在 E10 里核对后自己提交。
|
|
561
617
|
> - `action` 固定 `"draft"`,**不要传 `"submit"`**——即使用户说了「提交」,本流程也只建草稿,并在回复里告诉用户去 E10 页面核对后提交。
|
|
562
618
|
> - **`requestName` 必传**(按「流程标题」公式生成)、**`data.main` 必含「报销事由」**(按「报销事由」公式生成)——两者不传会静默留用表单默认标题 / 留空,且无 warning。
|
|
563
|
-
> - 用户在 Step 1C
|
|
619
|
+
> - 用户在 Step 1C 已确认过用哪些发票;匹配和组装之后直接存草稿。下面几条拦截未满足时停住。
|
|
564
620
|
>
|
|
565
621
|
> **以下拦截仍然有效(未满足前禁止调用):**
|
|
566
|
-
> -
|
|
622
|
+
> - **相关客户、相关项目**:未按 Step 4.5 一次问齐前,禁止调用。不要先建空草稿再问,也不要改去问合同号。
|
|
623
|
+
> - **出差流程**:相关客户未由用户提供具体信息(含确认采用的历史相关客户)前,禁止调用;不能用「泛微上海」顶替,也不能改成等合同联动。
|
|
567
624
|
> - **话费报销**:账单截图、账单构成或岗位标准未确认前,禁止调用。
|
|
625
|
+
> - **差旅 / 外出**:任一明细行「相关流程」还没有 `{requestname}({requestid})` 时,禁止调用。
|
|
568
626
|
|
|
569
627
|
### 5.1 创建
|
|
570
628
|
|
|
@@ -602,7 +660,7 @@ weaver-work-cli --json workflow run workflow.createRequest --input .\reim-create
|
|
|
602
660
|
|
|
603
661
|
| 返回 | 处置 |
|
|
604
662
|
| --- | --- |
|
|
605
|
-
| `CREATED` | **原样粘贴 `finalMarkdown
|
|
663
|
+
| `CREATED` | **原样粘贴 `finalMarkdown`**,一字不改;链接只出现在回复文本里。之后按需补几句:合同联动带出的承担主体与用户口述不同、客户 / 项目被联动改写、话费核算明细、`missingFields` 提交前要补的字段。然后**必须做 Step 5.3** |
|
|
606
664
|
| `BROWSER_FILL`(小e 环境) | **没有写服务端、没有 `requestId`**:把 `finalMarkdown`(一段 `<browsertool>` 标签块)**整段原样输出**作为回复正文,不包代码块、不加任何前后说明,也不补上面那几句提醒;由页面打开新建页带入字段值,用户在页面上保存。之后**不要走 Step 6**(没有可改的单据) |
|
|
607
665
|
| `NEEDS_INPUT` | 缺的是承担主体、上级、合同号、相关客户、科目等本技能有规则的字段 → 按 [reim-form-fill-rules.md](reim-form-fill-rules.md) 补值后用同一 `context` 重发;其余原样粘贴 `finalMarkdown` 一次问齐用户 |
|
|
608
666
|
| `NEEDS_CONFIRMATION` | 按 `ambiguities` 处理(浏览按钮多候选让用户选;`MULTIPLICITY` 只保留 1 个值) |
|
|
@@ -610,11 +668,43 @@ weaver-work-cli --json workflow run workflow.createRequest --input .\reim-create
|
|
|
610
668
|
|
|
611
669
|
> **⚠️ 禁止重复创建**:同一组发票 `createRequest` 成功后,**不要再次 `createForm` + `createRequest`**;修改一律走 Step 6。
|
|
612
670
|
|
|
671
|
+
### 5.3 填写结果检查
|
|
672
|
+
|
|
673
|
+
> 草稿已经落库后再查,不因此重开一张报销单。完整口径见 [reim-form-fill-rules.md - 填写结果检查](reim-form-fill-rules.md#填写结果检查)。
|
|
674
|
+
> **相关客户、相关项目本应在 Step 4.5 建单前问清。** 这里只处理合同联动把已确认的客户 / 项目冲空了。明细「费用说明」「费用明细」「相关凭证」仍空时只告知「发票联动没有带出」,不要补写。
|
|
675
|
+
|
|
676
|
+
`CREATED` / `CREATED_SUBMIT_FAILED`(单子已在)时,贴完 `finalMarkdown` 后**必须**按下表检查,不能只贴草稿链接就结束。`BROWSER_FILL` 没有落库单据,跳过。`partial` / `write_uncertain` 先按原规则停住,不做这项检查。
|
|
677
|
+
|
|
678
|
+
先看本次 `createRequest` 已返回的 `previewDetails`、`fields`、`linkageResult`、`missingFields`。表里看不出有没有值时,用本次 `requestId` **只调一次** `workflow.editLoad` 读 `currentValues`。不要 `workflow.detail`,不要再建单。`linkageResult` 里没有「相关客户=…」或「相关项目=…」就当成没带出,不要靠「合同应该会联动」放过。
|
|
679
|
+
|
|
680
|
+
| 检查 | 什么时候算没填上 | 原因怎么说 |
|
|
681
|
+
| --- | --- | --- |
|
|
682
|
+
| **相关客户没有值** | **任何报销单**。主表「相关客户」为空;明细有这个字段时该行也为空。非出差且已是「泛微上海」不算 | 合同联动把建单前已确认的客户冲空了 |
|
|
683
|
+
| 相关项目没填写 | 主表「相关项目」为空,且用户没有说过「不填」;明细有这个字段时也为空 | 合同联动把建单前已确认的项目冲空了 |
|
|
684
|
+
| 明细「费用说明」 | 表单有这一列,落库后仍空 | 发票联动没有带出。只告知,不要补写,也不要让用户填,不要自己生成 |
|
|
685
|
+
| 明细「费用明细」 | 表单有这一列,落库后仍空 | 发票联动没有带出。只告知,不要补写,也不要让用户填 |
|
|
686
|
+
| 明细「相关凭证」 | 表单有这一列,落库后仍空 | 发票联动没有带出。只告知,不要补写,也不要让用户挂行程单 |
|
|
687
|
+
|
|
688
|
+
表里各项都有合格值时,不要再补一句「检查通过」。有缺项时,在 `finalMarkdown` 后面一次说完。**相关客户、相关项目若本轮 Step 4.5 已经确认过,直接用已确认的 `名称(ID)` 走 Step 6 写回,不要再问。** 明细「费用说明」「费用明细」「相关凭证」只告知,不写回。只有建单前漏问了(不应发生)才补问客户和项目:客户不接受「不填」,项目可以说「不填」。例如:
|
|
689
|
+
|
|
690
|
+
```markdown
|
|
691
|
+
这张草稿里还有 2 项没有填上:
|
|
692
|
+
|
|
693
|
+
| 位置 | 没填上的值 | 原因 |
|
|
694
|
+
| --- | --- | --- |
|
|
695
|
+
| 主表 | 相关客户 | 合同号 20250999 的联动把已确认的客户冲空了 |
|
|
696
|
+
| 主表 | 相关项目 | 合同联动把已确认的项目冲空了 |
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
已确认的值用 Step 6 写回,**不要再问一次是否保存**。补问到的新名称先走 `invoice.reim.field.search`:一条直接 `editPrepare`,多条先让用户选,零条请用户换名称;不要把未消歧简称直接丢给 `editPrepare`。`editPrepare` / `editApply` 失败时如实转述错误,相关客户仍算没填上,不能把失败当成检查完成。相关项目用户说不填 → 保持现状,不再追问。**相关客户说「不填」无效,必须再问到名称。**
|
|
700
|
+
|
|
613
701
|
---
|
|
614
702
|
|
|
615
703
|
## Step 6(可选): 修改已创建的报销单
|
|
616
704
|
|
|
617
|
-
通过 `weaver-e10-workflow` 的 `workflow.editLoad`(传 Step 5 返回的 `requestId`)→ `workflow.editPrepare`(`data` 写法同 Step 4,只传要改的字段)→ 用户确认 → `workflow.editApply`。详见 [`workflow-edit.md`](../../weaver-e10-workflow/references/workflow-edit.md)
|
|
705
|
+
通过 `weaver-e10-workflow` 的 `workflow.editLoad`(传 Step 5 返回的 `requestId`;Step 5.3 已经读过则可复用那次 `context`)→ `workflow.editPrepare`(`data` 写法同 Step 4,只传要改的字段)→ 用户确认 → `workflow.editApply`。详见 [`workflow-edit.md`](../../weaver-e10-workflow/references/workflow-edit.md)。明细「费用说明」「费用明细」不在修改范围内。
|
|
706
|
+
|
|
707
|
+
Step 5.3 里用户刚给出的行程、客户名称、相关项目,就是这次修改的确认:`editPrepare` 后直接 `editApply`,不要再问「是否保存」。
|
|
618
708
|
|
|
619
709
|
- 流程已流转到不可编辑节点时 `editApply` 返回"失去操作权限",如实转述
|
|
620
710
|
- 只读字段会被拒绝(`notEditable`),如实转述,不要换字段 id 绕过
|
|
@@ -625,15 +715,17 @@ weaver-work-cli --json workflow run workflow.createRequest --input .\reim-create
|
|
|
625
715
|
|
|
626
716
|
**需暂停询问用户的情况:**
|
|
627
717
|
- 发票列表为空 → 提示"未找到未报销的发票",结束
|
|
628
|
-
-
|
|
718
|
+
- 总部费用报销的客户或项目还没一次问齐 → 见 Step 4.4 / 4.5;**禁止先建空草稿再问,也不要改去问合同号**
|
|
719
|
+
- 相关客户或相关项目还没在建单前确认 → 见 Step 4.5;**禁止先建空草稿再问**
|
|
629
720
|
- 话费报销缺少账单截图、账单构成或岗位标准 → 见 Step 4.6
|
|
721
|
+
- 差旅 / 外出任一明细行「相关流程」还没有事前申请 → 见 Step 4.7;**禁止先建空草稿再补**
|
|
630
722
|
- `createRequest` 返回 `NEEDS_INPUT` / `NEEDS_CONFIRMATION` 且本技能规则补不上 → 按 `workflow-create.md` 问用户
|
|
631
723
|
|
|
632
724
|
**严禁重复调用:**
|
|
633
725
|
- **`createRequest` 已成功 → 严禁再次创建,后续修改一律使用 Step 6**
|
|
634
726
|
|
|
635
727
|
**自动继续(不问用户):**
|
|
636
|
-
- 事前申请为空 /
|
|
728
|
+
- 事前申请为空 / 匹配失败,且不是差旅 / 外出 → 跳过事前关联,直接用发票填单。差旅 / 外出见 Step 4.7
|
|
637
729
|
- 匹配结果唯一 → 直接使用
|
|
638
730
|
|
|
639
731
|
**用户中途取消:**
|
|
@@ -1246,6 +1246,12 @@
|
|
|
1246
1246
|
"data[].id",
|
|
1247
1247
|
"data[].name",
|
|
1248
1248
|
"data[].value",
|
|
1249
|
+
"keywords",
|
|
1250
|
+
"match",
|
|
1251
|
+
"items[].id",
|
|
1252
|
+
"items[].name",
|
|
1253
|
+
"selected.id",
|
|
1254
|
+
"selected.name",
|
|
1249
1255
|
"workflow.workflow",
|
|
1250
1256
|
"workflow.version",
|
|
1251
1257
|
"workflow.state"
|
|
Binary file
|