9.3 KiB
9.3 KiB
7. 飞书通知详细设计
1. 设计目标
本步骤承接风险预警和 Word 回填导出结果,目标是在飞书群聊或应用会话中完成任务触发、结果摘要查看、责任人通知和 Web 详情跳转,让注册申报审核流程具备 Web 工作台以外的协同入口。
本步骤需要完成以下业务结果:
- 支持飞书群聊机器人触发审核任务。
- 支持在飞书内选择任务或查看任务摘要。
- 根据风险项和章节点映射责任角色。
- 根据责任角色解析飞书账号。
- 生成飞书消息摘要和 @ 通知载荷。
- 调用飞书 OpenAPI 或 MCP 工具发送消息。
- 记录发送结果、失败原因和回传链接。
- 写入审计留痕。
本步骤不执行具体审核规则,不改变风险结论,不直接修改字段池或导出文件。它只负责飞书入口和通知协作。
2. 所属模块与边界
2.1 Chat
apps.chat 提供 Web 详情页链接和任务执行结果页面,飞书消息中应回传 Web 详情入口。
2.2 Agent Core
agent_core 负责飞书通知编排、摘要生成、责任人映射和发送载荷构建。
本步骤建议产生以下中文 Skill:
飞书通知编排Skill飞书任务入口解析Skill飞书责任人映射Skill飞书消息摘要生成Skill飞书消息发送Skill飞书回执记录Skill
2.3 MCP / OpenAPI
飞书能力通过两类方式接入:
- 飞书机器人 / Channel SDK:作为群聊触发和消息回传入口。
- 飞书 OpenAPI MCP:作为 Agent 调用飞书消息、文档、群聊和用户信息的工具层。
MCP 只作为外部工具接入层,不承载业务审核逻辑。
2.4 Audit
apps.audit 记录飞书触发来源、消息载荷、通知对象、发送状态和失败原因。
审计中必须保留:
batch_idscenario_idtrigger_sourcefeishu_chat_idfeishu_message_idmentioned_user_idsnotification_payloadsend_statuserror_message
3. 输入输出
3.1 输入
{
"batch_id": 1001,
"scenario_id": "registration_risk_report",
"trigger_source": "feishu_group_bot",
"feishu_chat_id": "oc_demo_chat",
"feishu_message_id": "om_demo_message",
"notify_owner": true,
"include_web_link": true
}
3.2 输出
本步骤输出 feishu_notification_report:
{
"report_type": "feishu_notification_report",
"batch_id": 1001,
"send_status": "sent",
"message_type": "interactive_card",
"mentioned_users": [
{
"owner_role": "注册资料负责人",
"feishu_user_id": "ou_demo_owner"
}
],
"web_detail_url": "http://localhost:8000/audit/1001/",
"receipt": {
"message_id": "om_demo_message",
"sent_at": "2026-06-03T10:30:00+08:00"
}
}
4. 主工作流
飞书群聊或 Web 触发通知
-> 解析飞书触发上下文
-> 读取风险报告和导出报告
-> 解析责任角色和飞书账号
-> 生成飞书消息摘要
-> 构建消息卡片和 @ 通知
-> 调用飞书 OpenAPI / MCP 发送
-> 记录发送回执
-> 写入审计留痕
-> 返回发送结果
5. 节点详细设计
5.1 节点一:飞书任务入口解析
业务功能:
- 解析飞书消息事件。
- 识别任务指令。
- 识别批次 ID 或项目上下文。
- 将飞书触发请求映射到系统场景。
支持指令示例:
检查资料完整性生成风险报告查看导出结果通知责任人
使用技术:
- 飞书事件订阅
- 群聊机器人消息
- Django webhook view
- 场景配置 YAML
产生方法:
parse_feishu_event(event_payload) -> FeishuTriggerContextresolve_scenario_from_command(text) -> strresolve_batch_from_message(text, chat_context) -> int | None
对应 Skill:
飞书任务入口解析Skill
5.2 节点二:通知上下文加载
业务功能:
- 读取风险报告。
- 读取 Word 导出报告。
- 读取审计详情链接。
- 读取任务状态。
使用技术:
- Django ORM
- JSONField
- URL reverse
产生方法:
load_notification_context(batch_id, scenario_id) -> NotificationContextbuild_web_detail_url(report_or_audit) -> strcollect_notification_sources(context) -> list[dict]
对应 Skill:
飞书通知编排Skill
5.3 节点三:责任人映射
业务功能:
- 根据风险项、章节点和任务类型确定责任角色。
- 根据责任角色查找飞书账号。
- 支持后台或配置文件手动维护。
- 对未配置账号的责任角色给出提示。
建议配置:
owners:
CH1:
owner_role: 注册资料负责人
feishu_user_id: ou_demo_owner
field_conflict:
owner_role: 注册资料负责人
feishu_user_id: ou_demo_owner
missing_required_document:
owner_role: 注册申报负责人
feishu_user_id: ou_demo_registration_owner
使用技术:
- YAML 配置
- Django Admin 维护表
- 飞书用户 ID
产生方法:
resolve_owner_roles(risk_items) -> list[OwnerRole]load_owner_mapping() -> OwnerMappingresolve_feishu_user_ids(owner_roles, mapping) -> list[FeishuMentionTarget]
对应 Skill:
飞书责任人映射Skill
5.4 节点四:飞书消息摘要生成
业务功能:
- 生成风险摘要。
- 生成高风险列表。
- 生成导出结果摘要。
- 生成 Web 详情链接。
- 生成飞书交互卡片或纯文本消息。
消息内容:
- 当前任务名称。
- 批次名称。
- 是否通过。
- 最高风险等级。
- 高风险数量。
- 待复核数量。
- 责任人 @。
- Web 详情入口。
- 导出文件链接。
使用技术:
- 飞书互动卡片 JSON
- 文本消息模板
- 可选 LLM 摘要
产生方法:
build_feishu_summary(context) -> FeishuSummarybuild_interactive_card(summary, mentions) -> dictbuild_text_message(summary, mentions) -> dict
对应 Skill:
飞书消息摘要生成Skill
5.5 节点五:飞书消息发送
业务功能:
- 调用飞书 OpenAPI 或 MCP 发送消息。
- 支持群聊消息。
- 支持 @ 指定责任人。
- 捕获发送结果和失败原因。
使用技术:
- 飞书 OpenAPI
- 飞书机器人
- MCP 工具封装
- 请求重试
产生方法:
send_feishu_message(chat_id, payload) -> FeishuSendResultsend_feishu_card(chat_id, card_payload) -> FeishuSendResultretry_send_on_transient_error(request) -> FeishuSendResult
对应 Skill:
飞书消息发送Skill
5.6 节点六:飞书回执记录
业务功能:
- 保存发送状态。
- 保存消息 ID。
- 保存通知对象。
- 保存失败原因。
- 写入审计。
使用技术:
- Django ORM
- Audit 服务
- JSONField
产生方法:
record_feishu_receipt(result, context) -> FeishuNotificationRecordbuild_feishu_audit_payload(record, context) -> dictrecord_feishu_audit(payload) -> AuditLog
对应 Skill:
飞书回执记录Skill
6. Skill 清单
本步骤产生以下 Skill 设计文档:
7. 消息类型设计
| 类型 | 使用场景 |
|---|---|
text |
简单摘要和失败提示 |
interactive_card |
风险报告摘要、按钮和详情链接 |
mention_text |
@ 责任人 |
8. 页面与飞书展示
飞书消息建议展示:
- 任务名称。
- 批次名称。
- 最高风险等级。
- 是否通过。
- 高风险摘要。
- 待人工复核事项。
- 责任人 @。
- Web 详情链接。
- 导出文件链接。
9. 异常处理
- 飞书事件验签失败:拒绝请求。
- 无法识别任务指令:返回帮助提示。
- 未找到批次:返回业务提示。
- 责任人未配置:发送群消息但不 @。
- 飞书 API 失败:记录失败回执,可重试。
- Web 链接生成失败:消息中省略链接并记录警告。
10. 与全流程接口
本步骤读取:
registration_risk_reportregistration_word_export_report- 审计详情链接
- 责任人映射配置
本步骤输出:
feishu_notification_report- 飞书消息 ID
- 通知状态
- 审计记录
11. 测试设计
11.1 单元测试
- 飞书事件解析。
- 任务指令解析。
- 责任人映射。
- 消息摘要构建。
- 发送 payload 构建。
11.2 服务层测试
- 风险报告可生成飞书卡片。
- 责任人可被 @。
- 未配置责任人时仍能发送摘要。
- API 失败时记录失败回执。
- 审计记录包含飞书来源。
11.3 集成测试
- 群聊机器人触发风险报告查看。
- 群聊机器人发送责任人通知。
- Web 链接可跳转到详情页。
12. V1 实现建议
V1 建议先完成以下最小闭环:
- 支持飞书群聊机器人接收指令。
- 支持发送风险报告摘要。
- 支持责任人手动配置和 @。
- 支持 Web 详情链接。
- 支持发送回执和审计记录。
增强阶段再补齐:
- 飞书应用会话菜单。
- 文档评论区 @bot。
- 多维表格同步。
- 飞书文档写回。
- 消息卡片交互按钮。