文件预览

cms-match-businessunit.md

查看 工作协同官方skill 技能包中的文件内容。

文件内容

references/cms-match-businessunit.md

### 11. 正文匹配业务单元并发汇报 — `cms-match-businessunit.py`

**意图**:用户给出标题与正文后,自动匹配最合适的业务单元并直接发送汇报。
**适用前提**:用户已配置至少一个业务单元;若未配置,请改用 `cwork-send-report.py` 常规发送。

**与员工搜索的区别**:本脚本**不**调用 `cwork-search-emp.py`。接收人/节点人员来自业务单元里已绑定的 `empList`,服务端按 `businessUnitId` 流转。**不要**把「自己匹配人员」理解成必须先搜员工。

```bash
# 仅匹配预览(不发送)
python3 scripts/cms-match-businessunit.py \
  --title "周报" \
  --content "<p>本周完成 API 接口联调与开发提测</p>" \
  --content-type html \
  --dry-run

# 匹配并发送
python3 scripts/cms-match-businessunit.py \
  --title "周报" \
  --content "<p>本周完成 API 接口联调与开发提测</p>" \
  --content-type html
```

支持参数:

| 参数 | 必填 | 说明 |
|------|------|------|
| `--title` / `-t` | ✅ | 汇报标题 |
| `--content` / `-c` | ✅ | 汇报正文 |
| `--content-type` | ❌ | `html` / `markdown`(默认 `html`) |
| `--grade` | ❌ | `一般` / `紧急`(默认 `一般`) |
| `--type-id` | ❌ | 汇报类型 ID(默认 `9999`) |
| `--plan-id` | ❌ | 关联任务 ID |
| `--template-id` | ❌ | 模板 ID |
| `--virtual-emp-id` | ❌ | 虚拟员工 ID(业务代发参数;脚本鉴权仍使用当前用户 AppKey) |
| `--dry-run` | ❌ | 仅匹配不发送 |

匹配规则补充:
- 标题与正文都会参与匹配打分,且标题命中权重更高(用于处理“标题有关键词、正文较泛化”的场景)。
- 当返回 `matched=false` / `suggestion=NO_MATCH` 时,表示未达到可自动发送置信度,必须询问用户明确接收人或业务单元,禁止自动选 Top1 候选发送。

---

## `reportLevelList` 字段格式

`cwork-send-report.py` 可通过 **`--report-level-json`** 指向 UTF-8 JSON 文件(根节点为数组),内容对应 API 字段 `reportLevelList`,用于指定建议人/决策人/传阅等节点;不传时新建草稿可为空,**更新**时默认从 5.25 详情中的 `reportLevelList` 原样转换后写回,避免全量更新被清空。每个节点结构如下:

```python
report_level_list = [
    {
        "level": 1,                              # 节点序号(从1开始)
        "nodeName": "建议人",                     # 节点显示名称
        "type": "suggest",                       # suggest=建议 | decide=决策 | read=传阅
        "levelUserList": [
            {"empId": 1512393035869810694},       # empId 必须是整数(非字符串)
        ],
    }
]
```

> ⚠️ `type` 只接受英文小写 `suggest` / `decide` / `read`,不接受中文。`levelUserList` 是必填字段,不可为 `null` 或空列表。

---