12 KiB
12 KiB
5. 风险预警详细设计
1. 设计目标
本步骤承接法规完整性检查、字段抽取与一致性核查结果,目标是把缺失项、错放项、字段冲突、混档风险、待人工复核项和交付风险统一汇总成可执行的合规风险清单,并给出是否通过、整改优先级和责任建议。
本步骤需要完成以下业务结果:
- 汇总前序任务报告。
- 加载风险分级和准入规则。
- 将完整性、字段抽取、一致性等结果映射为风险项。
- 合并重复风险和关联风险。
- 计算最高风险等级和是否通过。
- 生成整改建议、处理优先级和责任角色。
- 输出结构化
registration_risk_report。 - 为飞书通知步骤生成风险摘要载荷。
本步骤不重新执行完整性检查、字段抽取或一致性核查。它只消费前序结构化报告,并在规则基础上生成综合风险预警。
2. 所属模块与边界
2.1 Agent Core
agent_core 是本步骤的执行主体,负责编排报告加载、风险规则加载、风险项生成、风险归并、准入判定、整改建议生成和报告输出。
本步骤建议产生以下中文 Skill:
风险预警编排Skill前序报告汇总Skill风险规则加载Skill风险项生成Skill风险归并Skill准入判定Skill整改建议生成Skill风险报告生成Skill
2.2 LLM Provider
LLM 可以用于将规则风险结论整理为自然语言建议,但不能改变风险等级、是否通过和整改优先级。
LLM 可以处理:
- 风险摘要润色。
- 整改建议文案组织。
- 飞书通知摘要表达。
LLM 不可处理:
- 修改规则判定的风险等级。
- 将高风险降级。
- 将不通过改为通过。
2.3 Audit
apps.audit 记录风险预警的输入报告、风险规则版本、风险项、准入结论和建议动作。
审计中必须保留:
batch_idsource_report_idsrisk_rule_versionrisk_itemspass_statushighest_risk_levelmanual_review_itemsowner_rolessuggestions
3. 输入输出
3.1 输入
{
"batch_id": 1001,
"scenario_id": "registration_risk_report",
"risk_rule_id": "ivd_registration_risk_v1",
"include_reports": [
"registration_completeness_report",
"registration_field_extraction_report",
"registration_consistency_report"
],
"enable_llm_summary": true
}
3.2 输出
本步骤输出 registration_risk_report:
{
"report_type": "registration_risk_report",
"batch_id": 1001,
"risk_rule_id": "ivd_registration_risk_v1",
"summary": {
"risk_item_count": 6,
"high_risk_count": 2,
"medium_risk_count": 2,
"low_risk_count": 1,
"manual_review_count": 1,
"highest_risk_level": "high",
"pass_status": "failed"
},
"risk_items": [],
"manual_review_items": [],
"suggestions": [],
"owner_notifications": []
}
4. 主工作流
用户发起风险预警
-> 读取前序任务报告
-> 加载风险规则
-> 从完整性报告生成缺失/错放风险
-> 从字段抽取报告生成抽取不确定风险
-> 从一致性报告生成冲突/混档风险
-> 合并重复和关联风险
-> 计算风险等级和准入状态
-> 生成整改建议和责任角色
-> 生成综合风险报告
-> 写入审计留痕
-> 返回 Web/飞书可展示结果
5. 节点详细设计
5.1 节点一:前序报告汇总
业务功能:
- 读取当前批次的完整性检查报告。
- 读取字段抽取报告。
- 读取一致性核查报告。
- 判断哪些报告缺失或过期。
- 将报告统一转为风险输入上下文。
使用技术:
- Django ORM
- JSONField
- 报告版本号
- dataclass/Pydantic
产生方法:
load_source_reports(batch_id, include_reports) -> SourceReportBundlevalidate_source_reports(bundle) -> SourceReportValidationResultbuild_risk_context(bundle) -> RiskEvaluationContext
对应 Skill:
前序报告汇总Skill
5.2 节点二:风险规则加载
业务功能:
- 加载风险分级规则。
- 加载准入规则。
- 加载风险类型和责任角色映射。
- 加载整改建议模板。
建议规则目录:
configs/registration/risk/
ivd_registration_risk_v1.yaml
规则示例:
risk_rule_id: ivd_registration_risk_v1
version: "2026-06-03"
admission:
high_risk_policy: fail
multiple_medium_policy: review_required
risk_types:
missing_required_document:
default_level: high
owner_role: 注册申报负责人
field_conflict:
default_level: high
owner_role: 注册资料负责人
使用技术:
- YAML
- Pydantic schema
- Django cache
产生方法:
load_risk_rules(risk_rule_id) -> RiskRuleSetvalidate_risk_rules(rule_set) -> RiskRuleValidationResultload_owner_role_mapping(rule_set) -> dict
对应 Skill:
风险规则加载Skill
5.3 节点三:风险项生成
业务功能:
- 从完整性报告生成缺失、错放、待复核风险。
- 从字段抽取报告生成字段缺失、低可信、抽取失败风险。
- 从一致性报告生成字段冲突、混档风险。
- 记录风险来源报告和证据。
风险类型:
missing_required_documentmisplaced_documentfield_missingfield_low_confidencefield_conflictmixed_packagemanual_review_requireddelivery_blocker
使用技术:
- Python 规则映射
- 风险规则 YAML
- 前序报告 schema
产生方法:
build_risks_from_completeness(report, rules) -> list[RiskItem]build_risks_from_field_extraction(report, rules) -> list[RiskItem]build_risks_from_consistency(report, rules) -> list[RiskItem]attach_risk_evidence(risk_item, source_report) -> RiskItem
对应 Skill:
风险项生成Skill
5.4 节点四:风险归并
业务功能:
- 合并重复风险。
- 关联同一根因风险。
- 避免同一字段冲突重复出现在多个列表。
- 保留风险来源链路。
归并示例:
- 产品名称冲突和混档风险可以关联。
- 缺失申请表和字段缺失申请人名称可以关联。
- 文档待复核导致的字段低可信可以关联。
使用技术:
- 风险指纹
risk_type + field_key + document_id- Python 分组
产生方法:
build_risk_fingerprint(risk_item) -> strmerge_duplicate_risks(risk_items) -> list[RiskItem]link_related_risks(risk_items) -> list[RiskGroup]
对应 Skill:
风险归并Skill
5.5 节点五:准入判定
业务功能:
- 计算最高风险等级。
- 根据规则判断是否通过。
- 区分风险等级和人工复核状态。
- 输出最终准入结论。
准入规则:
- 任一高风险项:
pass_status = failed - 无高风险但多个中风险:
pass_status = review_required - 仅低风险:
pass_status = conditional_pass - 无风险但有人工复核项:
pass_status = review_required - 无风险无复核:
pass_status = passed
使用技术:
- 风险规则
- Python 枚举
- 评分配置
产生方法:
calculate_highest_risk_level(risk_items) -> strcalculate_pass_status(risk_items, manual_review_items, rules) -> strbuild_admission_detail(risk_items, status) -> AdmissionDecision
对应 Skill:
准入判定Skill
5.6 节点六:整改建议生成
业务功能:
- 为每个风险项生成建议动作。
- 按高、中、低风险排序。
- 映射责任角色。
- 生成可用于飞书通知的摘要。
使用技术:
- 本地建议模板
- 责任角色映射
- 可选 LLM Provider 生成自然语言摘要
产生方法:
build_risk_suggestion(risk_item, rules) -> Suggestionsort_suggestions_by_priority(suggestions) -> list[Suggestion]build_owner_notification_payload(risk_items) -> list[OwnerNotificationPayload]summarize_risk_report_with_llm(report) -> str
对应 Skill:
整改建议生成Skill
5.7 节点七:风险报告生成
业务功能:
- 汇总风险项和建议。
- 生成结构化风险报告。
- 生成页面展示区块。
- 生成飞书通知载荷。
- 写入审计。
使用技术:
- dataclass/Pydantic
- JSONField
- Audit 服务
- 飞书摘要 payload schema
产生方法:
build_risk_report(context, risk_items, admission, suggestions) -> RegistrationRiskReportbuild_risk_summary(risk_items, admission) -> dictbuild_risk_display_sections(report) -> list[dict]record_risk_audit(report, context) -> AuditLog
对应 Skill:
风险报告生成Skill
6. Skill 清单
本步骤产生以下 Skill 设计文档:
7. 风险项结构
{
"risk_id": "RISK-001",
"risk_type": "field_conflict",
"risk_level": "high",
"source_report_type": "registration_consistency_report",
"related_documents": [11, 12],
"related_field_key": "product_name",
"description": "说明书与申请表中的产品名称不一致。",
"suggestion": "请先确认当前审核范围是否混入其他产品资料。",
"owner_role": "注册资料负责人",
"manual_review_required": false
}
8. 页面展示
风险预警页面建议展示:
- 综合结论。
- 是否通过。
- 最高风险等级。
- 高/中/低风险数量。
- 待人工复核数量。
- 风险清单。
- 整改建议。
- 责任角色。
- 审计入口。
9. 异常处理
- 前序报告缺失:生成“报告不完整”风险或提示先执行对应任务。
- 风险规则缺失:任务不可执行,写失败审计。
- LLM 不可用:使用本地模板生成建议。
- 责任角色未配置:使用默认责任角色并提示维护映射。
- 风险项为空:输出通过或待复核状态。
10. 与后续步骤的接口
后续 Word 回填读取:
pass_statushigh_risk_countfield_conflict风险项。manual_review_items- 可回填风险拦截状态。
后续飞书通知读取:
- 风险摘要。
- 高风险清单。
- 责任角色。
- 责任人通知载荷。
- Web 详情页链接。
11. 测试设计
11.1 单元测试
- 风险规则加载成功。
- 完整性缺失项生成风险。
- 字段冲突生成高风险。
- 混档风险生成高风险。
- 风险归并正确。
- 任一高风险判不通过。
11.2 服务层测试
- 缺少完整性报告时提示前序任务缺失。
- 有高风险时
pass_status = failed。 - 只有低风险时
conditional_pass。 - 待复核项进入人工复核清单。
- 风险报告写入审计。
11.3 页面测试
- 页面展示最高风险等级。
- 页面展示风险清单。
- 页面展示整改建议。
- 页面展示责任角色。
- 页面展示审计入口。
12. V1 实现建议
V1 建议先完成以下最小闭环:
- 汇总完整性检查和一致性核查报告。
- 生成缺失风险、字段冲突风险、混档风险。
- 实现任一高风险即不通过。
- 生成整改建议和责任角色。
- 输出
registration_risk_report。 - 写入审计。
增强阶段再补齐:
- 多维度风险评分。
- 历史申报事项风险。
- 版本一致性风险。
- 飞书责任人通知联动。
- 后台风险规则维护。