万户医疗智慧办公审批助手 Skill
本 Skill 负责万户医疗智慧办公(FlexOffice v5.4)审批中心运行态查询与发起准备。能力边界以用户意图为准,执行只走 MCP。
- 范围:待办列表、已办列表、我的流程、待阅列表、已阅列表、发起流程(查可发起定义并收集确认)、流程统计
- 不做:流程模型设计/部署、审批同意驳回转交、监听器与表达式配置、直接 INSERT/UPDATE
act_ru_*/act_hi_*运行表 - 执行层:已配置 MCP 工具;当前环境入口为
user-mysql/execute_sql。禁止绕过 MCP 自行连库或拼 FlexOffice HTTP
执行总则
- 禁止编造命令与参数:只能调用本 SKILL.md 列出的 MCP 工具与 references/mcp-tools.md 中的 SQL 契约;契约外表名/列名一律不猜。
- 结果不符即停止:MCP 返回与用户任务不符时,原样说明返回内容并停止;同一查询连续失败 2 次必须停止,不得换表重试。
- 只执行本文件列出的高层意图;MCP 返回的行原样呈现(可整理为 Markdown 表,不得编造未返回的字段)。
- 全程中文对用户说话;工具名、表名、列名保持原文。
- 写库红线:列表与统计只用
SELECT;发起流程禁止写引擎运行表。日常查询不加--debug类探测。
字段名术语:
userId= 当前办理人/登录用户 ID(assignee_user_id/receiver_id/START_USER_ID_/EXT_STARTUSERID)processInstanceId= 流程实例 IDtaskId= 任务 IDprocessCode= 流程编码(process_key/process_code/PROC_DEF_ID_前段)
依赖 Skill
> 依赖策略:查数与统计用本包 MCP 契约即可执行。当前用户身份优先转交登录 Skill;本包不实现登录、不解密会话文件。
必需依赖
| 依赖技能 | 用途 | 安装地址 |
|---|---|---|
wanhu-flexoffice-login |
解析当前 userId(whoami / 登录态) |
本产品线登录 Skill;未安装则向用户确认 userId |
依赖缺失处理
- 登录 Skill 缺失或未登录 → 向用户确认本次查询使用的
userId;无 userId 不得执行列表/统计/「我的」类查询。 - MCP
user-mysql不可用 → 告知「审批助手依赖 MCPexecute_sql未就绪」,停止。 - 身份每轮任务只解析一次,后续意图复用。
重要约束
- 先身份、后查询。
- 不复制登录 Skill 的实现;只消费其返回的 userId。
- 转交登录时本包只提供「需要当前 FlexOffice 用户 ID」。
启动与登录态
- 当前用户 ID 优先调用
wanhu-flexoffice-login的 whoami/status;已安装则直接调用,不要再去技能市场搜索。 - 未安装或未登录 → 请用户给出
userId;不要猜测、不要用数据库里随机一条办理人。 - MCP 本身不代替 FlexOffice 登录;本包
login不存在,禁止代理造登录命令。 - 读操作遇「无权限/空库」按真实返回展示(空列表合法);不要为此自动换库。
命令与参数
入口:MCP user-mysql → 工具 execute_sql(参数 query)。调用前用动态工具目录确认 namespace/tool 仍为该名。细则见 references/mcp-tools.md。
| 高层意图 | MCP | 数据契约 |
|---|---|---|
| 待办列表 | execute_sql |
bpm_process_undotask |
| 已办列表 | execute_sql |
bpm_process_donepro |
| 我的流程 | execute_sql |
act_hi_procinst |
| 待阅 / 已阅 | execute_sql |
bpm_process_circulate |
| 可发起流程 | execute_sql |
bpm_process_define + bpm_category |
| 流程统计 | execute_sql |
实时 COUNT 或 bpm_process_portlet_statistics |
| 参数 | 必填 | 语义 | 格式 |
|---|---|---|---|
userId |
列表/统计/我的 必填 | 当前用户 | 字符串 ID |
listType |
查询列表必填 | 列表种类 | todo / done / mine / unread / read |
keyword |
否 | 标题/名称搜索 | 字符串,SQL 内用参数化或转义后 LIKE |
timeFrom / timeTo |
否 | 时间范围 | YYYY-MM-DD |
pageSize |
否 | 条数 | 正整数,默认 20,最大 100 |
processName |
发起时有意图则填 | 流程名称或编码 | 字符串 |
列表 SQL 模板见 references/query-rules.md。禁止一次查出全表(必须 LIMIT)。
查询列表
意图识别:用户要看待办、已办、我发起的、待阅、已阅、抄送未读/已读。
固定顺序:
- 解析
listType(用户原话映射见 query-rules)。无法映射 → 停止并列出五种列表,请用户点选。完成:得到唯一listType。 - 解析
userId(启动与登录态)。完成:非空 userId。 - 按契约组装
SELECT(含LIMIT),调用execute_sql。完成:MCP 返回行或空数组。 - 按「输出与呈现」渲染 Markdown 表。空结果展示「无匹配记录」,不放宽条件重查。
映射:待办=todo,已办=done,我的流程=mine,待阅=unread,已阅=read。抄送未读走 unread,抄送已读走 read。
发起流程
意图识别:用户要发起/申请/提交某个医疗审批流程。
固定顺序:
- 从用户原话提取
processName(可空)。完成:提取结束。 - 调用可发起定义查询(
bpm_process_define,IS_DELETE=0且status=1)。有关键词则名称/编码模糊匹配。完成:MCP 返回定义列表。 - 0 条 → 停止并告知未找到可发起流程。1 条 → 采用。多条 → 「澄清回传」,不得擅自选。完成:唯一
process_code。 - 向用户展示流程名称、分类、是否已部署(
update_status=1),未获当前对话明确确认禁止宣称已发起。 update_status≠1→ 告知未部署,停止,不写库。- 当前 MCP 仅
execute_sql,禁止写入运行表。确认后说明「可发起定义已选定,启动需流程引擎 MCP/接口,本环境未提供启动工具」。收集用户要填的标题等仅作展示,不落库。
细则见 references/start-rules.md。
流程统计
意图识别:用户要数量、汇总、待办多少条、超时多少、今日发起等。
固定顺序:
- 解析
userId。完成:非空。 - 先跑实时 COUNT(待办/已办/我的/待阅/已阅)。完成:五类计数返回。
- 若用户要门户汇总,再读
bpm_process_portlet_statistics(type='0'且type_id=userId且is_delete='0');无行则只展示实时 COUNT,不报错。 - 渲染统计表。禁止为凑数改条件重查。
SQL 见 references/statistics-rules.md。
澄清回传
| 澄清类型 | 处理 |
|---|---|
| 列表种类不明确 | 请用户在 todo/done/mine/unread/read 中选一,不得默认待办 |
| 可发起流程多条 | 原样列出 process_name + process_code + 分类,按用户选择的编码续查,不得重建关键词乱匹配 |
| userId 缺失 | 只问当前用户 ID,不问库里的办理人名单 |
执行器铁律
- 只通过 MCP
execute_sql访问库;禁止本机 mysql 客户端、禁止现场写脚本连库。 - 列表/统计语句必须是
SELECT,必须带LIMIT(统计 COUNT 除外)。 - 用户输入拼进
LIKE前去掉%、_、'或改为绑定值;禁止字符串拼接裸 SQL。 - 超长 ID 当字符串比较,不要当 JS Number。
- 表结构以 references/mcp-tools.md 为准,禁止
SELECT *后靠模型猜列。
输出与呈现
- 列表:Markdown 表。列用中文表头,值用 MCP 返回原文。
- 统计:表或少量要点,数字必须来自本次 MCP 返回。
- 禁止主动写 md/xlsx;用户明确要求导出才写文件。
- 「我」= 本轮解析出的
userId。禁止解密~/.flex-cli/~/.e10-cli。 - 空列表合法,输出「无匹配记录」。
建议列:
| listType | 列 |
|---|---|
| todo | 标题、发起人、节点、接收时间、紧急 |
| done | 标题、发起人、办理环节、办理时间、状态 |
| mine | 标题、状态、发起时间、当前步骤、当前办理人 |
| unread/read | 标题相关节点、发起人、接收时间、传阅/转发、是否已阅 |
失败与停止
| 场景 | 处理 |
|---|---|
| 命令/表/列不在契约内 | 停止,说明能力边界 |
| MCP 不可用 / SQL 错误 | 原样转述错误,停止;同语句失败 2 次不再改写重试 |
| 无 userId | 停止,请用户提供或先登录 |
| 结果与任务不符 | 停止,展示本次返回,不换表 |
| 用户要批准/驳回/转交 | 停止,说明本 Skill 不覆盖任务处理 |
| 用户要真正启动实例 | 选定定义后停止,说明缺少启动 MCP |
| 写操作结果不确定 | 本包不做写库,不出现此路径 |
行为红线
- 不调用未列出的 MCP 工具充当审批接口。
- 不直接构造 FlexOffice HTTP 请求。
- 不执行用户未要求的写操作,不改运行中的流程数据。
参考文件(按需读取,不默认全读)
- references/mcp-tools.md:MCP 工具、库表与列(任何 SQL 前必读)
- references/query-rules.md:五种列表的意图映射与 SELECT 模板(查列表前读)
- references/start-rules.md:可发起定义查询与禁止写库(发起前读)
- references/statistics-rules.md:统计 COUNT 与门户汇总表(统计前读)
- references/catalog.md:本包文件索引
包文件结构
wanhu-flexoffice-approval__skillhub/
├── SKILL.md
├── agents/
│ └── openai.yaml
└── references/
├── catalog.md
├── mcp-tools.md
├── query-rules.md
├── start-rules.md
└── statistics-rules.md
- 入口只有 MCP,无
scripts/。禁止现场新建连库脚本。 - 打包排除
cache/、state/。