weaver-work-cli 0.1.40 → 0.1.42

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 (185) hide show
  1. package/dist/chunks/{archive-JHTONRST.js → archive-J4I6MCKF.js} +2 -2
  2. package/dist/chunks/{archive-oa-FCHLCPHC.js → archive-oa-BRZKKTO4.js} +2 -2
  3. package/dist/chunks/{asset-RLIHC7DB.js → asset-L7D4FAOZ.js} +2 -2
  4. package/dist/chunks/{asset-idle-KVOFTLCP.js → asset-idle-DADLLV75.js} +2 -2
  5. package/dist/chunks/{attachment-content-RZYDB3MB.js → attachment-content-K4C7VLWQ.js} +3 -3
  6. package/dist/chunks/{blog-42OZTJNP.js → blog-BVGQ7NZL.js} +2 -2
  7. package/dist/chunks/{caizhilian-KRK547K5.js → caizhilian-SAADNFD6.js} +2 -2
  8. package/dist/chunks/{calendar-RTWAMKHD.js → calendar-Q7NQY5Z2.js} +61 -23
  9. package/dist/chunks/{chunk-LFMSDBZN.js → chunk-3KTFS4IA.js} +308 -153
  10. package/dist/chunks/{chunk-G2JSIUWF.js → chunk-4PD5NWAX.js} +89 -0
  11. package/dist/chunks/{chunk-T6EGVBKU.js → chunk-4RAE6JXP.js} +1 -1
  12. package/dist/chunks/{chunk-7BRU4EFH.js → chunk-72CKAUAG.js} +29 -2
  13. package/dist/chunks/{chunk-NETCCARD.js → chunk-APVFJUQH.js} +2 -2
  14. package/dist/chunks/{chunk-CAQNBBQA.js → chunk-BBKDXQEC.js} +2 -2
  15. package/dist/chunks/{chunk-57IECMWX.js → chunk-BIPYLLVS.js} +26 -12
  16. package/dist/chunks/{chunk-LN447PY2.js → chunk-EKWAQSLU.js} +3 -2
  17. package/dist/chunks/{chunk-4TEDNCON.js → chunk-FOAA27U5.js} +338 -52
  18. package/dist/chunks/{chunk-7U577Q7U.js → chunk-G4UR6NXN.js} +2 -2
  19. package/dist/chunks/{chunk-NJKREDA3.js → chunk-GEWYMQME.js} +1 -1
  20. package/dist/chunks/{chunk-I566ZYNF.js → chunk-GHXCDPTM.js} +1 -1
  21. package/dist/chunks/{chunk-4CTESSKI.js → chunk-IZ7S7QUS.js} +4 -4
  22. package/dist/chunks/{chunk-VNBU55SL.js → chunk-JPRO6ER2.js} +57 -2432
  23. package/dist/chunks/{chunk-IZSSVYAG.js → chunk-LADPYOWC.js} +2 -2
  24. package/dist/chunks/chunk-LDZQPUIA.js +1238 -0
  25. package/dist/chunks/chunk-NKZRQXST.js +2546 -0
  26. package/dist/chunks/{chunk-JWRZM2H2.js → chunk-QKNKR4RH.js} +3 -3
  27. package/dist/chunks/{chunk-FLS4DPGP.js → chunk-R4CHUSKC.js} +28 -15
  28. package/dist/chunks/{chunk-WFFNM65B.js → chunk-SA6VBIHY.js} +73 -19
  29. package/dist/chunks/{chunk-SPRHHSVC.js → chunk-TTPJJJC4.js} +2 -2
  30. package/dist/chunks/{chunk-7E6MUOEK.js → chunk-W7BEHOSR.js} +2 -2
  31. package/dist/chunks/{chunk-CXRQWOZ5.js → chunk-YRSZQUD2.js} +2 -2
  32. package/dist/chunks/{conflict-VR55AOOO.js → conflict-F2OMZRTO.js} +2 -2
  33. package/dist/chunks/{contract-HI4FNPYE.js → contract-5BETHRSG.js} +2 -2
  34. package/dist/chunks/{cowork-HJLI353D.js → cowork-3MN6EQQO.js} +22 -12
  35. package/dist/chunks/create-flow-5FQNNMVO.js +55 -0
  36. package/dist/chunks/{ebuilder-form-HTGI63UU.js → ebuilder-form-SBHOYBUD.js} +3 -3
  37. package/dist/chunks/{ehr-GYXIYH3A.js → ehr-KMOJULKG.js} +432 -1234
  38. package/dist/chunks/{env-DW3G4HUO.js → env-LB7NBL2O.js} +2 -2
  39. package/dist/chunks/{esb-I5INCEFE.js → esb-W2PJCFCX.js} +4 -4
  40. package/dist/chunks/{factory-TKXGXS6L.js → factory-6ZFQXQ46.js} +1 -1
  41. package/dist/chunks/{fna-K2MHTQ24.js → fna-ZQPCUV4R.js} +2 -2
  42. package/dist/chunks/{group-chat-VYBNMJLG.js → group-chat-2HHAJN46.js} +5 -3
  43. package/dist/chunks/{host-ZUQTJYYK.js → host-4CBHGOHT.js} +3 -3
  44. package/dist/chunks/{host-D5SERMAJ.js → host-ATKVNZAT.js} +3 -3
  45. package/dist/chunks/{host-JM4YVHFM.js → host-BQH22NTQ.js} +3 -3
  46. package/dist/chunks/{host-L3VLITMT.js → host-X2CSLFM6.js} +3 -3
  47. package/dist/chunks/{host-256GVCAH.js → host-YTODKMSL.js} +3 -3
  48. package/dist/chunks/{hrm-VLRBKTZB.js → hrm-FFM4UJFS.js} +4 -4
  49. package/dist/chunks/{im-QK3VTLXK.js → im-VEHKDQPB.js} +7 -7
  50. package/dist/chunks/{invoice-T5JTA32H.js → invoice-LVIKSIIF.js} +3 -3
  51. package/dist/chunks/{jiuchuanhui-P2FNEQVZ.js → jiuchuanhui-X6DINO5P.js} +2 -2
  52. package/dist/chunks/{lazy-dispatch-XRRI46M6.js → lazy-dispatch-KSWTN5L6.js} +4 -4
  53. package/dist/chunks/{mail-3Y7MJ6PS.js → mail-VDKRGUD3.js} +2 -2
  54. package/dist/chunks/{meeting-M7LTXGJE.js → meeting-CLC6HP3Z.js} +12 -11
  55. package/dist/chunks/{okr-OBC6S67L.js → okr-CHG4OO3U.js} +2 -2
  56. package/dist/chunks/{plan-5H6I53SK.js → plan-XWR75667.js} +2 -2
  57. package/dist/chunks/{project-L75QZV4S.js → project-5BXOOKMG.js} +40 -23
  58. package/dist/chunks/recruit-stage-DGMFNNDE.js +4507 -0
  59. package/dist/chunks/{registry-RXPN6BBT.js → registry-7FFOXIAW.js} +4 -4
  60. package/dist/chunks/{registry-KMHCPAAD.js → registry-BKBZPBAJ.js} +10 -9
  61. package/dist/chunks/{registry-QGHFNUWS.js → registry-OZSMDVPP.js} +2 -2
  62. package/dist/chunks/{registry-UGRBCBHO.js → registry-RHMW6ANW.js} +2 -2
  63. package/dist/chunks/{registry-NYPYMZXG.js → registry-Z43434VG.js} +1 -1
  64. package/dist/chunks/{room-recommend-A3UDC3CA.js → room-recommend-62H7ZQQ6.js} +4 -4
  65. package/dist/chunks/{schedule-5GCACCK7.js → schedule-FNXKH3DQ.js} +4 -4
  66. package/dist/chunks/{workflow-M5ZJ7DWF.js → workflow-ADHKCAJK.js} +6 -6
  67. package/dist/index.js +33 -28
  68. package/dist/internal/e10/auth/commands.js +1 -0
  69. package/dist/internal/e10/auth/messages.js +6 -0
  70. package/dist/internal/e10/auth/session.js +17 -0
  71. package/dist/internal/e10/auth/xiaoe.js +286 -44
  72. package/dist/internal/e10/auth-recovery.js +36 -5
  73. package/dist/internal/e10/context.js +56 -12
  74. package/dist/internal/e10/index.js +1 -1
  75. package/dist/internal/e10/network-error.js +93 -0
  76. package/dist/internal/e10/request-runtime.js +6 -0
  77. package/dist/shortcuts/calendar/operations/read.js +31 -22
  78. package/dist/shortcuts/calendar/operations/write.js +45 -1
  79. package/dist/shortcuts/cowork/operations/discuss-write.js +5 -1
  80. package/dist/shortcuts/cowork/operations/item-write.js +1 -7
  81. package/dist/shortcuts/cowork/operations/member-write.js +3 -1
  82. package/dist/shortcuts/cowork/operations/permission-write.js +5 -1
  83. package/dist/shortcuts/cowork/operations/shared.js +7 -0
  84. package/dist/shortcuts/ehr/operations/attend-write.js +43 -1
  85. package/dist/shortcuts/ehr/operations/hr-contact.js +7 -4
  86. package/dist/shortcuts/ehr/operations/hr-report.js +13 -7
  87. package/dist/shortcuts/ehr/operations/recruit-candidate-import.js +134 -59
  88. package/dist/shortcuts/ehr/operations/recruit-write.js +262 -17
  89. package/dist/shortcuts/ehr/operations/recruit.js +10 -4
  90. package/dist/shortcuts/ehr/operations/shared.js +47 -0
  91. package/dist/shortcuts/hrm/operations/org.js +118 -0
  92. package/dist/shortcuts/index.js +5 -0
  93. package/dist/shortcuts/meeting/operations/eb/catalog.js +4 -1
  94. package/dist/shortcuts/meeting/operations/eb/create-flow.js +85 -28
  95. package/dist/shortcuts/meeting/operations/eb/factory.js +33 -0
  96. package/dist/shortcuts/meeting/operations/eb/group-chat.js +25 -3
  97. package/dist/shortcuts/meeting/operations/eb/person-cache.js +96 -0
  98. package/dist/shortcuts/meeting/operations/eb/room-recommend.js +33 -11
  99. package/dist/shortcuts/project/operations/read.js +6 -25
  100. package/dist/shortcuts/project/operations/shared.js +22 -0
  101. package/dist/shortcuts/project/operations/write.js +28 -2
  102. package/dist/shortcuts/recruit-stage/context.js +119 -0
  103. package/dist/shortcuts/recruit-stage/continuation.js +73 -0
  104. package/dist/shortcuts/recruit-stage/errors.js +65 -0
  105. package/dist/shortcuts/recruit-stage/host.js +109 -0
  106. package/dist/shortcuts/recruit-stage/index.js +115 -0
  107. package/dist/shortcuts/recruit-stage/manifest.js +29 -0
  108. package/dist/shortcuts/recruit-stage/operations/interview-arrange.js +722 -0
  109. package/dist/shortcuts/recruit-stage/operations/interview-feedback.js +269 -0
  110. package/dist/shortcuts/recruit-stage/operations/jd-create.js +630 -0
  111. package/dist/shortcuts/recruit-stage/operations/list.js +431 -0
  112. package/dist/shortcuts/recruit-stage/operations/registry.js +38 -0
  113. package/dist/shortcuts/recruit-stage/operations/resume-import.js +1198 -0
  114. package/dist/shortcuts/recruit-stage/operations/search.js +158 -0
  115. package/dist/shortcuts/recruit-stage/operations/types.js +25 -0
  116. package/dist/shortcuts/recruit-stage/school-tiers.json +318 -0
  117. package/dist/shortcuts/recruit-stage/shared.js +608 -0
  118. package/dist/shortcuts/workflow/operations/todoSmartConvert/detailFieldRules.js +4 -2
  119. package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +13 -6
  120. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +17 -24
  121. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +14 -9
  122. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +50 -8
  123. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +2 -1
  124. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +17 -11
  125. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +7 -39
  126. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +3 -2
  127. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +51 -15
  128. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.pipeline.js +16 -1
  129. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +151 -63
  130. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.subGroup.js +56 -0
  131. package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +39 -14
  132. package/docs/e10-auth.md +7 -1
  133. package/docs/operation-manual.md +8 -0
  134. package/package.json +1 -1
  135. package/scripts/install-skill-to-xiaoe.mjs +105 -0
  136. package/scripts/package-skill.mjs +4 -2
  137. package/skill-template/business-info.json +24 -0
  138. package/skill-template/domains/recruit-stage.md +29 -0
  139. package/skills/weaver-e10-calendar/SKILL.md +2 -1
  140. package/skills/weaver-e10-calendar/references/calendar-write.md +54 -0
  141. package/skills/weaver-e10-cowork/SKILL.md +1 -1
  142. package/skills/weaver-e10-cowork/references/cowork-write.md +3 -1
  143. package/skills/weaver-e10-jucailin/SKILL.md +1 -1
  144. package/skills/weaver-e10-jucailin/references/attend-write.md +8 -0
  145. package/skills/weaver-e10-jucailin/references/hr-contact.md +8 -0
  146. package/skills/weaver-e10-jucailin/references/hr-report.md +8 -0
  147. package/skills/weaver-e10-jucailin/references/recruit-create.md +2 -2
  148. package/skills/weaver-e10-jucailin/references/recruit-read.md +1 -1
  149. package/skills/weaver-e10-jucailin/references/recruit-write.md +4 -3
  150. package/skills/weaver-e10-mail/SKILL.md +1 -1
  151. package/skills/weaver-e10-meeting/SKILL.md +32 -2
  152. package/skills/weaver-e10-meeting.zip +0 -0
  153. package/skills/weaver-e10-recruit-stage/SKILL.md +226 -0
  154. package/skills/weaver-e10-recruit-stage/agents/openai.yaml +119 -0
  155. package/skills/weaver-e10-recruit-stage/lib/recruit-xiaoe-file.mjs +188 -0
  156. package/skills/weaver-e10-recruit-stage/references/recruit-arrange-interview.md +322 -0
  157. package/skills/weaver-e10-recruit-stage/references/recruit-capability-check.md +127 -0
  158. package/skills/weaver-e10-recruit-stage/references/recruit-check-install.md +65 -0
  159. package/skills/weaver-e10-recruit-stage/references/recruit-detail-process.md +63 -0
  160. package/skills/weaver-e10-recruit-stage/references/recruit-edit-interview-feedback.md +142 -0
  161. package/skills/weaver-e10-recruit-stage/references/recruit-jd-create.md +73 -0
  162. package/skills/weaver-e10-recruit-stage/references/recruit-jd-template.md +56 -0
  163. package/skills/weaver-e10-recruit-stage/references/recruit-list-candidate.md +101 -0
  164. package/skills/weaver-e10-recruit-stage/references/recruit-list-interview.md +148 -0
  165. package/skills/weaver-e10-recruit-stage/references/recruit-match-candidates.md +77 -0
  166. package/skills/weaver-e10-recruit-stage/references/recruit-output-links.md +59 -0
  167. package/skills/weaver-e10-recruit-stage/references/recruit-resolve-creator.md +69 -0
  168. package/skills/weaver-e10-recruit-stage/references/recruit-resolve-metadata.md +241 -0
  169. package/skills/weaver-e10-recruit-stage/references/recruit-resume-import.md +438 -0
  170. package/skills/weaver-e10-recruit-stage/references/recruit-resume-parse.md +128 -0
  171. package/skills/weaver-e10-recruit-stage/references/recruit-search-candidate.md +146 -0
  172. package/skills/weaver-e10-recruit-stage/references/recruit-urge-feedback.md +69 -0
  173. package/skills/weaver-e10-shared/SKILL.md +1 -1
  174. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +4 -2
  175. package/skills/weaver-e10-shijingran/SKILL.md +3 -2
  176. package/skills/weaver-e10-shijingran/references/operations.md +3 -1
  177. package/skills/weaver-e10-shijingran/references/source-manifest.json +41 -40
  178. package/skills/weaver-e10-shijingran/references/write-operations.md +2 -0
  179. package/skills/weaver-e10-workflow/SKILL.md +4 -2
  180. package/skills/weaver-e10-workflow/aigroup/default.json +11 -9
  181. package/skills/weaver-e10-workflow/references/todo-smart-convert.md +23 -13
  182. package/skills/weaver-e10-workflow/tools/todo-summary.cjs +62 -20
  183. package/skills/weaver-e10-yepiaotong/SKILL.md +9 -10
  184. package/skills/weaver-e10-yepiaotong/references/invoice-agent-entry.md +6 -3
  185. package/dist/chunks/{chunk-E7OK5WD5.js → chunk-2LV74IWP.js} +5 -5
@@ -249,6 +249,30 @@
249
249
  "表单分页",
250
250
  "表单详情"
251
251
  ],
252
+ "weaver-e10-recruit-stage": [
253
+ "招聘",
254
+ "招聘助手",
255
+ "招聘启事",
256
+ "招聘岗位",
257
+ "JD",
258
+ "岗位JD",
259
+ "职位",
260
+ "简历",
261
+ "简历解析",
262
+ "简历建档",
263
+ "人才",
264
+ "人才库",
265
+ "候选人",
266
+ "人岗匹配",
267
+ "筛选候选人",
268
+ "面试",
269
+ "AI面试",
270
+ "安排面试",
271
+ "面试安排",
272
+ "面试反馈",
273
+ "面试官",
274
+ "催促面试评价"
275
+ ],
252
276
  "weaver-e10-shared": [
253
277
  "安装",
254
278
  "登录",
@@ -0,0 +1,29 @@
1
+ 本业务域用于泛微 E10 的**招聘阶段业务**(招聘启事生成、简历建档与人岗匹配、AI 面试邀约与反馈)。入口 `SKILL.md` 先路由到 `weaver-e10-shared/SKILL.md`,再给出任务编排名、Reference 路由表、固定参数表与执行纪律。业务能力全部由 `weaver-work-cli` 的 `recruit-stage` 模块提供(13 个 operation),具体接口契约与命令参数拆到 `references/`:
2
+
3
+ - `recruit-check-install.md`:第 0 步闸门,按应用标签取 appId,判断招聘服务是否已部署。
4
+ - `recruit-capability-check.md`:运行时能力探测(有哪些菜单/表单/接口),不按版本号硬编码。
5
+ - `recruit-resolve-metadata.md`:租户参数(objId / formId / listId / appId / 菜单 / 字段 id)的 tag 链解析与缓存。
6
+ - `recruit-resolve-creator.md`:创建人、成员、面试官等人员名称到 EB 用户 ID 的解析。
7
+ - `recruit-jd-create.md`:招聘启事/JD 生成到建职位的 `prepare -> apply` 写入流程。
8
+ - `recruit-jd-template.md`:招聘启事与岗位 JD 的企业标准文案模板(可整体替换)。
9
+ - `recruit-resume-parse.md`:简历 OCR 解析(仅在 AI 无法解析原件时兜底)。
10
+ - `recruit-resume-import.md`:简历导入建人才,含附件上传、查重与标签策略。
11
+ - `recruit-search-candidate.md`:按手机号/姓名/邮箱搜索人才库,取 `talentId`。
12
+ - `recruit-list-candidate.md`:应聘者台账(按职位/批次筛选)。
13
+ - `recruit-list-interview.md`:面试管理列表(近 N 天、待反馈)。
14
+ - `recruit-arrange-interview.md`:安排面试的动作链(含 AI 面试方案必填口径)。
15
+ - `recruit-edit-interview-feedback.md`:提交/修改面试反馈的组合写操作。
16
+ - `recruit-urge-feedback.md`:催促面试官填写评价(会触达真人,需用户明确同意)。
17
+ - `recruit-detail-process.md`:应聘过程卡片(辅助,默认不展示)。
18
+ - `recruit-match-candidates.md`:人岗匹配打分口径与候选人评分卡结构。
19
+ - `recruit-output-links.md`:查看类产物的 Markdown 双链接契约。
20
+
21
+ 调优重点:
22
+
23
+ - `weaver-work-cli recruit-stage schema` 是 operation 合约第一信息源,禁止把源文档里的 HTTP 路径当成可直接调用的地址。
24
+ - 字段 id / 枚举 / 菜单 / appId 全部五层上下文运行时解析并缓存,换环境不需要改技能。
25
+ - 写操作只接受 CLI 生成的 continuation,`prepare` 摘要未经用户明确确认不得 `apply`;`apply` 不自动重试。
26
+ - AI 面试的方案(digital_id)与邮箱必填,`prepare` 未带方案时列候选让用户选,绝不自动取第一条。
27
+ - 姓名/手机号模糊命中多人时列候选让用户确认,禁止自动取第一条;命中 0 条时如实说明,不臆造。
28
+ - 产物只用普通 Markdown 链接(viewLink / listLocateLink / talentCardUrl),不用 browsertool 卡片、不用右栏 iframe。
29
+ - 结果为 `partial` / `write_uncertain` 时停止写入,先做只读回查再向用户说明。
@@ -5,7 +5,7 @@ display_name_en: Weaver E10 Calendar
5
5
  description: 泛微E10日程管理的查询与写操作能力,支持创建、查询列表、查询详情、查询总数、更新、删除日程,查询日程类型与紧急程度,以及应用版本检测,通过 weaver-work-cli calendar 命令执行。
6
6
  description_zh: 泛微E10日程管理的查询与写操作能力,支持创建、查询列表、查询详情、查询总数、更新、删除日程,查询日程类型与紧急程度,以及应用版本检测,通过 weaver-work-cli calendar 命令执行。
7
7
  description_en: Weaver E10 calendar capabilities, including create, list, get, count, update and delete schedules, query schedule type and priority dictionaries, and check app version, delivered through the weaver-work-cli calendar command.
8
- version: 1.1.0
8
+ version: 1.2.2
9
9
  author: 泛微网络科技股份有限公司
10
10
  agent_created: true
11
11
  requires:
@@ -60,6 +60,7 @@ weaver-work-cli --json calendar run <operation> --input-json '{"key":"value"}'
60
60
 
61
61
  - **参与人默认带当前人**:未传 `participants` 时,CLI 自动用当前登录用户;额外指定他人时当前人仍默认包含,除非用户明确表示自己不参与。
62
62
  - **时长默认 1 小时**:只传 `start_time` 未传 `end_time` 时,CLI 自动补 `end_time = start_time + 1 小时`。
63
+ - **默认不提醒、不重复**:用户未指定时提醒保持关闭(不传 `remind`),重复为不重复(`NONE`),不要替用户默认开启提醒或重复。
63
64
  - **更新为全量覆盖**:`calendar.update.prepare` 会先查询当前日程详情并合并用户修改,避免遗漏字段。
64
65
  - **列表默认一页**:`page_no`/`page_size` 默认 1/10,不自动翻页。
65
66
 
@@ -21,10 +21,35 @@
21
21
 
22
22
  continuation 绑定当前登录环境与操作人,10 分钟有效。租户或账号变化触发 `context_mismatch`,字段与 prepare 快照不一致触发 `target_changed`,均需重新 `prepare`。
23
23
 
24
+ ## 时间冲突检查(创建 / 修改时间前必做)
25
+
26
+ 新建日程或修改日程的 `start_time`/`end_time` 之前,**必须**先做时间冲突检查,禁止未经检查直接写入。
27
+
28
+ **流程**
29
+ 1. 用 `calendar.list` 查询目标日期全天:入参 `start_time` 当天 `00:00`、`end_time` 当天 `23:59`,`page_size` 取足够大(如 50)。
30
+ 2. 将新建 / 拟改时间窗口与返回 `agenda` 逐条重叠检测:窗口 A=[a,b)、B=[i,j),重叠判定为 `max(a,i) < min(b,j)`。
31
+ 3. **存在冲突时,必须按下列表格结构呈现并给出处理建议,再交用户决策**(冲突仅提醒、不阻断写入):
32
+ - **现有日程明细表**:列出当日全部日程(名称 / 时间 / ID / 是否冲突)。
33
+ - **当日空闲时段表**:依据当日已排日程推算得出的可排期时间段。
34
+ - **冲突处理建议表**:给出改期 / 缩短 / 合并 / 委派等建议,并附具体候选时间或操作。
35
+ 4. 用户明确选择某方案或确认「仍按原时间创建」后,再走 prepare→apply。
36
+
37
+ **建议方案说明**
38
+ - **改期**:从空闲时段中挑选无冲突时段(如上午 09:00~15:00 区段、下午 15:30 之后区段)。
39
+ - **缩短**:将新窗口提前结束或延后开始,避开冲突段(如改为 14:30~15:00)。
40
+ - **合并**:若新日程与冲突项主题相关,并入冲突项(延长其时间或合并为一場)。
41
+ - **委派**:将 `participants` 改为他人,本人不再占用该时段。
42
+
43
+ > 修改时间(`calendar.update`)同样适用本小节:先查冲突,再 prepare。
44
+
24
45
  ## 创建日程
25
46
 
26
47
  必填 `agn_name`、`start_time`、`agn_type`、`priority`;`end_time` 缺省自动 `start_time + 1 小时`;`participants` 缺省自动带当前操作人。
27
48
 
49
+ **未指定时的默认值**
50
+ - **提醒默认关闭**:用户未要求提醒时,不传 `remind`、不设置提醒档位,呈现为「关闭」;只有用户明确要求提醒才按「提醒档位规则」开启。
51
+ - **重复默认不重复**:用户未要求重复时,不传重复字段(即 `NONE` 不重复),呈现为「不重复」;不要替用户默认加上任何提醒或重复规则。
52
+
28
53
  第一步 prepare(Windows PowerShell):
29
54
 
30
55
  ```powershell
@@ -43,6 +68,27 @@ printf '%s\n' '{"agn_name":"项目周会","start_time":"2026-08-15 09:00","agn_t
43
68
  weaver-work-cli --json calendar run calendar.create.apply --input-json '{"agn_name":"项目周会","start_time":"2026-08-15 09:00","agn_type":"1147539906291523593","priority":"1147539666016624641","confirm":true,"continuation":"<prepare返回的token>"}'
44
69
  ```
45
70
 
71
+ ### 创建结果返回(含详情卡片页链接)
72
+
73
+ `calendar.create.apply` 成功后返回**结构化结果**(不再直接透传后端原始 JSON,避免回显英文键):
74
+
75
+ | 字段 | 说明 |
76
+ | --- | --- |
77
+ | `status` | `COMPLETE` 表示创建成功(协议状态枚举,沿用 prepare/apply 一致命名,非业务文案) |
78
+ | `createdId` | 新建日程 ID(字符串,取 `datajson.dataIds[0]`) |
79
+ | `createdIds` | 新建日程 ID 列表 |
80
+ | `accessUrl` | 详情卡片页访问链接 `https://<E10地址>/sp/ebdfpage/card/0/{formId}/{createdId}`;`formId` 偶发获取失败时为 `null`(降级,不阻断创建结果) |
81
+
82
+ **AI 呈现要求**
83
+ - 创建成功后,日程信息**用表格展示**(日程 / 时间 / 参与人 / 类型与紧急程度 / 提醒 / 重复),**仅「日程」列的名称为可点击链接**(`[名称](accessUrl)`),其余单元格为纯文本;**不要**单独贴裸链接,也**不要**把后端原始 JSON 展示给用户。示例:
84
+
85
+ | 日程 | 时间 | 参与人 | 类型 / 紧急程度 | 提醒 | 重复 |
86
+ | --- | --- | --- | --- | --- | --- |
87
+ | [客户拜访](https://…/sp/ebdfpage/card/0/{formId}/{id}) | 2026-11-05 09:00 ~ 10:00 | 罗智辉 | 会议日程(EC) / 正常 | 关闭 | 不重复 |
88
+
89
+ - 面向用户的表述全部用中文,不出现 `prepare`/`apply`/`continuation` 等协议词(流程表述为「确认信息 → 提交」);只给结果,不输出「验证 / 回查 / 猜测 / 测试」等过程性语句。
90
+ - `accessUrl` 为 `null` 时说明原因并建议运行 `calendar.app.check` 检测,不阻断结果呈现。
91
+
46
92
  ## 更新日程(全量覆盖)
47
93
 
48
94
  `calendar.update.prepare` 先查当前详情再合并用户修改。只传 `id` 加要改的字段即可,未传字段保留原值。
@@ -83,6 +129,14 @@ weaver-work-cli --json calendar run calendar.delete.apply --input-json '{"id":"1
83
129
  - 提醒:`start_reminder`/`end_reminder`(`NOW`/`M5`/`M15`/`H1`/`D1`/`CUSTOM`)、`remind_type`(`system`/`message`/`email`)。
84
130
  - 重复:`repeat_type`(`NONE`/`D1`/`W1`/`W2`/`M1`/`CUSTOM`)、`repeat_custom_type`(`D`/`W`/`M`)、`repeat_custom_cycle`、`repeat_week_unit`(`MO`~`SU`)、`repeat_month_unit`(`1`~`31`)、`repeat_end_type`(`0`/`1`/`2`)、`repeat_end_date`、`repeat_end_num`。
85
131
 
132
+ ## 提醒档位规则
133
+
134
+ `start_reminder`/`end_reminder` 标准档位仅有 `NOW`/`M5`/`M15`/`H1`/`D1`(准时 / 提前 5 分 / 15 分 / 1 小时 / 1 天)。**当用户要求的提前量无法对应任一标准档位(如「提前 10 分钟」)时,必须使用 `CUSTOM` 自定义档位,不要硬套最接近的档位。**
135
+
136
+ - 开启提醒需 `remind:1`,并通过 `remind_type`(`system`/`message`/`email`)指定渠道(默认 `system`)。
137
+ - `CUSTOM` 用 `start_hours`/`start_mins` 传「开始前」提前量,结束提醒对应 `end_hours`/`end_mins`,单位分别为小时 / 分钟。
138
+ - 示例:提前 10 分钟 → `start_reminder:"CUSTOM"`、`start_hours:0`、`start_mins:10`;系统回写 `next_start_remind` 会自动减 10 分钟。
139
+
86
140
  ## 注意
87
141
 
88
142
  - 写操作请求带 `Content-Type: application/json; charset=utf-8`,中文字段(`agn_name`/`agn_desc`/`place`)按 UTF-8 写入,由 CLI 自动处理。
@@ -7,7 +7,7 @@ description: E10协作模块技能,认证由weaver-e10-shared与weaver-work-cl
7
7
  description_zh: E10协作模块技能,经weaver-e10-shared托管的CLI会话直调协作REST接口,支持按主题查询协作列表、查询协作详情,以及审批与退出、共享权限、行为等操作;秒级返回结构化结果;禁用浏览器自动化路径,所有接口地址与会话凭证由weaver-work-cli统一提供。
8
8
  description_en: E10 Cowork skill that calls cowork REST APIs directly with a CLI-managed session described by weaver-e10-shared, supporting list-by-topic, detail queries, approval/quit, share-permission and behavior operations in seconds; browser automation disabled; all endpoint URLs and credentials are provided by weaver-work-cli.
9
9
  category: business
10
- version: 2.0.0
10
+ version: 2.0.3
11
11
  author: 泛微网络科技股份有限公司
12
12
  permissions: [network]
13
13
  execution:
@@ -33,7 +33,9 @@ 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`,以及 `viewUrl`(PC 端 `/sp/cowork/view/{id}`)与 `mobileViewUrl`(移动端 `/mobile/cowork/view/{id}`)——`{id}` 为协作主键,链接可直接打开该协作。其余写操作(action/flag)的 apply 回执同样带 `viewUrl`。
36
+ prepare 会做三件事:版块 id 存在性校验(不存在直接报错并列可选版块)、负责人默认当前用户、开关默认全开。apply 成功后返回新协作 `id`,以及 `viewUrl`(PC 端 `/sp/cowork/view/{id}`)与 `mobileViewUrl`(移动端 `/mobile/cowork/view/{id}`)——`{id}` 为协作主键,链接可直接打开该协作。
37
+
38
+ **写操作回执的链接覆盖**:`item.create`/`item.action`/`item.flag`/`discuss.publish`/`discuss.action`/`member.action`/`permission.add`/`permission.remove` 的 apply 均带 `viewUrl` + `mobileViewUrl`(指向所属协作)。`apply.decide` 与 `review.*` 只拿得到申请/审批记录 id、无法确定所属协作,**不返回链接**(需先用 `cowork.list` 定位到协作)。
37
39
 
38
40
  ## 2. 协作级动作:`cowork.item.action.prepare` → `apply`(`action: "end"`)
39
41
 
@@ -7,7 +7,7 @@ description: 泛微E10聚才林人事管理,帮您处理人事日常事宜:[
7
7
  description_zh: 泛微E10聚才林人事管理,帮您处理人事日常事宜:[出勤]-查考勤数据做报表统计、考勤打卡(PC端签到签退)、发考勤流程处理考勤异常;[薪酬]-查工资、社保公积金、调薪记录;[招聘]-帮您找人才、管招聘需求、生成职位JD、导入简历建人才、查应聘者台账、安排面试、发Offer、办入职、看招聘统计;[人事基础]-查员工信息、组织编制及从不同维度汇总人事报表。
8
8
  description_en: "Weaver E10 Jucailin HR Management: your assistant for daily HR tasks. [Attendance] Check attendance data, generate reports & statistics, clock in/out on PC, and start attendance workflows to handle attendance exceptions. [Payroll] View pay slips, social security & housing fund, and salary adjustment records. [Recruitment] Find candidates, manage recruitment requisitions, generate job descriptions (JD), import resumes to build candidate profiles, view candidate pipeline records, arrange interviews, send offers, handle onboarding, and view recruitment statistics. [HR Basics] Look up employee information, organizational headcount, and compile HR reports from various dimensions."
9
9
  category: business
10
- version: 2.0.2
10
+ version: 2.0.6
11
11
  author: 泛微网络科技股份有限公司
12
12
  permissions: [network]
13
13
  execution:
@@ -80,3 +80,11 @@ printf '%s\n' '{"type":"CHECKIN","continuation":"<prepare 返回的 token>","con
80
80
  - `continuation_expired`:continuation 超过 10 分钟,重新执行 `prepare`。
81
81
  - `appeal_not_allowed`:`stillShowAppeal=false`,当前不可申诉,不要继续提交。
82
82
  - `partial/write_uncertain`:请求已发出但结果不确定。立即停止,禁止自动重试,先做只读回查再向用户报告。
83
+
84
+ ## 产物链接(CLI 0.1.41+)
85
+
86
+ `ehr.attend.appeal.save.apply` 成功后返回:
87
+ - `appealListUrl`:考勤异常/申诉页面地址(`{baseUrl}/sp/attend/abnormal`,真实环境取证路由,禁止改拼);
88
+ - `appeal`:回查定位到的新建申诉记录(含申诉 ID,处理申诉时用其 id);未定位到时给 `locateWarning`。
89
+
90
+ 展示时把 `appealListUrl` 作为可点击链接给用户。
@@ -90,3 +90,11 @@ printf '%s\n' '{"resourceId":123,"changeDateStart":"2026-01-01","changeDateEnd":
90
90
  - `date_range_incomplete`:`empchange.list` 的起止日期只提供了一个。
91
91
  - `date_range_invalid`:开始日期晚于结束日期。
92
92
  - 认证类错误:停止查询并执行入口 `SKILL.md` 的登录失效强制分流;XiaoE 只走 `auth xiaoe`,非 XiaoE 只走 `auth login`,禁止其他登录 Skill。
93
+
94
+ ## 产物链接(CLI 0.1.41+)
95
+
96
+ 查询类操作的 `meta` 增加两个字段:
97
+ - `viewUrl`:该查询对应的 EHR 页面地址(如在职员工名册 `/sp/hrm/hr/employeeManager`);
98
+ - `profileUrlTemplate`:人员详情卡片模板 `{baseUrl}/sp/hrm/profileInfo/{人员id}`,把 `{人员id}` 替换为结果中的人员 id 即可点击。
99
+
100
+ 只对已取证路由输出这两个字段;未见字段表示该接口无对应页面。
@@ -74,3 +74,11 @@ printf '%s\n' '{"startDate":"2026-01-01","endDate":"2026-03-31","dataType":"join
74
74
  - `date_range_invalid`:`turn.emp.table` 的 `startDate` 晚于 `endDate`。
75
75
  - `enum_invalid`:`type`、`dataType`、`calcLevel` 取值不在允许集合内。
76
76
  - 权限不足返回业务失败,先确认账号是否具备对应报表的查看权限。
77
+
78
+ ## 产物链接(CLI 0.1.41+)
79
+
80
+ 查询类操作的 `meta` 增加两个字段:
81
+ - `viewUrl`:该查询对应的 EHR 页面地址(如在职员工名册 `/sp/hrm/hr/employeeManager`);
82
+ - `profileUrlTemplate`:人员详情卡片模板 `{baseUrl}/sp/hrm/profileInfo/{人员id}`,把 `{人员id}` 替换为结果中的人员 id 即可点击。
83
+
84
+ 只对已取证路由输出这两个字段;未见字段表示该接口无对应页面。
@@ -49,7 +49,7 @@ weaver-work-cli ehr run ehr.recruit.position.create.apply --input-json '{"positi
49
49
 
50
50
  ```
51
51
  ① 你读懂简历(对话里已解析的内容 / 原件文本)→ 按下面 schema 整理成 JSON
52
- ② prepare:手机号查重 + 主表映射 + 6 张明细行数 + 标签核验(不写入)
52
+ ② prepare:手机号查重 + 主表映射 + 6 张明细行数 + 标签预检(按名核验,输出 `tagCheck.found/missing`,不写入)
53
53
  ③ 摘给用户确认
54
54
  ④ apply:主表+明细一次写入 → 人才批次 → 智能标签 → 平台标签 → 双链接
55
55
  ```
@@ -80,7 +80,7 @@ weaver-work-cli ehr run ehr.recruit.candidate.import.apply --input-json '{"candi
80
80
  - 手机号已存在 → apply 直接阻断,`preview.duplicate` 会带出已存在的人才 id;**不要重复建档**,改为告知用户走更新或在人才卡片补充。
81
81
  - 明细表在 `getTableMapping` 中无对应节点 → 该表整表跳过(主表照常建档),`preview.warnings` 会写明。
82
82
  - 批次初始化失败 → 人才仍已建档,`batch.note` 说明原因,不要重试建档。
83
- - 平台标签不在本环境清单 → `tagsSkipped` 列出,**不要自动新建标签**。
83
+ - 平台标签不在本环境清单 → `tagsSkipped` 列出,**不要自动新建标签**。标签按名精确解析(并行 type0/type1,N 个名字一轮请求),不再受环境标签总量影响;prepare 的 `tagCheck.missing` 就是 apply 会跳过的那些,可在确认摘要里先提示用户。
84
84
  - apply 返回 `partial/write_uncertain` → 先用人才库按手机号核对是否已建档,**禁止直接重试**。
85
85
 
86
86
  **产物**:`talentCardUrl`(人才卡片单页)+ `talentListLocateUrl`(人才库列表并滑出该人才)。两个都以 Markdown 链接放回答正文;自用系统会自动追加 `recruitType=useSelf`,不要手拼。
@@ -9,7 +9,7 @@
9
9
  | operation | 必填 | 说明 |
10
10
  | --- | --- | --- |
11
11
  | `ehr.recruit.candidate.search` | 无 | 按姓名/手机号模糊搜索人才库;都不传时列出全部人才用于浏览 |
12
- | `ehr.recruit.candidate.list` | `type` | 查询招聘业务列表,`type` 取 `demand`(招聘需求)/`position`(招聘职位)/`entry`(入职管理)/`offer`(录用管理)之一 |
12
+ | `ehr.recruit.candidate.list` | `type` | 查询招聘业务列表,`type` 取 `demand`(招聘需求)/`position`(招聘职位)/`entry`(入职管理)/`offer`(录用管理)/`interview`(面试管理)/`candidate`(应聘者)之一 |
13
13
  | `ehr.recruit.candidate.card` | `talentId` | 人才详情卡片:基本信息 + 应聘进展 + 面试安排 + 沟通备注 |
14
14
  | `ehr.recruit.context.resolve` | 无 | 返回当前环境的招聘模块运行时参数(appId/表单/列表),仅用于调试与兜底 |
15
15
 
@@ -15,7 +15,7 @@
15
15
  | operation(prepare/apply 成对) | 用途 | 关键校验 |
16
16
  | --- | --- | --- |
17
17
  | `ehr.recruit.candidate.create.*` | 新建人才 | 手机号建前查重(apply 二次查重强制拦截);渠道须在数据字典中 |
18
- | `ehr.recruit.candidate.interview.arrange.*` | 安排面试 | 候选人 READ 权限;面试方式/轮次须在枚举内;面试官姓名须解析到 userId |
18
+ | `ehr.recruit.candidate.interview.arrange.*` | 安排面试 | 候选人 READ 权限;面试方式/轮次须在枚举内;面试官可省略(默认当前登录人),显式指定时姓名须解析到 userId |
19
19
  | `ehr.recruit.offer.send.*` | 发送 Offer 邮件(L3) | Offer 状态必须「未发送」;邮箱必填;模板须存在于 uf_rcrt_notify_mould |
20
20
  | `ehr.recruit.entry.process.*` | 办理入职(落账号不可逆) | estValidateEntry 校验;已办理(status=2)拒绝;department/positionRank 必填 |
21
21
  | `ehr.recruit.candidate.interview.feedback.edit.*` | 提交/修改面试反馈 | 已失效(INVALID)面试拒绝;结果须在枚举内;全字段集保存防清空 + 乐观锁 |
@@ -32,7 +32,8 @@
32
32
  ## 参数要点
33
33
 
34
34
  - `create`:`name` + `mobile` 必填,`channel` 传中文名(如「BOSS直聘」),CLI 负责解析为字典 optionId,查不到报 `channel_not_found`。
35
- - `arrange`:`talentId` + `interviewer`(姓名)必填;`type`(现场/视频/电话/AI面试)、`session`(初试/复试等,须在该环境枚举内);`positionId` 不填时从人才当前应聘批次继承,继承不到报错要求显式提供。
35
+ - `arrange`:`talentId` 必填;`interviewer`(姓名)**可选,不填默认当前登录人**(teamsCheck 取姓名 → 同一人员解析通道);`type`(现场/视频/电话/AI面试)、`session`(初试/复试等,须在该环境枚举内);`positionId` 不填时从人才当前应聘批次继承,继承不到报错要求显式提供。
36
+ - **AI 面试**(`type=AI面试`):`aiPlan` 默认「大模型面试」(按名匹配,环境无此方案时错误详情 `candidates` 列出可选方案,不自动取第一条);`email` 不填则取人才资料里的邮箱,两者都缺会报 `email_required`。prepare 会把 `aiPlan`/`email`/`mobile` 一并写进 `willSubmit`。
36
37
  - `offer.send`:`talentId` 必填;`email`/`deadline` 缺省时从 Offer 记录继承;`template` 默认「offer通知」。
37
38
  - `entry.process`:`departmentId`/`positionRankId` 必填(Offer 记录无此字段);`subcompanyId`/`positionId`/`entryTime` 缺省时从 Offer 记录继承。
38
39
  - `feedback.edit`:`talentId` 必填;`feedbackId` 最稳定位,或 `feedbackIndex`(默认第 0 场含反馈的面试);`result`/`comment` 至少一项。
@@ -60,7 +61,7 @@ weaver-work-cli --json ehr run ehr.recruit.candidate.interview.arrange.apply --i
60
61
 
61
62
  ## 错误形状(稳定 subtype)
62
63
 
63
- `duplicate_blocked`(查重命中)/ `duplicate_ambiguous`(多条重复)/ `target_changed`(指纹不一致)/ `context_mismatch`(会话变化)/ `channel_not_found` / `interviewer_not_found` / `result_not_in_enum` / `offer_status_invalid` / `entry_already_processed` / `interview_invalid_status` / `esb_action_unresolved`(按钮/动作流解析不到,禁止编造 esbActionIds)/ `partial` + `write_uncertain`(多步写入中断)。
64
+ `duplicate_blocked`(查重命中)/ `duplicate_ambiguous`(多条重复)/ `target_changed`(指纹不一致)/ `context_mismatch`(会话变化)/ `channel_not_found` / `interviewer_not_found` / `interviewer_unresolved`(未指定面试官且当前登录人解析不到)/ `ai_plan_unavailable` / `ai_plan_not_found`(详情 `candidates` 列可选方案)/ `ai_plan_ambiguous` / `email_required` / `email_invalid` / `result_not_in_enum` / `offer_status_invalid` / `entry_already_processed` / `interview_invalid_status` / `esb_action_unresolved`(按钮/动作流解析不到,禁止编造 esbActionIds)/ `partial` + `write_uncertain`(多步写入中断)。
64
65
 
65
66
  ## 产物链接(apply 输出直接含 URL 字段,按「[标题](url)」Markdown 链接放回答正文)
66
67
 
@@ -7,7 +7,7 @@ description: 泛微E10邮件管理技能:帮你查询、阅读和管理 OA 邮
7
7
  description_zh: 泛微E10邮件管理技能:帮你查询、阅读和管理 OA 邮件。支持查看邮件列表与详情、写新邮件、回复、转发、保存草稿、上传附件、定时发送、标星、设待办、标记已读、删除,以及撤回和重发邮件。同时支持文件夹管理、联系人/分组管理、附件中心、模板/签名管理、黑名单设置等高级功能。当用户提出与邮件相关的操作需求时触发。
8
8
  description_en: "Weaver E10 Mail Management skill: helps you query, read and manage OA emails. Supports viewing mail lists and details, composing new mails, replying, forwarding, saving drafts, uploading attachments, scheduled sending, starring, setting todos, marking read, deleting, recalling and resending mails. Also supports folder management, contacts/group management, attachment center, template/signature management, blacklist settings and more advanced features. Triggered when the user asks for mail-related operations."
9
9
  category: business
10
- version: 3.0.0
10
+ version: 3.0.1
11
11
  author: 泛微网络科技股份有限公司
12
12
  permissions: [network]
13
13
  execution:
@@ -5,7 +5,7 @@ display_name_en: Weaver E10 Meeting Management
5
5
  description: "泛微 E10 会议管理:查会议、预约建会(推荐会议室、查冲突与空闲时段)、改期/改地点/改参会人、取消删除、流程建会、会议室查询与推荐、生成邀请函、读取会议附件、回执签到、纪要与决议任务、参会二维码。详见 description_zh。"
6
6
  description_zh: "泛微 E10 会议管理,帮您处理会议日常事务:[会议]-查询今天/本周/我的会议与会议详情,预约建会(自动推荐会议室、检测参会人会议冲突与日程空闲、冲突时给出当天可选时段),改期/换地点/改参会人、取消、删除;受限环境可走审批流程建会,提交后必出邀请函;[会议室]-查询会议室与占用,按人数/设备/常用程度智能推荐;[邀请函]-生成邀请函文档(有会议 id 用真实数据;没有也能按会议名+时间出预置函);[资料]-读取会议与议题的附件、抽取文档正文;参会回执、签到与补签、纪要、议题、决议与决议任务;[二维码]-把文本渲染成参会码/签到码图片。认证与会话由 weaver-e10-shared 提供。"
7
7
  description_en: "Weaver E10 meeting management: [Meetings] query today/week/my meetings and details, book meetings with automatic room recommendation, attendee conflict and calendar-availability checks (plus same-day alternative slots), reschedule / change room / change attendees, cancel, delete; flow-based booking with automatic invitation when the app only allows workflow creation; [Rooms] occupancy queries and smart recommendation by capacity, equipment and personal usage; [Invitation] generate invitation docx from real meeting data; [Content] list and read meeting/topic attachments and extract document text; receipts, sign-in, minutes, topics, decisions and decision tasks; [QR] render text into attendee/sign-in QR images. Auth and session are provided by weaver-e10-shared."
8
- version: 2.48.1
8
+ version: 2.49.0
9
9
  author: 泛微网络科技股份有限公司
10
10
  agent_created: true
11
11
  requires:
@@ -223,6 +223,8 @@ cliHelp: "weaver-work-cli meeting --help"
223
223
 
224
224
  - 「今天的会议 / 下一个会」→ `meeting.eb.meeting.list`(`filterDate` 客户端过滤;接口 body 过滤实测不生效,不要现场试 body)。
225
225
  - 「会议室占用 / 空闲 / 推荐」→ `meeting.eb.room.recommend`(按人数/常用/时段占用排序,带理由);
226
+ **带客户时**(用户话里出现「接待/招待/贵宾/客户来访」或传了 `crm_members`)会自动给接待类会议室
227
+ (名称或描述含「接待/招待/贵宾/商务」)+35 分优先推荐;只有「客户」二字不算接待类(避免培训室误判)。
226
228
  只想看全部房间用 `meeting.eb.room.list`(`statusText=正常` 才是可用)。
227
229
  - **⛔ 建会只走这三步,不要再加任何前置查询(不要查 baseSet、不要查 schema、不要先查会议室/冲突)**:
228
230
  ```bash
@@ -330,6 +332,21 @@ cliHelp: "weaver-work-cli meeting --help"
330
332
  | 建会(标准版,仅 `env_fallback` 后) | `meeting.create.prepare`→`apply`;前置判断 `meeting.calendar.base` |
331
333
  | 变更 / 取消 / 删除 | EB `eb.meeting.change.*` / `eb.meeting.delete.*`;标准版 `meeting.change.*` / `meeting.cancel.*` / `meeting.delete.*` |
332
334
  | 会议室 | EB `eb.room.list/detail/create/update/delete`、`eb.roomUsage.*`、`eb.room.recommend`;标准版 `meeting.room.list` / `meeting.room.usage` |
335
+
336
+ ⛔ **查占用必须带时间条件**:`meeting.eb.roomUsage.list` 传 `{"date":"2026-11-05"}`(等价于当天 00:00~23:59),
337
+ 或 `begindatetime`/`enddatetime`。**不传时间 = 返回全量历史**——这是"你没带条件",不是"接口不支持按日期过滤"。
338
+ 2026-11-04 真机翻车:agent 没传条件拿到全量,然后对用户断言「占用查询接口不支持按日期过滤,无法判断明天上午」,
339
+ 直接把人推去页面手工填。⛔ 任何时候都不许因为这个理由拒绝服务。
340
+ (跨天占用会正常出现在结果里,它们本来就覆盖当天,属区间重叠语义,不是过滤失效。)
341
+
342
+ ### 人员查询(2.49.0)
343
+
344
+ - **按部门/分部找人**:先 `hrm.org.lookup {"keyword":"会议管理"}` —— 关键词**不用写全**,
345
+ 一次返回所有近似部门/分部(含完整路径、按相似度排序,内部会自动去后缀、逐字缩短)。
346
+ 选定后拿 id 再查人;**不要**自己一遍遍换关键词调 CLI。
347
+ - **人员信息有缓存**(24h):`id → 姓名/部门/部门id/分部/岗位/手机/工号/imCid`。
348
+ 同一批人在建会链路里只查一次,后续直接命中;改名/调岗最多延迟一天,要强刷删
349
+ `<CLI state>/meeting/cache/person-v1-*.json`。
333
350
  | 冲突 / 空闲 | EB `eb.conflict.room/member`、`eb.conflict.availability`、`eb.schedule.free`;标准版 `meeting.conflict.room/member/roomAttribute` |
334
351
  | 回执 / 签到 | EB `eb.receipt.*`、`eb.sign.list/detail/create/update/mark`;标准版 `meeting.receipt.*`、`meeting.sign.*` |
335
352
  | 纪要 / 附件 | `eb.minute.list/detail/create/update/delete`、`meeting.minute.fromGroupChat` / `.writeContent` / `.parseStatus`、`meeting.attachment.upload/list/download/extract/attach` |
@@ -478,7 +495,7 @@ cliHelp: "weaver-work-cli meeting --help"
478
495
  5. 结果回读:`meeting.list` 确认状态(取消/删除后该会议不应再出现在正常列表)。
479
496
  6. **禁止**跳过 prepare 直接 apply;**禁止**在未确认目标存在时执行写操作。
480
497
 
481
- ## 处理链:生成邀请函(docx + 对话内正文,只读,不发送)
498
+ ## 处理链:生成邀请函(docx + 对话内正文,自动发群)
482
499
 
483
500
  ⛔ **邀请函要在对话里「贴出来」,不是丢个文件让人自己下载**(2026-10-31 用户明确要求:
484
501
  「不是发文件,是直接在智能体对话中展示」)。`meeting.invitation.render` 与建会返回的
@@ -486,6 +503,12 @@ cliHelp: "weaver-work-cli meeting --help"
486
503
  正确做法:**把 `text` 原样作为回复正文的一部分贴出来**(不要包在代码块里,不要省略),
487
504
  再附一句"docx 已生成在 `<filePath>`,可下载打印/外发"。
488
505
 
506
+ ✅ **建会时邀请函会自动发到会议群**(2.48.6):`create.flow.quick/apply` 建群成功、
507
+ 邀请函 docx 生成后,CLI 会自动把 **docx 文件**发进群里(返回 `invitation.sentToGroup = {groupId, ok}`)。
508
+ **两种提交档都会发**:服务端直提(有会议号,发完整版邀请函);浏览器填单(BROWSER_FILL,无会议号,发预置函)。
509
+ 你不用再手动转发;发失败只是 warning(会议和邀请函本身不受影响),如实说明即可。
510
+ 另外群里的会议信息消息现在显示的是**会议室名称**,开始/结束时间也一定有值(之前用 `time_slot` 时会空,已修)。
511
+
489
512
  **两种用法**:
490
513
 
491
514
  | 场景 | 入参 | 说明 |
@@ -620,6 +643,13 @@ weaver-work-cli --json meeting run meeting.attachment.extract --input-json '{"mt
620
643
 
621
644
  ## 冲突了要给出可选项(`decisions` 里能直接挑)
622
645
 
646
+ ⛔ **不许把活推回给用户**(2026-11-04 真实翻车):会议室查不到/推荐失败时,**不要**说
647
+ 「你去系统里自己发起吧,表单里点选会自动过滤占用」——这是 CLI 该做的事。
648
+ 正确做法:① 重跑一次 `create.flow.quick/prepare`(不传 address,让 CLI 推荐);
649
+ ② 仍失败就把 `options` 给用户挑,或传 `autoRoom: true` 让 CLI 沿用首选;
650
+ ③ 真查不到候选时如实说"该时段没有可用会议室",并给 3 个替代时段。
651
+ **任何情况下都不许让用户自己去页面填会议室/自己发起流程**。
652
+
623
653
  `create.prepare` / `change.prepare` / **流程建会 `create.flow.prepare`** 的返回里都有 `data.decisions`
624
654
  (流程建会在 `data.preview.decisions`),**一律用选项方式给用户挑,不要文字罗列**:
625
655
 
Binary file