cms-cwork-workflow
核心定位
本 Skill 只做一件事:根据用户执行意图,读取对应 references/*.md,再执行 scripts/*.py。
参数、边界、分支逻辑都以 references 为准,SKILL.md 只负责入口和流程约束。
强制前置(保持不变)
调用任何脚本前,必须先通过依赖 Skill cms-auth-skills 获取有效 AppKey。
未鉴权时,不允许执行本 Skill 的任何 Python 脚本。
本 Skill 发起的所有 CWork API 请求均基于该 AppKey 鉴权。
AppKey 的获取与传递方式必须为:由上游 cms-auth-skills 注入/传递到本 Skill 执行命令中(--app-key)。
标准执行流程(必须遵循)
- 识别用户是“执行动作”还是“纯咨询”。
- 若是执行动作:先定位目标脚本。
- 先读取
references/auth.md,确保 AppKey 获取与注入规则满足(未读不得进入鉴权相关链路)。 - 再读取该脚本对应的
references/*.md(未读不得执行)。 - 按文档组装参数并执行
python3 scripts/<name>.py。 - 如一轮调用多个脚本,每个脚本的 reference 都要先读再执行。
- 查询汇报/任务时,若结果可识别业务 ID,应优先返回可点击
shareLink;如补链失败,不得阻断主查询结果。 - 查询汇报时,只要用户给出了疑似汇报唯一编码(例如
2603ABFRZ、D2606473这类字母数字混合编码),必须优先按编码精确检索,不得先路由到inbox/outbox这类“按收件箱/发件箱翻页找标题”的流程;优先使用cwork-query-report.py --mode search-list --report-code <编码>,命中后再根据需要取详情 /record-simple-info。- 识别规则:如果用户原话里出现“汇报/搜汇报/查汇报/找汇报/搜索汇报”等动作词,并且后面跟着一段疑似编码(通常为 6~20 位、包含字母和数字,允许以单个字母开头),一律视为
report-code,不要把它当普通关键词。 - 典型例子:
帮我搜索汇报2603ABFRZ、查一下 D2606473 这条汇报、搜汇报 2605ABICZ 并看回复。
- 识别规则:如果用户原话里出现“汇报/搜汇报/查汇报/找汇报/搜索汇报”等动作词,并且后面跟着一段疑似编码(通常为 6~20 位、包含字母和数字,允许以单个字母开头),一律视为
- 用户表达“发汇报/写汇报/提交汇报”且提到“建议人/决策人/节点/流程/reportLevelList”时,必须走汇报链路(
cwork-send-report.py或cms-match-businessunit.py),禁止误路由到cwork-create-task.py。
常用命令与必读文档
| 脚本 | 必读 reference | 用途 |
|---|---|---|
cwork-search-emp.py |
references/cwork-search-emp.md |
搜索员工 |
cwork-send-report.py |
references/cwork-send-report.md |
发送汇报(草稿 -> 确认) |
cms-match-businessunit.py |
references/cms-match-businessunit.md |
正文匹配业务单元并发送 |
cwork-query-report.py |
references/cwork-query-report.md |
查询汇报 / 分页搜索汇报列表 |
cwork-create-task.py |
references/cwork-create-task.md |
创建任务 |
cwork-review-report.py |
references/cwork-review-report.md |
审阅汇报 |
cwork-query-tasks.py |
references/cwork-query-tasks.md |
查询任务 |
cwork-nudge-report.py |
references/cwork-nudge-report.md |
催办闭环 |
cwork-todo.py |
references/cwork-todo.md |
待办管理 |
cwork-templates.py |
references/cwork-templates.md |
模板查询 |
cwork-draft-box.py |
references/cwork-draft-box.md |
草稿箱 |
cwork-business-unit.py |
references/cwork-business-unit.md |
业务单元管理 |
cwork-virtual-employee.py |
references/cwork-virtual-employee.md |
虚拟员工管理 |
补充:写/发汇报场景,还需先读 references/report-virtual-identity.md。
测试示例(推荐)
示例 1:查未读汇报
# 第一步:先读 references/cwork-query-report.md
# 第二步:执行脚本
python3 scripts/cwork-query-report.py --app-key "<AppKey>" --mode unread --page-size 10
示例 2:分页搜索汇报列表
# 第一步:先读 references/cwork-query-report.md
python3 scripts/cwork-query-report.py \
--app-key "<AppKey>" \
--mode search-list \
--page-index 1 \
--page-size 20 \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--keyword "公章" \
--classification-id 31121223 \
--from-emp-id <senderEmpId> \
--to-emp-id <receiverEmpId>
提醒:
search-list对应开放接口/open-api/work-report/report/record/searchPage。当用户给出汇报唯一编码时,优先使用--report-code做精确搜索;若没有明确编码,再使用--keyword进行模糊搜索。关键词可匹配汇报主题、唯一编码、发/收件人和正文内容;pageIndex从 0 开始,而脚本参数--page-index仍按常见习惯从 1 开始,脚本会自动转换。
示例 3:按汇报唯一编码精确搜索
# 第一步:先读 references/cwork-query-report.md
python3 scripts/cwork-query-report.py \
--app-key "<AppKey>" \
--mode search-list \
--page-index 1 \
--page-size 20 \
--report-code <ReportCode>
这里的
<ReportCode>只是占位符,不要填真实编号到文档示例里。
示例 4:标准发送汇报(两步)
# 第一步:先读 references/cwork-send-report.md
python3 scripts/cwork-send-report.py \
--app-key "<AppKey>" \
--title "周报" \
--content "<p>本周完成联调</p>" \
--receivers "张三" \
--confirm-save-draft
# 第二步:用户明确确认后再发出
python3 scripts/cwork-send-report.py --app-key "<AppKey>" --draft-id "<reportId>" --confirm-send
字段说明:上述
--title/--content是脚本参数名;脚本调用开放接口时会自动映射为请求体字段main/contentHtml。
示例 3:收件人不明确时先匹配业务单元
# 第一步:先读 references/cms-match-businessunit.md
python3 scripts/cms-match-businessunit.py \
--app-key "<AppKey>" \
--title "周报" \
--content "<p>本周完成 API 联调</p>" \
--content-type html \
--dry-run
反向示例(不要这样做)
- 未获取
AppKey就直接执行scripts/*.py。 - 没读对应
references/*.md就起调脚本。 - 发送汇报时一次性带
--confirm-send直接发出(缺少草稿确认步骤)。 - 保存/更新草稿时不带
--confirm-save-draft(未获用户确认即落草稿)。 cms-match-businessunit.py返回未匹配后,擅自猜测接收人继续发送。- 测试/调试汇报默认发给无关同事(应优先
--test-mode+ 当前用户本人或测试账号)。 - 用户明确在配置汇报节点(如建议/决策)却调用
cwork-create-task.py创建任务。
错误处理与通用参数
通用错误格式、特殊字符处理、--params-file 用法请查看 references/common-params.md。
目录结构
cms-cwork-workflow/
├── SKILL.md ← 本文件(意图级接口文档)
├── scripts/
│ ├── cwork_client.py ← 共享 API 客户端(HTTP 封装 + 所有 API 方法)
│ ├── cwork-search-emp.py ← 0. 搜索员工
│ ├── cwork-send-report.py ← 1. 发送汇报
│ ├── cwork-query-report.py ← 2. 查询汇报
│ ├── cwork-create-task.py ← 3. 创建任务
│ ├── cwork-review-report.py ← 4. 审阅汇报
│ ├── cwork-query-tasks.py ← 5. 查询任务
│ ├── cwork-nudge-report.py ← 6. 催办闭环
│ ├── cwork-todo.py ← 7. 待办管理
│ ├── cwork-templates.py ← 8. 模板管理
│ ├── cwork-draft-box.py ← 9. 草稿箱列表 / 批量删除(API 5.24 / 5.28)
│ ├── cwork-business-unit.py ← 10. 业务单元管理
│ ├── cms-match-businessunit.py ← 11. 正文匹配业务单元并发汇报
│ └── cwork-virtual-employee.py ← 12. 虚拟员工管理
└── references/
├── auth.md
├── cwork-search-emp.md
├── cwork-send-report.md
├── cwork-query-report.md
├── cwork-create-task.md
├── cwork-review-report.md
├── cwork-query-tasks.md
├── cwork-nudge-report.md
├── cwork-todo.md
├── cwork-templates.md
├── cwork-draft-box.md
├── cwork-business-unit.md
├── cms-match-businessunit.md
├── cwork-virtual-employee.md
├── report-virtual-identity.md
├── edge-cases.md
├── agent-patterns.md
├── common-params.md
└── maintenance.md ← Skill 维护/发布参考(非 Cursor 规则)
