weaver-work-cli 0.1.8 → 0.1.21
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 +25 -17
- package/dist/cmd/action.js +76 -0
- package/dist/cmd/index.js +2 -0
- package/dist/cmd/refs/index.js +103 -0
- package/dist/cmd/register.js +31 -0
- package/dist/cmd/root.js +1 -0
- package/dist/cmd/setup/index.js +25 -5
- package/dist/cmd/skills/index.js +37 -5
- package/dist/core/connector.js +54 -0
- package/dist/core/context.js +2 -1
- package/dist/core/input.js +48 -0
- package/dist/core/output.js +298 -3
- package/dist/core/refs.js +435 -0
- package/dist/core/state.js +26 -0
- package/dist/internal/e10/auth/commands.js +34 -19
- package/dist/internal/e10/auth/session.js +74 -2
- package/dist/internal/e10/auth/xiaoe.js +359 -94
- package/dist/internal/e10/context.js +18 -6
- package/dist/internal/e10/request-runtime.js +8 -1
- package/dist/internal/skills/install.js +148 -28
- package/dist/internal/skills/reader.js +12 -9
- package/dist/shortcuts/blog/continuation.js +74 -0
- package/dist/shortcuts/blog/errors.js +60 -0
- package/dist/shortcuts/blog/host.js +175 -0
- package/dist/shortcuts/blog/index.js +324 -0
- package/dist/shortcuts/blog/manifest.js +415 -0
- package/dist/shortcuts/blog/operations/comment.js +125 -0
- package/dist/shortcuts/blog/operations/comments.js +31 -0
- package/dist/shortcuts/blog/operations/edit.js +131 -0
- package/dist/shortcuts/blog/operations/export.js +46 -0
- package/dist/shortcuts/blog/operations/like.js +80 -0
- package/dist/shortcuts/blog/operations/publish.js +157 -0
- package/dist/shortcuts/blog/operations/query-user.js +58 -0
- package/dist/shortcuts/blog/operations/query.js +96 -0
- package/dist/shortcuts/blog/operations/registry.js +54 -0
- package/dist/shortcuts/blog/operations/remind.js +176 -0
- package/dist/shortcuts/blog/operations/shared.js +330 -0
- package/dist/shortcuts/blog/operations/types.js +16 -0
- package/dist/shortcuts/blog/operations.js +9 -0
- package/dist/shortcuts/caizhilian/continuation.js +70 -0
- package/dist/shortcuts/caizhilian/errors.js +53 -0
- package/dist/shortcuts/caizhilian/host.js +190 -0
- package/dist/shortcuts/caizhilian/index.js +186 -0
- package/dist/shortcuts/caizhilian/manifest.js +42 -0
- package/dist/shortcuts/caizhilian/operations/api.js +801 -0
- package/dist/shortcuts/caizhilian/operations/confirm.js +75 -0
- package/dist/shortcuts/caizhilian/operations/files.js +306 -0
- package/dist/shortcuts/caizhilian/operations/form.js +170 -0
- package/dist/shortcuts/caizhilian/operations/handlers/collab.js +611 -0
- package/dist/shortcuts/caizhilian/operations/handlers/document.js +890 -0
- package/dist/shortcuts/caizhilian/operations/handlers/file-collection.js +1227 -0
- package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +192 -0
- package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +570 -0
- package/dist/shortcuts/caizhilian/operations/handlers/folder.js +1024 -0
- package/dist/shortcuts/caizhilian/operations/handlers/search.js +318 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +294 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-backup.js +423 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-encrypt.js +238 -0
- package/dist/shortcuts/caizhilian/operations/handlers/setting-storage.js +364 -0
- package/dist/shortcuts/caizhilian/operations/handlers/system.js +106 -0
- package/dist/shortcuts/caizhilian/operations/registry.js +151 -0
- package/dist/shortcuts/caizhilian/operations/shared.js +408 -0
- package/dist/shortcuts/caizhilian/operations/specs.js +698 -0
- package/dist/shortcuts/caizhilian/operations/types.js +57 -0
- package/dist/shortcuts/caizhilian/operations.js +21 -0
- package/dist/shortcuts/contract/continuation.js +70 -0
- package/dist/shortcuts/contract/errors.js +62 -0
- package/dist/shortcuts/contract/host.js +205 -0
- package/dist/shortcuts/contract/index.js +318 -0
- package/dist/shortcuts/contract/manifest.js +596 -0
- package/dist/shortcuts/contract/operations/clause-reference.js +78 -0
- package/dist/shortcuts/contract/operations/form-info.js +371 -0
- package/dist/shortcuts/contract/operations/read.js +118 -0
- package/dist/shortcuts/contract/operations/registry.js +43 -0
- package/dist/shortcuts/contract/operations/request.js +300 -0
- package/dist/shortcuts/contract/operations/shared.js +133 -0
- package/dist/shortcuts/contract/operations/subject.js +157 -0
- package/dist/shortcuts/contract/operations/template.js +81 -0
- package/dist/shortcuts/contract/operations/types.js +7 -0
- package/dist/shortcuts/contract/operations/workflow.js +52 -0
- package/dist/shortcuts/contract/operations/write.js +131 -0
- package/dist/shortcuts/contract/operations.js +8 -0
- package/dist/shortcuts/hrm/index.js +83 -2
- package/dist/shortcuts/hrm/manifest.js +16 -9
- package/dist/shortcuts/hrm/operations/employee.js +160 -30
- package/dist/shortcuts/hrm/operations/org.js +17 -3
- package/dist/shortcuts/hrm/operations/position.js +18 -2
- package/dist/shortcuts/hrm/operations/registry.js +2 -0
- package/dist/shortcuts/hrm/operations/resolve.js +449 -0
- package/dist/shortcuts/index.js +5 -1
- package/dist/shortcuts/invoice/index.js +74 -36
- package/dist/shortcuts/invoice/manifest.js +674 -4
- package/dist/shortcuts/invoice/markdown.js +172 -0
- package/dist/shortcuts/invoice/operations/add.js +3 -3
- package/dist/shortcuts/invoice/operations/delete.js +2 -2
- package/dist/shortcuts/invoice/operations/get.js +10 -2
- package/dist/shortcuts/invoice/operations/import.js +2 -2
- package/dist/shortcuts/invoice/operations/registry.js +8 -1
- package/dist/shortcuts/invoice/operations/reim-auto.js +719 -0
- package/dist/shortcuts/invoice/operations/reim.js +85 -2
- package/dist/shortcuts/invoice/operations/shared.js +75 -8
- package/dist/shortcuts/invoice/operations/update.js +2 -2
- package/dist/shortcuts/invoice/operations/upload-and-validate.js +93 -0
- package/dist/shortcuts/invoice/operations/validate-preview.js +2 -1
- package/dist/shortcuts/invoice/projection.js +328 -0
- package/dist/shortcuts/meeting/host.js +18 -1
- package/dist/shortcuts/meeting/manifest.js +30 -18
- package/dist/shortcuts/meeting/operations/eb/catalog.js +390 -0
- package/dist/shortcuts/meeting/operations/eb/conflict.js +389 -0
- package/dist/shortcuts/meeting/operations/eb/factory.js +389 -0
- package/dist/shortcuts/meeting/operations/eb/index.js +22 -0
- package/dist/shortcuts/meeting/operations/env.js +8 -1
- package/dist/shortcuts/meeting/operations/registry.js +2 -0
- package/dist/shortcuts/meeting/operations/signs.js +216 -2
- package/dist/shortcuts/workflow/endpoints.js +2 -1
- package/dist/shortcuts/workflow/errors.js +8 -2
- package/dist/shortcuts/workflow/host.js +11 -4
- package/dist/shortcuts/workflow/operations/form.js +1016 -590
- package/dist/shortcuts/workflow/operations/read.js +913 -231
- package/dist/shortcuts/workflow/operations/shared.js +21 -0
- package/dist/shortcuts/workflow/operations/write.js +750 -52
- package/dist/shortcuts/workflow/operations.js +36 -10
- package/docs/_catalog.md +6 -0
- package/docs/agent-invoice.md +5 -1
- package/docs/agent-io-channel-design.md +468 -0
- package/docs/agent-skill-install.md +9 -4
- package/docs/blog.md +123 -0
- package/docs/caizhilian.md +304 -0
- package/docs/contract.md +91 -0
- package/docs/e10-auth.md +4 -2
- package/docs/hrm.md +53 -11
- package/docs/invoice.md +5 -1
- package/docs/meeting.md +1 -1
- package/docs/operation-manual.md +15 -3
- package/docs/skill-review-2026-09-19.md +2 -2
- package/package.json +1 -1
- package/scripts/package-skill.mjs +32 -20
- package/scripts/xiaoe_env.py +118 -0
- package/skill-template/business-info.json +113 -14
- package/skill-template/domains/blog.md +24 -0
- package/skill-template/domains/caizhilian.md +22 -0
- package/skill-template/domains/hrm.md +2 -1
- package/skill-template/domains/jinchengda.md +23 -0
- package/skill-template/domains/meeting.md +1 -1
- package/skill-template/domains/workflow.md +1 -1
- package/skill-template/skill-template.md +1 -1
- package/skills/weaver-e10-blog/SKILL.md +111 -0
- package/skills/weaver-e10-blog/references/blog-comment.md +51 -0
- package/skills/weaver-e10-blog/references/blog-comments.md +39 -0
- package/skills/weaver-e10-blog/references/blog-default-permission.md +38 -0
- package/skills/weaver-e10-blog/references/blog-disabled-capabilities.md +11 -0
- package/skills/weaver-e10-blog/references/blog-edit.md +51 -0
- package/skills/weaver-e10-blog/references/blog-export.md +42 -0
- package/skills/weaver-e10-blog/references/blog-like.md +50 -0
- package/skills/weaver-e10-blog/references/blog-publish.md +52 -0
- package/skills/weaver-e10-blog/references/blog-query-user.md +45 -0
- package/skills/weaver-e10-blog/references/blog-query.md +49 -0
- package/skills/weaver-e10-blog/references/blog-remind.md +51 -0
- package/skills/weaver-e10-blog/references/blog-resolve-users.md +38 -0
- package/skills/weaver-e10-blog/references/source-manifest.json +1540 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +217 -0
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +106 -0
- package/skills/weaver-e10-caizhilian/references/collaboration.md +112 -0
- package/skills/weaver-e10-caizhilian/references/document.md +111 -0
- package/skills/weaver-e10-caizhilian/references/file-collection.md +173 -0
- package/skills/weaver-e10-caizhilian/references/file-upload.md +309 -0
- package/skills/weaver-e10-caizhilian/references/files.md +120 -0
- package/skills/weaver-e10-caizhilian/references/folder.md +122 -0
- package/skills/weaver-e10-caizhilian/references/org-browser.md +104 -0
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +440 -0
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +372 -0
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +399 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +603 -0
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +5694 -0
- package/skills/weaver-e10-caizhilian/references/withheld.md +93 -0
- package/skills/weaver-e10-caizhilian/references/write-protocol.md +120 -0
- package/skills/weaver-e10-calendar/SKILL.md +4 -3
- package/skills/weaver-e10-ebuilder-form/SKILL.md +4 -9
- package/skills/weaver-e10-ebuilder-form/references/context-routing.md +0 -9
- package/skills/weaver-e10-ebuilder-form/references/custom-api.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/fields-browser.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/list-nlist.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/openapi-read.md +1 -5
- package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +1 -5
- package/skills/weaver-e10-esb/SKILL.md +2 -2
- package/skills/weaver-e10-esb/references/source-manifest.json +9 -9
- package/skills/weaver-e10-hrm/SKILL.md +104 -9
- package/skills/weaver-e10-hrm/references/employee.md +89 -15
- package/skills/weaver-e10-hrm/references/org.md +114 -5
- package/skills/weaver-e10-hrm/references/position.md +14 -7
- package/skills/weaver-e10-hrm/references/source-manifest.json +1 -1
- package/skills/weaver-e10-jinchengda/SKILL.md +167 -0
- package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +82 -0
- package/skills/weaver-e10-jinchengda/references/contract-clause-recommender.md +69 -0
- package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +78 -0
- package/skills/weaver-e10-jinchengda/references/contract-disabled-capabilities.md +27 -0
- package/skills/weaver-e10-jinchengda/references/contract-request-status.md +71 -0
- package/skills/weaver-e10-jinchengda/references/contract-request-write.md +94 -0
- package/skills/weaver-e10-jinchengda/references/contract-signing-subjects.md +89 -0
- package/skills/weaver-e10-jinchengda/references/contract-subject-create.md +77 -0
- package/skills/weaver-e10-jinchengda/references/contract-template-selector.md +66 -0
- package/skills/weaver-e10-jinchengda/references/contract-workflow-discovery.md +94 -0
- package/skills/weaver-e10-jinchengda/references/source-manifest.json +259 -0
- package/skills/weaver-e10-jiuchuanhui/SKILL.md +5 -11
- package/skills/weaver-e10-jucailin/SKILL.md +4 -3
- package/skills/weaver-e10-mail/SKILL.md +4 -11
- package/skills/weaver-e10-meeting/SKILL.md +66 -32
- package/skills/weaver-e10-meeting/references/meeting-change.md +5 -2
- package/skills/weaver-e10-meeting/references/meeting-create.md +2 -1
- package/skills/weaver-e10-meeting/references/meeting-eb.md +114 -0
- package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +9 -8
- package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +35 -7
- package/skills/weaver-e10-meeting/references/meeting-update.md +1 -1
- package/skills/weaver-e10-okr/SKILL.md +6 -11
- package/skills/weaver-e10-okr/references/source-manifest.json +3 -3
- package/skills/weaver-e10-plan/SKILL.md +3 -3
- package/skills/weaver-e10-plan/references/plan-collect-and-compose.md +1 -1
- package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +1 -1
- package/skills/weaver-e10-plan/references/source-manifest.json +13 -13
- package/skills/weaver-e10-qiyecheng/SKILL.md +4 -10
- package/skills/weaver-e10-qiyecheng/references/source-manifest.json +9 -9
- package/skills/weaver-e10-shared/SKILL.md +42 -34
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +16 -43
- package/skills/weaver-e10-shared/references/json-output-contract.md +20 -11
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +21 -14
- package/skills/weaver-e10-shijingran/SKILL.md +2 -1
- package/skills/weaver-e10-shijingran/references/source-manifest.json +9 -9
- package/skills/weaver-e10-skill-maker/SKILL.md +4 -10
- package/skills/weaver-e10-skill-maker/references/business-skill-generation.md +5 -3
- package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +12 -27
- package/skills/weaver-e10-skill-maker/references/module-gap-audit-and-repair.md +17 -5
- package/skills/weaver-e10-skill-maker/references/source-update-detection.md +4 -27
- package/skills/weaver-e10-skill-maker/references/weaver-skill-style.md +1 -1
- package/skills/weaver-e10-wenshuding/SKILL.md +5 -16
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +7 -7
- package/skills/weaver-e10-workflow/SKILL.md +41 -46
- package/skills/weaver-e10-workflow/references/source-manifest.json +39 -75
- package/skills/weaver-e10-workflow/references/workflow-batch.md +90 -29
- package/skills/weaver-e10-workflow/references/workflow-create.md +83 -109
- package/skills/weaver-e10-workflow/references/workflow-memory.md +19 -9
- package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -2
- package/skills/weaver-e10-workflow/references/workflow-query.md +40 -27
- package/skills/weaver-e10-workflow/references/workflow-share.md +18 -2
- package/skills/weaver-e10-workflow/references/workflow-view.md +3 -4
- package/skills/weaver-e10-yepiaotong/SKILL.md +74 -39
- package/skills/weaver-e10-yepiaotong/references/invoice-detail.md +22 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +3 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-output-view.md +135 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +15 -3
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +1 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-summarize.py +217 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-upload-and-validate.md +88 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-validation-preview.md +7 -2
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +89 -9
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +1 -0
- package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +70 -49
- package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +119 -0
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +55 -36
- package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +4 -0
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +149 -0
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +125 -5
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +430 -63
- package/skills/weaver-e10-yimiaoban/SKILL.md +4 -12
- package/skills/weaver-e10-yimiaoban/references/source-manifest.json +3 -3
- package/skills/weaver-e10-ziguanjia/SKILL.md +2 -1
- package/skills/weaver-e10-ziguanjia/references/ziguanjia-agent-entry.md +3 -3
- package/tools/weaver-skill-detector-1.0.13/SKILL.md +9 -9
- package/tools/weaver-skill-detector-1.0.13/references/checklist.md +3 -3
- package/tools/weaver-skill-detector-1.0.13/scripts/__pycache__/validate_skill.cpython-313.pyc +0 -0
- package/tools/weaver-skill-detector-1.0.13/scripts/validate_skill.py +98 -91
- package/scripts/sync-connector-skills.mjs +0 -172
|
@@ -1,52 +1,53 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: weaver-e10-meeting
|
|
3
|
-
display_name:
|
|
4
|
-
display_name_en: Weaver Meeting Management
|
|
5
|
-
description: "泛微 E10
|
|
6
|
-
description_zh: "泛微 E10
|
|
7
|
-
description_en: "Weaver E10 meeting management
|
|
8
|
-
version:
|
|
3
|
+
display_name: 泛微E10会议管理
|
|
4
|
+
display_name_en: Weaver E10 Meeting Management
|
|
5
|
+
description: "泛微 E10 会议管理,帮您处理会议日常事务:[会议]-查询今天/本周/我的会议与会议详情,预约建会(自动做会议室与参会人冲突检测),会议改期/换地点/改参会人、取消、删除;[会议室]-查询会议室与占用/空闲情况;[参会与回执]-查参会人名单、填写/更新会议回执;[签到]-查签到与签退情况、补签、补签退、清除签到记录;[会议资料]-会议议题(查看/更新/删除)、议题类型、会议纪要查询、会议类型与应用设置。认证与会话由 weaver-e10-shared 提供。"
|
|
6
|
+
description_zh: "泛微 E10 会议管理,帮您处理会议日常事务:[会议]-查询今天/本周/我的会议与会议详情,预约建会(自动做会议室与参会人冲突检测),会议改期/换地点/改参会人、取消、删除;[会议室]-查询会议室与占用/空闲情况;[参会与回执]-查参会人名单、填写/更新会议回执;[签到]-查签到与签退情况、补签、补签退、清除签到记录;[会议资料]-会议议题(查看/更新/删除)、议题类型、会议纪要查询、会议类型与应用设置。认证与会话由 weaver-e10-shared 提供。"
|
|
7
|
+
description_en: "Weaver E10 meeting management for daily meeting tasks: [Meetings] query today's / this week's / my meetings and meeting details, book meetings with automatic room & attendee conflict checks, reschedule / change location / change attendees, cancel, delete; [Rooms] query meeting rooms and occupancy / availability; [Attendees & receipts] view attendee lists, fill in / update meeting receipts; [Sign-in] view sign-in / sign-out status, manual sign-in, manual sign-out, clear sign-in records; [Meeting content] meeting agenda (view / update / delete), agenda types, minutes query, meeting types and application settings. Auth and session are provided by weaver-e10-shared."
|
|
8
|
+
version: 2.6.0
|
|
9
9
|
author: 泛微网络科技股份有限公司
|
|
10
10
|
agent_created: true
|
|
11
11
|
requires:
|
|
12
12
|
bins: ["weaver-work-cli"]
|
|
13
13
|
dependencies:
|
|
14
|
-
- weaver-e10-
|
|
14
|
+
- weaver-e10-shared
|
|
15
15
|
cliHelp: "weaver-work-cli meeting --help"
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
# 泛微 E10 会议管理 Skill
|
|
18
|
+
# 泛微 E10 会议管理 Skill(双模式:标准版 + EB 版)
|
|
19
19
|
|
|
20
|
-
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON
|
|
20
|
+
**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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
21
|
+
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
|
|
21
22
|
|
|
22
23
|
凭证边界:所有 E10 调用凭证一律由 `weaver-work-cli` 的登录托管凭据(`auth` 命令/profile 体系)提供,禁止硬编码任何密钥,禁止向用户索取 Cookie、ETEAMSID、Token 或密码。
|
|
23
24
|
|
|
24
25
|
本 Skill 通过 `weaver-work-cli meeting` 命令调用真实 operation,不绕过 CLI 直接拼接口。
|
|
25
26
|
|
|
26
|
-
##
|
|
27
|
+
## 触发场景(用户这样说时使用本 Skill)
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
- 会议查询:「今天的会议」「我的会议」「下周有什么会」「这场会谁参加」「会议详情」
|
|
30
|
+
- 预约与变更:「帮我约个会」「订个会议室」「周会改到周三」「换个地点」「取消这个会」「删掉这条会议」
|
|
31
|
+
- 冲突与空闲:「这个时间会议室空着吗」「谁有空」「有冲突吗」
|
|
32
|
+
- 签到:「谁签到了」「签到率多少」「张三签到了吗」「帮他补签」「补签退」「清掉误签」
|
|
33
|
+
- 回执:「帮我回执不参加」「谁还没回执」「回执情况」
|
|
34
|
+
- 会议室/类型查询:「有哪些会议室」「会议室占用情况」「有哪些会议类型」
|
|
35
|
+
- EB 版独有(仅 mode=eb):「会议议题」「议题类型」「会议纪要」「上会申请」「应用设置」
|
|
36
|
+
- **不触发**(转对应 Skill):日程/日历类 → `weaver-e10-calendar`;审批流程发起 → `weaver-e10-workflow`;人员/部门查询 → `weaver-e10-hrm`。
|
|
31
37
|
|
|
32
38
|
## 认证与请求头契约
|
|
33
39
|
|
|
34
|
-
登录与会话由
|
|
35
|
-
|
|
36
|
-
CLI 发往 E10 的每个请求都自动携带以下三项用户信息参数,**缺一不可**(业务入参里不要传这些字段,也不要手工拼装请求头):
|
|
40
|
+
登录与会话由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系统一托管。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
eteamsid: <登录返回的 ETEAMSID>
|
|
41
|
-
User-Agent: AgentType=<agentType>,IsAgent=true
|
|
42
|
-
```
|
|
42
|
+
- 本 Skill 的实际调用由 `weaver-work-cli` 托管:凭据与本地化相关请求头(含 `langType` / `timeZoneOffset`)均由 CLI 请求运行时统一携带。Agent **不得**自行拼装请求头、不得读取 `~/.e10-cli` 等凭证文件、不得向用户索取 Cookie / ETEAMSID / Token / 密码。
|
|
43
|
+
- 依赖缺失处理:必需依赖 `weaver-e10-shared`(共享规则:安装、E10 认证、JSON 输出与高风险写入规范)缺失时,明确告知用户缺失的 Skill 名,**就绪前不执行任何功能**;人员/部门名称 ↔ id 转换另需 `weaver-e10-hrm`(未安装时,相关字段请让用户直接提供 id)。
|
|
43
44
|
|
|
44
45
|
## 路由优先级
|
|
45
46
|
|
|
46
47
|
1. 先判断用户意图是否属于会议域:会议、会议室、预约/建会、会议冲突、签到、回执、会议类型、占用视图。
|
|
47
|
-
2. **属于本模块 → 第一步强制跑 `meeting.env.detect` 确定环境模式**(默认按 baseUrl 读缓存;用户说"重新探测/刷新模式"时传 `refresh:true
|
|
48
|
-
- `mode=standard` →
|
|
49
|
-
- `mode=eb` →
|
|
48
|
+
2. **属于本模块 → 第一步强制跑 `meeting.env.detect` 确定环境模式**(默认按 baseUrl 读缓存;用户说"重新探测/刷新模式"时传 `refresh:true`)。**注意:只要结论要用于回答用户"当前走的是标准版还是 EB 版",就必须传 `refresh:true` 实探测,不能拿缓存结论作答**——缓存可能是旧环境的结论,且 EB 冒烟失败时的回退原因(`ebSmokeFailed`/`ebSmokeError`)只在实探测结果里出现:
|
|
49
|
+
- `mode=standard` → 使用「命令表(标准版)」的 operation;
|
|
50
|
+
- `mode=eb` → **改用「命令表(EB 版)」的 `meeting.eb.*` operations**;禁止在 EB 环境下调用标准版 operations(两套接口/数据互不相通,标准接口查 EB 数据只会得到空结果),也禁止拿标准接口结果冒充 EB 数据;
|
|
50
51
|
- `env_unavailable` → 提示环境会议应用未安装或接口未配置完整,停止。
|
|
51
52
|
3. 不确定字段先跑 `weaver-work-cli meeting schema`。
|
|
52
53
|
4. 不属于本模块(日程、审批流程、组织查询)→ 转对应 Skill(calendar / workflow / hrm)。
|
|
@@ -61,9 +62,13 @@ User-Agent: AgentType=<agentType>,IsAgent=true
|
|
|
61
62
|
- 「删除会议记录」→ `meeting.delete.prepare` → 确认后 `apply`。
|
|
62
63
|
- 「提前结束会议」→ **CLI 不支持**(服务端 `overMeeting` 为空实现,调用会假成功但不生效),如实告知用户并建议在系统页面操作。
|
|
63
64
|
- 「回执为否 / 请假」→ `meeting.receipt.update.prepare`(自动回查回执记录 id)→ 确认后 `apply`。
|
|
64
|
-
- 「签到情况」→ `meeting.sign.list
|
|
65
|
+
- 「签到情况」→ `meeting.sign.list`(输出已签/未签统计;其 `signs[].id` 是**签到记录 id**,补签/清除要用它,不是会议 id)。
|
|
66
|
+
- 「补签 / 帮他补上签到」→ 先 `meeting.sign.list` 定位记录 → `meeting.sign.mark.prepare` → 确认后 `apply`;「补签退」用 `meeting.sign.back.prepare`。二者会改写签到事实,必须用户明确确认。
|
|
67
|
+
- 「清除签到记录 / 撤销签到」→ `meeting.sign.clear.prepare` → 确认后 `apply`。
|
|
68
|
+
- 「我要签到 / 扫码签到」→ **CLI 不支持**(依赖现场二维码票据 qrticket 与设备 IP),引导用户现场扫码或走 H5 签到;**绝不代签**。
|
|
69
|
+
- **EB 模式(mode=eb)下,同一意图改用 EB operations**(见「命令表(EB 版)」):今天的会议 → `meeting.eb.meeting.list`(先 count 再 list);建会 → 先读 `meeting.eb.baseSet.get` 判断是否需走流程,再 `meeting.eb.meeting.create.prepare`(**prepare 内部自动执行会议室/参会人冲突检测**:命中禁止提交 → `conflict_rejected` 直接停止;仅提醒 → 只写入 `warnings`,建议换时间/换地点,不提供绕过选项);变更/取消 → `meeting.eb.meeting.change.prepare`(取消用 `operate_type=CANCEL`、`mt_status=4`);签到 → `meeting.eb.sign.list`;回执 → `meeting.eb.receipt.list`;纪要 → `meeting.eb.minute.list`;议题 → `meeting.eb.topic.list`。
|
|
65
70
|
|
|
66
|
-
##
|
|
71
|
+
## 命令表(标准版,仅 mode=standard 使用)
|
|
67
72
|
|
|
68
73
|
| 用户意图 | CLI operation | Reference |
|
|
69
74
|
| --- | --- | --- |
|
|
@@ -82,13 +87,38 @@ User-Agent: AgentType=<agentType>,IsAgent=true
|
|
|
82
87
|
| 回执列表 | `meeting.receipt.list` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
|
|
83
88
|
| 更新回执 | `meeting.receipt.update.prepare` → `apply` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
|
|
84
89
|
| 签到记录与统计 | `meeting.sign.list` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
|
|
90
|
+
| 补签 / 补签退 | `meeting.sign.mark.prepare` → `apply` / `meeting.sign.back.prepare` → `apply` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
|
|
91
|
+
| 清除签到记录 | `meeting.sign.clear.prepare` → `apply` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
|
|
92
|
+
|
|
93
|
+
## 命令表(EB 版,仅 mode=eb 使用)
|
|
94
|
+
|
|
95
|
+
> 全部 EB operation 的实现契约(interfacePk、URL query 参数、写操作 body 结构)见 [meeting-eb.md](references/meeting-eb.md)。
|
|
96
|
+
|
|
97
|
+
| 用户意图 | CLI operation | Reference |
|
|
98
|
+
| --- | --- | --- |
|
|
99
|
+
| EB 会议列表 / 详情 | `meeting.eb.meeting.list` / `meeting.eb.meeting.detail` | [meeting-eb.md](references/meeting-eb.md) |
|
|
100
|
+
| EB 建会 / 变更 / 删除 | `meeting.eb.meeting.create.prepare`→`apply` / `meeting.eb.meeting.change.prepare`→`apply` / `meeting.eb.meeting.delete.prepare`→`apply` | [meeting-eb.md](references/meeting-eb.md) |
|
|
101
|
+
| EB 会议室列表 / 详情 | `meeting.eb.room.list` / `meeting.eb.room.detail` | [meeting-eb.md](references/meeting-eb.md) |
|
|
102
|
+
| EB 会议室新建 / 更新 / 删除 | `meeting.eb.room.create` / `.update` / `.delete`(各 prepare→apply) | [meeting-eb.md](references/meeting-eb.md) |
|
|
103
|
+
| EB 会议室占用列表 / 详情 | `meeting.eb.roomUsage.list` / `.detail` | [meeting-eb.md](references/meeting-eb.md) |
|
|
104
|
+
| EB 占用新建 / 删除 | `meeting.eb.roomUsage.create` / `.delete`(prepare→apply) | [meeting-eb.md](references/meeting-eb.md) |
|
|
105
|
+
| EB 签到列表 / 详情 | `meeting.eb.sign.list` / `.detail` | [meeting-eb.md](references/meeting-eb.md) |
|
|
106
|
+
| EB 签到新建 / 更新 | `meeting.eb.sign.create` / `.update`(prepare→apply) | [meeting-eb.md](references/meeting-eb.md) |
|
|
107
|
+
| EB 回执列表 / 详情 | `meeting.eb.receipt.list` / `.detail` | [meeting-eb.md](references/meeting-eb.md) |
|
|
108
|
+
| EB 回执新建 / 更新 | `meeting.eb.receipt.create` / `.update`(prepare→apply) | [meeting-eb.md](references/meeting-eb.md) |
|
|
109
|
+
| EB 纪要列表(纪要创建未实现) | `meeting.eb.minute.list` | [meeting-eb.md](references/meeting-eb.md) |
|
|
110
|
+
| EB 会议类型列表 / 新建 / 删除 | `meeting.eb.type.list` / `.create` / `.delete` | [meeting-eb.md](references/meeting-eb.md) |
|
|
111
|
+
| EB 议题类型列表 / 详情 / 更新 / 删除 | `meeting.eb.topicType.list` / `.detail` / `.update` / `.delete` | [meeting-eb.md](references/meeting-eb.md) |
|
|
112
|
+
| EB 会议议题列表 / 详情 / 更新 / 删除 | `meeting.eb.topic.list` / `.detail` / `.update` / `.delete` | [meeting-eb.md](references/meeting-eb.md) |
|
|
113
|
+
| EB 应用设置(判断审批/流程建会) | `meeting.eb.baseSet.get` | [meeting-eb.md](references/meeting-eb.md) |
|
|
114
|
+
| EB 会议室 / 参会人冲突检测(只查不建) | `meeting.eb.conflict.room` / `.member` | [meeting-eb.md](references/meeting-eb.md) |
|
|
85
115
|
|
|
86
116
|
## 处理链:预约会议(高风险写,强制确认链)
|
|
87
117
|
|
|
88
|
-
1. **环境模式确定(强制第一步)**:跑 `meeting.env.detect`(默认读缓存,`refresh:true` 强制刷新);`mode=eb` →
|
|
118
|
+
1. **环境模式确定(强制第一步)**:跑 `meeting.env.detect`(默认读缓存,`refresh:true` 强制刷新);`mode=eb` → 本处理链改用 EB operations:先 `meeting.eb.baseSet.get` 读 `only_flow_create`/`open_mt_approve` 判断是否需走流程(需走 → 提示走 workflow,CLI 不直接建会),再 `meeting.eb.meeting.create.prepare`;`env_unavailable` → 提示并停止。
|
|
89
119
|
2. 解析意图:名称 / 时间(`yyyy-MM-dd HH:mm`)/ 会议室 / 参会人 / 类型;缺失字段先向用户确认,**禁止字段未确认直接建会**。
|
|
90
120
|
3. `meeting.room.list`(带时间范围)推荐空闲会议室、`meeting.type.list` 推荐类型,交用户点选。
|
|
91
|
-
3. `meeting.create.prepare`:自动执行建会路径检查(`onlyFlowCreate=1` 或周期工作流 → 拒绝并提示走流程)与**强制冲突检测**(接口失败视为冲突;`cansub=false` 直接拒绝;`cansub=true` 有冲突描述 → warnings
|
|
121
|
+
3. `meeting.create.prepare`:自动执行建会路径检查(`onlyFlowCreate=1` 或周期工作流 → 拒绝并提示走流程)与**强制冲突检测**(接口失败视为冲突;`cansub=false` 直接拒绝;`cansub=true` 有冲突描述 → warnings 如实告知并建议换时间/地点,**但不阻止提交**:用户了解冲突后仍要求新建时可继续 `apply`)。
|
|
92
122
|
4. 向用户摘要 preview(含 caller/contacter 默认当前用户、周期 `repeatDesc` 自动拼接)。
|
|
93
123
|
5. 用户明确确认 → `meeting.create.apply`(`confirm: true` + continuation,**10 分钟内有效,过期重新 prepare**)。
|
|
94
124
|
6. 结果回读用 `meeting.list`,会议链接由 Agent 按 `{baseUrl}/sp/meeting/meetingSingle?meetingId={id}` 内联输出。
|
|
@@ -97,7 +127,7 @@ User-Agent: AgentType=<agentType>,IsAgent=true
|
|
|
97
127
|
|
|
98
128
|
1. 先用 `meeting.list`(或用户给出的会议 id)定位目标会议,必要时把 `[名称]({baseUrl}/sp/meeting/meetingSingle?meetingId={id})` 给用户核对。
|
|
99
129
|
2. `meeting.change.prepare`(变更)/ `meeting.cancel.prepare` / `meeting.delete.prepare`(入参 `id`):CLI 先**回查会议存在性**;`change` 还会按会议状态自动决定 `operateType`(草稿=UPDATE、正常=CHANGE)。**权限判定交给服务端**,CLI 不做权限预判。成功返回 `preview` + `continuation`(10 分钟有效)。
|
|
100
|
-
3.
|
|
130
|
+
3. 向用户摘要动作与后果(变更=覆盖所提交字段、当前状态与分流类型;取消=会议进入取消状态、占用/回执/签到失效;删除=**移入回收站**、不再出现在正常列表),**取得明确确认**。变更只提交 preview 中列出的字段。
|
|
101
131
|
4. 用户确认 → `meeting.*.apply`(`confirm: true` + continuation)。
|
|
102
132
|
5. 结果回读:`meeting.list` 确认状态(取消/删除后该会议不应再出现在正常列表)。
|
|
103
133
|
6. **禁止**跳过 prepare 直接 apply;**禁止**在未确认目标存在时执行写操作。
|
|
@@ -121,7 +151,11 @@ User-Agent: AgentType=<agentType>,IsAgent=true
|
|
|
121
151
|
- 禁止绕过 CLI 直接 `curl`/`fetch` E10 接口;禁止读取认证目录与 Cookie。
|
|
122
152
|
- **历史变更**:旧 `meeting.update.*` 已下线(它固定发送 `operateType=UPDATE`,与业务语义不符),改由 `meeting.change.*` 按会议状态自动分流;迁移说明见 [meeting-update.md](references/meeting-update.md)。
|
|
123
153
|
- **提前结束会议(meeting.over)不提供**:服务端接口为空实现(源码中 service 调用被注释、直接返回成功),调用只会得到"假成功";请引导用户在系统页面操作,禁止绕过 CLI 自行拼接口。
|
|
124
|
-
- EB
|
|
154
|
+
- **EB 版已实现**(`meeting.eb.*`,覆盖会议/会议室/占用/签到/回执/纪要/会议类型/议题类型/会议议题/应用设置的全部 interfacePk):`mode=eb` 时必须使用它们,**不要**再回答"EB 版未实现"。注意**标准版会议本身没有议题/纪要能力**(EB 版才有)——若当前是 standard 模式而用户问议题/纪要,如实说明属 EB 版能力(EB 环境下才可查)。
|
|
155
|
+
- EB 版纪要**创建**未实现(该功能走 OpenAPI、无自定义 interfacePk),仅支持 `meeting.eb.minute.list` 查询。
|
|
125
156
|
- 周期会议走工作流(`repeatWorkFlowBaseIds` 非空)与 `onlyFlowCreate=1` 的流程建会需要工作流集成,CLI 会主动拒绝。
|
|
126
|
-
-
|
|
127
|
-
-
|
|
157
|
+
- **冲突处置严格按应用设置,CLI 不额外加码**:`=1`「禁止提交」→ 怎么都不允许提交(抛 `conflict_rejected`,不询问、不新建);`=0`「仅提醒」→ 如实告知冲突并建议换时间/换地点,**但不阻止提交** —— 用户了解冲突后仍要求新建时,可继续 `apply` 完成建会。**检测失败 → `conflict_check_failed` 拒绝**(策略无法判定时保守处理)。
|
|
158
|
+
- **签到**:查询统计(`meeting.sign.list`)与写操作(补签 `meeting.sign.mark`、补签退 `meeting.sign.back`、清除签到 `meeting.sign.clear`)**已实现**;**本人扫码签到(`signMeeting`)不提供**——它依赖现场二维码票据(qrticket)与设备 IP,由 AI 代签会破坏签到真实性,请引导用户现场扫码或走 H5 签到;签到二维码与大屏签到未实现。
|
|
159
|
+
- **删除是软删**:`meeting.delete` 走 `update mt_detail set delete_type = 2`,会议**进入回收站、可以还原**;CLI 暂无还原能力,需要恢复时请引导用户到**会议回收站页面**操作。**不要**再对用户说"彻底删除、不可逆"。
|
|
160
|
+
- **标准版**会议室管理(`addMeetingRoom`/`updateMeetingRoom`/`deleteMeetingRoom`/`lockMeetingRoom`)与会议类型管理接口未实现;EB 版请用 `meeting.eb.room.*` / `meeting.eb.type.*`。
|
|
161
|
+
- **会议变更 / 取消 / 删除已实现**(`meeting.change.*` / `meeting.cancel.*` / `meeting.delete.*`,见「命令表」与「处理链」),不要因为本节的旧描述而把用户推去页面手改。当前唯一"未实现"的会议生命周期动作是**提前结束会议**(`meeting.over`,服务端空实现,调用只会假成功)。
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- 必填 `id`,再给出**至少一个**要修改的字段(否则报 `no_changes`)。
|
|
16
16
|
- 可改字段:`name` / `beginDatetime` / `endDatetime` / `address` / `customizeAddress` / `mtType` / `hrmMembers` / `orgMembers` / `otherMembers` / `crmMembers` / `totalMember` / `caller` / `contacter`。
|
|
17
17
|
- 时间格式 `yyyy-MM-dd HH:mm`;长 id 用字符串;人员/部门/客户字段用逗号分隔 id 串。
|
|
18
|
+
- **人员 id 口径**:`hrmMembers`/`orgMembers`/`caller`/`contacter` 一律用 `weaver-work-cli hrm run hrm.employee.query` 返回的 **`id`**,不是 `userid`、不是 `cid`——填错口径服务端**不报错**,只是参会人加不上。不确定先用 `hrm.employee.batch --input-json '{"ids":["<候选id>"]}'` 反查(能返回姓名才对)。加人属于会影响真人的字段,改前必须让用户核对名单。
|
|
18
19
|
- **只提交显式给出的字段**:`preview.changedFields` 列出本次将提交的字段;未列出的主表字段是否保持原值由服务端决定(源码只确认提醒/议题/服务会按 id 回填)。若担心覆盖,请把需要保持不变的主表字段一并显式传入。
|
|
19
20
|
|
|
20
21
|
## 命令
|
|
@@ -22,9 +23,9 @@
|
|
|
22
23
|
Windows PowerShell:
|
|
23
24
|
|
|
24
25
|
```powershell
|
|
25
|
-
weaver-work-cli --json meeting run meeting.change.prepare --input-json '{
|
|
26
|
+
weaver-work-cli --json meeting run meeting.change.prepare --input-json '{"id":"1305624900858404950","beginDatetime":"2026-09-18 15:00","endDatetime":"2026-09-18 16:00"}'
|
|
26
27
|
# 用户确认后(continuation 与字段都保持一致):
|
|
27
|
-
weaver-work-cli --json meeting run meeting.change.apply --input-json '{
|
|
28
|
+
weaver-work-cli --json meeting run meeting.change.apply --input-json '{"confirm":true,"continuation":"<prepare返回>","id":"1305624900858404950","beginDatetime":"2026-09-18 15:00","endDatetime":"2026-09-18 16:00"}'
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
macOS/Linux(bash/zsh):
|
|
@@ -55,6 +56,8 @@ weaver-work-cli --json meeting run meeting.change.apply --input-json '{"confirm"
|
|
|
55
56
|
## 注意
|
|
56
57
|
|
|
57
58
|
- 变更、取消、删除都是**写操作**:`apply` 的字段必须与 `prepare` 完全一致(不一致报 `target_changed`)。
|
|
59
|
+
- **`apply` 不接受 `operateType`**(schema 为 `additionalProperties: false`):CLI 会在 apply 时**重新探测会议状态,并要求与 prepare 的分流一致**——一致则按探测值发送;状态已变化(如正常→草稿、已结束)则报 `target_changed`,需重新 prepare(见下一条),**不会自动切换**。因此拿 `preview.body` 拼 apply 入参时,**必须先剔除 `operateType`**,只传业务字段 + `confirm` + `continuation`。
|
|
60
|
+
- 长 `continuation` 建议**落盘传文件**而不是内联:`prepare` 结果写进 `.json` → 用脚本把 `continuation` 与 `preview.body`(剔掉 `operateType`)合成 apply 入参文件 → `--input <路径>`。内联 `--input-json` 长串容易被 shell 转义搞坏(Windows PowerShell 尤其明显)。
|
|
58
61
|
- 会议状态在 prepare 与 apply 之间发生变化(如正常→草稿或已结束),CLI 会报 `target_changed` 并要求重新 prepare。
|
|
59
62
|
- 改期不会自动做冲突检测——需要时应先跑 `meeting.conflict.room` / `meeting.conflict.member` 核对目标时间段。
|
|
60
63
|
- 示例中的 id 为 `PLACEHOLDER_VALUE`。
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
- 必填:`name`、`beginDatetime`、`endDatetime`(`yyyy-MM-dd HH:mm`)。
|
|
10
10
|
- `caller`/`contacter` 缺省当前登录用户(后端 contacter 无兜底,CLI 已显式默认)。
|
|
11
11
|
- 会议室 `address`、类型 `mtType`、参会人 `hrmMembers`/`orgMembers`(逗号分隔 id 字符串)。
|
|
12
|
+
- **人员 id 口径(踩过坑,务必照做)**:`hrmMembers`/`orgMembers`/`caller`/`contacter` 吃的是 **`weaver-work-cli hrm run hrm.employee.query` 返回的 `id` 字段**,多人用逗号分隔。**不要用 `userid`,也不要用 `cid`**——`userid` 填进去服务端解析不出人且**不报错**,参会人会静默丢失(召集人恰好 id == 登录 userId 时会让人误以为该用 userid 那套)。不确定就用 `hrm.employee.batch --input-json '{"ids":["<候选id>"]}'` 反查:能返回姓名才是正确口径。姓名 → id 的转换依赖 `weaver-e10-hrm`。
|
|
12
13
|
- 周期会议:`repeatType`(1=每天 2=每周 4=每月 5=每年 6=自定义)+ `finishAt`(1=次数 2=日期,**禁止 0=永不**)+ `count`/`until`;`repeatDesc` 缺省按规则自动拼接(如 `每 1 周 周一 周三 周五 重复5次 非工作日正常召开`)。
|
|
13
14
|
|
|
14
15
|
## 命令
|
|
@@ -42,7 +43,7 @@ weaver-work-cli --json meeting run meeting.create.apply --input-json '{"confirm"
|
|
|
42
43
|
## 注意
|
|
43
44
|
|
|
44
45
|
- `prepare` 内部已强制执行冲突检测(接口失败视为冲突、`cansub=false` 直接拒绝),独立冲突 operation 用于"只查不建"场景。
|
|
45
|
-
-
|
|
46
|
+
- 冲突**严格按应用设置**处置,CLI 不加码:`cansub=false`(禁止提交)直接终止;`cansub=true` 有冲突描述(仅提醒)只写入 `warnings`,**不阻止提交** —— 用户了解冲突后仍要求新建时,可继续确认并 `apply`。
|
|
46
47
|
- `onlyFlowCreate=1` 或周期会议配置了工作流(`repeatWorkFlowBaseIds` 非空)时 `prepare` 主动拒绝(`conflict_rejected`),提示走流程建会。
|
|
47
48
|
|
|
48
49
|
## 失败处理
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# EB 版(eBuilder 会议应用)operations
|
|
2
|
+
|
|
3
|
+
## 何时使用
|
|
4
|
+
|
|
5
|
+
`meeting.env.detect` 判定 **`mode=eb`** 时,全部意图改用 `meeting.eb.*`。
|
|
6
|
+
|
|
7
|
+
> 标准版与 EB 版是**两套独立接口与数据**:标准版是 Java REST(`/api/meeting/**`、表 `mt_detail` 等),
|
|
8
|
+
> EB 版是 eBuilder formdata(`/api/ebuilder/form/formdata/v2/**`、表 `uf_*`)。**不可混用、数据互不相通**——
|
|
9
|
+
> 在 EB 环境调用标准版接口只会拿到空数据。
|
|
10
|
+
> EB 版独有:议题、纪要(标准版会议本身没有这两类数据)。
|
|
11
|
+
|
|
12
|
+
## 调用约定(实现已内建,了解即可排错)
|
|
13
|
+
|
|
14
|
+
| 环节 | 约定 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| 路径 | `/api/ebuilder/form/formdata/v2/{saveFormData|updateFormData|deleteFormData|getFormDataByPk|getFormDataList|getFormDataCount}/{interfacePk}` |
|
|
17
|
+
| 列表/总数 | 筛选条件走 **URL query**(参数名为 eBuilder 配置的占位符名,如 `hrmmember`、`mt_status`,**不是表 dataKey**);body 必须带 `datajson`;CLI 先 count 再 list(同条件),`total` 来自 count |
|
|
18
|
+
| 详情 | `getFormDataByPk`,body 顶层 `mainTable.id` |
|
|
19
|
+
| 写操作 | body 用 **`datas` 数组**包裹 `mainTable`(缺 `datas` 会报"datas节点未找到"),`header.operator` 为当前用户 |
|
|
20
|
+
| 日期字段 | 一律 `yyyy-MM-dd HH:mm`(**不带秒**,带秒报"不满足传入格式") |
|
|
21
|
+
| 人员 id | 传**员工 id**(不是姓名、不是 userid 以外的其它口径);姓名→id 用 `weaver-e10-hrm` |
|
|
22
|
+
| 新建/更新 | create 不传 id(系统生成);update/delete 必传 id |
|
|
23
|
+
|
|
24
|
+
## operation 清单
|
|
25
|
+
|
|
26
|
+
| 模块 | 读 | 写(prepare → apply) | interfacePk |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| 会议 6.x | `meeting.eb.meeting.list` / `.detail` | `meeting.eb.meeting.create` / `.change` / `.delete` | query_mtDetail_list(+count) / query_mtDetail_info / create_meeting / change_meeting / delete_mtDetail |
|
|
29
|
+
| 会议室 2.x | `meeting.eb.room.list` / `.detail` | `meeting.eb.room.create` / `.update` / `.delete` | query_meeting_room_list(+count) / query_room_info / create_room / update_room / delete_room |
|
|
30
|
+
| 占用 5.x | `meeting.eb.roomUsage.list` / `.detail` | `meeting.eb.roomUsage.create` / `.delete` | query_roomusage_list(+count) / query_roomusage / create_roomusage / delete_roomusage |
|
|
31
|
+
| 签到 1.x | `meeting.eb.sign.list` / `.detail` | `meeting.eb.sign.create` / `.update` | query_meeting_sign_list(+count) / query_meeting_sign_info / create_meeting_sign / update_meeting_sign_info |
|
|
32
|
+
| 回执 4.x | `meeting.eb.receipt.list` / `.detail` | `meeting.eb.receipt.create` / `.update` | query_meeting_receipt_list(+count) / query_meeting_receipt / create_meeting_receipt / update_meeting_receipt |
|
|
33
|
+
| 纪要 3.x | `meeting.eb.minute.list` | **创建未实现**(走 OpenAPI,无自定义 interfacePk) | query_meeting_minute_list(+count) |
|
|
34
|
+
| 会议类型 3.5 | `meeting.eb.type.list` | `meeting.eb.type.create` / `.delete` | query_mt_type_list(+count) / create_mt_type / delete_mt_type |
|
|
35
|
+
| 议题类型 8.x | `meeting.eb.topicType.list` / `.detail` | `meeting.eb.topicType.update` / `.delete` | query_mt_topicType_list(+count) / query_mt_topicType_info / update_mt_topicType_info / delete_mt_topicType_info |
|
|
36
|
+
| 会议议题 9.x | `meeting.eb.topic.list` / `.detail` | `meeting.eb.topic.update` / `.delete` | query_mt_topic_list(+count) / query_mt_topic_info / update_mt_topic_info / delete_mt_topic_info |
|
|
37
|
+
| 应用设置 7.x | `meeting.eb.baseSet.get` | — | query_meeting_baseset |
|
|
38
|
+
| 冲突检测 | `meeting.eb.conflict.room` / `.member`(只读) | — | query_roomusage_list / query_mtDetail_list + query_meeting_receipt_list(+count) |
|
|
39
|
+
|
|
40
|
+
## 常用命令
|
|
41
|
+
|
|
42
|
+
Windows PowerShell:
|
|
43
|
+
|
|
44
|
+
```powershell
|
|
45
|
+
weaver-work-cli --json meeting run meeting.env.detect --input-json '{"refresh":true}'
|
|
46
|
+
weaver-work-cli --json meeting run meeting.eb.baseSet.get --input-json '{}'
|
|
47
|
+
weaver-work-cli --json meeting run meeting.eb.meeting.list --input-json '{"hrmmember":"100","mt_status":"2","pageSize":20}'
|
|
48
|
+
weaver-work-cli --json meeting run meeting.eb.meeting.detail --input-json '{"id":"1306126102057902085"}'
|
|
49
|
+
weaver-work-cli --json meeting run meeting.eb.meeting.create.prepare --input-json '{"mt_creator":"100","mt_name":"周会","begin_datetime":"2026-09-20 09:00","end_datetime":"2026-09-20 10:30","mt_status":"2","operate_type":"ADD"}'
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
macOS/Linux(bash/zsh):
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
weaver-work-cli --json meeting run meeting.env.detect --input-json '{"refresh":true}'
|
|
56
|
+
weaver-work-cli --json meeting run meeting.eb.baseSet.get --input-json '{}'
|
|
57
|
+
weaver-work-cli --json meeting run meeting.eb.meeting.list --input-json '{"hrmmember":"100","mt_status":"2","pageSize":20}'
|
|
58
|
+
weaver-work-cli --json meeting run meeting.eb.meeting.detail --input-json '{"id":"1306126102057902085"}'
|
|
59
|
+
weaver-work-cli --json meeting run meeting.eb.meeting.create.prepare --input-json '{"mt_creator":"100","mt_name":"周会","begin_datetime":"2026-09-20 09:00","end_datetime":"2026-09-20 10:30","mt_status":"2","operate_type":"ADD"}'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 输出处理
|
|
63
|
+
|
|
64
|
+
- list:`{ total, pageNo, pageSize, count, rows, filters }`——`total` 来自 count 接口,`rows` 是当前页数据。
|
|
65
|
+
- detail / baseSet:`{ id, data }` / `{ data, count }`(baseSet 多条时取第一条)。
|
|
66
|
+
- write prepare:`{ status: 'AWAITING_CONFIRMATION', preview: { interfacePk, kind, body, path, notes }, continuation }`——**先向用户摘要 body 内容再确认**。
|
|
67
|
+
- write apply:`{ status: 'COMPLETE', interfacePk, dataIds }`;回读用对应 list/detail 核对。
|
|
68
|
+
|
|
69
|
+
## 冲突检测(EB 版,强制)
|
|
70
|
+
|
|
71
|
+
> 2026-09-20 补齐:此前 EB 版建会**没有任何冲突校验** —— 重复占用同一间会议室、参会人在同一时段撞会都不会被拦住。
|
|
72
|
+
|
|
73
|
+
- **自动强制(建会/变更自带)**:`meeting.eb.meeting.create.prepare` 与 `meeting.eb.meeting.change.prepare` 在生成确认预览**之前**自动执行会议室与参会人冲突检测(传了 `address` / `hrm_members` 才会真的发起查询)。命中时按应用设置处置:
|
|
74
|
+
- `room_conflict=1` / `member_conflict=1`(禁止提交)→ 抛 `conflict_rejected`:**直接停止,不询问、不新建**;
|
|
75
|
+
- `room_conflict=0` / `member_conflict=0`(仅提醒)→ 写入 `warnings`:如实告知冲突并建议换时间/换地点,**但不阻止提交** —— 用户了解冲突后仍要求新建时,可继续 `apply` 完成建会;
|
|
76
|
+
- 检测请求本身失败 → 抛 `conflict_check_failed`(fail-closed:宁可拦住,不可漏检)。
|
|
77
|
+
- **只查不建**:`meeting.eb.conflict.room` / `meeting.eb.conflict.member`,返回 `verdict`:`ok` 无冲突 / `warn` 仅提醒 / `rejected` 禁止提交 / `skipped` 应用设置已关闭该项检测。
|
|
78
|
+
- **口径(与 standalone skill 一致,不可擅改)**:
|
|
79
|
+
- 策略来自 `meeting.eb.baseSet.get` → `room_conflict_chk` / `room_conflict`、`member_conflict_chk` / `member_conflict`(`chk=0` 表示关闭检测,**页面同样不校验**);
|
|
80
|
+
- 会议室:查占用视图 `query_roomusage_list`(`address` + 时间重叠:占用开始 < 我的结束 且 占用结束 > 我的开始;占用视图只对有效状态生成,无需再过滤状态);
|
|
81
|
+
- 参会人:**2 次请求方案(无 N+1)** —— `query_mtDetail_list`(时间范围 + `mt_status=1,2,8,9`)取候选会议 → `query_meeting_receipt_list?mt_id=<多值批量>`(分批 + 分页拉全)→ 本地求交集;**禁止**退回「逐场会议查回执」的旧做法;
|
|
82
|
+
- 参会人以**回执表 `member_id`** 为准(会议表 `hrm_members` 是渲染文本,不可靠),且只统计 `member_type=1`(参会人员);
|
|
83
|
+
- `org_members`(参会部门)CLI **不展开**成员,因此只有 `hrm_members` 参与人员冲突检测 —— 该情况会以 warning 如实说明,需要覆盖部门成员时请先把部门展开为员工 id。
|
|
84
|
+
- **冲突处置的唯一依据就是应用设置**(`room_conflict` / `member_conflict`),CLI 不额外加码、也不引入任何隐藏校验:
|
|
85
|
+
- `1`「禁止提交」→ 怎么都不允许提交,直接拒绝(`conflict_rejected`);
|
|
86
|
+
- `0`「仅提醒」→ 如实告知冲突并建议换时间/换地点;**用户坚持要新建,就可以继续新建**(`prepare` 只给 `warnings`,不阻止 `apply`)。
|
|
87
|
+
|
|
88
|
+
## 建会特别说明(EB 版)
|
|
89
|
+
|
|
90
|
+
1. 先 `meeting.eb.baseSet.get` 读 `only_flow_create` / `open_mt_approve` / `mt_new_wf`:
|
|
91
|
+
- `only_flow_create=1` 或审批开启 → **会议需经流程创建**,CLI 不直接建会,提示用户走 workflow;
|
|
92
|
+
- 未开启 → 可 `meeting.eb.meeting.create.prepare`。
|
|
93
|
+
2. `mt_hours` 由 CLI 按 `begin_datetime`/`end_datetime` **自动计算**(小时,支持小数),无需用户提供。
|
|
94
|
+
3. `caller`/`contacter` 未指明时 CLI 默认填当前用户。
|
|
95
|
+
4. 建会后若需占用/回执/签到数据:审批关闭(手动建会)时才由 CLI 生成 —— `meeting.eb.roomUsage.create`(占用的 `room_id` 取会议室 id、`startdate`/`enddate` 与会议一致)、`meeting.eb.receipt.create`(`member_manager` 取 `member_id`)、`meeting.eb.sign.create`(必填 `mt_id`)。
|
|
96
|
+
|
|
97
|
+
## 注意
|
|
98
|
+
|
|
99
|
+
- **取消会议**用 `meeting.eb.meeting.change.prepare`(`operate_type=CANCEL` 且 `mt_status=4`),没有独立 cancel 接口。
|
|
100
|
+
- `mt_status` 枚举:0草稿/1审批中/2未开始/3退回/4取消/5提前结束/6删除/7锁定/8结束/9进行中/10审批中(变更)/11审批中(取消)。
|
|
101
|
+
- 议题表 `uf_mt_topic` 在部分租户未注册,`meeting.eb.topic.list` 返回空数组属正常。
|
|
102
|
+
- `meeting.eb.sign.list` 展示时避免同时指定含 `sign_flag` 与 `attend_type` 的字段组合(后端可能 500)。
|
|
103
|
+
- 写操作一律 prepare → 用户确认 → apply;`apply` 的字段必须与 `prepare` 快照一致(不一致报 `target_changed`)。
|
|
104
|
+
|
|
105
|
+
## 失败处理
|
|
106
|
+
|
|
107
|
+
- 业务失败返回原文 message(如 `传入参数datajson为空或解析异常`、`请求参数不能为空`),**原样转达用户**。
|
|
108
|
+
- `missing_required_field`:缺少必填字段,按提示补齐。
|
|
109
|
+
- `datetime_invalid`:日期需 `yyyy-MM-dd HH:mm`(不带秒)。
|
|
110
|
+
- `eb_write_not_applied`:接口返回 `datajson.status=false`,服务端未生效,核对字段与权限。
|
|
111
|
+
- `target_changed` / `continuation_expired`:重新 prepare 并再次确认。
|
|
112
|
+
- `partial/write_uncertain`:写请求发出后连接中断,**禁止自动重试**,先 list/detail 回查是否已生效。
|
|
113
|
+
- `conflict_rejected`:命中冲突且应用设置为**禁止提交** —— 立即停止,建议用户换时间或换地点;若应用设置为**仅提醒**,则只写入 `warnings`(不抛错),**用户了解冲突后坚持新建时仍可继续提交**。
|
|
114
|
+
- `conflict_check_failed`:冲突检测接口调用失败(fail-closed,直接拒绝建会),核对占用/回执接口权限后重试。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 何时使用
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
取消一场会议(不开了)、删除会议记录(**移入回收站**)。
|
|
6
6
|
|
|
7
7
|
> 提前结束会议(`overMeeting`)**不在支持范围**:服务端该接口为空实现(service 调用被注释、直接返回成功),调用只会得到"假成功"但不生效。请引导用户在系统页面操作。
|
|
8
8
|
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
Windows PowerShell:
|
|
22
22
|
|
|
23
23
|
```powershell
|
|
24
|
-
weaver-work-cli --json meeting run meeting.cancel.prepare --input-json '{
|
|
24
|
+
weaver-work-cli --json meeting run meeting.cancel.prepare --input-json '{"id":"1305624900858404950"}'
|
|
25
25
|
# 用户确认后(continuation 原样传入):
|
|
26
|
-
weaver-work-cli --json meeting run meeting.cancel.apply --input-json '{
|
|
27
|
-
weaver-work-cli --json meeting run meeting.delete.prepare --input-json '{
|
|
26
|
+
weaver-work-cli --json meeting run meeting.cancel.apply --input-json '{"confirm":true,"continuation":"<prepare返回>","id":"1305624900858404950"}'
|
|
27
|
+
weaver-work-cli --json meeting run meeting.delete.prepare --input-json '{"id":"1305624900858404950"}'
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
macOS/Linux(bash/zsh):
|
|
@@ -38,14 +38,15 @@ weaver-work-cli --json meeting run meeting.delete.prepare --input-json '{"id":"1
|
|
|
38
38
|
## 输出处理
|
|
39
39
|
|
|
40
40
|
- `prepare` 返回 `AWAITING_CONFIRMATION` + `preview`(`action`/`id`/`body`/`note`)+ `continuation`。
|
|
41
|
-
- `apply` 返回 `COMPLETE` + `result`(接口原始返回);随后用 `meeting.list`
|
|
41
|
+
- `apply` 返回 `COMPLETE` + `result`(接口原始返回);随后用 `meeting.list` 回查确认(取消/删除后该会议不应再出现在正常列表)。
|
|
42
42
|
- 两个动作的语义区别:
|
|
43
|
-
- `cancel
|
|
44
|
-
- `delete
|
|
43
|
+
- `cancel`:会议进入**取消状态**(`mt_status=4`),占用/回执/签到随之失效;
|
|
44
|
+
- `delete`:**软删**——服务端 `deleteMeetingDetail` 执行 `update mt_detail set delete_type = 2`,会议**移入回收站、可以还原**(不是物理删除)。
|
|
45
45
|
|
|
46
46
|
## 注意
|
|
47
47
|
|
|
48
|
-
-
|
|
48
|
+
- 两者都是**写操作**:apply 前必须向用户明确说明动作与后果并取得确认。
|
|
49
|
+
- **不要对用户宣称"彻底删除、不可逆"**:删除只是移入回收站。CLI 目前**没有还原能力**,用户需要恢复时请引导其到**会议回收站页面**操作。
|
|
49
50
|
- 禁止跳过 prepare 直接 apply;apply 的 `id` 必须与 prepare 一致(不一致报 `target_changed`)。
|
|
50
51
|
- 示例中的 id 为 `PLACEHOLDER_VALUE`,实际使用请替换为真实查询结果。
|
|
51
52
|
|
|
@@ -2,14 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
## 何时使用
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
查会议回执情况、给某人回执(参加/不参加/请假)、查签到记录与统计,以及**补签 / 补签退 / 清除签到记录**。
|
|
6
6
|
|
|
7
7
|
## 输入要点
|
|
8
8
|
|
|
9
|
+
### 回执
|
|
10
|
+
|
|
9
11
|
- 回执更新**必须传回执记录主键 `id`**(不是 `memberId`);`prepare` 会自动按 `memberId` 回查定位。
|
|
10
12
|
- `attendStatus` 枚举:`0`=未填写、`1`=参加、`2`=不参加(回执"否/请假"传 2)。
|
|
11
13
|
- 回执列表接口必须带 `isMobile`(CLI 缺省 `false`;缺失会导致后端 NPE→500,已被 CLI 托管)。
|
|
12
14
|
|
|
15
|
+
### 签到
|
|
16
|
+
|
|
17
|
+
- **`meeting.sign.list` 返回的 `signs[].id` 是「签到记录 id」**——补签/补签退/清除签到用的就是它,**不是会议 id、也不是人员 id**;`mtId`(会议 id)可省略,CLI 会按记录回查,若显式传入则必须与记录一致(不一致报 `sign_record_mismatch`)。
|
|
18
|
+
- 三个写动作与源码接口一一对应(`MeetingSignController`):
|
|
19
|
+
- 补签 `meeting.sign.mark.*` → `signMeetingByHandOne`(写 `signtime`,**已有签到时间会被覆盖**)
|
|
20
|
+
- 补签退 `meeting.sign.back.*` → `signBackMeetingByHandOne`(写 `signbackTime`)
|
|
21
|
+
- 清除签到 `meeting.sign.clear.*` → `delSign`(清空签到/签退时间与地点,复位为未签到)
|
|
22
|
+
- `ip` 与 `tenantKey` 由服务端从请求注入,CLI 不传。
|
|
23
|
+
- **本人扫码签到(`signMeeting`)不提供**:依赖现场二维码票据(qrticket)与设备 IP,代签会破坏签到真实性;请引导用户现场扫码或走 H5 签到。
|
|
24
|
+
|
|
13
25
|
## 命令
|
|
14
26
|
|
|
15
27
|
Windows PowerShell:
|
|
@@ -20,29 +32,45 @@ weaver-work-cli --json meeting run meeting.receipt.update.prepare --input-json '
|
|
|
20
32
|
# 用户确认后:
|
|
21
33
|
weaver-work-cli --json meeting run meeting.receipt.update.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
|
|
22
34
|
weaver-work-cli --json meeting run meeting.sign.list --input-json '{"mtId":"1305624900858404950"}'
|
|
35
|
+
# 补签(id 取 sign.list 里的 signs[].id):
|
|
36
|
+
weaver-work-cli --json meeting run meeting.sign.mark.prepare --input-json '{"id":"1305624900858404951"}'
|
|
37
|
+
weaver-work-cli --json meeting run meeting.sign.mark.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","id":"1305624900858404951"}'
|
|
38
|
+
# 补签退 / 清除签到(同构,换 operation):
|
|
39
|
+
weaver-work-cli --json meeting run meeting.sign.back.prepare --input-json '{"id":"1305624900858404951"}'
|
|
40
|
+
weaver-work-cli --json meeting run meeting.sign.clear.prepare --input-json '{"id":"1305624900858404951"}'
|
|
23
41
|
```
|
|
24
42
|
|
|
25
43
|
macOS/Linux(bash/zsh):
|
|
26
44
|
|
|
27
45
|
```bash
|
|
28
46
|
weaver-work-cli --json meeting run meeting.receipt.list --input-json '{"mtId":"1305624900858404950"}'
|
|
29
|
-
weaver-work-cli --json meeting run meeting.receipt.update.prepare --input-json '{"mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
|
|
30
|
-
# 用户确认后:
|
|
31
|
-
weaver-work-cli --json meeting run meeting.receipt.update.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
|
|
32
47
|
weaver-work-cli --json meeting run meeting.sign.list --input-json '{"mtId":"1305624900858404950"}'
|
|
48
|
+
weaver-work-cli --json meeting run meeting.sign.mark.prepare --input-json '{"id":"1305624900858404951"}'
|
|
49
|
+
weaver-work-cli --json meeting run meeting.sign.mark.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","id":"1305624900858404951"}'
|
|
50
|
+
weaver-work-cli --json meeting run meeting.sign.back.prepare --input-json '{"id":"1305624900858404951"}'
|
|
51
|
+
weaver-work-cli --json meeting run meeting.sign.clear.prepare --input-json '{"id":"1305624900858404951"}'
|
|
33
52
|
```
|
|
34
53
|
|
|
35
54
|
## 输出处理
|
|
36
55
|
|
|
37
56
|
- `receipt.list` 返回 `receipts[]`(含 `id`/`memberId`/`attendStatus`/`remark`);`receipt.update.prepare` 返回 `preview`(含定位到的回执记录 `id`)。
|
|
38
57
|
- `sign.list` 返回 `signs[]` 与 `summary`(`total`/`signed`/`unsigned`),输出 Markdown 表格。
|
|
58
|
+
- 签到写操作的 `prepare` 返回 `preview`:`signRecordId` / `meetingId` / `userid`(记录里的即 sign 所属人员 id)/ `current`(现有签到与签退时间)/ `effect` / `warnings` / `note`。
|
|
59
|
+
- **确认前必须把 `preview` 转述给用户**:给谁(`userid`)、哪场会(`meetingId`)、当前状态、这次会改什么(`effect`),以及 `warnings`(如"已有签到时间会被覆盖""该人员尚未签到,先补签退可能不符合业务预期""没有签到记录,清除不会改变数据")。
|
|
60
|
+
- `apply` 成功返回 `COMPLETE` + `action` + `signRecordId` + `meetingId`;随后用 `meeting.sign.list` 回查。
|
|
39
61
|
|
|
40
62
|
## 注意
|
|
41
63
|
|
|
42
|
-
-
|
|
43
|
-
- `
|
|
64
|
+
- 回执与签到写操作都属于**改写事实**:apply 前必须取得用户对"目标对象 + 动作"的明确确认。
|
|
65
|
+
- 确认对象不要只念 id:签到场景先 `meeting.sign.list` 找到对应人员那行,把**人员姓名/账号 + 会议**说清楚再确认。
|
|
66
|
+
- 签到写操作接口返回 `WeaResult.success(false)` 表示未生效,CLI 会报 `sign_not_applied`(**不报成功**);此时先用 `meeting.sign.list` 复查记录是否还存在。
|
|
67
|
+
- 清除签到**无法通过 CLI 恢复**(服务端无恢复接口),必须提醒用户。
|
|
44
68
|
|
|
45
69
|
## 失败处理
|
|
46
70
|
|
|
71
|
+
- `receipt_not_found`:先用 `meeting.receipt.list` 核对 `memberId`。
|
|
72
|
+
- `sign_record_not_found`:id 不是签到记录 id(常见误传会议 id / 人员 id),先用 `meeting.sign.list` 取 `signs[].id`。
|
|
73
|
+
- `sign_record_mismatch`:传入的 `mtId` 与记录所属会议不一致,核对后重试。
|
|
74
|
+
- `sign_not_applied`:服务端未生效(记录可能已被删除),复查后重试。
|
|
47
75
|
- `target_changed` / `continuation_expired`:重新 prepare 再确认。
|
|
48
|
-
- 写请求发出后网络中断 → `partial/write_uncertain`:禁止自动重试,先 `meeting.receipt.list` 回查是否已生效。
|
|
76
|
+
- 写请求发出后网络中断 → `partial/write_uncertain`:禁止自动重试,先 `meeting.receipt.list` / `meeting.sign.list` 回查是否已生效。
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
|
|
5
5
|
- 业务术语为「变更」;CLI operation 为 `meeting.change.prepare` / `meeting.change.apply`。
|
|
6
6
|
- 旧 `meeting.update.*` 已下线:它会固定发送 `operateType=UPDATE`,与"草稿走 UPDATE、正常走 CHANGE"的真实业务语义不符。
|
|
7
|
-
-
|
|
7
|
+
- 本文件保留仅作迁移提示;**不要单独删除本文件**:`SKILL.md`「不在范围」仍引用它,且 `test/skills/layout.test.ts` 要求 `references/` 下每个 `.md` 都被 `SKILL.md` 链接。如需彻底移除,请同时删掉 `SKILL.md` 中的引用行。
|
|
@@ -11,27 +11,21 @@ agent_created: true
|
|
|
11
11
|
requires:
|
|
12
12
|
bins: ["weaver-work-cli"]
|
|
13
13
|
dependencies:
|
|
14
|
-
- weaver-e10-
|
|
14
|
+
- weaver-e10-shared
|
|
15
15
|
cliHelp: "weaver-work-cli okr --help"
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
# 泛微E10 OKR 目标管理
|
|
19
19
|
|
|
20
|
-
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON
|
|
20
|
+
**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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
21
|
+
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
|
|
21
22
|
|
|
22
23
|
本技能覆盖 OKR 目标管理业务域:**目标分页查询**、**目标详情**、**关键成果查询与保存**、**目标对齐**、**目标评论**、**目标详情页链接**、**链路判定**。所有写操作(新建/编辑目标、保存关键成果、添加目标对齐)全部走 `prepare -> apply` 确认协议。
|
|
23
24
|
|
|
24
25
|
## 认证与请求头契约
|
|
25
26
|
|
|
26
|
-
登录与会话由
|
|
27
|
+
登录与会话由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系统一托管。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
|
|
27
28
|
|
|
28
|
-
CLI 发往 E10 的每个请求都自动携带以下三项用户信息参数,**缺一不可**(业务入参里不要传这些字段,也不要手工拼装请求头):
|
|
29
|
-
|
|
30
|
-
```text
|
|
31
|
-
Cookie: <登录返回的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
|
|
32
|
-
eteamsid: <登录返回的 ETEAMSID>
|
|
33
|
-
User-Agent: AgentType=<agentType>,IsAgent=true
|
|
34
|
-
```
|
|
35
29
|
|
|
36
30
|
## 命令入口
|
|
37
31
|
|
|
@@ -135,5 +129,6 @@ weaver-work-cli --json okr run okr.list --input-json '{"period_type":"3","period
|
|
|
135
129
|
macOS/Linux(bash/zsh):
|
|
136
130
|
|
|
137
131
|
```bash
|
|
138
|
-
printf '%s
|
|
132
|
+
printf '%s
|
|
133
|
+
' '{"period_type":"3","period_range":"2026-09","page_size":10}' | weaver-work-cli --json okr run okr.list --input -
|
|
139
134
|
```
|
|
@@ -573,7 +573,7 @@
|
|
|
573
573
|
}
|
|
574
574
|
},
|
|
575
575
|
"artifactBaseline": {
|
|
576
|
-
"aggregateSha256": "
|
|
576
|
+
"aggregateSha256": "a7f377dea03cae7c8dfb0db3eafd1b99a87af21c10ab5dd04773d7b4270d9475",
|
|
577
577
|
"files": [
|
|
578
578
|
{
|
|
579
579
|
"path": "src/shortcuts/okr/errors.ts",
|
|
@@ -647,8 +647,8 @@
|
|
|
647
647
|
},
|
|
648
648
|
{
|
|
649
649
|
"path": "skills/weaver-e10-okr/SKILL.md",
|
|
650
|
-
"size":
|
|
651
|
-
"sha256": "
|
|
650
|
+
"size": 10465,
|
|
651
|
+
"sha256": "200e19e57c42b086b57294e3aacb6ab45d471c43374cf8c901a80644cd4e03d1"
|
|
652
652
|
},
|
|
653
653
|
{
|
|
654
654
|
"path": "docs/okr.md",
|
|
@@ -15,8 +15,8 @@ cliHelp: "weaver-work-cli plan --help"
|
|
|
15
15
|
|
|
16
16
|
# 泛微E10计划报告
|
|
17
17
|
|
|
18
|
-
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON
|
|
19
|
-
|
|
18
|
+
**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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
|
|
19
|
+
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
|
|
20
20
|
|
|
21
21
|
本技能覆盖报告业务域:**汇总生成报告**(多模块采集后整合)、**查询报告详情**、**分页查询报告**、**新建**、**修改**、**发布**、**撤回**、**发送提交提醒**、**查看报告评论**。写操作全部走 prepare→apply 确认协议。
|
|
22
22
|
|
|
@@ -105,7 +105,7 @@ weaver-work-cli --json plan run <operation> --input-json '{"key":"value"}'
|
|
|
105
105
|
4. 涉及人员 ID 时只取 `id` 或 `employeeId` 字段,**禁止取 `userId`**;人员信息通过 weaver-e10-hrm skill 获取。
|
|
106
106
|
5. 请求体中的雪花 ID(人员 ID、报告 ID 等)必须加引号包裹为字符串,避免精度丢失;直接用 CLI 的业务字段即可,CLI 会完成归一化。
|
|
107
107
|
6. 执行阶段与创建出的报告内容中,**决不允许出现报告相关的数据库英文字段名**(如 `content`、`f_content`、`summary`、`f_summary`、`plans`、`f_plans`、`year`、`f_year`、`type`、`f_type`、`serial_number`、`f_serial_number`)。CLI 已把 eb 链路返回值归一化为业务字段,Agent 直接使用 `report.*` 业务键即可,不要向用户复述接口原始结构。
|
|
108
|
-
7. 认证与会话由 CLI
|
|
108
|
+
7. 认证与会话由 CLI 托管,请求头三件套由 CLI 统一注入(唯一权威声明见 `weaver-e10-shared` 的「请求头契约」章节);若未登录先按共享规则读取 `../weaver-e10-shared/references/e10-auth-and-session.md` 并通过 `weaver-work-cli auth ...` 完成会话确认,禁止输出或索取任何凭证。
|
|
109
109
|
|
|
110
110
|
## 失败处理
|
|
111
111
|
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
### Step 0 前置准备(禁止调用任何报告接口)
|
|
26
26
|
|
|
27
|
-
- 若尚未确认登录态,先按共享规则读取 `../weaver-e10-shared/references/e10-auth-and-session.md` 并通过 `weaver-work-cli auth ...`
|
|
27
|
+
- 若尚未确认登录态,先按共享规则读取 `../weaver-e10-shared/references/e10-auth-and-session.md` 并通过 `weaver-work-cli auth ...` 确认会话(请求头三件套由 CLI 统一注入,唯一权威声明见 `weaver-e10-shared` 的「请求头契约」章节)。
|
|
28
28
|
- 根据用户表述计算报告周期时间范围(周报遵循 ISO8601,例如「上周」= 上周一至上周日);未明确周期类型时先向用户确认周/月/季/年,确认前不得臆造区间。
|
|
29
29
|
- 确定数据归属主体:默认当前登录人本人;若判定涉及他人且已获用户确认,则主体为该人。
|
|
30
30
|
|
|
@@ -87,7 +87,7 @@ eb 链路详情页地址为 `/sp/ebdfpage/card/0/{报告详情 eb 表单 id}/{
|
|
|
87
87
|
6. **重复性判断**:判断当前人员是否提交某个周期的报告,**只能**通过 `plan.report.get` 按周期查询(必须传报告年份、报告类型、报告周期,创建人缺省为当前登录人)。
|
|
88
88
|
7. **不得重复创建**:当且仅当用户确认需要创建某个周期的报告时才判断是否已创建;若已创建,不得重复创建,需明确告知用户并征询是否改为编辑。
|
|
89
89
|
8. **字段名禁止项**:任何执行阶段和最终创建的报告内容中,决不允许出现报告相关的数据库英文字段名。CLI 已把 eb 链路返回值归一化为业务字段(`reportId` / `title` / `content` / `summary` / `plans` / `year` / `type` / `serialNumber` / `postStatus` / `postTime` / `creator` / `detailUrl`),Agent 只使用这些业务键,不要向用户复述原始接口结构。
|
|
90
|
-
9.
|
|
90
|
+
9. **认证与请求头**:所有请求的请求头三件套由 CLI 统一注入(唯一权威声明见 `weaver-e10-shared` 的「请求头契约」章节)。由 CLI 托管,禁止输出、索取或写入任何凭证;未登录时先按共享规则读取 `../weaver-e10-shared/references/e10-auth-and-session.md` 并通过 `weaver-work-cli auth ...` 确认会话。
|
|
91
91
|
|
|
92
92
|
## 命令
|
|
93
93
|
|