weaver-work-cli 0.1.38 → 0.1.40

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 (166) hide show
  1. package/README.md +7 -3
  2. package/dist/chunks/{archive-PDV724YK.js → archive-JHTONRST.js} +556 -66
  3. package/dist/chunks/{archive-oa-4XE4MNXQ.js → archive-oa-FCHLCPHC.js} +2 -2
  4. package/dist/chunks/{asset-PDL2QE2N.js → asset-RLIHC7DB.js} +2 -2
  5. package/dist/chunks/asset-idle-KVOFTLCP.js +670 -0
  6. package/dist/chunks/{attachment-content-MDDGOE5E.js → attachment-content-RZYDB3MB.js} +3 -3
  7. package/dist/chunks/{blog-UYR3EUXW.js → blog-42OZTJNP.js} +2 -2
  8. package/dist/chunks/{caizhilian-LG2X5NMF.js → caizhilian-KRK547K5.js} +2 -2
  9. package/dist/chunks/{calendar-FG4BAZHE.js → calendar-RTWAMKHD.js} +2 -2
  10. package/dist/chunks/{chunk-J7USS3ED.js → chunk-4CTESSKI.js} +4 -4
  11. package/dist/chunks/{chunk-OJQUJZQF.js → chunk-4TEDNCON.js} +45 -5
  12. package/dist/chunks/chunk-57IECMWX.js +487 -0
  13. package/dist/chunks/{chunk-ELYDWBZJ.js → chunk-7BRU4EFH.js} +13 -7
  14. package/dist/chunks/{chunk-6LTFIFLM.js → chunk-7E6MUOEK.js} +2 -2
  15. package/dist/chunks/{chunk-KKRL3REV.js → chunk-7U577Q7U.js} +2 -2
  16. package/dist/chunks/{chunk-UJJD4QWF.js → chunk-CAQNBBQA.js} +2 -2
  17. package/dist/chunks/{chunk-CORFRD7Q.js → chunk-CXRQWOZ5.js} +2 -2
  18. package/dist/chunks/{chunk-GGJFMNJM.js → chunk-FLS4DPGP.js} +110 -16
  19. package/dist/chunks/{chunk-JSMFPO43.js → chunk-I566ZYNF.js} +1 -1
  20. package/dist/chunks/{chunk-6FTTSA45.js → chunk-IZSSVYAG.js} +2 -2
  21. package/dist/chunks/{chunk-XJY7G4DD.js → chunk-JWRZM2H2.js} +3 -3
  22. package/dist/chunks/{chunk-NI6GIPIM.js → chunk-LFMSDBZN.js} +529 -395
  23. package/dist/chunks/{chunk-VRYHGG6O.js → chunk-LN447PY2.js} +92 -51
  24. package/dist/chunks/{chunk-NR6RKXPA.js → chunk-NETCCARD.js} +4 -2
  25. package/dist/chunks/{chunk-Z32KWY6G.js → chunk-NJKREDA3.js} +1 -1
  26. package/dist/chunks/{chunk-FUWVHMVV.js → chunk-SPRHHSVC.js} +2 -2
  27. package/dist/chunks/{chunk-IZUDA353.js → chunk-T6EGVBKU.js} +1 -1
  28. package/dist/chunks/{chunk-DMV2TOMH.js → chunk-VNBU55SL.js} +428 -145
  29. package/dist/chunks/{chunk-UZZBA6PV.js → chunk-WFFNM65B.js} +47 -6
  30. package/dist/chunks/{chunk-EG6ZU444.js → chunk-ZUX3P6BQ.js} +10 -5
  31. package/dist/chunks/{conflict-BQZEQ4SP.js → conflict-VR55AOOO.js} +2 -2
  32. package/dist/chunks/{contract-XIRAFTEV.js → contract-HI4FNPYE.js} +2 -2
  33. package/dist/chunks/{cowork-BLG62BL2.js → cowork-HJLI353D.js} +12 -5
  34. package/dist/chunks/{ebuilder-form-NUKG5QW4.js → ebuilder-form-HTGI63UU.js} +3 -3
  35. package/dist/chunks/{ehr-2STW5ILH.js → ehr-GYXIYH3A.js} +2 -2
  36. package/dist/chunks/env-DW3G4HUO.js +19 -0
  37. package/dist/chunks/{esb-UUDQUNKY.js → esb-I5INCEFE.js} +4 -4
  38. package/dist/chunks/factory-TKXGXS6L.js +30 -0
  39. package/dist/chunks/{fna-6RCY4NU5.js → fna-K2MHTQ24.js} +2 -2
  40. package/dist/chunks/group-chat-VYBNMJLG.js +18 -0
  41. package/dist/chunks/{host-FWDOSRH5.js → host-256GVCAH.js} +3 -3
  42. package/dist/chunks/{host-EJZFROU3.js → host-D5SERMAJ.js} +3 -3
  43. package/dist/chunks/{host-RHM3NPXV.js → host-JM4YVHFM.js} +3 -3
  44. package/dist/chunks/{host-7RXEDMAH.js → host-L3VLITMT.js} +3 -3
  45. package/dist/chunks/{host-UFF33TWJ.js → host-ZUQTJYYK.js} +3 -3
  46. package/dist/chunks/{hrm-PKJ6ELSH.js → hrm-VLRBKTZB.js} +3 -3
  47. package/dist/chunks/{im-YJAXS7CO.js → im-QK3VTLXK.js} +8 -8
  48. package/dist/chunks/{invoice-HWVSXGX6.js → invoice-T5JTA32H.js} +3 -3
  49. package/dist/chunks/{jiuchuanhui-L7VKILZB.js → jiuchuanhui-P2FNEQVZ.js} +2 -2
  50. package/dist/chunks/{lazy-dispatch-NMYEIHRH.js → lazy-dispatch-XRRI46M6.js} +5 -5
  51. package/dist/chunks/{mail-B42RRU7G.js → mail-3Y7MJ6PS.js} +9 -4
  52. package/dist/chunks/{meeting-CFYVBJSS.js → meeting-M7LTXGJE.js} +11 -10
  53. package/dist/chunks/{okr-GCLF6V7W.js → okr-OBC6S67L.js} +2 -2
  54. package/dist/chunks/{plan-ZVL7GBRI.js → plan-5H6I53SK.js} +2 -2
  55. package/dist/chunks/{project-4YWAAE2K.js → project-L75QZV4S.js} +2 -2
  56. package/dist/chunks/{registry-EP4VTHZS.js → registry-KMHCPAAD.js} +9 -8
  57. package/dist/chunks/{registry-OZSMDVPP.js → registry-QGHFNUWS.js} +2 -2
  58. package/dist/chunks/{registry-FRJ6H7BT.js → registry-RXPN6BBT.js} +4 -4
  59. package/dist/chunks/{registry-SG2PGVCF.js → registry-UGRBCBHO.js} +3 -3
  60. package/dist/chunks/{room-recommend-R3JVUUAC.js → room-recommend-A3UDC3CA.js} +4 -4
  61. package/dist/chunks/{schedule-NIJBTYDO.js → schedule-5GCACCK7.js} +4 -4
  62. package/dist/chunks/{workflow-BB24DFBY.js → workflow-M5ZJ7DWF.js} +11 -8
  63. package/dist/core/output.js +16 -6
  64. package/dist/index.js +33 -28
  65. package/dist/internal/e10/auth/commands.js +109 -56
  66. package/dist/internal/e10/auth/messages.js +1 -0
  67. package/dist/internal/e10/auth/session.js +11 -1
  68. package/dist/internal/e10/auth/xiaoe.js +29 -4
  69. package/dist/internal/e10/auth-recovery.js +13 -6
  70. package/dist/internal/e10/client.js +13 -0
  71. package/dist/internal/e10/context.js +24 -3
  72. package/dist/internal/e10/request-runtime.js +12 -1
  73. package/dist/shortcuts/archive/host.js +2 -0
  74. package/dist/shortcuts/archive/manifest.js +1 -1
  75. package/dist/shortcuts/archive/operations/borrow-list.js +13 -1
  76. package/dist/shortcuts/archive/operations/flow-url.js +1 -1
  77. package/dist/shortcuts/archive/operations/prelib.js +472 -0
  78. package/dist/shortcuts/archive/operations/registry.js +2 -0
  79. package/dist/shortcuts/archive/operations/upload.js +1 -1
  80. package/dist/shortcuts/asset-idle/errors.js +44 -0
  81. package/dist/shortcuts/asset-idle/host.js +161 -0
  82. package/dist/shortcuts/asset-idle/index.js +114 -0
  83. package/dist/shortcuts/asset-idle/manifest.js +159 -0
  84. package/dist/shortcuts/asset-idle/operations/idle.js +47 -0
  85. package/dist/shortcuts/asset-idle/operations/registry.js +33 -0
  86. package/dist/shortcuts/asset-idle/operations/shared.js +142 -0
  87. package/dist/shortcuts/asset-idle/operations/types.js +9 -0
  88. package/dist/shortcuts/asset-idle/operations.js +15 -0
  89. package/dist/shortcuts/cowork/operations/item-write.js +10 -2
  90. package/dist/shortcuts/index.js +5 -0
  91. package/dist/shortcuts/mail/operations/mail-send.js +8 -2
  92. package/dist/shortcuts/meeting/operations/eb/catalog.js +5 -1
  93. package/dist/shortcuts/meeting/operations/eb/create-flow.js +381 -104
  94. package/dist/shortcuts/meeting/operations/eb/crm-search.js +87 -5
  95. package/dist/shortcuts/meeting/operations/eb/flow-memory.js +49 -0
  96. package/dist/shortcuts/meeting/operations/eb/group-chat.js +583 -0
  97. package/dist/shortcuts/meeting/operations/eb/index.js +2 -0
  98. package/dist/shortcuts/meeting/operations/eb/room-recommend.js +19 -3
  99. package/dist/shortcuts/meeting/operations/eb/room-summary.js +2 -0
  100. package/dist/shortcuts/meeting/operations/eb/usage-cache.js +99 -0
  101. package/dist/shortcuts/meeting/operations/from-group-chat.js +35 -12
  102. package/dist/shortcuts/workflow/host.js +3 -0
  103. package/dist/shortcuts/workflow/index.js +1 -1
  104. package/dist/shortcuts/workflow/operations/form.js +65 -171
  105. package/dist/shortcuts/workflow/operations/todoSmartConvert/aigroupRules.js +129 -27
  106. package/dist/shortcuts/workflow/operations/todoSmartConvert/aigroupStore.js +6 -0
  107. package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +60 -117
  108. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +44 -7
  109. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +37 -29
  110. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +48 -8
  111. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +1 -0
  112. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +22 -18
  113. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +17 -9
  114. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +34 -10
  115. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +5 -2
  116. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +9 -2
  117. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +122 -20
  118. package/docs/_catalog.md +3 -0
  119. package/docs/asset-idle.md +45 -0
  120. package/docs/e10-auth.md +16 -1
  121. package/docs/todo-smart-convert/subgroup-rules.md +1 -1
  122. package/package.json +1 -1
  123. package/scripts/mcp-meeting.mjs +234 -0
  124. package/scripts/package-skill.mjs +2 -0
  125. package/skill-template/business-info.json +14 -1
  126. package/skill-template/domains/asset-idle.md +13 -0
  127. package/skill-template/domains/wenshuding.md +3 -0
  128. package/skills/weaver-e10-archive-oa/SKILL.md +1 -0
  129. package/skills/weaver-e10-archive-oa/references/my-borrow.md +49 -0
  130. package/skills/weaver-e10-asset-idle/SKILL.md +73 -0
  131. package/skills/weaver-e10-asset-idle/references/idle-list.md +62 -0
  132. package/skills/weaver-e10-asset-idle/references/idle-stats-and-charts.md +65 -0
  133. package/skills/weaver-e10-asset-idle/references/source-manifest.json +193 -0
  134. package/skills/weaver-e10-asset-idle/references/widget-style.md +205 -0
  135. package/skills/weaver-e10-caizhilian/SKILL.md +29 -11
  136. package/skills/weaver-e10-caizhilian/references/auth-and-install.md +12 -0
  137. package/skills/weaver-e10-caizhilian/references/files.md +1 -1
  138. package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +1 -1
  139. package/skills/weaver-e10-caizhilian/references/source-manifest.json +45 -45
  140. package/skills/weaver-e10-cowork/SKILL.md +2 -0
  141. package/skills/weaver-e10-cowork/references/cowork-write.md +1 -1
  142. package/skills/weaver-e10-jucailin/SKILL.md +2 -0
  143. package/skills/weaver-e10-jucailin/references/recruit-read.md +2 -0
  144. package/skills/weaver-e10-jucailin/references/recruit-write.md +1 -1
  145. package/skills/weaver-e10-mail/SKILL.md +3 -0
  146. package/skills/weaver-e10-mail/references/mail-send.md +2 -0
  147. package/skills/weaver-e10-meeting/SKILL.md +88 -25
  148. package/skills/weaver-e10-meeting/references/meeting-minute-file.md +25 -11
  149. package/skills/weaver-e10-meeting.zip +0 -0
  150. package/skills/weaver-e10-shared/SKILL.md +5 -5
  151. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +3 -3
  152. package/skills/weaver-e10-wenshuding/SKILL.md +29 -6
  153. package/skills/weaver-e10-wenshuding/references/archive-borrow-list.md +14 -0
  154. package/skills/weaver-e10-wenshuding/references/archive-download.md +2 -0
  155. package/skills/weaver-e10-wenshuding/references/archive-flow.md +1 -1
  156. package/skills/weaver-e10-wenshuding/references/archive-prelib-arrange.md +76 -0
  157. package/skills/weaver-e10-wenshuding/references/archive-prelib-list.md +107 -0
  158. package/skills/weaver-e10-wenshuding/references/archive-prelib-open.md +59 -0
  159. package/skills/weaver-e10-wenshuding/references/archive-upload.md +4 -1
  160. package/skills/weaver-e10-wenshuding/references/source-manifest.json +108 -65
  161. package/skills/weaver-e10-workflow/SKILL.md +9 -2
  162. package/skills/weaver-e10-workflow/aigroup/default.json +166 -19
  163. package/skills/weaver-e10-workflow/references/todo-smart-convert.md +72 -34
  164. package/skills/weaver-e10-workflow/tools/todo-serve.cjs +113 -25
  165. package/skills/weaver-e10-workflow/tools/todo-summary.cjs +350 -50
  166. package/dist/chunks/{chunk-2LV74IWP.js → chunk-E7OK5WD5.js} +5 -5
@@ -0,0 +1,205 @@
1
+ # 闲置资产可视化成套样式
2
+
3
+ 本文件是 `weaver-e10-asset-idle` 技能**唯一**的图表样式来源。渲染时必须照抄本文件的尺寸、字号、色值、文案结构,禁止临场改样式,禁止再用手绘 SVG 出图。统计数值一律来自 `asset-idle.idle.stats` 的返回(`total` / `czjyCounts` / `typeCounts` / `agingBuckets`),渲染侧不重算。
4
+
5
+ ---
6
+
7
+ ## 0. 通用规则
8
+
9
+ - `widget_code` 为裸 HTML / JS 片段:不含 `<!DOCTYPE>` / `<html>` / `<head>` / `<body>`。
10
+ - Chart.js 只从 `cdnjs.cloudflare.com` 加载(CSP 白名单),版本固定 `4.4.1`。
11
+ - 每个 `<canvas>` 必须带 `role="img"` + 具体 `aria-label` + 标签内 fallback 文本。
12
+ - 每张图必须有 `role="img"` 的隐藏标题:`<h2 class="sr-only" style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)">…</h2>`,内容为一句话结论(带数字)。
13
+ - 浅/深色适配:HTML 用 `var(--color-*)`;canvas 无法读 CSS 变量,用 `matchMedia('(prefers-color-scheme: dark)')` 切换轴线与刻度色。
14
+ - canvas 外层容器只设高度,不设 canvas 自身高度。
15
+ - 三张卡按 ①→②→③ 顺序**连续输出**:第一张之前、卡与卡之间都不得输出任何文字(无引导语、无解读、无过渡句);第三张之后**仅输出一行 `闲置资产详情:{系统页面地址}`**(PC/移动端判断规则见 SKILL.md 与 idle-stats-and-charts.md),地址行 = 前缀「闲置资产详情:」+ 地址。**该地址行必须写在图③ widget 内部、canvas 容器之后**(正文文本会被渲染到卡片之前,地址跑到最前面,2026-11-02 修正),整条回复正文不得输出其他文字。图表自带标题、图例、数值与隐藏标题,信息已完整。
16
+ - 三张图的 `show_widget` title 固定为:①「数据统计」②「类型统计」③「闲置时长统计」,不另起标题。
17
+
18
+ ---
19
+
20
+ ## 1. 数据统计卡(HTML 网格卡)
21
+
22
+ 标题「数据统计」+ 4 列等宽卡,卡背景固定 `#F5F9FF`、无边框。数值 24px/500,单位 12px 跟在数字后。
23
+
24
+ ```html
25
+ <h2 class="sr-only" style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)">数据统计:闲置资产 {{total}} 件,待调剂 {{cz1}} 件,待调拨 {{cz0}} 件,待评估 {{cz2}} 件</h2>
26
+ <div style="font-family:PingFang SC,sans-serif;">
27
+ <div style="font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:8px;">数据统计</div>
28
+ <div style="display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;">
29
+ <div style="background:#F5F9FF;border-radius:var(--border-radius-md);padding:1rem;">
30
+ <div style="font-size:13px;color:var(--color-text-secondary);margin-bottom:6px;">闲置资产</div>
31
+ <div style="font-size:24px;font-weight:500;color:var(--color-text-primary);">{{total}}<span style="font-size:12px;color:var(--color-text-tertiary);margin-left:2px;">件</span></div>
32
+ </div>
33
+ <div style="background:#F5F9FF;border-radius:var(--border-radius-md);padding:1rem;">
34
+ <div style="font-size:13px;color:var(--color-text-secondary);margin-bottom:6px;">待调剂</div>
35
+ <div style="font-size:24px;font-weight:500;color:var(--color-text-primary);">{{cz1}}<span style="font-size:12px;color:var(--color-text-tertiary);margin-left:2px;">件</span></div>
36
+ </div>
37
+ <div style="background:#F5F9FF;border-radius:var(--border-radius-md);padding:1rem;">
38
+ <div style="font-size:13px;color:var(--color-text-secondary);margin-bottom:6px;">待调拨</div>
39
+ <div style="font-size:24px;font-weight:500;color:var(--color-text-primary);">{{cz0}}<span style="font-size:12px;color:var(--color-text-tertiary);margin-left:2px;">件</span></div>
40
+ </div>
41
+ <div style="background:#F5F9FF;border-radius:var(--border-radius-md);padding:1rem;">
42
+ <div style="font-size:13px;color:var(--color-text-secondary);margin-bottom:6px;">待评估</div>
43
+ <div style="font-size:24px;font-weight:500;color:var(--color-text-primary);">{{cz2}}<span style="font-size:12px;color:var(--color-text-tertiary);margin-left:2px;">件</span></div>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ ```
48
+
49
+ 必须遵守:
50
+
51
+ - 四个统计项名称固定为「闲置资产」「待调剂」「待调拨」「待评估」,顺序不调。
52
+ - 取值口径固定:闲置资产 = `total`;待调剂 = `czjyCounts` 中 `code:"1"` 的 count;待调拨 = `code:"0"`;待评估 = `code:"2"`。
53
+ - 卡背景统一 `#F5F9FF`,不随主题变化;所有数字统一 `--color-text-primary`。
54
+ - 卡片不写「约 X 年」小字;顶部标题「数据统计」不可省略;**底部说明行不要输出**(统计日、口径说明、编码对照一律不写,2026-11-02 移除)。
55
+
56
+ ---
57
+
58
+ ## 2. 类型统计(Top10 + 其他)
59
+
60
+ 横向条形,**单系列、只画闲置数量**;不统计也不展示平均闲置天数(无橙色折线、无副轴、无平均口径 tooltip)。
61
+
62
+ ```html
63
+ <h2 class="sr-only" style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)">按资产类型分布:{{top1_type}} {{top1_count}} 件最多,前十类合计 {{top10_count}} 件</h2>
64
+ <div style="font-family:PingFang SC,sans-serif;">
65
+ <div style="font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:8px;">类型统计</div>
66
+ <div style="display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:8px;font-size:12px;color:var(--color-text-secondary);">
67
+ <span style="display:flex;align-items:center;gap:4px;"><span style="width:10px;height:10px;border-radius:2px;background:#3B7CFF;"></span>闲置数量(件)</span>
68
+ <span style="display:flex;align-items:center;gap:4px;"><span style="width:10px;height:10px;border-radius:2px;background:#888780;"></span>其他 {{rest_types}} 类合计</span>
69
+ <span style="margin-left:auto;color:var(--color-text-tertiary);">前十类合计 {{top10_count}} 件 · 占 {{top10_pct}}%</span>
70
+ </div>
71
+ <div style="position:relative;width:100%;height:520px;">
72
+ <canvas id="typeChart" role="img" aria-label="按资产类型分布的横向条形图,前 10 类加其他类合计">闲置资产按类型分布条形图:{{top1_type}} {{top1_count}} 件。</canvas>
73
+ </div>
74
+ </div>
75
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js"></script>
76
+ <script>
77
+ (function () {
78
+ var dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
79
+ new Chart(document.getElementById('typeChart'), {
80
+ type: 'bar',
81
+ data: {
82
+ labels: {{labels}},
83
+ datasets: [{
84
+ label: '闲置数量',
85
+ data: {{counts}},
86
+ backgroundColor: {{colors}},
87
+ borderRadius: 3,
88
+ barThickness: 22
89
+ }]
90
+ },
91
+ options: {
92
+ indexAxis: 'y',
93
+ responsive: true,
94
+ maintainAspectRatio: false,
95
+ plugins: {
96
+ legend: { display: false },
97
+ tooltip: {
98
+ callbacks: {
99
+ label: function (ctx) {
100
+ return '闲置 ' + ctx.parsed.x + ' 件';
101
+ }
102
+ }
103
+ }
104
+ },
105
+ scales: {
106
+ x: {
107
+ grid: { color: dark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.06)' },
108
+ ticks: { color: dark ? '#B4B2A9' : '#5F5E5A' }
109
+ },
110
+ y: {
111
+ grid: { display: false },
112
+ ticks: { color: dark ? '#D3D1C7' : '#444441', autoSkip: false, font: { size: 12 } }
113
+ }
114
+ }
115
+ }
116
+ });
117
+ })();
118
+ </script>
119
+ ```
120
+
121
+ 必须遵守:
122
+
123
+ - 视觉基准:蓝色柱单系列,**不画橙色折线、不设副轴**。
124
+ - 数据来源 `typeCounts`(已降序):固定 Top10,其余全部合并为最后一根「其他(N类)」,颜色 `#888780`;前 10 根统一 `#3B7CFF`。
125
+ - **类型数 ≤10 时不画「其他」灰条**:图例去掉「其他 N 类合计」一项,右上角统计改为「全部分类合计 N 件」;类型数 >10 时才出现灰条(2026-11-02 补充)。
126
+ - **高度按柱数自适应**:`容器高度 = 柱数 × 42 + 60`(px);11 根(Top10+其他)≈ 520px,6 根 ≈ 300px。柱数与高度不匹配会留大片空白。
127
+ - **不统计平均闲置天数**:不计算、不进 tooltip、不进图例、不设第二条数据系列或 `y1` 轴。要展示的维度只有「数量」。
128
+ - 图例必须手写色块(`plugins.legend.display: false`),并保留右上角合计与占比。
129
+ - `barThickness: 22`、`borderRadius: 3`,不调。
130
+ - 若 Top10 中数量极差过大(首尾比 > 50),仍保持线性轴,不换对数轴。
131
+
132
+ ---
133
+
134
+ ## 3. 闲置时长统计
135
+
136
+ 垂直柱状,5 档固定不变。档位边界由 CLI 的 `agingBuckets` 口径固化(≤30、31–90、91–180、181–365、>365 天),返回里数量为 0 的档位已过滤。
137
+
138
+ ```html
139
+ <h2 class="sr-only" style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)">闲置时长统计:{{top_seg}} {{top_n}} 件最多,占 {{top_pct}}%</h2>
140
+ <div style="font-family:PingFang SC,sans-serif;">
141
+ <div style="font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:8px;">闲置时长统计</div>
142
+ <div style="position:relative;width:100%;height:300px;">
143
+ <canvas id="agingChart" role="img" aria-label="闲置时长统计柱状图,{{top_seg}} {{top_n}} 件">闲置时长统计柱状图:{{seg_summary}}。</canvas>
144
+ </div>
145
+ </div>
146
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js"></script>
147
+ <script>
148
+ (function () {
149
+ var dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
150
+ var total = {{total}};
151
+ new Chart(document.getElementById('agingChart'), {
152
+ type: 'bar',
153
+ data: {
154
+ labels: {{segment_labels}},
155
+ datasets: [{
156
+ label: '数量',
157
+ data: {{segment_counts}},
158
+ backgroundColor: {{segment_colors}},
159
+ borderRadius: 3,
160
+ maxBarThickness: 56
161
+ }]
162
+ },
163
+ options: {
164
+ responsive: true,
165
+ maintainAspectRatio: false,
166
+ plugins: {
167
+ legend: { display: false },
168
+ tooltip: {
169
+ callbacks: {
170
+ label: function (ctx) { return '闲置 ' + ctx.parsed.y + ' 件'; },
171
+ afterLabel: function (ctx) { return '占全部 ' + (ctx.parsed.y / total * 100).toFixed(1) + '%'; }
172
+ }
173
+ }
174
+ },
175
+ scales: {
176
+ y: {
177
+ grid: { color: dark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.06)' },
178
+ ticks: { color: dark ? '#B4B2A9' : '#5F5E5A' }
179
+ },
180
+ x: {
181
+ grid: { display: false },
182
+ ticks: { color: dark ? '#D3D1C7' : '#444441', autoSkip: false, font: { size: 12 } }
183
+ }
184
+ }
185
+ }
186
+ });
187
+ })();
188
+ </script>
189
+ ```
190
+
191
+ 必须遵守:
192
+
193
+ - 档位按闲置天数划分(1 个月按 30 天计):**1个月以内** ≤30 天、**1~3个月** 31–90 天、**3~6个月** 91–180 天、**6~12个月** 181–365 天、**一年以上** >365 天。边界值归前一档(如 30 天算「1个月以内」、90 天算「1~3个月」)。分档与过滤已由 `asset-idle.idle.stats` 的 `agingBuckets` 完成,渲染侧不再重算。
194
+ - 末档文案用「一年以上」;`xzsz` 缺失的记录由 CLI 标「无法判断」并**排除出统计**,不进任何档位。
195
+ - **数量为 0 的档位不显示**:`agingBuckets` 只含有数据的档位,保持固定顺序渲染;aria/fallback/隐藏标题只列有数据的档(2026-11-02 调整)。
196
+ - 配色按档位固定映射,隐藏空档不影响配色:1个月以内 `#2F9E6E`、1~3个月 `#E6862E`、3~6个月 `#D9730D`、6~12个月 `#E05252`、一年以上 `#A32D2D`。
197
+ - 高度 300px、`maxBarThickness: 56`、`borderRadius: 3`,不调。
198
+ - 保持线性轴,不做断轴(断轴会低估首尾差距)。柱几乎贴地时可接受,tooltip 里给件数与占比。
199
+
200
+ ## 4. 文案约定
201
+
202
+ - 图②标题固定「类型统计」,图③标题固定「闲置时长统计」,不在标题里追加类数、档位等括号说明。
203
+ - 时长档位文案固定在 chart 的 x 轴标签里:「1个月以内」「1~3个月」「3~6个月」「6~12个月」「一年以上」;数量为 0 的档位不出现。
204
+ - 统计日、口径说明、编码对照**一律不出现在图内或图后**(2026-11-02 移除底部说明行)。
205
+ - **对话窗口内不输出任何文字解读**:三张图连续输出,图前、图间都不写文字(2026-10-27 固化);图后仅输出一行 `闲置资产详情:{系统页面地址}`(PC/移动端判断规则见 idle-stats-and-charts.md,2026-11-02 增加前缀文字)。该行写在**图③ widget 内部、canvas 容器之后**,不用正文文本承载(2026-11-02 修正渲染顺序)。图表中的所有数字必须自带在标题/图例/柱标/隐藏标题里,不依赖正文解释。
@@ -2,23 +2,24 @@
2
2
  name: weaver-e10-caizhilian
3
3
  display_name: 泛微E10采知连知识管理
4
4
  display_name_en: Weaver E10 Document Management
5
- description: "泛微E10采知连知识管理系统Skill,包含多个功能模块,覆盖文档创建/搜索/编辑/比对、附件管理、文件夹操作、参与人与标签管理、文档共享与权限设置、文件存储/备份/加解密/附件设置、FTP/SFTP文件采集、本地文件上传。"
6
- description_zh: "泛微E10采知连知识管理系统Skill,包含多个功能模块,覆盖文档创建/搜索/编辑/比对、附件管理、文件夹操作、参与人与标签管理、文档共享与权限设置、文件存储/备份/加解密/附件设置、FTP/SFTP文件采集、本地文件上传。"
7
- description_en: "Weaver E10 document management Skill with multiple functional modules covering document CRUD, attachments, folders, sharing, permissions, file settings, FTP/SFTP collection, and file upload."
8
- version: 1.1.36
5
+ description: "泛微E10采知连知识管理:文档创建/搜索/编辑/比对、文件夹与权限共享、标签参与人、附件封面、文件采集与上传。当用户处理采知连/知识库的文档、文件夹、共享权限或附件时使用。"
6
+ description_zh: "泛微E10采知连知识管理:文档创建/搜索/编辑/比对、文件夹与权限共享、标签参与人、附件封面、文件采集与上传。当用户处理采知连/知识库的文档、文件夹、共享权限或附件时使用。"
7
+ description_en: "Weaver E10 caizhilian knowledge management: document create/search/edit/compare, folders and sharing permissions, tags and participants, attachments and covers, file collection and upload. Use this skill when the user works with caizhilian or knowledge-base documents, folders, sharing permissions, or attachments."
8
+ version: 1.1.42
9
9
  author: 泛微网络科技股份有限公司
10
+ tags: [文档管理, 知识库, 泛微E10, document-management, knowledge-base]
10
11
  agent_created: true
11
12
  requires:
12
13
  bins: ["weaver-work-cli"]
14
+ dependencies:
15
+ - weaver-e10-shared
13
16
  cliHelp: "weaver-work-cli caizhilian --help"
17
+ compatibility: "需 Node.js >=18 与 npm 全局安装 weaver-work-cli;业务操作需可访问目标 E10 系统并完成登录;支持 Windows / macOS / Linux"
14
18
  ---
15
19
 
16
- **CRITICAL — 开始前先读共享规则**:同级目录存在 `weaver-e10-shared` 技能时,MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)(安装、E10 认证、JSON 输出和高风险写入规则)。
17
- 若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。
18
- 用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,
19
- `<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,
20
- 导致本技能依然读不到共享规则。
21
- 命令均成功后重新读取共享规则;若环境中确实无法补齐共享规则,停止依赖登录态的业务操作,告知用户共享认证规则缺失;不要在业务 Skill 中猜测宿主或写死登录命令。
20
+ **开始前先做环境自检,首轮必须有产出**:先按 [`auth-and-install.md`](references/auth-and-install.md) 检查 `weaver-work-cli` 是否可用(`weaver-work-cli --version`),并按需执行 `weaver-work-cli caizhilian schema` / `caizhilian operations`(不依赖登录态,不发起业务请求);`caizhilian health` 需已有登录配置,未登录时返回认证错误属预期结果、如实转述即可。把能力目录或自检结论随首轮草案一并交付,见「首轮必有产出」。
21
+ 本包的安装、认证、JSON 输出与高风险写入规则已完整沉淀在 [`auth-and-install.md`](references/auth-and-install.md) 与 [`write-protocol.md`](references/write-protocol.md),**不依赖任何包外技能**;同级目录若装有共享规则技能(weaver-e10-shared),可顺带读取作规则复核——它是可选增强,缺它也能跑,不存在或读取失败都直接按本包规则继续。
22
+ CLI 未安装时**不要空手终止、也不要擅自安装**:先把安装命令原样展示给用户(`npm install -g weaver-work-cli`,用户提供 registry 时加 `--registry "<用户提供的 registry 地址>"`),等用户明确确认后代为执行一次;确实无法补齐时,停止依赖登录态的业务操作,但仍交付「能力边界说明 + 安装/登录步骤 + 本任务执行草案」。不要在业务 Skill 中猜测宿主或写死登录命令。
22
23
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。
23
24
  传 `true` 时不要再写 `--profile` / `--base-url`。
24
25
  完整规则见 [`auth-and-install.md`](references/auth-and-install.md)。
@@ -39,6 +40,23 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
39
40
 
40
41
  涉及附件、封面图片、正文文件、本地文件上传或下载落盘的操作,执行前必须提醒用户:文件内容可能被上传到 E10 采知连文档中心或文件服务器、下载内容会写入本地磁盘,并可能进入当前大模型上下文用于理解和处理;必须等待用户明确确认后才继续。
41
42
 
43
+ ## 执行预算(最小动作集,避免冗余读取与重复调用)
44
+
45
+ - 同一轮已有新鲜查询结果时不重复查询同一列表或同一详情;`*.form` 的表单结构同轮内复用。
46
+ - 列表默认小页(`page_size=10`)且只查第一页;用户要求「继续」才翻页,不自动拉全量。
47
+ - 已拿到 `doc_id` / `folder_id` / `attachment_id` 或本地文件路径时直达对应操作,不默认走「search -> get -> form -> list -> prepare -> apply」全链路。
48
+ - 一次只跑一个文件上传/下载;reference 按需读取,不为同一件事连翻多个文件。
49
+
50
+ ## 首轮必有产出(先给草案,再补信息)
51
+
52
+ 用户一句话进来,第一轮回复必须包含产出物,不允许只回提问、只报依赖缺失或空手等待:
53
+
54
+ - **先给草案卡**:任务理解(对象 / 动作 / 范围 / 预期结果)+ 执行方案(准备走的处理链与关键取值)+「本卡假设(不符请改)」列出所用默认假设;能推断的按最稳默认直接写进草案,用户否决再改。
55
+ - **必问项 ≤3 且附在产出之后**:只问确实缺失、无默认值且影响动手的问题,一次问全;不要第一句先反问,不要挤牙膏式追问。
56
+ - **确认门只卡写操作落地**:查询、方案、草案与结果摘要直接交付,不设确认门;只有真正执行写操作(prepare → apply、上传、下载落盘)前才等用户明确确认。
57
+ - **环境缺失不等于零产出**:CLI 未装 / 未登录 / 规则缺失时,交付「能力边界说明 + 原样展示的安装与登录步骤 + 本任务执行草案」,按 [`auth-and-install.md`](references/auth-and-install.md) 执行。
58
+ - **无交互 / 无登录环境同样要有产出**:拿不到用户应答(自动化执行器、托管沙箱),或 CLI 未装、未登录、无 E10 环境时,首轮直接交付四件套:①环境自检结论(`--version` / `schema` / `operations` 的真实输出摘要;`health` 报认证错误属预期,原样转述)②能力目录摘要 ③本任务的分步执行方案——可直接复制执行的真实命令 + 参数模板 + 字段取值来源 ④前置条件清单(安装 CLI、提供登录域名、所需权限)。此环境下不等待确认,也不执行安装、登录与任何写操作——方案交付即为本轮产出;恢复交互后回到正常流程。
59
+
42
60
  ## 路由优先级(先判断是不是采知连文档中心,再选 operation)
43
61
 
44
62
  采知连是 E10 的文档中心 / 知识库能力,不是通用网盘,也不是流程表单。**只要用户的核心对象是采知连文档、知识库文件夹、文档共享与权限、文档标签/参与人、文档附件与封面、文档比对,就优先使用 `weaver-e10-caizhilian`。**
@@ -195,7 +213,7 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
195
213
  ### 9) 先明确需求,再动手
196
214
 
197
215
  - **动手前先确认理解一致**:对象、动作、范围、预期结果四个方面是否都清楚——清楚才动手。
198
- - **分辨不清必须澄清**:需求含糊、可能有多种理解、信息不足时,通过对话向用户确认;不要自己挑一种理解就执行。
216
+ - **分辨不清必须澄清**:需求含糊、可能有多种理解、信息不足时,把理解写成草案卡 + 假设清单向用户确认(见「首轮必有产出」),不要自己挑一种理解就执行。
199
217
  - **一次问清**:需要澄清时把关键问题一次问全,不要挤牙膏式反复追问。
200
218
  - **自检信号**:当你心里出现「用户应该是想要……」「这样应该也满足需求」「大概就是这个意思」时——停下,先确认,不要替用户拍板。
201
219
 
@@ -10,6 +10,8 @@
10
10
 
11
11
  本 Skill 不自行发起 HTTP 请求、不搭建登录流程。安装检查、登录、Cookie 拼接、请求头注入全部由 `weaver-work-cli` 托管,Agent 只负责调用 CLI 并把结果转述给用户。
12
12
 
13
+ 本文件是本包安装与认证规则的完整来源,不依赖任何包外技能;同级共享规则技能只作可选复核,缺失不影响执行。CLI 未安装或未登录时按 SKILL.md「首轮必有产出」交付能力边界说明、安装与登录步骤和任务执行草案,不要空手终止。
14
+
13
15
  ## 安装与可用性检查
14
16
 
15
17
  ```text
@@ -74,6 +76,16 @@ weaver-work-cli --version
74
76
  - 权限错误时停止并如实报告,不自动加 `sudo`。
75
77
  - 每条命令只执行一次;成功后用 `weaver-work-cli --version` 确认版本,再继续原业务操作。
76
78
 
79
+ ## 无交互 / 无登录环境(自动化执行器、托管沙箱)
80
+
81
+ 判定信号:宿主/会话没有用户应答通道(自动评测、无人值守执行器),或上文判定未安装且安装确认无人可问,或本地无登录配置。
82
+
83
+ 1. 本地自检照常:`weaver-work-cli --version`(未装则跳过并记录)、`caizhilian schema`、`caizhilian operations`——二者不依赖登录态。
84
+ 2. `caizhilian health` 或业务命令返回 `authentication/session_unavailable` 属预期结果:如实转述,不当作故障,也不重试。
85
+ 3. **不等待确认,也不执行安装、登录与写操作**——「安装 / 登录域名 / 写操作必须用户确认」的红线不变。
86
+ 4. 首轮交付四件套:环境自检结论、能力目录摘要、本任务分步执行方案(真实命令 + 参数模板 + 字段取值来源,取自本包 references,不编造)、前置条件清单(安装 CLI、提供登录域名、所需权限)。
87
+ 5. 恢复用户应答后,回到「安装与可用性检查」「登录流程」的正常路径继续。
88
+
77
89
  ## 登录态判断
78
90
 
79
91
  只允许通过 CLI 命令判断登录态:
@@ -21,7 +21,7 @@
21
21
 
22
22
  - `upload` 是新增附件;`replace` 走源 `reUpload`,**保留原附件 ID**(旧文件版本被顶替),所以 `attachment_id` 与 `folder_id` 都是必填,必须先用 `caizhilian.document.get` 或 `caizhilian.compare.list-file-objects` 拿到真实附件 ID。
23
23
  - `download` 的 `save_path` 可以是**完整文件路径**,也可以是以 `/` 或 `\` 结尾的**目录**(目录时文件名取自响应头 `content-disposition`,已过滤路径穿越字符)。
24
- - 未传 `save_path` 且没有配置默认下载目录时直接报 `no_save_path`(源 `assets/config.json` 的 `http.download.default_dir` 为空,CLI 侧不提供默认目录),必须让用户给出保存位置。
24
+ - 未传 `save_path` 且默认下载目录配置为空时直接报 `no_save_path`(CLI 侧不提供默认目录),必须让用户给出保存位置。
25
25
  - `download-as-pdf` 会先调 `/api/file/download/toPdf?fileId=<attachment_id>` 预检,服务端返回不支持时报 `pdf_not_supported`;支持时带 `downloadToPdf=true` 下载 PDF 版本。
26
26
  - 下载单文件上限 **100MB**,超限报 `file_too_large`;下载/上传超时 **120 秒**(普通接口 12 秒)。
27
27
  - 同名文件已存在时按源的 `rename` 策略自动改名为 `名称(1).扩展名`、`名称(2).扩展名`……**不覆盖**已有文件。
@@ -38,7 +38,7 @@ metadata:
38
38
 
39
39
  ## When to use
40
40
 
41
- - 用户说"把加解密功能打开""加解密软件地址改成 xxx""场景切到上传下载均不处理"
41
+ - 用户说"把加解密功能打开""把加解密软件地址改一下""场景切到上传下载均不处理"
42
42
  "加密文件上传=1 加密"等
43
43
  - 改 weapp 后台的"加解密设置"页(`<your-e10-domain>/info/fileSet/encryption`)
44
44
  - 调试 eteams-file 后台加解密功能(华途 / 天锐绿盾 / 亿赛通)
@@ -6056,57 +6056,57 @@
6056
6056
  }
6057
6057
  ],
6058
6058
  "artifactBaseline": {
6059
- "aggregateSha256": "a30810157d58d076404fd6447b94996eb30178f384a0d6c13bca14589156983e",
6059
+ "aggregateSha256": "9daa9ebc569f2f2ea9291e26e8b8ffd6ad553e4650e6480b6ea20311f4e0f90e",
6060
6060
  "files": [
6061
6061
  {
6062
6062
  "path": "docs/_catalog.md",
6063
- "size": 5332,
6064
- "sha256": "a81903939aea5bf1196d1e3243709d2facf50d9bdcf74d8a6ca731061310dbbe"
6063
+ "size": 5355,
6064
+ "sha256": "b980b43bc1c9dabfa9b5b6da0a6e0187357d4c4f73c6f80a141c0c317acc182b"
6065
6065
  },
6066
6066
  {
6067
6067
  "path": "docs/caizhilian.md",
6068
- "size": 26447,
6069
- "sha256": "02654c81ca71b16201b0866e55cb0b480af5a9f43a864c29970213755f3e41a9"
6068
+ "size": 26779,
6069
+ "sha256": "011b212cca9c6214cccb2dfc81043cb90b831b86078903e49f6cb3e87ff6ecc3"
6070
6070
  },
6071
6071
  {
6072
6072
  "path": "skill-template/business-info.json",
6073
- "size": 8216,
6074
- "sha256": "370a45e86c6b7e33869c5df1bf08d9f22bd98fa8b157b49716e13bca0e7b63c3"
6073
+ "size": 8592,
6074
+ "sha256": "06f4c239dfcd50f0be1febb00b663e962064a4d2c19193632957fdf5ef85d39a"
6075
6075
  },
6076
6076
  {
6077
6077
  "path": "skill-template/domains/caizhilian.md",
6078
- "size": 3275,
6079
- "sha256": "78954d0b2704b75fd22c9c672b4a5a1a461fc9813b8b362edc8643b50625a06e"
6078
+ "size": 3575,
6079
+ "sha256": "9468ab0220d55c0c8efbd9bdeb1dec65656611e8e363fbb61708680e0f43f3a1"
6080
6080
  },
6081
6081
  {
6082
6082
  "path": "skills/weaver-e10-caizhilian/references/agent-entry.md",
6083
- "size": 7752,
6084
- "sha256": "c96913824f58a3524b19c4723cb21a316fc513588482ef9db7cdfd7e8da5289f"
6083
+ "size": 8917,
6084
+ "sha256": "cc733e3906938553fc9af92887f73f8c0a87211c2bb06a225f48703f86f9516d"
6085
6085
  },
6086
6086
  {
6087
6087
  "path": "skills/weaver-e10-caizhilian/references/collaboration.md",
6088
- "size": 9829,
6089
- "sha256": "d6c413f44f768202c29c136b93e461774ff156bab47b5709cf275fdc72a0ebcf"
6088
+ "size": 9836,
6089
+ "sha256": "74b2695da815994a12ec98d01b0317500b22713486779b760478ba608e740d25"
6090
6090
  },
6091
6091
  {
6092
6092
  "path": "skills/weaver-e10-caizhilian/references/document.md",
6093
- "size": 12586,
6094
- "sha256": "63ba0d1832c1945078ffbf1a61f4ab8e97c4978150d44daa256c3392003b42ec"
6093
+ "size": 12651,
6094
+ "sha256": "d825ec32e0239eb624df0d12f0aed6d9b1bcc61c86930e093eb5e8b0fd7a3f93"
6095
6095
  },
6096
6096
  {
6097
6097
  "path": "skills/weaver-e10-caizhilian/references/file-upload.md",
6098
- "size": 8136,
6099
- "sha256": "4bb244ff2f0c3771012bc39ae88b2cfafe7c5c2f9bc04dcefe1806e12ef85f62"
6098
+ "size": 8148,
6099
+ "sha256": "642ac8243797099a0d25f250002bcc920cb4c00b696a6f3cfef0d5af01ad939b"
6100
6100
  },
6101
6101
  {
6102
6102
  "path": "skills/weaver-e10-caizhilian/references/files.md",
6103
- "size": 11756,
6104
- "sha256": "8eefbc54bea16371c226aee6c4d7d302a7b307971f57b57ec6f79914e51a1a36"
6103
+ "size": 13266,
6104
+ "sha256": "c6f2bf50dc907cd70beef5652bf5f508099f9d0b1c8fc28a8b138d195ea85a21"
6105
6105
  },
6106
6106
  {
6107
6107
  "path": "skills/weaver-e10-caizhilian/references/folder.md",
6108
- "size": 20400,
6109
- "sha256": "bf8ab9adabcc5191068b70996e0e89a3edd3d9f60a3aacbab7860e0f7b6ee751"
6108
+ "size": 20487,
6109
+ "sha256": "4635473c58785dda2abf0613a40b27a99073b749e44600d9638a935be1e1a8ff"
6110
6110
  },
6111
6111
  {
6112
6112
  "path": "skills/weaver-e10-caizhilian/references/org-browser.md",
@@ -6120,18 +6120,18 @@
6120
6120
  },
6121
6121
  {
6122
6122
  "path": "skills/weaver-e10-caizhilian/references/write-protocol.md",
6123
- "size": 10102,
6124
- "sha256": "ef81f029b1fee09544bb5e8d840c0316b2ca769701ef7d578cbbca6d4038f055"
6123
+ "size": 10704,
6124
+ "sha256": "6f47273ed588ebaa82e2efc1b4afcdb4b4775be2ae30df97a5664719ac691911"
6125
6125
  },
6126
6126
  {
6127
6127
  "path": "skills/weaver-e10-caizhilian/SKILL.md",
6128
- "size": 31272,
6129
- "sha256": "2f6fad343e6f6a428c67b172a52eb58e62eaa2fcaab95f0e97da74c8d77021dc"
6128
+ "size": 34205,
6129
+ "sha256": "5d4403aacf845b0aa73266be007015f9c1e9109edb9c93408f78ee8efaae2fed"
6130
6130
  },
6131
6131
  {
6132
6132
  "path": "src/internal/e10/request-runtime.ts",
6133
- "size": 17560,
6134
- "sha256": "f6f45fb9d142042123d58b2b678b5b43b797413a8efbaab2f178e0e1db2d0639"
6133
+ "size": 19854,
6134
+ "sha256": "cb58d21cdc018d027b5c13b1e5cfd4befa8a3e466e8c60fcff41852bc1047982"
6135
6135
  },
6136
6136
  {
6137
6137
  "path": "src/shortcuts/caizhilian/continuation.ts",
@@ -6165,8 +6165,8 @@
6165
6165
  },
6166
6166
  {
6167
6167
  "path": "src/shortcuts/caizhilian/host.ts",
6168
- "size": 11840,
6169
- "sha256": "ecf8cabc21308fabd18428dbf043ea4d3d0ff03a925725518f7475a4411a571f"
6168
+ "size": 11801,
6169
+ "sha256": "000fa19a7527a1238bfb05c1cd0bae8406dba406d6a654173a5979119fbb17ae"
6170
6170
  },
6171
6171
  {
6172
6172
  "path": "src/shortcuts/caizhilian/index.ts",
@@ -6175,8 +6175,8 @@
6175
6175
  },
6176
6176
  {
6177
6177
  "path": "src/shortcuts/caizhilian/manifest.ts",
6178
- "size": 2717,
6179
- "sha256": "075b5fc9336b95c3dbe8b920e428008e134d3f8400bdcc3b68394b576b65ab2f"
6178
+ "size": 2660,
6179
+ "sha256": "0a8d1bc549e5890f7e4c0c3fec694f4e7147d6e28ef67e2779b0c8a22b150d69"
6180
6180
  },
6181
6181
  {
6182
6182
  "path": "src/shortcuts/caizhilian/operations.ts",
@@ -6220,8 +6220,8 @@
6220
6220
  },
6221
6221
  {
6222
6222
  "path": "src/shortcuts/caizhilian/operations/handlers/fileops.ts",
6223
- "size": 28091,
6224
- "sha256": "9059d991d2106780eb3681e11c6fc237b91c0bf2b68af04f5cba40478e35d98a"
6223
+ "size": 30889,
6224
+ "sha256": "6607f1b658e124a57858b07e29a902a137edcf15416113fc6784eddb2eeed811"
6225
6225
  },
6226
6226
  {
6227
6227
  "path": "src/shortcuts/caizhilian/operations/handlers/folder.ts",
@@ -6245,13 +6245,13 @@
6245
6245
  },
6246
6246
  {
6247
6247
  "path": "src/shortcuts/caizhilian/operations/shared.ts",
6248
- "size": 18398,
6249
- "sha256": "31db19e4fc3a121cc6eb8b599a83f03949120376c2ab608d66671510427bd094"
6248
+ "size": 19527,
6249
+ "sha256": "04262196e9a9ca6f433cf516f7a3c9b800ef5153acf483d042ffcf9ab5d530aa"
6250
6250
  },
6251
6251
  {
6252
6252
  "path": "src/shortcuts/caizhilian/operations/specs.ts",
6253
- "size": 46465,
6254
- "sha256": "a3c5c766d3f065e19cdf34632981e87a2562c91a0356ac7b91e09df325cf7661"
6253
+ "size": 47492,
6254
+ "sha256": "9b06a4016c3114c3fee0d9a29a8ad0f88fc0efa0c6f54949442fc525b58574d2"
6255
6255
  },
6256
6256
  {
6257
6257
  "path": "src/shortcuts/caizhilian/operations/types.ts",
@@ -6260,28 +6260,28 @@
6260
6260
  },
6261
6261
  {
6262
6262
  "path": "src/shortcuts/index.ts",
6263
- "size": 1420,
6264
- "sha256": "569bef374df2d86b511150a0c609ce1abee63f8317994513bce6241276b5be40"
6263
+ "size": 1500,
6264
+ "sha256": "fe10e9918df3c47bf9038298df7c7d590c74cc3de62fce173f6f610938ae9090"
6265
6265
  },
6266
6266
  {
6267
6267
  "path": "test/business/caizhilian-command.test.ts",
6268
6268
  "size": 3836,
6269
- "sha256": "62bc9398fb1a8bb5d9a41773c053329d6852a6568c397a15f92e4aa3adac1dc7"
6269
+ "sha256": "3e92a7f26748d25a3230497aa1ab3b94b6aaaf06b16114775633dc8cb3cd2d6b"
6270
6270
  },
6271
6271
  {
6272
6272
  "path": "test/business/caizhilian-file-upload.test.ts",
6273
- "size": 17801,
6274
- "sha256": "64e1394d0ae03c1de3bbda8a6ff1e9ec78571b514e855cb41127abb81a35bc27"
6273
+ "size": 18269,
6274
+ "sha256": "b7fc967a6f590ca722b8e26d9f666695974f882001629feacb6c428ccb1ed50b"
6275
6275
  },
6276
6276
  {
6277
6277
  "path": "test/business/caizhilian-operations.test.ts",
6278
- "size": 28267,
6279
- "sha256": "fc921abc2239bb39d7867048bcd1e098d586de7f7d05dbfa9116c6552dae2f3c"
6278
+ "size": 42970,
6279
+ "sha256": "b6e079743201f14c27ef48315091a49f53d11cbc23c00a84b806e77e67586237"
6280
6280
  },
6281
6281
  {
6282
6282
  "path": "test/business/caizhilian-source-manifest.test.ts",
6283
6283
  "size": 9659,
6284
- "sha256": "b5feba9d8a348ac9bbcdb692fd4745fd9041274bf6377f5da2fc7e0650dc7edd"
6284
+ "sha256": "100cb5cf4b037f5e252465bd8e7f8293336e073ceba570d8934b5bce3199f085"
6285
6285
  }
6286
6286
  ]
6287
6287
  },
@@ -21,6 +21,8 @@ cliHelp: "weaver-work-cli cowork --help"
21
21
  **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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
22
22
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
23
23
 
24
+ **共享规则定位与回退(发布包已裁 shared 时必须走此回退,不得直接判定依赖缺失)**:先读 `../weaver-e10-shared/SKILL.md`;该相对路径不存在时,按以下顺序回退定位,命中即读并继续任务,不要中断:① 与本技能目录同级的 `weaver-e10-shared/SKILL.md`(即 skills 根目录下);② weaver-work-cli 安装根下的 `node_modules/weaver-work-cli/skills/weaver-e10-shared/SKILL.md`(安装根可用 `npm root -g` 定位,或从 weaver-work-cli 可执行文件所在目录向上查找 `node_modules`);③ 本机其他已安装位置的 `skills/weaver-e10-shared/SKILL.md`。以上三条均取不到,才判定依赖缺失并进入下述确认流程。
25
+
24
26
  # 泛微 E10 协作区
25
27
 
26
28
  ## 概述
@@ -33,7 +33,7 @@ weaver-work-cli cowork run cowork.item.create.prepare --input-json '{"itemName":
33
33
  weaver-work-cli cowork run cowork.item.create.apply --input-json '{"itemName":"XX项目协作","sectionId":"<选项id>","itemContent":"目标与分工","confirm":true,"continuation":"<continuation>"}'
34
34
  ```
35
35
 
36
- prepare 会做三件事:版块 id 存在性校验(不存在直接报错并列可选版块)、负责人默认当前用户、开关默认全开。apply 成功后返回新协作 `id`。
36
+ prepare 会做三件事:版块 id 存在性校验(不存在直接报错并列可选版块)、负责人默认当前用户、开关默认全开。apply 成功后返回新协作 `id`,以及 `viewUrl`(PC 端 `/sp/cowork/view/{id}`)与 `mobileViewUrl`(移动端 `/mobile/cowork/view/{id}`)——`{id}` 为协作主键,链接可直接打开该协作。其余写操作(action/flag)的 apply 回执同样带 `viewUrl`。
37
37
 
38
38
  ## 2. 协作级动作:`cowork.item.action.prepare` → `apply`(`action: "end"`)
39
39
 
@@ -23,6 +23,8 @@ cliHelp: "weaver-work-cli ehr --help"
23
23
  **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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
24
24
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
25
25
 
26
+ **共享规则定位与回退(发布包已裁 shared 时必须走此回退,不得直接判定依赖缺失)**:先读 `../weaver-e10-shared/SKILL.md`;该相对路径不存在时,按以下顺序回退定位,命中即读并继续任务,不要中断:① 与本技能目录同级的 `weaver-e10-shared/SKILL.md`(即 skills 根目录下);② weaver-work-cli 安装根下的 `node_modules/weaver-work-cli/skills/weaver-e10-shared/SKILL.md`(安装根可用 `npm root -g` 定位,或从 weaver-work-cli 可执行文件所在目录向上查找 `node_modules`);③ 本机其他已安装位置的 `skills/weaver-e10-shared/SKILL.md`。以上三条均取不到,才判定依赖缺失并进入下述确认流程。
27
+
26
28
  本技能覆盖聚才林业务域:**人事档案(hr)**、**出勤管理(attend)**、**薪酬管理(salary)**、**招聘(recruit,读 + 写)**。招聘写操作走 prepare→apply 确认协议;撤销类写操作不实现,原因见 [`references/safety-boundaries.md`](references/safety-boundaries.md)。
27
29
 
28
30
  ## 命令入口
@@ -97,5 +97,7 @@ weaver-work-cli --json ehr run ehr.recruit.interview.feedbackTodo --input-json '
97
97
  「AI 面试结束时间已过 且(有录像附件 或 已开始录制)且 反馈结果为空」——「待反馈」本身就等于
98
98
  「已完成 + 有视频 + 未填意见」。`video_url_info` 是「视频面试地址」(HR 手填的会议链接),与录像无关。
99
99
 
100
+ **截断可见性(强制)**:本接口靠客户端翻页后筛选,`maxPages`(默认 5)× `pageSize`(默认 200)之外的数据不会被扫到。回答前必须先判断是否可能被截断——只要出现下列任一情况即判定可能截断:`scanned` 已达 `maxPages`×`pageSize` 上限、`note` 提示需加大 `maxPages`、或命中数接近扫描上限。判定可能截断时**必须**在回答中写明「本次仅扫描 N 条,可能仍有未覆盖的待反馈记录,可指定更大 maxPages 继续查」,**禁止把可能不完整的清单当作全量结果交付**;确认未截断时无需提示。
101
+
100
102
  **时效性**:状态由 E10 调度任务定时同步,刚结束的面试可能有几分钟延迟;回答时要说明「以系统状态为准」。
101
103
  **下一步**:用户确认要评价某人后,用 `ehr.recruit.candidate.interview.feedback.edit.prepare` 提交反馈(写操作,需确认)。
@@ -27,7 +27,7 @@
27
27
  2. `apply` 入参 = prepare 相同业务参数 + `confirm: true` + `continuation`。**apply 会校验指纹**:业务参数与 prepare 快照不一致时报 `target_changed`,须重新 prepare。
28
28
  3. continuation 与当前 CLI 登录环境绑定(由 `weaver-work-cli auth` 托管),切换租户或账号后报 `context_mismatch`,此时须重新 prepare。登录与认证细节见共享规则 [`../../weaver-e10-shared/SKILL.md`](../../weaver-e10-shared/SKILL.md)。
29
29
  4. 多步写入(saveFormData → initTalentBatch / sendOffer / saveEstPreEntry / runEsb)中途网络中断时报 `partial/write_uncertain` 并给出已落地的记录 id——**禁止自动重试**,先按提示回查(`candidate.search` / `candidate.card`)确认实际状态。
30
- 5. prepare 与 apply 应连续执行。`arrange` 默认时间窗取「当前时刻」,间隔跨分钟后指纹不一致会报 `target_changed`;如需指定时间请显式传 `startTime`/`endTime`(格式 `YYYY-MM-DD HH:mm`)。
30
+ 5. prepare 与 apply 应连续执行。`arrange` 默认时间窗取「当前时刻」,间隔跨分钟后指纹不一致会报 `target_changed`。**因此 `arrange` 必须显式传 `startTime`/`endTime`(格式 `YYYY-MM-DD HH:mm`)**:用户给了时间就用用户时间;用户没给时按默认值(当前整分钟起 + 该环境默认时长)显式写入这两项,不要省略交给服务端取实时值。这样即使用户看摘要超过 1 分钟再确认,apply 也不会误报 `target_changed`。若显式传参后仍报 `target_changed`,说明业务参数被改动,必须重新 prepare 并重新确认,不要重试原 apply。
31
31
 
32
32
  ## 参数要点
33
33
 
@@ -21,6 +21,8 @@ cliHelp: "weaver-work-cli mail --help"
21
21
  **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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
22
22
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
23
23
 
24
+ **共享规则定位与回退(发布包已裁 shared 时必须走此回退,不得直接判定依赖缺失)**:先读 `../weaver-e10-shared/SKILL.md`;该相对路径不存在时,按以下顺序回退定位,命中即读并继续任务,不要中断:① 与本技能目录同级的 `weaver-e10-shared/SKILL.md`(即 skills 根目录下);② weaver-work-cli 安装根下的 `node_modules/weaver-work-cli/skills/weaver-e10-shared/SKILL.md`(安装根可用 `npm root -g` 定位,或从 weaver-work-cli 可执行文件所在目录向上查找 `node_modules`);③ 本机其他已安装位置的 `skills/weaver-e10-shared/SKILL.md`。以上三条均取不到,才判定依赖缺失并进入下述确认流程。
25
+
24
26
  认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
25
27
  所有命令通过 `weaver-work-cli --json mail run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli mail schema` 是 operation、字段和风险等级的合约来源。
26
28
  命令示例、提示词和临时说明必须同时兼容 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,6 +103,7 @@ cliHelp: "weaver-work-cli mail --help"
101
103
  - 已拿到邮件 id、联系人 id、模板 id、签名 id、附件 id 或本地文件路径时,优先调用对应 operation
102
104
  - 同一轮里如果已有足够的新鲜查询结果,不要重复查询同一列表或同一详情
103
105
  - 不要默认走 `list -> filter -> view -> prepare -> apply` 全链路;对象已明确时应压缩步骤
106
+ - **写操作已按风险分级,不要给单步命令强加双段确认**:`mail.star` / `mail.read.status` / `mail.read.all` / `mail.wait.add` / `mail.move.folder` / `mail.delete.move` / `mail.folder.create` / `mail.folder.delete` / `mail.recall` 都是单条命令,一步执行即可,不要再套 `prepare`→`apply`。仅 `mail.send.*`、`mail.contacts.save.*`、`mail.template.save.*`、`mail.sign.save.*`、`mail.blacklist.operate.*` 走双段确认。
104
107
 
105
108
  ### 3) 错误语义驱动,而不是盲目重试
106
109
 
@@ -31,6 +31,8 @@ weaver-work-cli --json mail run mail.send.prepare --input-json '{"flag":"-1","to
31
31
  weaver-work-cli --json mail run mail.send.apply --input-json '{"continuation":"<PREPARE_CONTINUATION>","confirm":true}'
32
32
  ```
33
33
 
34
+ `apply` 成功后返回 `subject` 与 `mailResourceId`,并附 `viewUrl`(PC 端 `/sp/mail/view?mailResourceId=<id>`,可直接打开该邮件);存草稿分支同样返回 `mailResourceId` + `viewUrl`。`viewUrl` 为空时说明接口未回传邮件 id(极少数环境),此时提示用户到「已发送」手动确认即可。
35
+
34
36
  Windows PowerShell 与 macOS/Linux 命令一致(JSON 用单引号包裹)。
35
37
 
36
38
  ## 要点