weaver-work-cli 0.1.21 → 0.1.23

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.
Files changed (31) hide show
  1. package/dist/shortcuts/invoice/host.js +5 -4
  2. package/dist/shortcuts/meeting/operations/change.js +7 -4
  3. package/dist/shortcuts/meeting/operations/create.js +5 -3
  4. package/dist/shortcuts/meeting/operations/eb/association.js +151 -0
  5. package/dist/shortcuts/meeting/operations/eb/attendance-summary.js +153 -0
  6. package/dist/shortcuts/meeting/operations/eb/catalog.js +185 -13
  7. package/dist/shortcuts/meeting/operations/eb/conflict.js +17 -11
  8. package/dist/shortcuts/meeting/operations/eb/decision.js +405 -0
  9. package/dist/shortcuts/meeting/operations/eb/factory.js +222 -35
  10. package/dist/shortcuts/meeting/operations/eb/index.js +18 -1
  11. package/dist/shortcuts/meeting/operations/eb/link.js +212 -0
  12. package/dist/shortcuts/meeting/operations/eb/task-progress.js +123 -0
  13. package/dist/shortcuts/meeting/operations/env.js +78 -61
  14. package/dist/shortcuts/meeting/operations/lifecycle.js +8 -6
  15. package/dist/shortcuts/meeting/operations/link.js +125 -0
  16. package/dist/shortcuts/meeting/operations/receipts.js +54 -21
  17. package/dist/shortcuts/meeting/operations/registry.js +2 -0
  18. package/dist/shortcuts/meeting/operations/shared.js +41 -0
  19. package/dist/shortcuts/meeting/operations/signs.js +14 -4
  20. package/dist/shortcuts/project/operations/read.js +7 -6
  21. package/docs/e10-auth.md +4 -0
  22. package/docs/invoice.md +3 -0
  23. package/package.json +1 -1
  24. package/skills/weaver-e10-meeting/SKILL.md +28 -11
  25. package/skills/weaver-e10-meeting/references/meeting-eb.md +172 -7
  26. package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +7 -2
  27. package/skills/weaver-e10-meeting/references/meeting-verification.md +271 -0
  28. package/skills/weaver-e10-meeting.zip +0 -0
  29. package/skills/weaver-e10-shijingran/SKILL.md +68 -3
  30. package/skills/weaver-e10-shijingran/references/disabled-capabilities.md +22 -0
  31. package/skills/weaver-e10-shijingran/references/source-manifest.json +12 -4
@@ -0,0 +1,271 @@
1
+ # 会议模块全功能验证清单(99 个 operation)
2
+
3
+ > **给执行方(其他智能体)的结论**:本 skill 通过 `weaver-work-cli` 暴露会议模块**全部 99 个 operation**
4
+ > (标准版 28 + EB 版 70 + 跨模式 1),**除本文「第 6 节 不在范围」列出的 8 项外,全部可在真机上验证完成**。
5
+ > 本文提供可直接照做的流程、逐条判据与负向用例;请按本文顺序执行,逐条留证据。
6
+
7
+ ## 1. 先决条件(缺一不可)
8
+
9
+ 1. **CLI**:`weaver-work-cli --version`。未安装或读取失败 → **必须先提示用户先补齐**(安装方式以共享规则为准,Agent 不能自行安装)。
10
+ 2. **共享规则**:先读 `../weaver-e10-shared/SKILL.md`(安装、E10 认证、JSON 输出、高风险写入规则)。
11
+ 3. **登录态**:`weaver-work-cli auth status --json` → `valid=true`;否 `=` `session_expired` 时按共享规则处理,**禁止**自行拼 Cookie。
12
+ 4. **环境模式(强制第一步)**:`meeting.env.detect` → `mode=eb` 或 `mode=standard`。
13
+ - `mode=eb` → 只能用 `meeting.eb.*`;`mode=standard` → 只能用标准版 operation。
14
+ - **两套接口与数据互不相通**,在 EB 环境调标准版接口只会拿到空数据(反之亦然)。
15
+ 5. **多租户提醒**:同一账号在不同站点(baseUrl)看到的会议不同;验证前先记录 `baseUrl` 与 `userId`,写入类验证**只用自建数据**。
16
+
17
+ ## 2. 验证纪律(硬规则,违反即结论无效)
18
+
19
+ | 规则 | 说明 |
20
+ |---|---|
21
+ | 写入四步走 | `prepare` → 向用户/发起方摘要 preview → `apply`(`confirm:true` + `continuation`)→ **回读** → **清理** |
22
+ | 只用自建数据 | 写入验证一律新建名为 `CLI-VERIFY-<时间戳>` 的会议/会议室/类型/议题,**禁止**改动或删除他人真实数据 |
23
+ | 不跳步 | **禁止**跳过 prepare 直接 apply;**禁止**用真实会议试删除 |
24
+ | 失败也是结论 | FAIL 必须原文给出 `error.type/subtype` 与报错文案,**禁止**把失败写成"没有数据" |
25
+ | EB 写失败 ≠ 没写入 | EB 接口报校验错误时数据可能已落库 → **先回查再决定重试**(否则产生重复数据) |
26
+ | 每条留证据 | 记录 `operation` + 入参摘要 + 关键输出片段(id / status / count),便于复核 |
27
+ | continuation | 默认 10 分钟有效;过期返回 `continuation_expired` → 重新 prepare,**不要**重用旧 token |
28
+
29
+ ## 3. 判据代号(下文表格中引用)
30
+
31
+ | 代号 | 含义 |
32
+ |---|---|
33
+ | `R-LIST` | `ok=true`;`total` 与 `count` 自洽(`total>=count`);`rows` 每项含 `mainTable`(EB)或业务字段(标准版);`pageNo/pageSize` 回显正确 |
34
+ | `R-DETAIL` | `ok=true` 且 `data` 非空;id 不存在时必须报 `not_found`(**不是**返回空对象) |
35
+ | `R-COUNT` | `withCount:true` 时 `total` 存在;count 与 list 允许不一致时以 `max(total, count)` 为准 |
36
+ | `W-PREP` | `status=AWAITING_CONFIRMATION`,含 `preview`(path/body)+ `continuation`;EB 的 update/delete `preview.path` **必带 `?id=<主键>`** |
37
+ | `W-APPLY` | `status=COMPLETE`;随后按"回读"列核对。**入参口径:只传 `confirm`+`continuation` 即可**(业务字段取 prepare 快照);若同时传业务字段,必须与快照一致,否则 `target_changed` |
38
+ | `W-FAIL-SAFE` | 缺必填 → `missing_required_field`;未确认 → `confirmation.required`;主键缺失 → 服务端原文报错(不得静默成功) |
39
+ | `W-CLEAN` | 用删除类 operation 清理自建数据;EB 清理首选 `meeting.eb.meeting.delete`(级联回收占用/回执/签到) |
40
+
41
+ ## 4. 全量清单
42
+
43
+ ### 4.1 标准版(28 个,`mode=standard`)
44
+
45
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
46
+ |---|---|---|---|---|---|
47
+ | 1 | `meeting.env.detect` | read | — | 返回 `mode` + `baseUrl`;`refresh:true` 能强制刷新 | — |
48
+ | 2 | `meeting.calendar.base` | read | — | 返回工作日/时段等日历基础设置 | — |
49
+ | 3 | `meeting.detail.field` | read | `id` | `R-DETAIL` | 用 `meeting.list` 取 id |
50
+ | 4 | `meeting.list` | read | — | `R-LIST`(客户端按 `filterDate` 过滤,天然覆盖各角色) | — |
51
+ | 5 | `meeting.room.list` | read | — | `R-LIST`(`beginDate`/`endDate`/`onlyAvailable` 生效) | — |
52
+ | 6 | `meeting.room.usage` | read | — | `R-LIST`(`roomid`+`currentdate` 定位占用视图) | — |
53
+ | 7 | `meeting.type.list` | read | — | `R-LIST` | — |
54
+ | 8 | `meeting.conflict.room` | read | `beginDatetime`,`endDatetime`,`address` | 返回冲突判定(`cansub`);同房间同时间应有冲突 | — |
55
+ | 9 | `meeting.conflict.member` | read | `beginDatetime`,`endDatetime`,`hrmids` | 同上,人员维度 | — |
56
+ | 10 | `meeting.conflict.roomAttribute` | read | `beginDatetime`,`endDatetime`,`address` | 同上,会议室属性维度 | — |
57
+ | 11 | `meeting.create.prepare` | read-before-write | `name`,`beginDatetime`,`endDatetime` | `W-PREP` + 内部自动跑冲突检测(`conflict_rejected` 属正常拒绝路径) | 记 `continuation` |
58
+ | 12 | `meeting.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | `meeting.list` 应出现;清理用 `meeting.delete.*` |
59
+ | 13 | `meeting.cancel.prepare` | read-before-write | `id` | `W-PREP` | — |
60
+ | 14 | `meeting.cancel.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读状态=已取消;不可用自建会议时跳过 |
61
+ | 15 | `meeting.delete.prepare` | read-before-write | `id` | `W-PREP` | — |
62
+ | 16 | `meeting.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | **软删**:正常列表不再出现(进回收站) |
63
+ | 17 | `meeting.change.prepare` | read-before-write | `id` | `W-PREP`;按会议状态自动决定 `operateType`(草稿=UPDATE/正常=CHANGE) | — |
64
+ | 18 | `meeting.change.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读被改字段(如名称/时间) |
65
+ | 19 | `meeting.receipt.list` | read | `mtId` | `R-LIST` | 用 `mtId` 关联会议 |
66
+ | 20 | `meeting.receipt.update.prepare` | read-before-write | `mtId`,`memberId`,`attendStatus` | `W-PREP` | — |
67
+ | 21 | `meeting.receipt.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | `receipt.list` 回读 `attendStatus` |
68
+ | 22 | `meeting.sign.list` | read | `mtId` | `R-LIST`(返回 `signs[].id`,是补签/签退/清除的入参来源) | — |
69
+ | 23 | `meeting.sign.mark.prepare` | read-before-write | `id`(签到记录 id) | `W-PREP` | — |
70
+ | 24 | `meeting.sign.mark.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | `sign.list` 回读 `sign_time` 有值 |
71
+ | 25 | `meeting.sign.back.prepare` | read-before-write | `id` | `W-PREP` | — |
72
+ | 26 | `meeting.sign.back.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读签退时间 |
73
+ | 27 | `meeting.sign.clear.prepare` | read-before-write | `id` | `W-PREP` | — |
74
+ | 28 | `meeting.sign.clear.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读签到记录已清空 |
75
+
76
+ ### 4.2 EB 版 · 会议与冲突(`mode=eb`)
77
+
78
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
79
+ |---|---|---|---|---|---|
80
+ | 29 | `meeting.eb.meeting.list` | read | — | `R-LIST`+`R-COUNT`;分页必须落 body `pageInfo`(只放 URL 会恒回 10 条) | — |
81
+ | 30 | `meeting.eb.meeting.detail` | read | `id` | `R-DETAIL`(数据在 `datas[0].mainTable`) | — |
82
+ | 31 | `meeting.eb.meeting.create.prepare` | read-before-write | `mt_creator`,`mt_name`,`begin_datetime`,`end_datetime`,`mt_status`,`operate_type` | `W-PREP`;内部先读 `baseSet` 判流程建会 + 冲突检测 | 记 `continuation` |
83
+ | 32 | `meeting.eb.meeting.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY`;`data.association` 应报占用/回执/签到补建结果 | 回读 list;`W-CLEAN` |
84
+ | 33 | `meeting.eb.meeting.change.prepare` | read-before-write | `id`,`operate_type` | `W-PREP`(取消用 `operate_type=CANCEL` + `mt_status=4`) | — |
85
+ | 34 | `meeting.eb.meeting.change.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读被改字段 |
86
+ | 35 | `meeting.eb.meeting.delete.prepare` | read-before-write | `id` | `W-PREP`(preview.path 带 `?id=`) | — |
87
+ | 36 | `meeting.eb.meeting.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list 不含;**级联回收占用/回执/签到** |
88
+ | 37 | `meeting.eb.meeting.markDecided.prepare` | read-before-write | `id`,`is_decision` | `W-PREP` | — |
89
+ | 38 | `meeting.eb.meeting.markDecided.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `is_decision`/`decision_Id` |
90
+ | 39 | `meeting.eb.conflict.room` | read | `beginDatetime`,`endDatetime`,`address` | 返回冲突结论;自建会议后应能识别本场会 | — |
91
+ | 40 | `meeting.eb.conflict.member` | read | `beginDatetime`,`endDatetime`,`hrmMembers` | 同上,参会人维度 | — |
92
+
93
+ ### 4.3 EB 版 · 会议室 / 占用
94
+
95
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
96
+ |---|---|---|---|---|---|
97
+ | 41 | `meeting.eb.room.list` | read | — | `R-LIST`+`R-COUNT` | — |
98
+ | 42 | `meeting.eb.room.detail` | read | `id` | `R-DETAIL` | — |
99
+ | 43 | `meeting.eb.room.create.prepare` | read-before-write | `room_name`,`hrm_ids`,`org_id`,`status` | `W-PREP` | 记 `continuation` |
100
+ | 44 | `meeting.eb.room.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list;清理用 `.delete.*` |
101
+ | 45 | `meeting.eb.room.update.prepare` | read-before-write | `id` | `W-PREP`(preview.path 带 `?id=`) | — |
102
+ | 46 | `meeting.eb.room.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读被改字段 |
103
+ | 47 | `meeting.eb.room.delete.prepare` | read-before-write | `id` | `W-PREP` | — |
104
+ | 48 | `meeting.eb.room.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list 不含(**只删自建会议室**) |
105
+ | 49 | `meeting.eb.roomUsage.list` | read | — | `R-LIST`+`R-COUNT` | — |
106
+ | 50 | `meeting.eb.roomUsage.detail` | read | `id` | `R-DETAIL` | — |
107
+ | 51 | `meeting.eb.roomUsage.create.prepare` | read-before-write | `mt_id` | `W-PREP` | 记 `continuation` |
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 | `id` | `W-PREP` | 见第 6 节:apply 侧环境已知异常 |
110
+ | 54 | `meeting.eb.roomUsage.delete.apply` | high-risk-write | `confirm`,`continuation` | 见第 6 节(改用 `meeting.eb.meeting.delete` 级联释放) | — |
111
+
112
+ ### 4.4 EB 版 · 签到 / 回执
113
+
114
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
115
+ |---|---|---|---|---|---|
116
+ | 55 | `meeting.eb.sign.list` | read | — | `R-LIST`+`R-COUNT`;`data.progress.summary` 含 `signed/notSigned/attendanceRate/byState`,并带 `progress.page` | 注意 `mt_id` 返回的是**会议名称**,筛选参数 `mt_id` 才是会议 id |
117
+ | 56 | `meeting.eb.sign.detail` | read | `id` | `R-DETAIL` | — |
118
+ | 57 | `meeting.eb.sign.create.prepare` | read-before-write | `mt_id` | `W-PREP` | 记 `continuation` |
119
+ | 58 | `meeting.eb.sign.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list(时间字段**必须带秒**) |
120
+ | 59 | `meeting.eb.sign.update.prepare` | read-before-write | `id`,`mt_id` | `W-PREP`(preview.path 带 `?id=`) | — |
121
+ | 60 | `meeting.eb.sign.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读被改字段 |
122
+ | 61 | `meeting.eb.sign.mark.prepare` | read-before-write | `mt_id`,`user_id` | `W-PREP`;**补签走更新,不是新增** | 记 `continuation` |
123
+ | 62 | `meeting.eb.sign.mark.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `sign.list` 的 `sign_time` |
124
+ | 63 | `meeting.eb.receipt.list` | read | — | `R-LIST`+`R-COUNT`;`progress.summary` 含 `attend/decline/noReply/replyRate` | `attend_status` 空=未回执、`0`=不参加、`1`=参加 |
125
+ | 64 | `meeting.eb.receipt.detail` | read | `id` | `R-DETAIL` | — |
126
+ | 65 | `meeting.eb.receipt.create.prepare` | read-before-write | `mt_id`,`member_type`,`member_id`,`member_manager` | `W-PREP` | 记 `continuation` |
127
+ | 66 | `meeting.eb.receipt.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list;清理随会议删除 |
128
+ | 67 | `meeting.eb.receipt.update.prepare` | read-before-write | `id`,`mt_id`,`member_id`,`attend_status` | `W-PREP` | — |
129
+ | 68 | `meeting.eb.receipt.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `attend_status` |
130
+
131
+ ### 4.5 EB 版 · 纪要 / 类型 / 议题
132
+
133
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
134
+ |---|---|---|---|---|---|
135
+ | 69 | `meeting.eb.minute.list` | read | — | `R-LIST`+`R-COUNT`;`mt_id` 支持逗号多值;关键字:`mt_minutes_subject`/`mt_minutes_no`/`parse_content`(正文 HTML)/`minutes_status` | 创建见第 6 节(无自定义接口) |
136
+ | 70 | `meeting.eb.type.list` | read | — | `R-LIST`+`R-COUNT` | — |
137
+ | 71 | `meeting.eb.type.create.prepare` | read-before-write | `type_name` | `W-PREP` | 记 `continuation` |
138
+ | 72 | `meeting.eb.type.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list;清理用 `.delete.*` |
139
+ | 73 | `meeting.eb.type.delete.prepare` | read-before-write | `id` | `W-PREP` | — |
140
+ | 74 | `meeting.eb.type.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list 不含(**只删自建类型**) |
141
+ | 75 | `meeting.eb.topicType.list` | read | — | `R-LIST`+`R-COUNT` | — |
142
+ | 76 | `meeting.eb.topicType.detail` | read | `id` | `R-DETAIL` | — |
143
+ | 77 | `meeting.eb.topicType.update.prepare` | read-before-write | `id` | `W-PREP`;**先读原值**(部分字段 detail 不回值,需从 list 取) | 记 `continuation` |
144
+ | 78 | `meeting.eb.topicType.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读被改字段 |
145
+ | 79 | `meeting.eb.topicType.delete.prepare` | read-before-write | `id` | `W-PREP` | — |
146
+ | 80 | `meeting.eb.topicType.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list 不含 |
147
+ | 81 | `meeting.eb.topic.list` | read | — | `R-LIST`+`R-COUNT`(议题为 EB 独有) | — |
148
+ | 82 | `meeting.eb.topic.detail` | read | `id` | `R-DETAIL` | — |
149
+ | 83 | `meeting.eb.topic.update.prepare` | read-before-write | `id` | `W-PREP` | 记 `continuation` |
150
+ | 84 | `meeting.eb.topic.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读被改字段 |
151
+ | 85 | `meeting.eb.topic.delete.prepare` | read-before-write | `id` | `W-PREP` | — |
152
+ | 86 | `meeting.eb.topic.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list 不含(**只删自建议题**) |
153
+
154
+ ### 4.6 EB 版 · 应用设置 / 决议 / 决议任务
155
+
156
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
157
+ |---|---|---|---|---|---|
158
+ | 87 | `meeting.eb.baseSet.get` | read | — | 返回 `only_flow_create` / `open_mt_approve` / 冲突策略 | 建会前必读 |
159
+ | 88 | `meeting.eb.decision.list` | read | — | `R-LIST`+`R-COUNT` | — |
160
+ | 89 | `meeting.eb.decision.detail` | read | `id` | `R-DETAIL`(带 `detail1` 明细) | — |
161
+ | 90 | `meeting.eb.decision.create.prepare` | read-before-write | `mt_id`,`mt_content`,`detail1` | `W-PREP` | 记 `continuation` |
162
+ | 91 | `meeting.eb.decision.create.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `decision.list`(**写失败也可能已落库,先回查**) |
163
+ | 92 | `meeting.eb.decision.delete.prepare` | read-before-write | `id` | `W-PREP` | — |
164
+ | 93 | `meeting.eb.decision.delete.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 list 不含(**只删自建决议**) |
165
+ | 94 | `meeting.eb.decision.publish.prepare` | read-before-write | `mt_id`,`mt_content`,`detail1` | `W-PREP`;发布 = 写决议 **+ 自动把会议标为已决议** | 记 `continuation` |
166
+ | 95 | `meeting.eb.decision.publish.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `decision.list` + 会议 `is_decision=1` |
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
+ | 97 | `meeting.eb.decisionTask.update.prepare` | read-before-write | `id`,`detail1` | `W-PREP`;`finish_status` 非法枚举需报 `invalid_enum` | 记 `continuation` |
169
+ | 98 | `meeting.eb.decisionTask.update.apply` | high-risk-write | `confirm`,`continuation` | `W-APPLY` | 回读 `decisionTask.list` 的 `detail1.finish_status`(改回未完成需传空格清空 `finish_date`) |
170
+
171
+ > **计数**:标准版 28(#1–#28)+ EB 版 70(#29–#98)+ 跨模式 1(#99)= **99**,与 `weaver-work-cli meeting schema` 的 operation 数一致。
172
+
173
+ ### 4.7 跨模式(EB / 标准版都可用)
174
+
175
+ | # | operation | 风险 | 必填入参 | 判据 | 回读 / 清理 |
176
+ |---|---|---|---|---|---|
177
+ | 99 | `meeting.link` | read | `dataId`(或 `dataIds`) | EB 模式:`source=dynamic`(首次)/`cache`(二次),`url` = `{baseUrl}/sp/ebdfpage/card/0/{objid}/{dataid}`,长 id 不得被舍入;标准版:`url` = `{baseUrl}/sp/meeting/meetingSingle?meetingId=`,且**不发任何请求**;会议室/会议类型在标准版下 `url=null` 且有 warning | 解析失败只降级为 `url=null` + `warnings`,不抛错 |
178
+
179
+ ## 5. 最少可跑示例(两平台各一份)
180
+
181
+ Windows PowerShell:
182
+
183
+ ```powershell
184
+ weaver-work-cli --json meeting run meeting.env.detect --input-json '{"refresh":true}'
185
+ weaver-work-cli --json meeting run meeting.eb.meeting.list --input-json '{"pageNo":1,"pageSize":20,"withCount":true}'
186
+ weaver-work-cli --json meeting run meeting.eb.decisionTask.list --input-json '{"pageNo":1,"pageSize":20,"withCount":true}'
187
+ weaver-work-cli --json meeting run meeting.eb.meeting.create.prepare --input-json '{"mt_creator":"<userId>","mt_name":"CLI-VERIFY-001","begin_datetime":"2026-09-24 09:00","end_datetime":"2026-09-24 10:00","mt_status":"2","operate_type":"ADD"}'
188
+ ```
189
+
190
+ macOS/Linux(bash/zsh):
191
+
192
+ ```bash
193
+ weaver-work-cli --json meeting run meeting.env.detect --input-json '{"refresh":true}'
194
+ weaver-work-cli --json meeting run meeting.eb.meeting.list --input-json '{"pageNo":1,"pageSize":20,"withCount":true}'
195
+ weaver-work-cli --json meeting run meeting.eb.decisionTask.list --input-json '{"pageNo":1,"pageSize":20,"withCount":true}'
196
+ weaver-work-cli --json meeting run meeting.eb.meeting.create.prepare --input-json '{"mt_creator":"<userId>","mt_name":"CLI-VERIFY-001","begin_datetime":"2026-09-24 09:00","end_datetime":"2026-09-24 10:00","mt_status":"2","operate_type":"ADD"}'
197
+ ```
198
+
199
+ ### 5.1 EB 写链路验证模板(六步,可照抄)
200
+
201
+ 1. `meeting.eb.meeting.create.prepare`(`mt_name` 用 `CLI-VERIFY-<时间戳>`)→ 记 `continuation`、检查 `preview.body`。
202
+ 2. `meeting.eb.meeting.create.apply`(`confirm:true` + `continuation`)→ 看 `data.association`(占用/回执/签到补建结果与 warnings)。
203
+ 3. `meeting.eb.meeting.list` 回读 → 拿到自建会议 id 与状态。
204
+ 4. 业务子链路:占用(`roomUsage.list?mt_id=`)/签到(`sign.list?mt_id=`)/回执(`receipt.list?mt_id=`)/决议(`decision.create|publish`)/决议任务(`decisionTask.list?mt_id=`)。
205
+ 5. 冲突复验:用同一 `address` + 同一时间段再跑 `meeting.eb.conflict.room` → 应识别冲突(`conflict_rejected` 或非空 warnings)。
206
+ 6. 清理:`meeting.eb.meeting.delete.prepare` → `apply`(级联回收占用/回执/签到;决议任务按设计保留)。
207
+
208
+ ### 5.2 标准版写链路验证模板
209
+
210
+ 1. `meeting.create.prepare`(名称 `CLI-VERIFY-<时间戳>`,`yyyy-MM-dd HH:mm`)→ 记 `continuation`。
211
+ 2. `meeting.create.apply` → `meeting.list` 回读拿 id。
212
+ 3. `meeting.change.*`(改名称)→ 回读确认字段已变。
213
+ 4. `meeting.cancel.*` → 回读状态;再 `meeting.delete.*` → 回读列表已移除。
214
+
215
+ ## 6. 不在范围(8 项,**不可验证**,需如实答复,禁止伪造)
216
+
217
+ | 功能 | 事实与证据 | 正确答复 |
218
+ |---|---|---|
219
+ | EB 会议纪要**创建 / 更新 / 删除** | 无自定义 interfacePk(只有 `query_meeting_minute_list/_count`);EB 侧纪要表 tag=`uf_mt_minutes`,只能走 OpenAPI `dataset/v2/saveFormData` | 说明只能在系统页面创建,或按 OpenAPI 通用能力人工处理 |
220
+ | `meeting.eb.roomUsage.delete.apply` | 真机实测:URL 带 `?id=` 仍报「主键传入不能为空」(eBuilder 侧配置问题,已穷尽) | 释放占用改走 `meeting.eb.meeting.delete`(**级联回收**) |
221
+ | 标准版会议室管理(增/改/删/锁定) | 服务端接口未实现 | EB 环境用 `meeting.eb.room.*`;标准版引导页面操作 |
222
+ | 标准版会议类型管理 | 服务端接口未实现 | EB 环境用 `meeting.eb.type.*` |
223
+ | 提前结束会议 `meeting.over` | 服务端为空实现(假成功),CLI 不提供 | 引导用户在系统页面结束 |
224
+ | 本人扫码签到(`signMeeting`)、签到二维码、大屏签到 | 依赖现场二维码票据 + 设备 IP,AI 代签破坏签到真实性 | 引导用户现场扫码/H5 签到 |
225
+ | 回收站(列表 / 还原 / 强制还原) | 本阶段未实现(`delete` 为软删,数据可还原但 CLI 无入口) | 引导用户到会议回收站页面操作 |
226
+ | 决议任务删除 | 任务由 ESB 自动生成,**不提供删除**;进度用 `decisionTask.update` 维护 | 说明按设计不支持删除,改为更新完成状态 |
227
+
228
+ > 附加归属事实(避免误报):**排座在 EB 版没有该功能**;**标准版会议本身没有议题/纪要**(EB 独有);两套数据互不相通。
229
+
230
+ ## 7. 负向与边界用例(14 项,验证"完整"的关键)
231
+
232
+ | # | 场景 | 构造 | 期望 |
233
+ |---|---|---|---|
234
+ | 1 | 必填缺失 | EB `meeting.create.prepare` 不传 `mt_name` | `missing_required_field`(不得静默通过) |
235
+ | 2 | 未确认 | 直接调 `*.apply` 不传 `confirm` | `confirmation.required` |
236
+ | 3 | 无效 continuation | `apply` 传过期/伪造 token | `continuation_expired` |
237
+ | 4 | id 不存在 | `meeting.eb.meeting.detail` 传不存在 id | `not_found` |
238
+ | 5 | 日期格式(不带秒) | EB 会议 `begin_datetime` 传 `2026-09-24 09:00:00` | 报「不满足传入格式」 |
239
+ | 6 | 日期格式(必须带秒) | 决议任务 `finish_date` 传 `2026-09-24 09:00` | 报格式错误/必填错误 |
240
+ | 7 | 非法枚举 | `decisionTask.update` 传 `finish_status=9` | `invalid_enum` |
241
+ | 8 | 分页 | `pageNo=2` 与第 1 页不重复;`total>pageSize` 时 `count=pageSize` | `pageInfo` 必须进 body,否则恒回 10 条 |
242
+ | 9 | 多值筛选 | `mt_id=A,B`(逗号) | 结果 = A + B 之和(实测纪要 27+23=50) |
243
+ | 10 | 空格清空 | `decisionTask.update` 传 `finish_date=" "` | 落库为空串(服务端 trim),状态回到"未完成" |
244
+ | 11 | 主键走 URL | 看 EB update/delete 的 `preview.path` | 必须带 `?id=<主键>`;只放 body 会报「主键传入不能为空」 |
245
+ | 12 | 冲突拦截 | 同房间同时间段重复建会 | `conflict_rejected`(应用设置=禁止)或非空 `warnings`(=仅提醒) |
246
+ | 13 | 越权 | 用他人不可见会议 id 执行 `change.prepare` | 服务端权限文案**原文转达**(如"您没有变更权限!") |
247
+ | 14 | 汇总口径 | `decisionTask.list` / `sign.list` / `receipt.list` | `progress.page` 明确给出「当页条数 vs 总数」;未跟进执行人计入 total;`is_sign="0"`(缺席)与空(未签到)**分开统计** |
248
+
249
+ ## 8. 回执报告模板(执行方产出)
250
+
251
+ | # | operation | 结果(PASS/FAIL/跳过) | 关键证据 | 备注 |
252
+ |---|---|---|---|---|
253
+ | 1 | `meeting.env.detect` | PASS | `mode=eb, baseUrl=…` | — |
254
+ | … | … | … | … | … |
255
+
256
+ 必须附:环境(`baseUrl`/`userId`/`mode`)、时间戳、**失败项的原始 `error.type/subtype` 与报错文案**、
257
+ 自建数据清单(id + 名称)与清理结果(是否已删、残留说明)。
258
+
259
+ ## 9. 可直接粘贴给其他智能体的提示词
260
+
261
+ ```text
262
+ 你是会议模块的验证执行方。请读取本 skill 的 references/meeting-verification.md,按其中的顺序与判据,
263
+ 对当前环境的会议功能做一次**全量验证**(标准版 28 + EB 版 70,共 98 个 operation):
264
+
265
+ 1. 先做先决条件 4 步(CLI 版本、共享规则、登录态、meeting.env.detect 判定 mode),并把结果报给我。
266
+ 2. 按 mode 选择对应的一套 operation,逐条执行第 4 节表格中的判据;只读直接跑,
267
+ 写入按「prepare → 我给确认 → apply → 回读 → 清理」四步走,**只用自建数据**(名称带 CLI-VERIFY- 前缀)。
268
+ 3. 第 6 节的 8 项不在范围,**不要尝试**,如实说明即可;第 7 节的 14 个负向用例必须逐个跑。
269
+ 4. 任何失败都要给出原始 error.type/subtype 与报错文案,禁止把失败写成"没有数据"。
270
+ 5. 最后按第 8 节模板给我一份完整回执,并列出未清理干净的数据 id。
271
+ ```
Binary file
@@ -5,11 +5,13 @@ display_name: 泛微E10事井然项目管理
5
5
  display_name_en: Weaver E10 Shijingran Project Management
6
6
  description_zh: 泛微E10事井然项目管理助手,封装项目和任务的创建、查询、修改、删除操作,并提供项目/任务类型、紧急程度、状态等字典查询能力。适用于在对话中通过 Agent 创建、查询、修改、删除项目或任务等场景。
7
7
  description_en: Weaver E10 Shijingran project management assistant. Covers CRUD operations for projects and tasks, and provides dictionary queries for project/task types, priorities, and statuses. Used when an Agent needs to create, query, modify, or delete projects or tasks in conversation.
8
- version: 1.0.7
8
+ version: 1.0.8
9
9
  author: 泛微网络科技股份有限公司
10
10
  agent_created: true
11
11
  requires:
12
12
  bins: ["weaver-work-cli"]
13
+ dependencies:
14
+ - weaver-e10-shared
13
15
  cliHelp: "weaver-work-cli project --help"
14
16
  ---
15
17
 
@@ -26,6 +28,28 @@ cliHelp: "weaver-work-cli project --help"
26
28
  先读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。
27
29
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
28
30
 
31
+ ### 登录与请求头凭证契约
32
+
33
+ 本 Skill 是 CLI 型技能,不自行发起 HTTP 请求:认证与会话**统一由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系托管**,禁止自建或绕过登录流程。
34
+
35
+ 所有 E10 请求由 `weaver-work-cli` 统一注入以下三项请求头,缺一不可(唯一权威声明见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md) 的「请求头契约」章节,本技能只做指针引用,不复制其代码块):
36
+
37
+ | 请求头 | 取值 | 约束 |
38
+ | --- | --- | --- |
39
+ | `Cookie` | `weaver-work-cli` 登录后返回的完整原始 Cookie 串 | 必须原样携带,禁止裁剪 / 去重 / 改写 |
40
+ | `eteamsid` | 登录会话对应的 ETEAMSID | 必须原样携带 |
41
+ | `User-Agent` | `AgentType=<agentType>,IsAgent=true` | 必须携带,不得省略 |
42
+
43
+ 以上三项均由 CLI 注入,不要手工拼装请求头,也不得把字段写进业务入参。
44
+
45
+ 认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
46
+
47
+ Agent 不得自行拼接、改写或向用户索取上述凭证(禁止要求用户贴 Cookie / ETEAMSID / Token),也不得直接 `curl` / `fetch` E10 接口,或把接口原始路径、Cookie、ETEAMSID、Token 当作"用户可执行步骤"写进回复。
48
+
49
+ 所有命令通过 `weaver-work-cli --json project run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli project schema` 是 operation、字段和风险等级的合约来源。
50
+
51
+ 命令示例、提示词和临时说明必须同时兼容 Windows 和 macOS/Linux;涉及 JSON 输入、用户目录、路径分隔符、Python 启动器或文件比对时,必须同时给 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例。Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
52
+
29
53
  ## 路由
30
54
 
31
55
  命中以下意图时按表路由到对应 operation 和 reference;不要为了普通查询执行 `project schema`、`project.version.check`、`project.form.fields` 或读取非必要 reference。
@@ -40,6 +64,7 @@ cliHelp: "weaver-work-cli project --help"
40
64
  | 按姓名解析员工/部门/分部 | `project.employee/department/subcompany.resolve` | [field-resolution.md](references/field-resolution.md) | 多个匹配必须让用户选择 |
41
65
  | 版本异常诊断 | `project.version.check` | [operations.md](references/operations.md) | 仅接口异常或用户主动询问 |
42
66
  | 创建/修改/删除任务或项目 | `project.task/*`、`project.project/*` 的 prepare/apply | [write-operations.md](references/write-operations.md) | 严格 prepare → apply |
67
+ | 附件上传、字段自动解析、系统状态改写等未暴露能力 | 无可用命令 | [disabled-capabilities.md](references/disabled-capabilities.md) | 如实告知并给替代路径,不要猜 operation |
43
68
 
44
69
  ## 高优先级语义
45
70
 
@@ -58,6 +83,14 @@ cliHelp: "weaver-work-cli project --help"
58
83
  5. 写操作先 `prepare`,向用户摘要目标、差异、风险、默认值和不可逆性;用户明确确认后才 `apply`。
59
84
  6. `partial/write_uncertain`、登录失效、回查失败或网络中断时停止写流程,不自动重试。
60
85
 
86
+ ## 输出与展示
87
+
88
+ - 列表和详情默认只给摘要:记录数 + 下方固定展示列,不粘贴完整 JSON,不罗列全部原始字段;完整响应过长时先落本地 UTF-8 文件再给摘要与路径。
89
+ - 默认展示列以 [`operations.md`](references/operations.md) 的「输出处理」为准:任务列表 `task_name / task_type / plan_start_time / plan_finish_time / manager / task_status / progress / create_time`;项目列表把 `task_*` 换成 `proj_*`;详情在此基础上补 `project`/`priority` 与描述、创建时间。用户明确指定字段时以用户为准。
90
+ - 记录名称列(`task_name` / `proj_name`)渲染为 Markdown 链接 `[名称](detail_url)`,**不单独输出 `detail_url` 列**;`detail_url_warning` 时名称保持纯文本并如实说明,不得编造 URL。
91
+ - 关联字段(`manager`、`participant(s)`、`task_type`、`proj_status` 等)只展示 `name`,不展示内部 ID;字典 ID、对象 ID、`groupId` 只用于入参。
92
+ - 未指定状态时先说明默认口径「只查未开始 + 进行中」(默认系统状态口径见 [`operations.md`](references/operations.md));返回条数等于 `pageSize` 时提示可能还有下一页。
93
+
61
94
  ## 执行原则
62
95
 
63
96
  - 业务调用统一使用 `weaver-work-cli --json project run <operation>`,优先 `--input-json`;复杂多行 JSON 用 UTF-8 文件和 `--input <path>`。
@@ -75,10 +108,42 @@ cliHelp: "weaver-work-cli project --help"
75
108
  4. 登录失效:按共享规则处理登录,不得使用旧 continuation 直接重试。
76
109
  5. 回查失败:向用户说明结果不确定,等待用户决策。
77
110
 
111
+ ## 常用命令示例
112
+
113
+ 以下示例只示意参数形态;执行前必须先按 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md) 判定是否补 `--is-connector true`,命中时本任务内每条命令都要带。
114
+
115
+ Windows PowerShell:
116
+
117
+ ```powershell
118
+ weaver-work-cli --json project run project.task.list --input-json '{"filters":{"manager":"@me"},"pageNo":1,"pageSize":10,"withDetailUrl":false,"fields":["task_name","task_type","task_status","manager","plan_finish_time","progress"]}'
119
+ weaver-work-cli --json project run project.project.list --input-json '{"pageNo":1,"pageSize":10}'
120
+ weaver-work-cli --json project run project.task.detail --input-json '{"id":"<taskId>"}'
121
+ weaver-work-cli --json project run project.dictionary.task-status --input-json '{"pageNo":1,"pageSize":100}'
122
+ weaver-work-cli --json project run project.task.create.prepare --input-json '{"records":[{"task_name":"需求评审"}]}'
123
+ ```
124
+
125
+ macOS/Linux(bash/zsh):
126
+
127
+ ```bash
128
+ weaver-work-cli --json project run project.task.list --input-json '{"filters":{"manager":"@me"},"pageNo":1,"pageSize":10,"withDetailUrl":false,"fields":["task_name","task_type","task_status","manager","plan_finish_time","progress"]}'
129
+ weaver-work-cli --json project run project.project.list --input-json '{"pageNo":1,"pageSize":10}'
130
+ weaver-work-cli --json project run project.task.detail --input-json '{"id":"<taskId>"}'
131
+ weaver-work-cli --json project run project.dictionary.task-status --input-json '{"pageNo":1,"pageSize":100}'
132
+ weaver-work-cli --json project run project.task.create.prepare --input-json '{"records":[{"task_name":"需求评审"}]}'
133
+ ```
134
+
135
+ 写操作的 `prepare` 返回 continuation 后,必须先向用户摘要再执行 apply:
136
+
137
+ ```json
138
+ {"continuation":"PREPARE_CONTINUATION","confirm":true}
139
+ ```
140
+
78
141
  ## 不在范围
79
142
 
80
- - 禁止绕过 `weaver-work-cli` 直接调用 E10 原始接口。
81
- - 不提供附件上传;`attachment` 只接受已上传文件 ID,且处理文件前必须取得用户敏感数据确认。
143
+ - 禁止绕过 `weaver-work-cli` 直接调用 E10 原始接口;禁止 `curl` / `fetch` / 浏览器自动化访问 `/api/ebuilder/**`、`/api/ebproject/**` 等路径。
144
+ - 禁止读取或复制 CLI runtime 内部的 Token、Cookie、ETEAMSID;禁止读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
145
+ - 不提供附件上传;`attachment` 只接受已上传文件 ID,且处理文件前必须取得用户敏感数据确认。未暴露能力清单见 [`disabled-capabilities.md`](references/disabled-capabilities.md)。
82
146
  - 不自动替用户选择同名人员、组织、项目、任务或字典选项。
83
147
  - 不自动翻页、自动扩大 pageSize 或自动聚合全量数据。
84
148
  - 不在正常路径预调用版本诊断。
149
+ - 非事井然的 E10 能力(流程审批、组织人员、发票、文书定档案等)不由本 Skill 承载,转对应业务技能。
@@ -0,0 +1,22 @@
1
+ # 事井然未暴露能力
2
+
3
+ ## 何时使用
4
+
5
+ 用户要求的动作在本 Skill 的 operation 列表里没有对应命令时,先读本文,如实说明「当前 CLI 未提供该能力」,并给出可行的替代路径;**不要猜测 operation 名,不要直接调用 E10 原始接口,也不要用别的 operation 硬凑**。
6
+
7
+ ## 当前未纳入 CLI 的能力
8
+
9
+ | 用户诉求 | 现状 | 处理方式 |
10
+ | --- | --- | --- |
11
+ | 给任务/项目上传或替换附件 | `project.attachment.upload` 未暴露。源资料只说明 `attachment` 字段接受**已上传文件 ID**,未提供事井然模块自己的上传接口与文件安全确认链 | 不要把本地文件当作附件直接写入。先告知用户需在 E10 页面完成上传,再提供已上传文件 ID;本 Skill 不代办上传 |
12
+ | 按字段类型自动解析名称到 ID | `project.field.auto-resolve` 未暴露。CLI 只提供分步解析 operation,由 Agent 按字段类型显式编排 | 按 [`field-resolution.md`](field-resolution.md) 分步解析:人员/部门/分部用 `project.employee/department/subcompany.resolve`;项目/任务名称用 `project.project.list` / `project.task.list`;Ebuilder 关联字段用 `project.form.fields` + `project.form.data.page`;字典字段用 `project.dictionary.*` |
13
+ | 修改系统状态 `sys_status` | `sys_status` 是系统维护字段,只能用于查询过滤 | 不接受写入。用户要变更系统状态时,说明需在 E10 页面操作 |
14
+ | 跨表单批量导入 / 批量删除 | 未暴露 | 创建可用 `records` 数组在单次 `create.prepare` 里传 1-100 条;删除只能逐条 `delete.prepare/apply`,不要并发刷接口 |
15
+ | 直接把某个字段的全部选项元数据一次性拉全 | `project.form.options` 可用,但必须先确定 `table` 与 `fieldName` | 按 [`field-resolution.md`](field-resolution.md) 的「Select 与字典字段」先定位字段,再查选项 |
16
+ | 附件内容下载、OCR、文件内容解析 | 未暴露 | 不属于本 Skill;不要用其他模块的接口代替 |
17
+
18
+ ## 注意
19
+
20
+ - 未暴露 ≠ 用户不能做:优先给出 E10 页面路径或已支持的分步替代方案,不要为了"完成"而编造 operation、字段或接口路径。
21
+ - 任何写入都必须走 `prepare -> apply` 确认链;不用"能力未暴露"当作跳过用户确认的理由。
22
+ - 与 operation、字段、风险等级有关的最终依据是 `weaver-work-cli project schema`,不是本文;本文只说明缺口与替代路径。
@@ -1241,7 +1241,7 @@
1241
1241
  }
1242
1242
  },
1243
1243
  "artifactBaseline": {
1244
- "aggregateSha256": "60eafebefaa0b7d6e75758ae78e3e5e1349ee453f33826de54c7293fb6e0fa41",
1244
+ "aggregateSha256": "eb2413bba08ce89d006615d49d08ef5967ba2220d11481e674dafd78680100c8",
1245
1245
  "files": [
1246
1246
  {
1247
1247
  "path": "docs/_catalog.md",
@@ -1288,8 +1288,8 @@
1288
1288
  {
1289
1289
  "path": "skills/weaver-e10-shijingran/SKILL.md",
1290
1290
  "role": "generated-skill-entry",
1291
- "size": 8174,
1292
- "sha256": "597968607ca3321aac3b91e687c5963bdf1baee16d5f394aad64910e1ece53bf"
1291
+ "size": 14475,
1292
+ "sha256": "4d92d0dda6c2f30b7501dcbc2e5d1b9e42b69a22d73b2df8d0c6a61326821154"
1293
1293
  },
1294
1294
  {
1295
1295
  "path": "src/shortcuts/index.ts",
@@ -1368,6 +1368,12 @@
1368
1368
  "role": "generated-test",
1369
1369
  "size": 15966,
1370
1370
  "sha256": "27abe41e8c6819d48c926fc10ebfaee7653defc8672c3634d0e838d42cde7f35"
1371
+ },
1372
+ {
1373
+ "path": "skills/weaver-e10-shijingran/references/disabled-capabilities.md",
1374
+ "role": "generated-reference",
1375
+ "size": 2501,
1376
+ "sha256": "722879e32b17988297f5c7ee9eab2f6df056e9da2a1560b1bdba3507b13d08b1"
1371
1377
  }
1372
1378
  ]
1373
1379
  },
@@ -1375,6 +1381,8 @@
1375
1381
  "只记录源资料指纹、operation 影响索引和产物指纹,不保存 Cookie、Token、认证信息、真实内网地址、大段源正文或个人主目录路径。",
1376
1382
  "source-manifest.json 自身不纳入 artifactBaseline 文件列表,避免自引用指纹无法稳定计算。",
1377
1383
  "源资料版本为 1.0.4,覆盖 25 个接口文档、1 个目录文档和 1 个字段解析流程指引。",
1378
- "project.attachment.upload 与 project.field.auto-resolve 因源资料缺少安全实现契约而保留为 withheldOperations。"
1384
+ "project.attachment.upload 与 project.field.auto-resolve 因源资料缺少安全实现契约而保留为 withheldOperations。",
1385
+ "2026-09-24:刷新本技能包内产物指纹(SKILL.md / references),新增 references/disabled-capabilities.md;行尾统一为 LF。",
1386
+ "2026-10-08:SKILL.md 的「登录与请求头凭证契约」改为请求头声明表格(Cookie / eteamsid / User-Agent),刷新本包产物指纹。"
1379
1387
  ]
1380
1388
  }