weaver-work-cli 0.1.36 → 0.1.39
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 +4 -2
- package/dist/chunks/{archive-XBVH7JU7.js → archive-ENZYBBME.js} +559 -68
- package/dist/chunks/{archive-oa-MZM3EKFQ.js → archive-oa-YWLEC5V4.js} +4 -3
- package/dist/chunks/{asset-4XO7UOUW.js → asset-OOV6DWPA.js} +8 -7
- package/dist/chunks/asset-idle-RE632MY5.js +670 -0
- package/dist/chunks/{attachment-content-VXSWANAC.js → attachment-content-RWN2FCLL.js} +3 -3
- package/dist/chunks/{blog-PGZKOPSC.js → blog-PEPOJAL7.js} +5 -4
- package/dist/chunks/{caizhilian-BH4ZVGUN.js → caizhilian-WYIQDVPJ.js} +5 -4
- package/dist/chunks/{calendar-MXEMTIO4.js → calendar-CIARBAOX.js} +4 -3
- package/dist/chunks/{chunk-NCOVUAZK.js → chunk-36DIFZAH.js} +4 -3
- package/dist/chunks/{chunk-I6QGIBDM.js → chunk-BJGXMFGD.js} +4 -3
- package/dist/chunks/{chunk-TC6MZAO3.js → chunk-CQHGNCK2.js} +52 -2
- package/dist/chunks/{chunk-WXFPWCXG.js → chunk-EINRJHQ3.js} +3 -3
- package/dist/chunks/{chunk-JUXVYKII.js → chunk-EZGFHJFW.js} +201 -19
- package/dist/chunks/{chunk-VPUTVEMC.js → chunk-F2EQXUEE.js} +436 -290
- package/dist/chunks/{chunk-JYKABYCV.js → chunk-GVPJZXJ2.js} +3 -3
- package/dist/chunks/{chunk-6LLJFKJE.js → chunk-HJYVHXUQ.js} +1 -1
- package/dist/chunks/{chunk-T72N74ZT.js → chunk-I2HB737U.js} +5 -4
- package/dist/chunks/{chunk-VPXOPQJI.js → chunk-K3RUEEOL.js} +4 -2
- package/dist/chunks/{chunk-HXJQI5NM.js → chunk-KTCB5R5H.js} +3 -2
- package/dist/chunks/{chunk-XMGSYD6S.js → chunk-L4N7B7ZD.js} +4 -4
- package/dist/chunks/{chunk-QYGO5EE2.js → chunk-MUQUHKPG.js} +4 -3
- package/dist/chunks/{chunk-QHFANTX7.js → chunk-NLK2RZKG.js} +1348 -90
- package/dist/chunks/{chunk-F746NKNF.js → chunk-P2DAISYW.js} +1 -1
- package/dist/chunks/{chunk-BPE37FPB.js → chunk-T7JDJJ7H.js} +3 -3
- package/dist/chunks/{chunk-JNG42JKG.js → chunk-XXJOSZTQ.js} +6 -6
- package/dist/chunks/{chunk-5DQEEGCC.js → chunk-YS5DPN4T.js} +1 -1
- package/dist/chunks/{chunk-EG6ZU444.js → chunk-ZUX3P6BQ.js} +10 -5
- package/dist/chunks/{chunk-JCSN3JGM.js → chunk-ZXRNHZTE.js} +7 -6
- package/dist/chunks/{conflict-JAB2LJEZ.js → conflict-DRMDOL56.js} +2 -2
- package/dist/chunks/{contract-XI2EEIZU.js → contract-73MERZWN.js} +4 -3
- package/dist/chunks/{cowork-SCPGLBA4.js → cowork-HNGBPD7A.js} +4 -3
- package/dist/chunks/{ebuilder-form-EYLHNOTA.js → ebuilder-form-OY6DVNRK.js} +3 -3
- package/dist/chunks/{ehr-EAP77IMT.js → ehr-RAQNEQO7.js} +4 -3
- package/dist/chunks/{esb-2TGGXEE7.js → esb-6XV7C7YV.js} +4 -4
- package/dist/chunks/{fna-2X7ZE7BU.js → fna-XTSRB7G7.js} +4 -3
- package/dist/chunks/{host-Q4LZGCRU.js → host-3F5UM5GN.js} +3 -3
- package/dist/chunks/{host-XCLDDXKQ.js → host-A7J6GDUP.js} +3 -3
- package/dist/chunks/{host-I4NRK4MX.js → host-VGPVP7YF.js} +3 -3
- package/dist/chunks/{host-C6EL2RKL.js → host-YAQAPYNP.js} +3 -3
- package/dist/chunks/{host-UEI5FGDM.js → host-YMBXWFWX.js} +3 -3
- package/dist/chunks/{hrm-YXERJM76.js → hrm-TLHKC545.js} +3 -3
- package/dist/chunks/{im-A4VZN2TQ.js → im-YOUCFMUK.js} +3 -3
- package/dist/chunks/{invoice-2Z6YPMIS.js → invoice-WNBS2B4C.js} +3 -3
- package/dist/chunks/{jiuchuanhui-AR5GMKZB.js → jiuchuanhui-XABWS5RN.js} +4 -3
- package/dist/chunks/{lazy-dispatch-QXW7P4X3.js → lazy-dispatch-NLZ5UQQI.js} +5 -5
- package/dist/chunks/{mail-7GZ6CPBJ.js → mail-LRYMBFNL.js} +4 -3
- package/dist/chunks/{meeting-3NMGA3MB.js → meeting-ESXL6MFI.js} +13 -12
- package/dist/chunks/{okr-BZ6XUOAG.js → okr-EOV65SSF.js} +4 -3
- package/dist/chunks/{plan-DR5CMUYP.js → plan-YFPVKW6Y.js} +4 -3
- package/dist/chunks/{project-6J63MK33.js → project-MDVZUYQW.js} +4 -3
- package/dist/chunks/{registry-VRTNC6UR.js → registry-QCLZEDAP.js} +8 -8
- package/dist/chunks/{registry-KDD7DHNK.js → registry-VT5Y2HLA.js} +4 -4
- package/dist/chunks/{registry-TKX2E7C7.js → registry-YX4CSEMD.js} +3 -3
- package/dist/chunks/{room-recommend-XCWRMB5P.js → room-recommend-L3MWH4JW.js} +4 -4
- package/dist/chunks/{schedule-IVBICP32.js → schedule-UASAVDVD.js} +4 -4
- package/dist/chunks/{workflow-D74NFK3C.js → workflow-KDGIUCNW.js} +9 -6
- package/dist/core/output.js +16 -6
- package/dist/index.js +33 -28
- package/dist/internal/e10/auth/messages.js +1 -0
- package/dist/internal/e10/auth-recovery.js +127 -7
- package/dist/internal/e10/client.js +16 -2
- package/dist/internal/e10/context.js +16 -3
- package/dist/internal/e10/request-runtime.js +106 -8
- package/dist/shortcuts/archive/host.js +5 -2
- package/dist/shortcuts/archive/manifest.js +1 -1
- package/dist/shortcuts/archive/operations/borrow-list.js +13 -1
- package/dist/shortcuts/archive/operations/flow-url.js +1 -1
- package/dist/shortcuts/archive/operations/prelib.js +472 -0
- package/dist/shortcuts/archive/operations/registry.js +2 -0
- package/dist/shortcuts/archive/operations/upload.js +1 -1
- package/dist/shortcuts/archive-oa/host.js +2 -1
- package/dist/shortcuts/asset/host.js +6 -5
- package/dist/shortcuts/asset-idle/errors.js +44 -0
- package/dist/shortcuts/asset-idle/host.js +161 -0
- package/dist/shortcuts/asset-idle/index.js +114 -0
- package/dist/shortcuts/asset-idle/manifest.js +159 -0
- package/dist/shortcuts/asset-idle/operations/idle.js +47 -0
- package/dist/shortcuts/asset-idle/operations/registry.js +33 -0
- package/dist/shortcuts/asset-idle/operations/shared.js +142 -0
- package/dist/shortcuts/asset-idle/operations/types.js +9 -0
- package/dist/shortcuts/asset-idle/operations.js +15 -0
- package/dist/shortcuts/blog/host.js +3 -2
- package/dist/shortcuts/caizhilian/host.js +3 -2
- package/dist/shortcuts/calendar/host.js +2 -1
- package/dist/shortcuts/contract/host.js +2 -1
- package/dist/shortcuts/cowork/host.js +2 -1
- package/dist/shortcuts/ebuilder-form/host.js +3 -1
- package/dist/shortcuts/ehr/host.js +2 -1
- package/dist/shortcuts/esb/host.js +2 -1
- package/dist/shortcuts/fna/host.js +2 -1
- package/dist/shortcuts/hrm/host.js +2 -1
- package/dist/shortcuts/im/host.js +3 -2
- package/dist/shortcuts/index.js +5 -0
- package/dist/shortcuts/invoice/host.js +5 -4
- package/dist/shortcuts/jiuchuanhui/host.js +2 -1
- package/dist/shortcuts/mail/host.js +2 -1
- package/dist/shortcuts/meeting/host.js +3 -2
- package/dist/shortcuts/meeting/invitation/text.js +71 -0
- package/dist/shortcuts/meeting/operations/eb/create-flow.js +1073 -50
- package/dist/shortcuts/meeting/operations/eb/crm-search.js +478 -0
- package/dist/shortcuts/meeting/operations/eb/factory.js +60 -1
- package/dist/shortcuts/meeting/operations/eb/index.js +2 -0
- package/dist/shortcuts/meeting/operations/invitation.js +122 -9
- 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 -0
- package/dist/shortcuts/workflow/index.js +1 -1
- package/dist/shortcuts/workflow/operations/form.js +44 -11
- package/dist/shortcuts/workflow/operations/todoSmartConvert/aigroupRules.js +77 -26
- package/dist/shortcuts/workflow/operations/todoSmartConvert/aigroupStore.js +6 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +59 -117
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +44 -7
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +37 -29
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +20 -6
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +22 -18
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +34 -10
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +4 -2
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +9 -2
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +110 -20
- package/docs/_catalog.md +3 -0
- package/docs/asset-idle.md +45 -0
- package/docs/e10-auth.md +1 -1
- package/docs/todo-smart-convert/subgroup-rules.md +1 -1
- package/package.json +1 -1
- package/scripts/package-skill.mjs +2 -0
- package/skill-template/business-info.json +14 -1
- package/skill-template/domains/asset-idle.md +13 -0
- package/skill-template/domains/wenshuding.md +3 -0
- package/skills/weaver-e10-archive-oa/SKILL.md +1 -0
- package/skills/weaver-e10-archive-oa/references/my-borrow.md +49 -0
- package/skills/weaver-e10-asset-idle/SKILL.md +73 -0
- package/skills/weaver-e10-asset-idle/references/idle-list.md +62 -0
- package/skills/weaver-e10-asset-idle/references/idle-stats-and-charts.md +65 -0
- package/skills/weaver-e10-asset-idle/references/source-manifest.json +193 -0
- package/skills/weaver-e10-asset-idle/references/widget-style.md +205 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +29 -11
- package/skills/weaver-e10-caizhilian/references/auth-and-install.md +12 -0
- package/skills/weaver-e10-caizhilian/references/files.md +1 -1
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +1 -1
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +45 -45
- package/skills/weaver-e10-cowork/SKILL.md +2 -0
- package/skills/weaver-e10-jucailin/SKILL.md +2 -0
- package/skills/weaver-e10-jucailin/references/recruit-read.md +2 -0
- package/skills/weaver-e10-jucailin/references/recruit-write.md +1 -1
- package/skills/weaver-e10-mail/SKILL.md +3 -0
- package/skills/weaver-e10-meeting/SKILL.md +250 -301
- package/skills/weaver-e10-meeting/references/meeting-eb.md +203 -0
- package/skills/weaver-e10-meeting/references/meeting-invitation.md +37 -5
- package/skills/weaver-e10-meeting.zip +0 -0
- package/skills/weaver-e10-okr/references/source-manifest.json +3 -3
- package/skills/weaver-e10-shared/SKILL.md +5 -5
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +3 -3
- package/skills/weaver-e10-wenshuding/SKILL.md +29 -6
- package/skills/weaver-e10-wenshuding/references/archive-borrow-list.md +14 -0
- package/skills/weaver-e10-wenshuding/references/archive-download.md +2 -0
- package/skills/weaver-e10-wenshuding/references/archive-flow.md +1 -1
- package/skills/weaver-e10-wenshuding/references/archive-prelib-arrange.md +76 -0
- package/skills/weaver-e10-wenshuding/references/archive-prelib-list.md +107 -0
- package/skills/weaver-e10-wenshuding/references/archive-prelib-open.md +59 -0
- package/skills/weaver-e10-wenshuding/references/archive-upload.md +4 -1
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +108 -65
- package/skills/weaver-e10-workflow/SKILL.md +5 -2
- package/skills/weaver-e10-workflow/aigroup/default.json +154 -19
- package/skills/weaver-e10-workflow/references/todo-smart-convert.md +59 -27
- package/skills/weaver-e10-workflow/tools/todo-serve.cjs +113 -25
- package/skills/weaver-e10-workflow/tools/todo-summary.cjs +292 -42
- package/skills/weaver-e10-yimiaoban/references/source-manifest.json +3 -3
|
@@ -3,15 +3,23 @@
|
|
|
3
3
|
"defaults": {
|
|
4
4
|
"weight": 999,
|
|
5
5
|
"needSummary": true,
|
|
6
|
-
"requestSummaryPrompt": "",
|
|
6
|
+
"requestSummaryPrompt": "根据流程详情信息,简单摘要核心内容,无需过度思考,追求极致速度。",
|
|
7
7
|
"summaryMaxChars": 150,
|
|
8
8
|
"groupSummaryMaxChars": 100,
|
|
9
|
-
"groupSummaryTail": "可展开逐条查看或直接汇总处理"
|
|
9
|
+
"groupSummaryTail": "可展开逐条查看或直接汇总处理",
|
|
10
|
+
"excludeOriginFormDataFields": []
|
|
10
11
|
},
|
|
11
12
|
"rules": [
|
|
12
13
|
{
|
|
13
|
-
"workflowName": [
|
|
14
|
+
"workflowName": [
|
|
15
|
+
"客户问题支持"
|
|
16
|
+
],
|
|
14
17
|
"weight": 100,
|
|
18
|
+
"requestSummaryPrompt": "根据以下模板进行摘要:{总结问题描述} 【{完结状态}】【{客户名称}】",
|
|
19
|
+
"excludeOriginFormDataFields": [
|
|
20
|
+
"备案环境",
|
|
21
|
+
"推荐答案"
|
|
22
|
+
],
|
|
15
23
|
"aiGroup": {
|
|
16
24
|
"groupSummary": {
|
|
17
25
|
"needAI": false,
|
|
@@ -21,34 +29,78 @@
|
|
|
21
29
|
"focus": true,
|
|
22
30
|
"sysArg": true,
|
|
23
31
|
"aiContext": "流程详情",
|
|
24
|
-
"focusKeyword": [
|
|
32
|
+
"focusKeyword": [
|
|
33
|
+
[
|
|
34
|
+
"planFinishDatetime",
|
|
35
|
+
"小于等于",
|
|
36
|
+
"今天"
|
|
37
|
+
]
|
|
38
|
+
],
|
|
25
39
|
"groupTitle": "已过期及今天即将过期的流程"
|
|
26
40
|
}
|
|
27
|
-
}
|
|
41
|
+
},
|
|
42
|
+
"summaryRequiredFields": [
|
|
43
|
+
"【",
|
|
44
|
+
"】"
|
|
45
|
+
]
|
|
28
46
|
},
|
|
29
47
|
{
|
|
30
|
-
"workflowName": [
|
|
48
|
+
"workflowName": [
|
|
49
|
+
"满意度",
|
|
50
|
+
"满意调查",
|
|
51
|
+
"评价调查",
|
|
52
|
+
"服务评价",
|
|
53
|
+
"问卷调查"
|
|
54
|
+
],
|
|
31
55
|
"weight": 200,
|
|
32
56
|
"needSummary": false
|
|
33
57
|
},
|
|
34
58
|
{
|
|
35
|
-
"workflowName": [
|
|
59
|
+
"workflowName": [
|
|
60
|
+
"内部留言",
|
|
61
|
+
"内部消息",
|
|
62
|
+
"留言板",
|
|
63
|
+
"意见建议"
|
|
64
|
+
],
|
|
36
65
|
"weight": 300,
|
|
66
|
+
"requestSummaryPrompt": "根据流程详情信息(非流程标题信息),言简意赅,禁止过度思考,追求极致速度,不追求摘要质量。",
|
|
37
67
|
"aiGroup": {
|
|
38
68
|
"groupSummary": {
|
|
39
69
|
"needAI": true,
|
|
40
70
|
"prompt": "用不超过 {{maxChars}} 字概括本组留言:主题集中在哪些事项、主要由谁发起、有无需要优先处理的。只使用给定上下文,不要编造。"
|
|
41
71
|
},
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
72
|
+
"groupRule": {
|
|
73
|
+
"focus": false,
|
|
74
|
+
"aiContext": "流程标题",
|
|
75
|
+
"groupingPrompt": "按留言主题归类,组名只允许这七个:产品更新与发布、案例与方案分享、培训与课程通知、周报与月报、制度与流程提醒、测试与验证数据、其他通知。每条只归一组,不得新造组名;判断不出主题的放「其他通知」。"
|
|
76
|
+
}
|
|
47
77
|
}
|
|
48
78
|
},
|
|
49
79
|
{
|
|
50
|
-
"workflowName": [
|
|
80
|
+
"workflowName": [
|
|
81
|
+
"请假",
|
|
82
|
+
"休假",
|
|
83
|
+
"年假",
|
|
84
|
+
"调休",
|
|
85
|
+
"病假",
|
|
86
|
+
"事假",
|
|
87
|
+
"婚假",
|
|
88
|
+
"产假",
|
|
89
|
+
"陪产",
|
|
90
|
+
"丧假",
|
|
91
|
+
"探亲假",
|
|
92
|
+
"工伤假",
|
|
93
|
+
"哺乳假",
|
|
94
|
+
"公休"
|
|
95
|
+
],
|
|
51
96
|
"weight": 400,
|
|
97
|
+
"requestSummaryPrompt": "根据以下模板进行摘要:{申请人}于{起始时间}开始,请假:{请假天数}天,请假事由:{对:【请假原因】进行总结} ",
|
|
98
|
+
"excludeOriginFormDataFields": [
|
|
99
|
+
"契约锁人员所有上级",
|
|
100
|
+
"所有上级",
|
|
101
|
+
"年假提示",
|
|
102
|
+
"假期余额"
|
|
103
|
+
],
|
|
52
104
|
"aiGroup": {
|
|
53
105
|
"groupSummary": {
|
|
54
106
|
"needAI": false,
|
|
@@ -58,14 +110,40 @@
|
|
|
58
110
|
"focus": true,
|
|
59
111
|
"sysArg": false,
|
|
60
112
|
"aiContext": "流程详情",
|
|
61
|
-
"focusKeyword": [
|
|
113
|
+
"focusKeyword": [
|
|
114
|
+
[
|
|
115
|
+
"请假天数",
|
|
116
|
+
"小于等于",
|
|
117
|
+
1
|
|
118
|
+
]
|
|
119
|
+
],
|
|
62
120
|
"groupTitle": "1天以内"
|
|
63
121
|
}
|
|
64
|
-
}
|
|
122
|
+
},
|
|
123
|
+
"summaryRequiredFields": [
|
|
124
|
+
"请假:",
|
|
125
|
+
"请假事由"
|
|
126
|
+
]
|
|
65
127
|
},
|
|
66
128
|
{
|
|
67
|
-
"workflowName": [
|
|
129
|
+
"workflowName": [
|
|
130
|
+
"报销",
|
|
131
|
+
"费用",
|
|
132
|
+
"付款",
|
|
133
|
+
"请款",
|
|
134
|
+
"借款",
|
|
135
|
+
"发票",
|
|
136
|
+
"差旅",
|
|
137
|
+
"对公",
|
|
138
|
+
"资金",
|
|
139
|
+
"核销"
|
|
140
|
+
],
|
|
68
141
|
"weight": 500,
|
|
142
|
+
"requestSummaryPrompt": "根据流程详情进行摘要总结,需要以下几个要素:1、申请人 2、费用说明 3、人民币金额+币种 ",
|
|
143
|
+
"excludeOriginFormDataFields": [
|
|
144
|
+
"发起人所有上级",
|
|
145
|
+
"承担人所有上级"
|
|
146
|
+
],
|
|
69
147
|
"aiGroup": {
|
|
70
148
|
"groupSummary": {
|
|
71
149
|
"needAI": false,
|
|
@@ -75,13 +153,70 @@
|
|
|
75
153
|
"focus": true,
|
|
76
154
|
"sysArg": false,
|
|
77
155
|
"aiContext": "流程详情",
|
|
78
|
-
"focusKeyword": [
|
|
156
|
+
"focusKeyword": [
|
|
157
|
+
[
|
|
158
|
+
"报销金额",
|
|
159
|
+
"小于等于",
|
|
160
|
+
100
|
|
161
|
+
]
|
|
162
|
+
],
|
|
79
163
|
"groupTitle": "100元以内"
|
|
80
164
|
}
|
|
81
|
-
}
|
|
165
|
+
},
|
|
166
|
+
"summaryRequiredFields": [
|
|
167
|
+
"人民币"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"workflowName": [
|
|
172
|
+
"产品开发计划制定及任务跟踪(e-todo)"
|
|
173
|
+
],
|
|
174
|
+
"weight": 600,
|
|
175
|
+
"requestSummaryPrompt": "根据流程详情进行摘要总结,需要以下几个要素:1、需求编号 2、预计发布日期 3、任务总负责人 4、预估开发总人天 5、需求概述(简要总结下)",
|
|
176
|
+
"excludeOriginFormDataFields": [
|
|
177
|
+
"子任务名称",
|
|
178
|
+
"原型/效果图",
|
|
179
|
+
"技术实现思路",
|
|
180
|
+
"需求文档",
|
|
181
|
+
"关联需求"
|
|
182
|
+
],
|
|
183
|
+
"summaryRequiredFields": [
|
|
184
|
+
"需求编号",
|
|
185
|
+
"预计发布日期",
|
|
186
|
+
"任务总负责人",
|
|
187
|
+
"预估开发总人天"
|
|
188
|
+
]
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"workflowName": [
|
|
192
|
+
"安全问题处理工单"
|
|
193
|
+
],
|
|
194
|
+
"weight": 700,
|
|
195
|
+
"requestSummaryPrompt": "根据以下模板进行摘要:漏洞文件:{漏洞地址的文件(完整的文件,不能去掉数据库方言)及行号,行号是指地址最后的L{数字}-L{数字}} 漏洞类型:{漏洞类型} 最晚完成时间:{最晚完成日期}",
|
|
196
|
+
"excludeOriginFormDataFields": [
|
|
197
|
+
"修复方案"
|
|
198
|
+
],
|
|
199
|
+
"aiGroup": {
|
|
200
|
+
"groupSummary": {
|
|
201
|
+
"needAI": true,
|
|
202
|
+
"prompt": "{【漏洞地址】中的git地址指向的文件,如果是mapper,去掉_oracle这种数据库方言},共:{组内数量}条"
|
|
203
|
+
},
|
|
204
|
+
"groupRule": {
|
|
205
|
+
"focus": false,
|
|
206
|
+
"aiContext": "流程详情",
|
|
207
|
+
"groupingPrompt": "按照【漏洞地址】中的git地址指向的文件(如果是mapper,去掉_oracle这种数据库方言),进行分组"
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"summaryRequiredFields": [
|
|
211
|
+
"漏洞文件",
|
|
212
|
+
"漏洞类型",
|
|
213
|
+
"最晚完成时间"
|
|
214
|
+
]
|
|
82
215
|
},
|
|
83
216
|
{
|
|
84
|
-
"workflowName": [
|
|
217
|
+
"workflowName": [
|
|
218
|
+
"*"
|
|
219
|
+
],
|
|
85
220
|
"weight": 999
|
|
86
221
|
}
|
|
87
222
|
]
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
> **⚠️ 2026-10-28 起:分组规则已外置到 JSON,代码不再按业务类型分支。**
|
|
8
8
|
> 唯一真源是 `skills/weaver-e10-workflow/aigroup/default.json`(`{defaults, rules[]}`,随 skill 分发、只读),用户意图另存 **CLI 状态目录**下的 `aigroup/user-intents.json`(`aigroup set` 写入,不落 skill 目录)。
|
|
9
|
-
> 现行规则要点:①没有 `aiGroup` ⇒ 全平铺;②`focus:true` ⇒ 按 `focusKeyword`(`[指标, 算子, 值]`,十种算子)确定性成一组,`groupTitle` 为组名,`sysArg` 指明指标取自列表属性还是流程详情;③`focus:false` ⇒ `aiContext`(流程标题/流程详情)交 AI 分组,**必须**给 `aiGroups`;④`focus:true` 收到多个计划子组时**只保留条数最多的一个**,其余平铺;⑤`aiGroups.seq` 已删除,只认 `requestIds`;⑥组摘要 `groupSummary.needAI:false` 时由 CLI 按 JSON `template` 渲染,`true` 时交 AI;⑦单条摘要由 `needSummary` 决定(false ⇒ 用标题);⑧`focus:false` 还可给 `groupingPrompt
|
|
9
|
+
> 现行规则要点:①没有 `aiGroup` ⇒ 全平铺;②`focus:true` ⇒ 按 `focusKeyword`(`[指标, 算子, 值]`,十种算子)确定性成一组,`groupTitle` 为组名,`sysArg` 指明指标取自列表属性还是流程详情;③`focus:false` ⇒ `aiContext`(流程标题/流程详情)交 AI 分组,**必须**给 `aiGroups`;④`focus:true` 收到多个计划子组时**只保留条数最多的一个**,其余平铺;⑤`aiGroups.seq` 已删除,只认 `requestIds`;⑥组摘要 `groupSummary.needAI:false` 时由 CLI 按 JSON `template` 渲染,`true` 时交 AI;⑦单条摘要由 `needSummary` 决定(false ⇒ 用标题);⑧`focus:false` 还可给 `groupingPrompt`(二次分组口径,见下节);⑨**`summaryRequiredFields`(要素级交付闸门,2026-11-01)**:规则声明的关键字清单,本组每条摘要必须逐项包含,缺任一项 ⇒ 导出闸门 `exit 1`(见 §6.1)。
|
|
10
10
|
|
|
11
11
|
**`groupingPrompt`(2026-10-29 新增,schemaVersion 3)**
|
|
12
12
|
- 位置 `aiGroup.groupRule.groupingPrompt`,**只在 `focus:false` 时有意义**;`focus:true` 给它会直接校验失败。可选,不给就按素材自由分组。
|
|
13
13
|
- 分工:`aiContext` 决定**看什么**(是否预取流程详情),`groupingPrompt` 决定**怎么切**(组名词表、归属规则)。
|
|
14
14
|
- 下发方式:`collect` 会把该字段原样放进 `groupingBrief[].groupingPrompt`,`smartGroup` 的 `ai_groups_required` 报错文案也会带上。**模型生成 `aiGroups` 前必须先读它并照做**(组名只能取它给的词表,不得新造)。
|
|
15
15
|
- 限制:非空字符串、≤500 字(会原样进模型上下文)。
|
|
16
|
-
>
|
|
16
|
+
> 本文档只描述**机制与执行规则**(aiGroups 格式与校验、子组解散/平铺机制、意图判定、素材与缓存、交付形态);**分组阈值、组名词表、摘要模板、排除清单等业务口径一律以 `aigroup/default.json` 为准**(`prep`/`build` 输出会回显相关内容),与本文冲突时以 JSON 为准。
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
@@ -88,11 +88,28 @@ collect
|
|
|
88
88
|
### 详情和缓存
|
|
89
89
|
|
|
90
90
|
- 详情请求固定使用 `isReadRequest:false`,默认并发 10、单条超时 10 秒;单条失败不会拖垮整批。
|
|
91
|
-
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
- **详情素材口径(2026-10-30 用户定稿,取代旧 selectSummaryFields 投影)**:只取接口返回的
|
|
92
|
+
`formData` + `basicInfo` 两块——
|
|
93
|
+
1. 分发字段(`主送/抄送` 家族)无条件丢弃;内部留言类只留 `留言内容/发起人/发起时间`;
|
|
94
|
+
2. 再按 aigroup JSON 的 **`excludeOriginFormDataFields`**(字段名清单,fieldName 精确匹配,
|
|
95
|
+
两侧先做归一防排版差异)剔除;规则级可覆盖 defaults,显式 `[]` 可清空;
|
|
96
|
+
3. 剔除后**最多保留 200 个字段**(取前 200 个),**单值超过 500 字只保留前 500 字**;
|
|
97
|
+
4. `basicInfo` 保留但**剔除 `requestTitle` / `flowName` 两个标题类字段**(2026-11-01 用户定稿:
|
|
98
|
+
给 AI 的素材与本地缓存都不允许出现——标题在素材里会诱导"按标题写摘要"与"标题未体现"类降级话术;
|
|
99
|
+
标题本身由列表行 `requestNameTitle` 承载,素材里不需要);
|
|
100
|
+
5. 缓存与喂模型的形态统一为 `fieldName:value`(逐行),basicInfo 的键值同样按 `key:value` 放在最前。
|
|
101
|
+
- **两个持久化缓存**,key 都是 `requestId__lastFeedBackDateTime`,有效期 7 天、清理间隔 3 天,
|
|
102
|
+
位置固定取**当前 skill 自己的 `cache/`**(2026-11-01 用户定稿):`tools/todo-summary.cjs` 会把
|
|
103
|
+
自身所在 skill 目录经 `WEAVER_WORK_CLI_SKILL_DIR` 显式指给 CLI,缓存与 aigroup 规则都锚定它;
|
|
104
|
+
设了 `WEAVER_WORK_CLI_CACHE_DIR` 则仍以它为最高优先;CLI 裸调(不经脚本)时才走多安装发现排名:
|
|
105
|
+
- 详情缓存(条目格式 v3):过滤后的 formData 字段 / basicInfo(已剔除标题类字段)/ 阈值指标 / `excludeTag`,
|
|
106
|
+
**详情为空也写**;旧版本条目(v2 及更早,basicInfo 里还带标题)读取时视为无效,自动重拉;
|
|
107
|
+
`excludeOriginFormDataFields` 变了 ⇒ `excludeTag` 对不上 ⇒ 旧条目自动失效重拉(与摘要缓存的 pk 机制同思路);
|
|
108
|
+
- 摘要缓存:单条摘要文本。条目除 `maxChars`/`pk`(口径)外还带 **`dv`(详情素材特征值,
|
|
109
|
+
2026-11-01 根治)**:写入时对当前详情素材(basicInfo+fields 内容哈希)取特征值,
|
|
110
|
+
读取时与当前素材比对——素材升级/排除清单调整/详情缓存被清(无法核验)⇒ 旧摘要失效重写;
|
|
111
|
+
无 `dv` 的旧条目按旧规则兼容命中(7 天 TTL 内自然消化)。
|
|
112
|
+
记录里带 `lastFeedBackDateTime` 就是为了这个 key:**流程有新反馈 ⇒ key 变 ⇒ 缓存自然失效**。
|
|
96
113
|
- 详情取数时机:`collect` 只为「用户给了 `groupFocus` 且意图适用于本组」的组预取字段;`smartGroup` 对全部条目走一次「缓存优先」的取数(命中零请求)。因此**冷缓存下详情请求集中在 `smartGroup`,`summary` 阶段通常 0 请求**。
|
|
97
114
|
- 摘要缓存**只省 AI、不省详情**:阈值指标只认流程详情数据,所以命中摘要的条目仍会查一次详情缓存;摘要为空的条目用标题兜底。
|
|
98
115
|
|
|
@@ -118,20 +135,22 @@ collect
|
|
|
118
135
|
- `requestIds` 与 `seq` 二选一,不能同时出现,也不能都为空。
|
|
119
136
|
- 优先组不可二次分组。
|
|
120
137
|
- 组内少于 3 条时**一律平铺单条**,不产生任何汇总项——阈值组(1天以内 / 100元以内)、问题支持过期组、内部留言整组都不例外;**即使给了 `aiGroups` 也忽略**(CLI 写 warning)。这条是硬门槛,没有例外。
|
|
138
|
+
- **计划子组不足 2 条会被解散平铺**(CLI 写 warning「N 个子组不足 2 条,已解散」)——这是机制行为,与上一条相互独立:若 `groupingPrompt` 的自然粒度每组只有 1 条(如 安全问题处理工单 按 git 文件,11 条对应 11 个文件),按它给的计划会全部解散、整组平铺,**这是该计划的必然结果,不是错误**;要真正成组,就得按能凑够每组 ≥2 条的粒度给计划(如按文件族),且组名仍必须来自 `groupingPrompt` 口径、**不得为凑组虚构更粗粒度的新组名**(如"XML/Java 文件类型")。
|
|
121
139
|
- 组内至少 3 条时,完全省略 `aiGroups` 走 CLI 确定性分组;显式传入后,未知 `groupId`、未知 `requestId`、重复分配和越界序号直接失败(**仅在本组计划会被采纳时校验**:意图适用于本类型,或本组是内部留言)。
|
|
122
|
-
- `aiGroups`
|
|
140
|
+
- `aiGroups` 何时该给——**三种情形**(`prep` 输出会给组标 `[必须给 plan]`,照标注执行即可):
|
|
123
141
|
- ① 用户给了侧重点(`groupFocus`),且侧重点**按意图表适用于本组类型**;
|
|
124
|
-
- ② 本组是**内部留言** —— 而且**≥3 条时是必须给**:没有侧重点(或侧重点不适用)就按**流程标题**分组,缺计划直接报 `ai_groups_required
|
|
142
|
+
- ② 本组是**内部留言** —— 而且**≥3 条时是必须给**:没有侧重点(或侧重点不适用)就按**流程标题**分组,缺计划直接报 `ai_groups_required`;
|
|
143
|
+
- ③ 规则里 `aiGroup.groupRule.focus === false` 的组(如 **安全问题处理工单**,上下文=流程详情)——**≥3 条时必须给**,缺计划同样报 `ai_groups_required`。这类组的分组素材(如漏洞地址里的 git 文件)来自流程详情,prep 无侧重点时不带字段注记 ⇒ 按 references 上文的「单条查询详情」兜底取得,**不要用标题推断**。
|
|
125
144
|
其他类(`other`)在无侧重点时**不要给**:给了也会被忽略,且该组**全部平铺单条**(会写 warning);请假/财务/客户问题支持按各自的阈值 / 过期规则分,不需要计划。
|
|
126
145
|
- **意图按表判定,不是「随便一句中文都算」**(`INTENT_RULES`):专属意图(请假维度 / 财务维度 / 问题支持维度)只作用于对应类型;通用意图(客户 / 发起人 / 时间 / 紧急 / 标题主题 / 类型…)只作用于内部留言与其他类。意图不适用于本组时,CLI 按「没有意图」处理并写 warning,**不会硬失败**。
|
|
127
146
|
- 意图适用于本组、却没给本组计划 ⇒ 按「没有意图」处理(确定性规则),不再报 `ai_groups_missing_group`。
|
|
128
147
|
**例外:内部留言 ≥3 条没有这个退路**——必须给计划(按标题或按侧重点),缺计划报 `ai_groups_required`,并把可用 `groupId` 与 `1..N` 序号回传。
|
|
129
148
|
- 无 `groupFocus` 时,子组按条数降序;有 `groupFocus` 时,子组沿用 AI 数组顺序。侧重点只作用于匹配的业务类型。
|
|
130
|
-
- 请假类和财务类在无侧重点时使用 CLI
|
|
149
|
+
- 请假类和财务类在无侧重点时使用 CLI 阈值兜底:把符合阈值口径的条目合并成一个汇总项,其余单条——**阈值数字(多少天/多少元)不在此文档维护,以 `default.json` 对应规则的 `focusKeyword` 为准**;**指标只取流程详情字段**,取不到就平铺并点名,不猜。
|
|
131
150
|
- **阈值分组与「传不传 `aiGroups`」无关**:只要本组没拿到生效计划、且没有匹配的侧重点,就始终按阈值分组。阈值组的 `summary` 由 CLI 固定生成,即使本轮传了 `aiGroups` 也不会留空——**不要把阈值组当成需要 AI 写摘要的组**。
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
- **无侧重点**:CLI
|
|
151
|
+
- 阈值组的**保留标题**(如"1天以内"/"100元以内",取自 `default.json` 规则的 `groupTitle`):模型把它们当子组名时,CLI 会逐条核阈值,超阈值的条目被剔出、按单条展示并写 warning。
|
|
152
|
+
- **客户问题支持类**(流程名清单以 `default.json` 对应规则的 `workflowName` 为准):
|
|
153
|
+
- **无侧重点**:CLI 按 `default.json` 该规则的口径(`focusKeyword` 的过期/今日到期判定 + `groupTitle`)产出一个固定汇总项,其余按单条展示;**一条都没命中就不产这个子组**,全部单条。
|
|
135
154
|
- **有侧重点**:`collect` 会为这类流程额外拉一次详情,把字段键值放进 `groupingBrief.items[].fields`(最多 8 个字段、每个值截 80 字),模型按意图指向的字段值分桶(如"按问题小分类"→ 用 `问题所属模块` 的取值做子组名)。
|
|
136
155
|
- `groupingBrief.items[]` 带 `overdue` / `expiringToday` / `userOverTime`,**不要自己解析「11-30到期」这类文案**。
|
|
137
156
|
- **默认不二次分组**:没有生效计划时,只有两类会产汇总项——请假/财务的阈值组、客户问题支持类的过期组;**其他一律平铺单条**,不造「与父组同名」的整组汇总项,也**不造 `other`**。满意度类全单条,`summary` 用条目标题兜底(不调 AI、不为空)。AI 路径的漏分、子组只剩 1 条、保留标题里超阈值的条目,**一律落成单条**(不丢数据)并写 warnings。
|
|
@@ -173,6 +192,10 @@ collect
|
|
|
173
192
|
- `summaryContext` 输出 `summaryBatches`,每个批次带组信息、条目标题、清洗后的 `context` 和 `contextAvailable`。
|
|
174
193
|
- 批次不跨组;默认按 24,000 字或 100 条切分。摘要默认建议 50 字,可用 `summaryMaxChars` 覆盖。
|
|
175
194
|
- 调用方只提交本轮有效的 `aiSummaries:[{requestId,summary}]`。未知或重复 ID 失败;漏写保留空串并告警。CLI 不截断或改写摘要。
|
|
195
|
+
- **模板要素完整性三条硬规则(2026-11-01,e-todo 要素缺失复盘定稿)**:
|
|
196
|
+
1. **模板要素优先于字数偏好**:某组口径(`requestSummaryPrompt`)明确要求 N 个要素时,N 项必须写全,字数让位——字数只在要素齐全后用于收拢表达;
|
|
197
|
+
2. **缺字段不静默**:素材里看不到某要素时,第一步**回查详情缓存**(`todo-detail-cache.json` 该条目的 `fields`——**已按 `excludeOriginFormDataFields` 过滤,首选**)或对单条跑 `workflow.detail` 补取;补不到就在摘要里明确标注该项缺失。**禁止**当作"字段不存在"而静默省略。**注意**:`workflow.detail` 返回的是**未过滤**的全量 formData(含被排除的字段,如 e-todo 的「子任务名称」)——**摘要中不得引用被排除的字段**,补取也只取模板要求的要素;
|
|
198
|
+
3. **素材截断迹象 = 素材不全**:明细行出现半截字段名、异常结尾时一律按"素材不全"处理,先补取再动笔,不得基于残缺素材下结论(脚本侧 4000 字符内的素材视为完整;超长条目按上一条补取)。
|
|
176
199
|
|
|
177
200
|
### 组摘要
|
|
178
201
|
|
|
@@ -188,13 +211,22 @@ collect
|
|
|
188
211
|
|
|
189
212
|
### 6.1 交付形态:`params.dataSource` + 落文件(2026-10-28 现行口径)
|
|
190
213
|
|
|
214
|
+
**回复正文 = 只有 `<browsertool>` 组件块,其他一律不输出(2026-11-01 用户定稿,最高优先;本文其余任何段落——含下方旧口径小节与文末「最终交付」——与本节冲突时,一律以本节为准)**:
|
|
215
|
+
|
|
216
|
+
- **不要**几行总结、不要表格、不要逐组罗列、**不要耗时说明**、不要任何解释文字——正文里除了那一个组件块,一个字都不能多;
|
|
217
|
+
- **JSON 文件默认不在对话中输出**:不 `present_files`、不在正文提文件路径(脚本仍会自动落盘备用);**仅当用户提示词明确要求「需要输出 json」时**,才 `present_files` 脚本打印的「交付文件」路径。
|
|
218
|
+
|
|
191
219
|
**2026-10-28 用户在 OA 页面实测通过后定稿**:载荷不再内联明细,只给一个本地 GET 地址,由组件自己取三键。
|
|
192
220
|
|
|
193
221
|
- 脚本**默认**就走这条(`finish` 不带参数即生效):把
|
|
194
222
|
`params.data.dataSource = http://127.0.0.1:<port>/s/<token>/todo.json` 写进载荷(**注意是 `params.data` 里的 `dataSource`,不是 `params.dataSource`**),不再带明细。
|
|
195
|
-
- **单进程多快照(2026-10-29 方案 B
|
|
196
|
-
进程信息记在 `<tmpdir>/weaver-work-cli-serve/current.json`(`{pid, port, version}`),同版本且 pid 存活就复用,
|
|
223
|
+
- **单进程多快照(2026-10-29 方案 B;2026-10-30 起为 v4 内存优先版)**:`todo-serve.cjs` 是**全局单例**,同一时间只有一个进程、一个端口。
|
|
224
|
+
进程信息记在 `<tmpdir>/weaver-work-cli-serve/current.json`(`{pid, port, version, publishKey}`),同版本且 pid 存活就复用,
|
|
197
225
|
不会每次汇总都新起一个(旧实现的「一次汇总一个进程」已废弃)。
|
|
226
|
+
**v4:发布改为 CLI 把三键 JSON 原文 `POST` 进服务内存(须带 `x-publish-key`,服务启动时随机生成、写在 current.json 里),
|
|
227
|
+
GET 从内存返回——服务端不再读任何磁盘文件。** 原因:宿主沙箱会回收常驻进程的文件读授权(能 stat 不能 read),
|
|
228
|
+
「写文件给服务读」的旧路径会导致链接跨命令后必 404(`snapshot_empty`)。内存 miss 时仍回落读磁盘文件(兼容),
|
|
229
|
+
服务也照旧 best-effort 写磁盘副本(只写不读,排错用)。内存快照上限 20 份(LRU),单份 ≤ 8MB。
|
|
198
230
|
- 每份汇总 = 一个快照目录 `<tmpdir>/weaver-work-cli-serve/snapshots/<token>/todo.json`,
|
|
199
231
|
URL 形态 `/s/<token>/todo.json`(同时兼容旧的 `/todo.json?token=`)。
|
|
200
232
|
**多份快照并存互不覆盖**,旧链接在各自空闲期内继续可用。
|
|
@@ -204,16 +236,14 @@ collect
|
|
|
204
236
|
- 响应体 = `params.data` 的三键对象**原样**(`smartSummaryTitle` / `totalCount` / `wfIdGroup`),组件拿到不需要任何转换。
|
|
205
237
|
- 必回的头(缺一前端就废):`Access-Control-Allow-Origin`(回显请求 Origin)、`Access-Control-Allow-Private-Network: true`(Chrome 私有网络预检必需)、`Access-Control-Max-Age`。
|
|
206
238
|
- 排错:`GET /health` 返回 `{pid, port, snapshots, hits}`;每个输出目录下的 `serve.json` 记录本次的 url/token/snapshotDir。
|
|
207
|
-
- **正文必须内联完整的 `<browsertool>...</browsertool>` 块**(标签成对):dataSource 版载荷只有约 900 B,不算大载荷,所以照常内联;块内 `params.data.dataSource`
|
|
208
|
-
-
|
|
209
|
-
`用户名` = 认证系统当前登录人的 `username`(`auth whoami` 拿 `employeeId` → `hrm.employee.detail` 取 `username`),
|
|
210
|
-
**不要用本机账号名或数字 ID**。
|
|
239
|
+
- **正文必须内联完整的 `<browsertool>...</browsertool>` 块**(标签成对):dataSource 版载荷只有约 900 B,不算大载荷,所以照常内联;块内 `params.data.dataSource` 指向本地服务,**不内联明细数据**。**硬规则:标签与载荷必须原样贴在回复正文顶层,禁止包进代码块(``` 包裹)、禁止缩进/引用块/折叠**——包进代码块组件就不渲染(2026-11-01 用户实测踩坑后定为硬规则)。
|
|
240
|
+
- **交付 JSON 文件由脚本自动落盘**(2026-11-01 用户拍板):`finish`/`build` 导出时脚本把三键本体写到 `~/Downloads/<用户名>_<YYYYmmddHHMMSS>.json`(用户名 = `auth whoami` 的 employeeId → `hrm run hrm.employee.detail` 的 `username`,脚本自动查并缓存;时间戳为本地时间)。**执行方默认不输出它**(见 6.1 顶部:不 `present_files`、不提路径),仅当用户明确要求「需要输出 json」时才 `present_files`;不要手工拼名字、不要手工复制。
|
|
211
241
|
- 回退:`--no-serve` 时回到旧的「内联 `params.data` 整块 + 内联 `<browsertool>`」形态,下列旧规则只在回退分支生效。
|
|
212
242
|
|
|
213
243
|
**旧口径(2026-10-27,现仅 `--no-serve` 分支适用)**:不区分宿主与 agent 类型,交付**固定两份、缺一不可**:
|
|
214
244
|
|
|
215
245
|
- **① 回复正文里直接内联完整的 `<browsertool>...</browsertool>` 块**(不省略、不用路径代替)+ 各阶段耗时。
|
|
216
|
-
- **② 同时另存一份不带标签的纯 JSON 文件**(内容 =
|
|
246
|
+
- **② 同时另存一份不带标签的纯 JSON 文件**(内容 = 同一个载荷对象)。**【历史口径,已被 §6.1 顶部取代:JSON 文件默认不展示、不 `present_files`】**
|
|
217
247
|
- 标签**必须成对**:`<browsertool>` 开头、`</browsertool>` 结尾;漏标签或只贴裸 JSON 都算交付失败。
|
|
218
248
|
- `params.data` 的值就是最终三键对象(`smartSummaryTitle` / `totalCount` / `wfIdGroup`)**原样**:不裁剪、不改字段名、不再外包一层。
|
|
219
249
|
- 载荷里除 `params.data` 外**不要**再带 `schemaVersion` / `ok` / `operation` / `meta` / `warnings` 等信封字段。
|
|
@@ -247,15 +277,16 @@ collect
|
|
|
247
277
|
- `src` 取**当前认证环境**的 `baseUrl`(`weaver-work-cli --json auth status` 的 `baseUrl`)拼 `/workflow/list/todo`,不要写死某个租户。脚本已用 `state.json` 缓存 `baseUrl`,同一轮流水线不会重复启动 CLI。
|
|
248
278
|
- `params_pc` / `params_mobile` 必须放在 `sdkOptions` 内、与 `routerProps_pc/mobile` 同级,**不要放进 `arguments` 层**。
|
|
249
279
|
- `app` 的值按原始字符写 **`@weapp/workflow`**(`@` 后面**没有**斜杠,共 15 个字符):**不要写成 `@//weapp/workflow`、不要转义成 `@\/\/weapp\/workflow`、也不要加前导空格**——带前导空格会导致 app 解析失败(用户 2026-10-27 以截图校正)。
|
|
250
|
-
- 脚本 `exportFinal` 已在 stdout 的 `[JSON_BEGIN]`/`[JSON_END]`
|
|
280
|
+
- 脚本 `exportFinal` 已在 stdout 的 `[JSON_BEGIN]`/`[JSON_END]` 之间直接输出**带标签的整块载荷**,原样粘贴即可;交付 JSON 文件(`~/Downloads/<用户名>_<时间戳>.json`)由脚本自动落盘并打印路径,**默认不 `present_files`(见 §6.1 顶部)**。旧 `--file` 分支(写 `待办汇总-*.json` 外框归档)已于 2026-11-01 **删除**——传了也会被忽略,不要再依赖它。
|
|
281
|
+
- **交付硬闸门(2026-11-01)**:`finish`/`build` 导出前强制校验——①空单条摘要 >0、②空组摘要 >0、③待写摘要未全部回填(列出缺失 requestId)、④详情取数失败(`failed>0`,防"静默降级+标题编内容")、⑤**降级话术黑名单**(摘要含「未在标题体现 / 标题未体现 / 标题里没有 / 详见流程 / 详见详情 / 待确认」即拦截——把取数失败写成业务信息缺失)、⑥**要素级校验**(规则 `summaryRequiredFields` 声明的关键字,本组每条摘要必须逐项包含,缺任一即拦截并列出缺失项)——任一命中即 `exit 1` 拒绝导出。显式豁免:`--allow-empty-summary`(豁免①②③⑤⑥)、`--allow-detail-fail`(豁免④)。**豁免是给"确认要带瑕疵出文件"用的,不要拿它当常规手段绕过校验。**
|
|
251
282
|
- 体积见 §6.2:**不能按组拆成多个 `<browsertool>` 块**(拆开就不是合法载荷);超限时先在正文说明条数与预计体积,建议缩小范围,用户坚持再照做。
|
|
252
283
|
|
|
253
284
|
|
|
254
285
|
交付约束:**不改写条目字段、不做体积裁剪**(载荷里必须是完整明细)。
|
|
255
286
|
|
|
256
|
-
#### 6.1.3
|
|
287
|
+
#### 6.1.3 耗时口径(只在脚本控制台统计;回复正文不再报耗时)
|
|
257
288
|
|
|
258
|
-
用户 2026-10-27 要求:**取消「耗时说明 md
|
|
289
|
+
用户 2026-10-27 要求:**取消「耗时说明 md」这份交付物**。2026-11-01 进一步定稿:**回复正文只有组件块、禁止任何文字**,所以耗时也**不再写进回复**——仍照常统计、`--timing-report` 只在控制台打两行「耗时摘要」,执行方自己看即可。下面两个口径要分开,**不要把两个数混成一个**:
|
|
259
290
|
|
|
260
291
|
| 口径 | 取法 | 含义 |
|
|
261
292
|
| --- | --- | --- |
|
|
@@ -264,7 +295,7 @@ collect
|
|
|
264
295
|
|
|
265
296
|
- **请求级埋点已移除**(2026-10-27 用户定:`internal/e10/requestTiming.ts` 模块及 `client.ts` / `request-runtime.ts` 的接线一并删除,`meta.timing` 现在只有 `startedAt / finishedAt / stage / steps / durationMs`)。不要再读 `meta.timing.requests`,也不要写 `WEAVER_WORK_CLI_TIMING=1`。
|
|
266
297
|
- 常见误读:`collect` 的墙钟含进程启动(沙箱下 5~7s),真实取数只有 0.2~0.3s。脚本已分列输出 `collect 内部 / 含进程启动`。
|
|
267
|
-
- **不落任何耗时文件**:`--timing-report` 只在控制台打两行「耗时摘要」(总墙钟+业务占比、以及一条"只统计 CLI 链路"的提示),不再写 md、不要 `present_files`
|
|
298
|
+
- **不落任何耗时文件**:`--timing-report` 只在控制台打两行「耗时摘要」(总墙钟+业务占比、以及一条"只统计 CLI 链路"的提示),不再写 md、不要 `present_files` 它;**回复里也不写耗时**(2026-11-01 定稿)。
|
|
268
299
|
|
|
269
300
|
**端到端要分四层报,不要只报一个数**(实测 2026-10-26 近一年:端到端 4m58s,而 CLI 只占 23s):
|
|
270
301
|
|
|
@@ -277,7 +308,8 @@ collect
|
|
|
277
308
|
|
|
278
309
|
⇒ 端到端提速最有效的不是优化 CLI,而是**减少往返次数**:
|
|
279
310
|
|
|
280
|
-
- 用 `run --days N --limit N --out DIR --
|
|
311
|
+
- 用 `run --days N --limit N --out DIR --timing-report` 一次跑完 `prep + build`(无待写摘要时连 `finish` 一起),别一步步手动跑。
|
|
312
|
+
- **时间段默认(2026-11-01 用户定稿)**:用户**没有说明数据的时间段**时,**不加任何时间条件**——不传 `--days` / `--from` / `--to`,取数范围就是全部待办,默认取**前 500 条**(`--limit` 不传即为 500);只有用户明确说了时段("近一年""近 30 天""某区间")才传 `--days` 或 `--from/--to`。不要替用户默认加时间范围。
|
|
281
313
|
- **有侧重点(`--focus`)时的最短路径是 4 轮**,多一轮就多 5~7s:
|
|
282
314
|
```
|
|
283
315
|
R1 prep --days N --focus "请假类型、报销类型" # 输出组/行/序号,以及 collect 已预取的「请假类型 / 金额 / 费用说明」
|
|
@@ -285,7 +317,7 @@ collect
|
|
|
285
317
|
R3 写 aiSummaries.json && finish --summaries … # 输出组摘要素材
|
|
286
318
|
R4 写 aiGroupSummaries.json && finish --group-summaries … # 同一条命令内回填单条 + 组摘要并导出
|
|
287
319
|
```
|
|
288
|
-
- `prep` 的每行后面会带 `‹字段=值›`(最多 3
|
|
320
|
+
- `prep` 的每行后面会带 `‹字段=值›`(最多 3 个、相同值只留一个):分组**分桶**据此进行即可,此阶段不必再翻详情缓存。
|
|
289
321
|
- `--group-summaries` 让 `finish` 在同一次调用里跑完 `summary` + `groupSummary`,省掉「读完素材再单独调一次 groupSummary」那一轮。
|
|
290
322
|
- **启动开销的真相(2026-10-27 实测)**:宿主给每个 node 子进程注入 `NODE_OPTIONS=--require=…/node-language-shim.cjs`,它对**每次 fs 读取**加 ~10ms 审计;本 CLI 启动要读 387 个模块 ⇒ 每次 ~4s(负载高时 25s)。
|
|
291
323
|
`todo-summary.cjs` 启动 CLI 时**只摘掉 shim 这一项**(`cliEnv()`),实测 `--version` 4.96s→0.16s、`workflow schema` 7.23s→0.19s、脚本 spawn 6.46s→0.56s。
|
|
@@ -331,4 +363,4 @@ weaver-work-cli --json workflow run workflow.todoSmartConvert --input-json '{"st
|
|
|
331
363
|
| `forbidden_endpoint` | 只允许列表取数接口,检查是否误用了辅助分页接口 |
|
|
332
364
|
| `authentication` / `network` | 按共享 skill 的认证和失败规则处理,不盲目重试 |
|
|
333
365
|
|
|
334
|
-
|
|
366
|
+
最终交付(**2026-11-01 定稿,以 §6.1 顶部为准**):**回复正文 = 只有一个 `<browsertool>` 组件块**——载荷里只给 `params.dataSource`(本地服务,脚本默认已生成),不写总结/表格/耗时/任何其他文字;`<用户名>_<时间戳>.json` 由脚本自动落盘**仅作备用,默认不 `present_files`、不提路径**,仅当用户明确要求「需要输出 json」时才展示。只有 `--no-serve` 回退时才回到「内联 `<browsertool>` + 内联明细」形态。不要用 Markdown 报告或摘要清单替代交付物,也不要产出「耗时说明 md」(见 §6.1、§6.1.3)。
|