weaver-work-cli 0.1.26 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/cmd/setup/index.js +1 -1
- package/dist/internal/e10/auth/commands.js +1 -6
- package/dist/internal/e10/auth/messages.js +3 -0
- package/dist/internal/e10/auth/session.js +8 -0
- package/dist/internal/e10/auth-recovery.js +148 -0
- package/dist/internal/e10/client.js +47 -15
- package/dist/internal/e10/context.js +8 -8
- package/dist/internal/e10/index.js +1 -0
- package/dist/internal/e10/request-runtime.js +51 -9
- package/dist/shortcuts/archive/host.js +3 -2
- package/dist/shortcuts/archive/manifest.js +1 -1
- package/dist/shortcuts/archive-oa/host.js +2 -1
- package/dist/shortcuts/archive-oa/manifest.js +1 -1
- package/dist/shortcuts/asset/host.js +7 -6
- package/dist/shortcuts/blog/host.js +4 -3
- package/dist/shortcuts/caizhilian/host.js +3 -2
- package/dist/shortcuts/caizhilian/manifest.js +1 -1
- package/dist/shortcuts/calendar/host.js +2 -1
- package/dist/shortcuts/contract/host.js +34 -59
- package/dist/shortcuts/ehr/host.js +2 -1
- package/dist/shortcuts/esb/host.js +2 -1
- package/dist/shortcuts/fna/host.js +6 -3
- package/dist/shortcuts/fna/manifest.js +10 -5
- package/dist/shortcuts/fna/operations/expense-chart.js +162 -0
- package/dist/shortcuts/fna/operations/registry.js +2 -0
- package/dist/shortcuts/hrm/host.js +2 -1
- package/dist/shortcuts/im/host.js +3 -2
- package/dist/shortcuts/invoice/host.js +9 -7
- package/dist/shortcuts/invoice/manifest.js +23 -142
- package/dist/shortcuts/invoice/operations/issuing-qys.js +266 -203
- package/dist/shortcuts/invoice/operations/registry.js +1 -6
- package/dist/shortcuts/jiuchuanhui/host.js +2 -1
- package/dist/shortcuts/mail/host.js +2 -1
- package/dist/shortcuts/meeting/host.js +2 -1
- package/dist/shortcuts/meeting/operations/eb/conflict.js +78 -12
- package/dist/shortcuts/okr/host.js +2 -1
- package/dist/shortcuts/plan/host.js +2 -1
- package/dist/shortcuts/project/host.js +2 -1
- package/dist/shortcuts/workflow/host.js +3 -5
- package/dist/shortcuts/workflow/index.js +4 -1
- package/dist/shortcuts/workflow/operations/chatscene.js +4 -22
- package/dist/shortcuts/workflow/operations/form.js +281 -166
- package/dist/shortcuts/workflow/operations/read.js +39 -8
- package/dist/shortcuts/workflow/operations/registry.js +2 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/businessRules.js +331 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/detailFieldRules.js +133 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +326 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +113 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +259 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoListRows.js +64 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoOutputPlanner.js +28 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.aggregate.js +70 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +267 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +392 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +165 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +448 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +348 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +222 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.pipeline.js +66 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +502 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +540 -0
- package/dist/shortcuts/workflow/stdout-compact.js +7 -0
- package/docs/SKILL.md +1 -1
- package/docs/_catalog.md +2 -1
- package/docs/agent-invoice.md +1 -1
- package/docs/caizhilian.md +1 -1
- package/docs/e10-auth.md +1 -1
- package/docs/fna.md +7 -3
- package/docs/invoice.md +4 -6
- package/docs/todo-smart-convert/README.md +171 -0
- package/docs/todo-smart-convert/data-contract.md +236 -0
- package/docs/todo-smart-convert/mock/ai-todo-query-target.json +209 -0
- package/docs/todo-smart-convert/subgroup-rules.md +245 -0
- package/package.json +1 -1
- package/scripts/package-skill.mjs +1 -1
- package/skill-template/business-info.json +4 -1
- package/skill-template/domains/caizhilian.md +2 -1
- package/skill-template/domains/qiyecheng.md +1 -0
- package/skill-template/domains/yepiaotong.md +6 -2
- package/skill-template/skill-template.md +1 -0
- package/skills/weaver-e10-blog/SKILL.md +6 -1
- package/skills/weaver-e10-blog/references/blog-query.md +3 -1
- package/skills/weaver-e10-caizhilian/SKILL.md +18 -9
- package/skills/weaver-e10-caizhilian/references/action-flow.md +70 -0
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +6 -2
- package/skills/weaver-e10-caizhilian/references/auth-and-install.md +207 -0
- package/skills/weaver-e10-caizhilian/references/file-collection.md +56 -54
- package/skills/weaver-e10-caizhilian/references/file-upload.md +4 -4
- package/skills/weaver-e10-caizhilian/references/host-executor-prompt.md +32 -0
- package/skills/weaver-e10-caizhilian/references/host-platform-integration.md +46 -0
- package/skills/weaver-e10-caizhilian/references/rule-index.md +56 -0
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +5 -16
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +4 -13
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +6 -15
- package/skills/weaver-e10-caizhilian/references/setting-storage-docs-summary.md +126 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage-field-map.md +57 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +142 -482
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +7 -7
- package/skills/weaver-e10-caizhilian/references/task-workflow.md +87 -0
- package/skills/weaver-e10-caizhilian/references/withheld.md +2 -2
- package/skills/weaver-e10-caizhilian/references/write-protocol.md +7 -0
- package/skills/weaver-e10-calendar/SKILL.md +6 -1
- package/skills/weaver-e10-esb/SKILL.md +8 -0
- package/skills/weaver-e10-esb/references/input-format.md +3 -1
- package/skills/weaver-e10-esb/references/source-manifest.json +5 -5
- package/skills/weaver-e10-hrm/SKILL.md +6 -1
- package/skills/weaver-e10-hrm/references/employee.md +1 -1
- package/skills/weaver-e10-hrm/references/org.md +1 -1
- package/skills/weaver-e10-hrm/references/position.md +1 -1
- package/skills/weaver-e10-jinchengda/SKILL.md +2 -1
- package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +1 -1
- package/skills/weaver-e10-jiuchuanhui/SKILL.md +6 -1
- package/skills/weaver-e10-jucailin/SKILL.md +6 -1
- package/skills/weaver-e10-jucailin/references/hr-contact.md +1 -1
- package/skills/weaver-e10-jucailin/references/salary.md +1 -1
- package/skills/weaver-e10-mail/SKILL.md +6 -1
- package/skills/weaver-e10-meeting/SKILL.md +11 -6
- package/skills/weaver-e10-meeting/references/meeting-eb.md +7 -3
- package/skills/weaver-e10-meeting/references/meeting-queries.md +3 -1
- package/skills/weaver-e10-meeting/references/meeting-verification.md +4 -2
- package/skills/weaver-e10-okr/SKILL.md +6 -1
- package/skills/weaver-e10-okr/references/source-manifest.json +5 -5
- package/skills/weaver-e10-plan/SKILL.md +6 -1
- package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +3 -1
- package/skills/weaver-e10-plan/references/plan-report-query.md +3 -1
- package/skills/weaver-e10-plan/references/source-manifest.json +7 -7
- package/skills/weaver-e10-qiyecheng/SKILL.md +16 -6
- package/skills/weaver-e10-qiyecheng/references/catalog.md +6 -3
- package/skills/weaver-e10-qiyecheng/references/expense-center.md +2 -0
- package/skills/weaver-e10-qiyecheng/references/expense-chart.md +78 -0
- package/skills/weaver-e10-qiyecheng/references/source-manifest.json +87 -33
- package/skills/weaver-e10-shared/SKILL.md +37 -14
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +11 -8
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +4 -4
- package/skills/weaver-e10-shared/references/weaver-e10-installation.md +3 -1
- package/skills/weaver-e10-wenshuding/SKILL.md +6 -1
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
- package/skills/weaver-e10-workflow/SKILL.md +23 -1
- package/skills/weaver-e10-workflow/references/source-manifest.json +1 -2
- package/skills/weaver-e10-workflow/references/todo-smart-convert.md +282 -0
- package/skills/weaver-e10-workflow/references/workflow-create.md +30 -55
- package/skills/weaver-e10-workflow/scripts/todo-summary.cjs +695 -0
- package/skills/weaver-e10-yepiaotong/SKILL.md +19 -17
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +75 -78
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +179 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +238 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +7 -7
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +11 -5
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +55 -33
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +102 -23
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +1 -1
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +53 -42
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +94 -214
- package/skills/weaver-e10-yimiaoban/SKILL.md +9 -2
- package/skills/weaver-e10-yimiaoban/references/file-user-i18n.md +1 -1
- package/skills/weaver-e10-yimiaoban/references/msg-read.md +1 -1
- package/skills/weaver-e10-yimiaoban/references/source-manifest.json +9 -9
- package/skills/weaver-e10-ziguanjia/SKILL.md +6 -1
- package/dist/shortcuts/invoice/operations/issuing.js +0 -198
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-field-rules.md +0 -161
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-qys-ledger.md +0 -66
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +0 -107
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
{
|
|
2
|
+
"smartSummaryTitle": "黄经理,您当前有 149 条待办,清单如下:",
|
|
3
|
+
"totalCount": 149,
|
|
4
|
+
"wfIdGroup": [
|
|
5
|
+
{
|
|
6
|
+
"id": "priority",
|
|
7
|
+
"topPriority": true,
|
|
8
|
+
"title": "建议优先处理的流程",
|
|
9
|
+
"count": 2,
|
|
10
|
+
"defaultExpanded": true,
|
|
11
|
+
"displayItems": [
|
|
12
|
+
{
|
|
13
|
+
"type": "request",
|
|
14
|
+
"requestData": {
|
|
15
|
+
"requestId": 880000001,
|
|
16
|
+
"workflowId": 1003,
|
|
17
|
+
"userMasterId": 900001,
|
|
18
|
+
"isremark": 0,
|
|
19
|
+
"nodeId": 500301,
|
|
20
|
+
"overTime": true,
|
|
21
|
+
"userOverTime": "已超时",
|
|
22
|
+
"requestLevel": 2,
|
|
23
|
+
"requestLevelShow": "紧急",
|
|
24
|
+
"requestNameHtml": "客户晚宴招待(亚太区合作伙伴大会收官)",
|
|
25
|
+
"requestNameTitle": "客户晚宴招待(亚太区合作伙伴大会收官)",
|
|
26
|
+
"creater": 910026,
|
|
27
|
+
"createrName": "韩雪",
|
|
28
|
+
"summary": "为配合 11/08 亚太区合作伙伴大会收官,申请客户晚宴招待费用 ¥1,280。"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "request",
|
|
33
|
+
"requestData": {
|
|
34
|
+
"requestId": 880000002,
|
|
35
|
+
"workflowId": 1001,
|
|
36
|
+
"userMasterId": 900002,
|
|
37
|
+
"isremark": 0,
|
|
38
|
+
"nodeId": 500302,
|
|
39
|
+
"overTime": false,
|
|
40
|
+
"userOverTime": "11-01到期",
|
|
41
|
+
"requestLevel": 2,
|
|
42
|
+
"requestLevelShow": "紧急",
|
|
43
|
+
"requestNameHtml": "产品经理实战训练营报名",
|
|
44
|
+
"requestNameTitle": "产品经理实战训练营报名",
|
|
45
|
+
"creater": 910027,
|
|
46
|
+
"createrName": "陈安",
|
|
47
|
+
"summary": "11 月产品经理实战训练营报名,需 11/01 前确认参训名单。"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "1001",
|
|
54
|
+
"topPriority": false,
|
|
55
|
+
"title": "内部留言",
|
|
56
|
+
"count": 3,
|
|
57
|
+
"defaultExpanded": false,
|
|
58
|
+
"displayItems": [
|
|
59
|
+
{
|
|
60
|
+
"type": "group",
|
|
61
|
+
"id": "1001-1",
|
|
62
|
+
"title": "培训通知",
|
|
63
|
+
"count": 2,
|
|
64
|
+
"summary": "含「11月产品经理实战训练营」等 2 条培训通知,由 陈安、林珂 发起,可展开逐条查看或直接汇总处理",
|
|
65
|
+
"defaultExpanded": false,
|
|
66
|
+
"requestDatas": [
|
|
67
|
+
{
|
|
68
|
+
"requestId": 880000003,
|
|
69
|
+
"workflowId": 1001,
|
|
70
|
+
"userMasterId": 900003,
|
|
71
|
+
"isremark": 0,
|
|
72
|
+
"nodeId": 500303,
|
|
73
|
+
"overTime": false,
|
|
74
|
+
"userOverTime": "",
|
|
75
|
+
"requestLevel": 0,
|
|
76
|
+
"requestLevelShow": "正常",
|
|
77
|
+
"requestNameHtml": "11月产品经理实战训练营报名",
|
|
78
|
+
"requestNameTitle": "11月产品经理实战训练营报名",
|
|
79
|
+
"creater": 910027,
|
|
80
|
+
"createrName": "陈安",
|
|
81
|
+
"summary": "训练营 11/12 开班,需 11/01 前报名。"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"requestId": 880000004,
|
|
85
|
+
"workflowId": 1001,
|
|
86
|
+
"userMasterId": 900004,
|
|
87
|
+
"isremark": 0,
|
|
88
|
+
"nodeId": 500304,
|
|
89
|
+
"overTime": false,
|
|
90
|
+
"userOverTime": "",
|
|
91
|
+
"requestLevel": 0,
|
|
92
|
+
"requestLevelShow": "正常",
|
|
93
|
+
"requestNameHtml": "E10 集训(第三期)通知",
|
|
94
|
+
"requestNameTitle": "E10 集训(第三期)通知",
|
|
95
|
+
"creater": 910028,
|
|
96
|
+
"createrName": "林珂",
|
|
97
|
+
"summary": "第三期 E10 集训 11/05 开课,请提前安排时间。"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "request",
|
|
103
|
+
"requestData": {
|
|
104
|
+
"requestId": 880000005,
|
|
105
|
+
"workflowId": 1001,
|
|
106
|
+
"userMasterId": 900005,
|
|
107
|
+
"isremark": 0,
|
|
108
|
+
"nodeId": 500305,
|
|
109
|
+
"overTime": false,
|
|
110
|
+
"userOverTime": "",
|
|
111
|
+
"requestLevel": 0,
|
|
112
|
+
"requestLevelShow": "正常",
|
|
113
|
+
"requestNameHtml": "华东区大客户成功案例分享",
|
|
114
|
+
"requestNameTitle": "华东区大客户成功案例分享",
|
|
115
|
+
"creater": 910029,
|
|
116
|
+
"createrName": "郑蔓",
|
|
117
|
+
"summary": "分享华东区大客户落地的 E10 多租户方案与实施要点。"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "1003",
|
|
124
|
+
"topPriority": false,
|
|
125
|
+
"title": "报销申请",
|
|
126
|
+
"count": 4,
|
|
127
|
+
"defaultExpanded": false,
|
|
128
|
+
"displayItems": [
|
|
129
|
+
{
|
|
130
|
+
"type": "group",
|
|
131
|
+
"id": "1003-1",
|
|
132
|
+
"title": "小额费用报销汇总(单笔 ≤ ¥100)",
|
|
133
|
+
"count": 3,
|
|
134
|
+
"summary": "单笔 ¥36 ~ ¥88,合计 ¥310,涵盖 3 类费用,由 郑楠、韩东、李哲 发起,可展开逐条查看或直接汇总处理",
|
|
135
|
+
"defaultExpanded": false,
|
|
136
|
+
"requestDatas": [
|
|
137
|
+
{
|
|
138
|
+
"requestId": 880000006,
|
|
139
|
+
"workflowId": 1003,
|
|
140
|
+
"userMasterId": 900006,
|
|
141
|
+
"isremark": 0,
|
|
142
|
+
"nodeId": 500306,
|
|
143
|
+
"overTime": false,
|
|
144
|
+
"userOverTime": "",
|
|
145
|
+
"requestLevel": 0,
|
|
146
|
+
"requestLevelShow": "正常",
|
|
147
|
+
"requestNameHtml": "市内交通报销",
|
|
148
|
+
"requestNameTitle": "市内交通报销",
|
|
149
|
+
"creater": 910030,
|
|
150
|
+
"createrName": "郑楠",
|
|
151
|
+
"summary": "市内交通费 ¥36"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"requestId": 880000007,
|
|
155
|
+
"workflowId": 1003,
|
|
156
|
+
"userMasterId": 900007,
|
|
157
|
+
"isremark": 0,
|
|
158
|
+
"nodeId": 500307,
|
|
159
|
+
"overTime": false,
|
|
160
|
+
"userOverTime": "",
|
|
161
|
+
"requestLevel": 0,
|
|
162
|
+
"requestLevelShow": "正常",
|
|
163
|
+
"requestNameHtml": "客户接待餐费报销",
|
|
164
|
+
"requestNameTitle": "客户接待餐费报销",
|
|
165
|
+
"creater": 910031,
|
|
166
|
+
"createrName": "韩东",
|
|
167
|
+
"summary": "客户接待餐费 ¥88"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"requestId": 880000008,
|
|
171
|
+
"workflowId": 1003,
|
|
172
|
+
"userMasterId": 900008,
|
|
173
|
+
"isremark": 0,
|
|
174
|
+
"nodeId": 500308,
|
|
175
|
+
"overTime": false,
|
|
176
|
+
"userOverTime": "",
|
|
177
|
+
"requestLevel": 0,
|
|
178
|
+
"requestLevelShow": "正常",
|
|
179
|
+
"requestNameHtml": "办公耗材采购报销",
|
|
180
|
+
"requestNameTitle": "办公耗材采购报销",
|
|
181
|
+
"creater": 910032,
|
|
182
|
+
"createrName": "李哲",
|
|
183
|
+
"summary": "打印纸 1 箱 ¥186"
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"type": "request",
|
|
189
|
+
"requestData": {
|
|
190
|
+
"requestId": 880000009,
|
|
191
|
+
"workflowId": 1003,
|
|
192
|
+
"userMasterId": 900009,
|
|
193
|
+
"isremark": 0,
|
|
194
|
+
"nodeId": 500309,
|
|
195
|
+
"overTime": false,
|
|
196
|
+
"userOverTime": "",
|
|
197
|
+
"requestLevel": 0,
|
|
198
|
+
"requestLevelShow": "正常",
|
|
199
|
+
"requestNameHtml": "Q4 标书打印与归档费用",
|
|
200
|
+
"requestNameTitle": "Q4 标书打印与归档费用",
|
|
201
|
+
"creater": 910033,
|
|
202
|
+
"createrName": "陈安",
|
|
203
|
+
"summary": "为应对 Q4 标书打印与归档高峰,申请专项打印装订费用 ¥1,860。"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# 二次分组(subgroup)规则
|
|
2
|
+
|
|
3
|
+
> 范围:`smartGroup` 阶段里把「工作流分组」再切成「汇总项 + 单条」的全部规则
|
|
4
|
+
> 源码:`todoSmartConvert.smartGroup.ts`、`businessRules.ts`、`todoSmartConvert.group.ts`
|
|
5
|
+
> 核对日期:2026-10-27(ai二次分组改造后定稿:删除 `other` 汇总项、<3 条硬门槛不再被计划覆盖、意图表驱动、详情缓存)
|
|
6
|
+
|
|
7
|
+
## 0. 一句话
|
|
8
|
+
|
|
9
|
+
大组是否做 ai二次分组、怎么分,由 **「业务类型」+「用户意图是否适用本组」+「有没有给本组计划」+「组内条数门槛」** 四个因素决定;CLI 负责判定与兜底,AI 只提供「子组怎么切、叫什么名」。
|
|
10
|
+
|
|
11
|
+
**没有计划就不产汇总项**——只有三类确定性汇总项(请假阈值组 / 财务阈值组 / 客户问题支持过期组)例外,其余一律平铺。
|
|
12
|
+
|
|
13
|
+
## 1. 门槛与硬约束
|
|
14
|
+
|
|
15
|
+
| 规则 | 值 / 行为 |
|
|
16
|
+
|---|---|
|
|
17
|
+
| 最小条数 | `GROUP_MIN_ITEMS_FOR_SUBGROUP = 3`(`group.ts`) |
|
|
18
|
+
| 不足 3 条 | **一律平铺单条**,不产生任何汇总项;**即使给了 `aiGroups` 也忽略**并写 warning(硬门槛不再被计划覆盖) |
|
|
19
|
+
| 优先组 | 不做 ai二次分组;`aiGroups` 里出现 `groupId:"priority"` ⇒ 硬失败 `ai_group_priority_unsupported` |
|
|
20
|
+
| 计划作用范围 | 只作用于本组;本组是否采纳还受「业务类型 + 意图是否适用」限制(见 §2) |
|
|
21
|
+
| 全局开关已取消 | `aiGroups: []` 等价于「没传」,不再有单独的「兼容校验路径」 |
|
|
22
|
+
| 叠加视图影响 | 优先条目仍算进它所属工作流分组的条数,所以「原本 2 条 + 1 条超时」的组现在算 3 条,**会跨过门槛** |
|
|
23
|
+
| 空 `groupFocus` | 只影响「计划是否被采纳」;不影响 `<3` 门槛与确定性规则 |
|
|
24
|
+
|
|
25
|
+
## 2. 决策顺序(每个非优先组,严格按代码顺序)
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
kind = detectBusinessKind(group.title) // 组名判定,见 §5
|
|
29
|
+
groupHasFocus = hasFocus && focusAppliesToKind(groupFocus, kind) // 意图表,见 §4
|
|
30
|
+
plansAllowed = groupHasFocus || kind === 'internal-message' // 计划是否可能被采纳
|
|
31
|
+
|
|
32
|
+
D0 优先组 ─────────────────────────────────▶ 全部单条;defaultExpanded=true;结束
|
|
33
|
+
D1 满意度类 ───────────────────────────────▶ 全部单条;summary 用标题兜底(不调 AI);忽略计划 + warning
|
|
34
|
+
D2 组内 <3 条 ─────────────────────────────▶ 全部平铺;忽略计划 + warning(硬门槛)
|
|
35
|
+
D3 计划不被采纳(kind 非内部留言 且 意图不适用)
|
|
36
|
+
───────────────────────────────────▶ 全部平铺 + warning(区分「意图不适用」与「本类型默认不分组」两种文案)
|
|
37
|
+
D4 计划被采纳但本组一条计划都没有
|
|
38
|
+
内部留言 ─────────────────────────▶ **硬失败 `ai_groups_required`**(没有平铺这个第三态,必须补计划)
|
|
39
|
+
其他类型 ─────────────────────────▶ warning「意图适用但模型未给本组计划,按无意图处理」→ 落到 D5
|
|
40
|
+
D5 无生效计划 ⇒ 只有三类确定性汇总项会产汇总项:
|
|
41
|
+
leave / finance ─────────────────────▶ 阈值组(≤1天 / ≤100元;**有命中才建**)+ 其余平铺
|
|
42
|
+
issue-support ───────────────────────▶ 「已过期及今天即将过期的流程」(**有命中才建**)+ 其余平铺
|
|
43
|
+
other ───────────────────────────────▶ 全部平铺(写一条 warning 说明原因)
|
|
44
|
+
(internal-message 到不了这里:D4 已硬失败)
|
|
45
|
+
D6 有生效计划 ⇒ 按计划切(见 §6):
|
|
46
|
+
a) 保留标题(1天以内/100元以内)逐条核阈值,超阈值剔出转平铺 + 点名
|
|
47
|
+
b) 子组 <2 条 ⇒ 解散,条目转平铺
|
|
48
|
+
c) 漏分条目 ⇒ 平铺(**不造 other**)
|
|
49
|
+
D7 排序:无 focus → 条数降序(稳定排序);有 focus → 沿用 AI 给的顺序
|
|
50
|
+
D8 编号:id = `${groupId}-${排序后下标+1}`
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
> **结构恒定**:`displayItems` 只有两种形态——真子组(`type:"group"`)或平铺条目(`type:"request"`)。
|
|
54
|
+
> 不再出现「与父组同名」的整组汇总项,也不再出现 `other` 兜底汇总项。
|
|
55
|
+
|
|
56
|
+
## 3. 行为矩阵(最容易 review 错的地方)
|
|
57
|
+
|
|
58
|
+
| 本组情况 | 无计划 · 无 focus | 无计划 · 意图适用 | 有本组计划 · 采纳 | 有本组计划 · 不采纳 |
|
|
59
|
+
|---|---|---|---|---|
|
|
60
|
+
| 优先组 | 全单条(置顶展开) | 同左 | 硬失败 | 硬失败 |
|
|
61
|
+
| 满意度类 | 全单条 + 标题摘要 | 全单条 + 标题摘要 | 全单条(忽略计划 + warning) | 同左 |
|
|
62
|
+
| **任意类型 <3 条** | 平铺 | 平铺 | **平铺(硬门槛,忽略计划)** | 平铺 |
|
|
63
|
+
| 内部留言 ≥3 条 | **必须给计划**:按流程标题分(缺计划 → `ai_groups_required`) | **必须给计划**:按侧重点+详情分 | **按计划细分** | —(总是采纳) |
|
|
64
|
+
| 请假/财务 ≥3 条 | 阈值组 + 其余平铺 | 按计划细分 | 按计划细分(保留标题仍在核阈值) | 阈值组 + 其余平铺 |
|
|
65
|
+
| 客户问题支持 ≥3 条 | 过期组 + 其余平铺 | 按计划细分 | 按计划细分 | 过期组 + 其余平铺 |
|
|
66
|
+
| 其他类 ≥3 条 | 平铺 + warning | 按计划细分 | 按计划细分 | **平铺**(本类型无 focus 时忽略计划) |
|
|
67
|
+
|
|
68
|
+
> **只有内部留言(无 focus)和「意图适用本组的任意类型」会消费 `aiGroups`**;其他类在无 focus 时给了计划也会被忽略并写 warning。
|
|
69
|
+
|
|
70
|
+
## 4. 意图表 `INTENT_RULES`(`businessRules.ts`)
|
|
71
|
+
|
|
72
|
+
用户意图不是「随便一句中文」,而是**按维度分类**的:专属意图只作用于对应业务类型,通用意图只作用于内部留言与其他类。
|
|
73
|
+
|
|
74
|
+
| id | 标签 | 命中词(正则片段) | 作用类型 `kinds` |
|
|
75
|
+
|---|---|---|---|
|
|
76
|
+
| `leave` | 请假维度 | 请假/休假/年假/调休/病假/事假/婚假/产假/陪产/丧假/探亲/工伤/哺乳/假别/假期/假种/天数 | `leave` |
|
|
77
|
+
| `finance` | 财务维度 | 报销/费用/金额/发票/差旅/借款/付款/请款/科目/票据/对公/核销 | `finance` |
|
|
78
|
+
| `issue-support` | 问题支持维度 | 问题/模块/处理阶段/客户问题/工单/支持 | `issue-support` |
|
|
79
|
+
| `generic` | 通用维度 | 客户/发起人/创建人/提交人/时间/日期/紧急/等级/优先级/主题/标题/类型/类别/状态/节点/内容 | `internal-message`、`other` |
|
|
80
|
+
|
|
81
|
+
判定规则(`intentAppliesToKind`,顺序不可换):
|
|
82
|
+
|
|
83
|
+
1. `groupFocus` 为空,或本组是满意度类 ⇒ **不适用**(= 无意图);
|
|
84
|
+
2. 先看**专属意图**(`leave`/`finance`/`issue-support`):任一命中 ⇒ **只按专属的 `kinds` 判**,通用词同时出现也忽略;
|
|
85
|
+
3. 专属都没命中才看通用意图;
|
|
86
|
+
4. 都不命中 ⇒ **视为没有意图**:不报错、不喂 AI,按该类型的确定性规则处理。
|
|
87
|
+
|
|
88
|
+
> 推论:`"按费用类型"` 对财务类适用、对请假类**不**适用(专属「财务维度」不包含 `leave`);
|
|
89
|
+
> `"按客户"` 对内部留言/其他类适用、对请假/财务/问题支持**不**适用。
|
|
90
|
+
> 给错类型的意图不会硬失败,只会退回确定性规则并写 warning。
|
|
91
|
+
|
|
92
|
+
## 5. 业务类型判定
|
|
93
|
+
|
|
94
|
+
按**组名(= workflowName)**判定,顺序不可换(客户问题支持精确名优先、满意度次之,避免「费用报销满意度调查」被归为财务):
|
|
95
|
+
|
|
96
|
+
| 类型 | 判据 | 无计划时的分组行为 | 组摘要 / 单条摘要 |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| `issue-support` | **精确名**:`Ecology客户问题支持解决流程`、`E10客户问题支持解决流程` | 「已过期及今天即将过期的流程」一组,其余平铺;无命中则全平铺 | 过期组 = CLI 固定模板 |
|
|
99
|
+
| `satisfaction` | `满意度\|满意调查\|评价调查\|服务评价\|问卷调查` | 全部单条 | 单条 `summary` **= 条目标题**(不调 AI) |
|
|
100
|
+
| `internal-message` | `INTERNAL_MESSAGE_WORKFLOW_PATTERN`(内部留言/内部消息/留言板/意见建议…) | **平铺单条**(有计划才细分) | 计划子组留空交 AI |
|
|
101
|
+
| `leave` | 请假/休假/年假/调休/病假/事假/婚假/产假/陪产/丧假/探亲假/工伤假/哺乳假/公休 | ≤1 天合并,其余平铺 | 阈值组 = CLI 固定模板 |
|
|
102
|
+
| `finance` | 报销/费用/付款/请款/借款/发票/差旅/对公/资金/核销 | 单笔 ≤100 元合并,其余平铺 | 阈值组 = CLI 固定模板(金额区间/合计/费用类数) |
|
|
103
|
+
| `other` | 兜底 | **平铺单条** | 无汇总项 |
|
|
104
|
+
|
|
105
|
+
阈值:`LEAVE_DAY_THRESHOLD = 1`、`FINANCE_AMOUNT_THRESHOLD = 100`;标题固定 `1天以内` / `100元以内`。
|
|
106
|
+
|
|
107
|
+
**指标(天数/金额)只来自流程详情数据**(`RowMetrics`),取不到时该条**平铺并点名**,不猜、不硬凑进阈值组。
|
|
108
|
+
财务组一条金额都取不到时,组摘要退回「标题清单」模板,而不是编一个 `¥0 ~ ¥0`。
|
|
109
|
+
|
|
110
|
+
## 6. `aiGroups` 的字段校验与切分细节
|
|
111
|
+
|
|
112
|
+
### 6.1 入参校验(`readAiGroups`)
|
|
113
|
+
|
|
114
|
+
| 检查 | 失败 |
|
|
115
|
+
|---|---|
|
|
116
|
+
| 必须是数组 | `ai_groups_invalid` |
|
|
117
|
+
| 每项只允许 `groupId` / `title` / `requestIds` / `seq` | `ai_groups_invalid`(列出多余字段) |
|
|
118
|
+
| `groupId` / `title` 必须是非空字符串(19 位 ID 用数字会失真) | `ai_groups_invalid` |
|
|
119
|
+
| `groupId` 必须存在于本次分组结果 | `ai_group_unknown_group`(回传可用列表) |
|
|
120
|
+
| `groupId` 不能是 `priority` | `ai_group_priority_unsupported` |
|
|
121
|
+
| `requestIds` 与 `seq` 二选一,不能同时给、也不能都空 | `ai_groups_invalid` |
|
|
122
|
+
| `seq` 只接受 ≥1 的整数 | `ai_groups_invalid` |
|
|
123
|
+
| `seq` 越界 | `ai_group_seq_out_of_range` |
|
|
124
|
+
| `requestId` 不属于该组 | `ai_group_unknown_request` |
|
|
125
|
+
| 同一条被分进两个子组 | `ai_group_duplicate_request` |
|
|
126
|
+
|
|
127
|
+
`seq` 口径:**组内 1-based 下标**,顺序 = `group.requestDatas` 顺序(与 `collect` 的 `groupingBrief[].items[].idx` 同源)。叠加视图后优先条目也在该数组里,序号顺延。
|
|
128
|
+
|
|
129
|
+
### 6.2 切分后的三道兜底
|
|
130
|
+
|
|
131
|
+
| 兜底 | 行为 |
|
|
132
|
+
|---|---|
|
|
133
|
+
| **保留标题核阈值** | 请假/财务组里,模型拿 `1天以内` / `100元以内` 当子组名时,逐条核 `metrics`;超阈值的**剔出→平铺**并点名(`不满足阈值` warning)。其它标题不核 |
|
|
134
|
+
| **子组 <2 解散** | 子组只剩 1 条不成立,解散后条目平铺;被解散的在同一条 warning 里报数量 |
|
|
135
|
+
| **漏分平铺** | 没被 `used` 标记的条目全部平铺,**不建 `other` 汇总项**,写 warning 报数量 |
|
|
136
|
+
|
|
137
|
+
> 三道兜底都不丢数据:任何条目要么在子组里,要么出现在 `displayItems` 的单条里。
|
|
138
|
+
|
|
139
|
+
## 7. 排序与编号
|
|
140
|
+
|
|
141
|
+
- **无 focus**:子组按条数降序;`sort` 稳定,同条数保持 AI 给的先后。
|
|
142
|
+
- **有 focus**:完全沿用 AI 数组顺序。
|
|
143
|
+
- **编号**:`id = 父组id-序号`,序号 = **排序后**的下标(从 1 起)。因此条数变化导致排序变动时,`id` 会跟着变(已知问题,见 §11)。
|
|
144
|
+
|
|
145
|
+
## 8. 组摘要 / 单条摘要由谁写
|
|
146
|
+
|
|
147
|
+
| 路径 | `summary` |
|
|
148
|
+
|---|---|
|
|
149
|
+
| 阈值组(`1天以内` / `100元以内`) | 组摘要 = CLI 固定模板,**即使本轮传了 `aiGroups` 也照写** |
|
|
150
|
+
| 客户问题支持过期组 | 组摘要 = CLI 固定模板 |
|
|
151
|
+
| AI 计划产生的子组(含请假/财务里自定义标题的子组) | 组摘要先留空串,由 `groupSummaryContext` → AI → `groupSummary` 回填 |
|
|
152
|
+
| 其他类 / 内部留言(无计划) | 无汇总项,不存在组摘要 |
|
|
153
|
+
| 满意度类单条 | **单条 summary = 条目标题**(确定性,不调 AI,保证非空) |
|
|
154
|
+
| 其余单条 | 由 `summary` 阶段 AI 写;详情为空时标题兜底 |
|
|
155
|
+
|
|
156
|
+
### 8.1 三套固定模板原文(`businessRules.ts`)
|
|
157
|
+
|
|
158
|
+
公共尾巴:`可展开逐条查看或直接汇总处理`(CLI 固定文案与喂模型的 `stats.tail` 共用同一个常量)
|
|
159
|
+
|
|
160
|
+
| 类型 | 模板 |
|
|
161
|
+
|---|---|
|
|
162
|
+
| 请假 | `共{N}条,涵盖{M}类假别(事假、病假、年假等),由A、B、C等发起。{尾巴}` |
|
|
163
|
+
| 财务 | `单笔 ¥{min} ~ ¥{max},合计 {红字}¥{sum}{/红字},涵盖{M}类费用(差旅、餐饮等),由A、B、C等发起。{尾巴}` |
|
|
164
|
+
| 问题支持 | `含 {N} 条已过期或今日到期的问题流程,由 A、B 等 N 人发起,其余 {M} 条按单条展示,{尾巴}` |
|
|
165
|
+
|
|
166
|
+
三条口径(2026-10-27 用户定):
|
|
167
|
+
|
|
168
|
+
1. **类别(假别/费用类别)去重后最多列 3 个,没列完才补「等」**——列全了不加「等」。
|
|
169
|
+
一个类别都取不到时只说「1类假别」/「1类费用」,不编名字。
|
|
170
|
+
2. **发起人超过 2 人才补「等」**(1~2 人把名字列全),最多列 3 个。
|
|
171
|
+
3. 财务合计用**纯文本** `¥{金额}`,**不加任何 HTML 标签**(2026-10-27 用户要求;此前用 `<span style="color:#d9363e;font-weight:700">` 做红字,但载荷内联进聊天消息时会被当真实标签解析、吞掉后续内容)。
|
|
172
|
+
|
|
173
|
+
> 费用类别只来自**流程详情字段**(`费用类型`/`费用类别`/`报销类型`…)或**标题关键词**兜底。
|
|
174
|
+
> 租户表单若没有这类字段、标题也没有关键词,就只会输出「1类费用」——不猜。
|
|
175
|
+
|
|
176
|
+
### 8.2 组摘要不缓存(规则)
|
|
177
|
+
|
|
178
|
+
组摘要**每轮都重新生成**:组内条目变动频繁,按组缓存必然出现「文案说 3 条、卡片是 5 条」。
|
|
179
|
+
缓存的只有单条摘要(`requestId` 粒度)。
|
|
180
|
+
|
|
181
|
+
## 9. 错误码
|
|
182
|
+
|
|
183
|
+
`ai_groups_invalid` / `ai_group_unknown_group` / `ai_group_priority_unsupported` / `ai_group_seq_out_of_range` / `ai_group_unknown_request` / `ai_group_duplicate_request` / **`ai_groups_required`**
|
|
184
|
+
|
|
185
|
+
> `ai_groups_required`(2026-10-27):**内部留言 ≥3 条却没有本组计划**时硬失败(`retryAllowed=true`),报错里给出 `groupId` 与「1..N」可用序号,并说明默认维度是**流程标题**。
|
|
186
|
+
> `ai_groups_missing_group` **已删除**:**非内部留言**的类型「意图适用却没给计划」= 视为无意图 + warning(内部留言不走这条路)。
|
|
187
|
+
|
|
188
|
+
## 10. 真实数据核对(近一年 77 条 / 17 组,2026-10-27)
|
|
189
|
+
|
|
190
|
+
| 组 | 条数 | 结果 |
|
|
191
|
+
|---|---|---|
|
|
192
|
+
| 公司重要通知 | 32 | **全部平铺**(其他类无 focus ⇒ 忽略计划/无计划都不分) |
|
|
193
|
+
| 安全问题处理工单 | 11 | **全部平铺** |
|
|
194
|
+
| 契约锁满意度调查反馈 / 满意度调查反馈 | 5 / 5 | 全平铺,`summary` = 标题 |
|
|
195
|
+
| 泛微请假流程 | 3 | `1天以内`(2) + 平铺 1 |
|
|
196
|
+
| 总部费用报销 | 4 | `100元以内`(2) + 平铺 2 |
|
|
197
|
+
| 内部留言 | 2 | <3 硬门槛 ⇒ 平铺 |
|
|
198
|
+
| 其余 11 组 | 各 1~5 | 平铺 |
|
|
199
|
+
|
|
200
|
+
汇总项只剩 `1天以内(2)`、`100元以内(2)`;空摘要 0;`totalCount = 77`,Σ`count = 98`(差值 21 = 优先组的叠加条数)。
|
|
201
|
+
|
|
202
|
+
## 11. review 关注点
|
|
203
|
+
|
|
204
|
+
### 11.0 ✅ 2026-10-27(ai二次分组改造收口)
|
|
205
|
+
|
|
206
|
+
| 项 | 旧行为 | 新行为 |
|
|
207
|
+
|---|---|---|
|
|
208
|
+
| AI 漏分 | 并入/新建 `other` 汇总项(标题就是英文 `other`) | **全部平铺**,不造 `other` |
|
|
209
|
+
| 组内 <3 条但有计划 | 计划覆盖门槛,照分 | **硬门槛优先**,忽略计划 + warning |
|
|
210
|
+
| 意图适用却没给本组计划 | 硬失败 `ai_groups_missing_group` | **视为无意图** + warning,走确定性规则 |
|
|
211
|
+
| 意图判定 | 「没命中关键词就算通用」 | **意图表 `INTENT_RULES`**:专属只作用对应类型,通用只作用内部留言/其他 |
|
|
212
|
+
| 子组只剩 1 条 | 保留 | **解散 → 平铺** |
|
|
213
|
+
| 摘要命中 ⇒ 跳过详情 | 跳过(导致阈值指标拿不到,10.2 复发) | **摘要缓存只省 AI,不省详情**(详情缓存按 `requestId__lastFeedBackDateTime` 命中则零请求) |
|
|
214
|
+
| `formatInternalMessageOverflowSummary` | 残留导出 + 调用 | 已删(含 `SMART_UNCOVERED_TITLE` 的全部消费点) |
|
|
215
|
+
|
|
216
|
+
### 11.1 ✅ 已修(2026-10-26):阈值组内容校验曾是死代码
|
|
217
|
+
|
|
218
|
+
原条件用了 `explicitEmptyPlans`(`aiGroups` 长度为 0),却写在 `groupPlans.length > 0` 的分支里,**永远不成立**:
|
|
219
|
+
3 条 500/1000/1500 元的报销,`aiGroups:[{title:"100元以内",…}]` 照样输出 `count=3` 且无 warning。
|
|
220
|
+
**修法**:条件改成 `plan.title === 保留标题`,模型用了保留标题才逐条核阈值。
|
|
221
|
+
|
|
222
|
+
### 11.2 ✅ 已修(2026-10-26):阈值分组被「详情全空」误吞
|
|
223
|
+
|
|
224
|
+
触发条件:本轮传了 `aiGroups` + 该组全部命中摘要缓存(⇒ 没拉详情)⇒ `fact === undefined` 被当成「详情为空」⇒ 整组走「沿用父组名整组展示」,阈值分支没机会执行。
|
|
225
|
+
**修法**:排除 `cachedIds`、阈值分支提前;2026-10-27 进一步改成「摘要命中不再跳过详情」(详情缓存兜住请求量),从根上消除这类判据混用。
|
|
226
|
+
|
|
227
|
+
### 11.3 ⚠️ 满意度组的计划被静默忽略 → 已改为写 warning
|
|
228
|
+
|
|
229
|
+
`D1` 在其它判定之前 `return`,现在会明确写两条:`满意度类不做 ai二次分组,已忽略 aiGroups` + `summary 由标题兜底(不调 AI)`。
|
|
230
|
+
|
|
231
|
+
### 11.4 ✅ 已修(2026-10-26):`aiGroups: []` 不再硬失败
|
|
232
|
+
|
|
233
|
+
空数组与「未传」语义统一(都走业务类型确定性规则);原先的非阈值类硬失败已不存在。
|
|
234
|
+
|
|
235
|
+
### 11.5 子组 `id` 不稳定
|
|
236
|
+
|
|
237
|
+
编号基于**排序后**的下标,条数一变编号就漂移。如果前端拿 `id` 做展开状态记忆或 diff key,会出现「内容没变但 id 变了」。
|
|
238
|
+
|
|
239
|
+
### 11.6 `other` 是英文标题 —— 已随 `other` 汇总项一起删除
|
|
240
|
+
|
|
241
|
+
`SMART_UNCOVERED_TITLE` 不再进入最终结构,卡片上不会再出现英文 `other`。
|
|
242
|
+
|
|
243
|
+
### 11.7 门槛与叠加视图的相互作用
|
|
244
|
+
|
|
245
|
+
优先条目也算进所属工作流组的条数,原本 2 条、含 1 条紧急的组现在算 3 条 —— 会**从平铺变成可二次分组**。近一年数据实测符合预期(`totalCount 77` / `Σcount 98`)。
|
package/package.json
CHANGED
|
@@ -77,7 +77,7 @@ function shouldSkip(entry, relativePath) {
|
|
|
77
77
|
if (entry.name === '.DS_Store' || entry.name.startsWith('.')) return true
|
|
78
78
|
if (relativePath === 'product.json') return true
|
|
79
79
|
if (relativePath === 'references/source-manifest.json') return true
|
|
80
|
-
if (entry.isDirectory() && ['assets', 'node_modules', 'scripts'].includes(entry.name)) return true
|
|
80
|
+
if (entry.isDirectory() && ['cache', 'assets', 'node_modules', 'scripts'].includes(entry.name)) return true
|
|
81
81
|
return false
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
本业务域用于 E10 采知连(文档中心 / 知识库)。入口 `SKILL.md` 按飞书 `lark-approval` 风格组织:CRITICAL
|
|
1
|
+
本业务域用于 E10 采知连(文档中心 / 知识库)。入口 `SKILL.md` 按飞书 `lark-approval` 风格组织:CRITICAL 接入前置、登录与请求头凭证契约、路由优先级、高优先级语义、逐 operation 命令表、处理链、执行原则、写操作失败决策树和「不在范围」。具体用法拆到 `references/`:
|
|
2
2
|
|
|
3
|
+
- `auth-and-install.md`:CLI 安装与可用性检查(含「命令找不到」时区分未安装与 PATH)、E10 登录与登录失效处置、浏览器登录防挂起、人工保底方式、已有环境切换、`--is-connector` 判据、安全边界与请求头契约、超时与重试预算。
|
|
3
4
|
- `agent-entry.md`:schema / operations 入口、统一 `caizhilian run` 调用方式、`--input-json` 与 `--input <path>` 选择、成功与失败 envelope、完整错误码表。
|
|
4
5
|
- `document.md`:文档检索、文档详情、当前登录人,以及 HTML / Markdown / Office / 批量上传四种建文档方式与四种编辑(基础字段、作者、保存正文、替换正文)。
|
|
5
6
|
- `folder.md`:文件夹创建、虚拟文件夹检索、文件夹默认设置,以及默认共享与八类文档权限(含 `Premisstion` 源拼写与按权限反查)。
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
- `catalog.md`:接口目录与按模块路由(四大模块 11 接口 ↔ 13 operations),通用约定与写操作边界。
|
|
4
4
|
- `budget.md`:预算查询(事前申请单预算详情、预算执行报表),含 `formDatas` 二层嵌套与金额列名口径。
|
|
5
5
|
- `expense-center.md`:费用中心(报销金额 / 借款分段 / 预付核销),含日期口径差异、借款接口缺陷与空响应处理。
|
|
6
|
+
- `expense-chart.md`:报销报表 AI 问答(自然语言出部门/期间/费用类型报表),含 `kind` 五态、模型额度、全租户数据范围与二开接口依赖。
|
|
6
7
|
- `loan-management.md`:借款管理(汇总/列表/提醒还款 prepare→apply 写链),含 menuCode 核对与回查策略。
|
|
7
8
|
- `invoice-writeoff.md`:发票核销(金额 tab/列表/催票 prepare→apply 写链),含 invoiceStatus 枚举与回查策略。
|
|
8
9
|
- `source-manifest.json`:源资料指纹与生成产物基线,供更新检测。
|
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
- `invoice-update.md`:编辑发票的 `prepare -> apply` 写入协议。
|
|
15
15
|
- `invoice-delete.md`:删除发票的 `prepare -> apply` 写入协议。
|
|
16
16
|
- `invoice-reim.md`:发票报销自动填单的数据准备;报销单创建/修改调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` / `workflow.edit*`。
|
|
17
|
-
- `invoice-issuing.md
|
|
17
|
+
- `invoice-issuing-workflow.md`:AI 开票主链路——获取待开票合同数据(含契约锁、泛微及其他合同)后按合同号分组,按核算公司选择开票流程(上海亘岩网络科技有限公司走契约锁开票流程;泛微网络、泛微软件、上海田亩、成都泛微、泛微国际、北京泛微、浙江泛微走合同收款发票开具及快递申请;为空或不在名单里时先问用户;退票、冲红、红冲走合同开票冲红流程),调用 `weaver-e10-workflow` 的 `workflow.createForm` / `workflow.createRequest` 发起草稿。
|
|
18
|
+
- `invoice-issuing-form-fill-rules.md`:开票流程填单规则,用户没说的字段按默认值填(如本次开票金额 = 总金额)。
|
|
19
|
+
- `invoice-issuing-qys-ledger.md`:兜底链路,用户明确要求时按台账行直接开票或存待开台账。
|
|
20
|
+
- `invoice-issuing.md`:兜底链路,用户明确要求时按口述字段直接开票或存台账的 payload 确认链。
|
|
18
21
|
- `invoice-disabled-capabilities.md`:共享、转让、标签等暂未暴露能力的处理边界。
|
|
19
22
|
|
|
20
23
|
Agent 调优重点:
|
|
@@ -24,6 +27,7 @@ Agent 调优重点:
|
|
|
24
27
|
- 写操作只接受 CLI 生成的 continuation,不手工构造或复用。
|
|
25
28
|
- `validate=false` 只能说明跳过查验,不能描述为查验通过。
|
|
26
29
|
- 报销单创建、报销单修改、开票和存台账必须先展示摘要并取得明确确认;报销单按 `workflow.createRequest` 的 `{main, details}` 结构组装 `data`。
|
|
27
|
-
-
|
|
30
|
+
- 开票先获取待开票合同数据(含契约锁、泛微及其他合同),再发起流程草稿(`action` 固定 `draft`)。销售方取台账「核算公司」,名称必须完全相同:「上海亘岩网络科技有限公司」用契约锁开票流程;泛微网络、泛微软件、上海田亩、成都泛微、泛微国际、北京泛微、浙江泛微用「合同收款发票开具及快递申请」;为空或不在名单里时先问用户;退票、冲红、红冲用「合同开票冲红流程」。明细每行只传金额(含税),其余列由合同号联动带出,Agent 不做金额计算。CLI 已无直接开票接口。
|
|
31
|
+
- 直接开票时从用户输入、附件或对话上下文提取购方字段;当前资料包没有客户档案查询 operation,资料不足时追问用户补齐。
|
|
28
32
|
- 当前资料包没有红字发票红冲接口,`invoice.red.*` 不属于可用 operation。
|
|
29
33
|
- 结果为 `partial/write_uncertain` 时停止,不自动重放写请求。
|
|
@@ -15,6 +15,7 @@ cliHelp: "weaver-work-cli {{command}} --help"
|
|
|
15
15
|
|
|
16
16
|
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。安装或读取失败时必须停止执行;命令均成功后重新读取共享规则,仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
17
17
|
认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
18
|
+
业务命令返回 `authentication` / `session_expired` 时必须停止并读取共享认证规则:Agent 复用任务开始时的宿主判定且禁止调用任何其他登录 Skill;明确为 XiaoE 时只执行 `weaver-work-cli auth xiaoe`,返回 `xiaoe_credential_unavailable` 时停止且不自动改用浏览器登录;非 XiaoE 时取得用户确认的真实 E10 域名后执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。登录恢复后读操作可重放,写操作必须重新 prepare 和确认,`partial` / `write_uncertain` 必须先只读回查。
|
|
18
19
|
所有命令通过 `weaver-work-cli --json {{command}} run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli {{command}} schema` 是 operation、字段和风险等级的合约来源。
|
|
19
20
|
若 `schema` 或 reference 提供 `inputExamples`,优先复用其中和当前意图最接近的样例并只替换用户明确给出的值;标记为 `synthetic` 的样例需要业务复核,不能当作源资料事实。若 operation 标记了 `missingExamples` 或参数覆盖矩阵中的 `needs-confirmation` 字段,先向用户说明缺少哪些入参事实并索取补充,不要通过反复尝试不同 JSON 格式来猜。
|
|
20
21
|
生成或改写的 docs、reference、提示词和命令示例必须同时兼容 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 写法。
|
|
@@ -101,7 +101,12 @@ weaver-work-cli --json blog run blog.query --input-json '{"user_type":"myFollow"
|
|
|
101
101
|
1. `confirmation.required` → 向用户复述 prepare 返回的目标、差异与文案,取得明确确认后带 `confirm=true` 重调 apply;不要伪造 continuation。
|
|
102
102
|
2. `target_changed` / `publish_already_exists` → 重新 prepare,再向用户确认。
|
|
103
103
|
3. `partial/write_uncertain` → 停止,不做任何写重试;用 `blog.query_user` 只读回查后向用户报告。
|
|
104
|
-
4. `authentication/session_expired` →
|
|
104
|
+
4. `authentication/session_expired` → 立即停止当前操作并读取 shared 认证规则。
|
|
105
|
+
- 登录失效的认证方式必须由 Agent 复用本任务开始时的宿主判定,禁止调用任何其他登录 Skill。
|
|
106
|
+
- 明确为 XiaoE 时,只执行 `weaver-work-cli auth xiaoe`,不得改用 `auth login`。
|
|
107
|
+
- 统一登录返回 `authentication/xiaoe_credential_unavailable` 时停止并反馈宿主凭据不可用,不自动回退浏览器登录。
|
|
108
|
+
- 非 XiaoE 时不得执行 `auth xiaoe`;取得用户确认的真实 E10 登录域名后,执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。
|
|
109
|
+
- 登录恢复后读操作可重新执行;写操作不得复用旧 continuation,必须重新 prepare 并重新确认。已返回 `partial/write_uncertain` 时先只读回查,禁止直接重放写入。
|
|
105
110
|
|
|
106
111
|
## 不在范围
|
|
107
112
|
|
|
@@ -45,5 +45,7 @@ weaver-work-cli --json blog run blog.query --input-json '{"user_type":"myFollow"
|
|
|
45
45
|
## 失败处理
|
|
46
46
|
|
|
47
47
|
- `range_too_large`:缩小区间(`start_date` 到 `end_date` 按天计数,**上限 62 天**,与 `blog.query_user` 口径一致)。
|
|
48
|
-
- `session_expired
|
|
48
|
+
- `session_expired`:停止查询并执行入口 `SKILL.md` 的登录失效强制分流。
|
|
49
|
+
- XiaoE 只执行 `weaver-work-cli auth xiaoe`;失败时停止,不回退浏览器登录。
|
|
50
|
+
- 非 XiaoE 在确认真实 E10 域名后执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`;禁止调用其他登录 Skill。
|
|
49
51
|
- 返回 0 条:如实告知该范围无数据,不要自动换 user_type 重试。
|