# Audit 模块需求分析 ## 1. 模块定位 `apps.audit` 在本题中绝不能只被理解为“对话历史”。对于注册申报资料准备与审核系统,它的定位应当是: > 合规审查留痕与复核中心 因为本题输出的是“资料是否齐套、字段是否一致、哪里有合规风险”,这类结果天然需要留痕、可回溯、可解释。 ## 2. 模块目标 本模块需要实现以下目标: 1. 对每一次资料审核、字段抽取、完整性检查和风险预警形成可查询记录。 2. 保留输入条件、处理范围、输出结果、证据来源和失败原因。 3. 为演示“系统不是黑盒”提供直接支撑。 4. 在不泄露敏感信息的前提下,支持问题追溯和结果复核。 ## 3. 为什么本题对审计要求更高 在普通问答 Demo 中,审计模块往往只是锦上添花。但在本题里,审计本身就是业务可信度的一部分,原因包括: 1. 注册申报属于强监管场景,任何自动结论都应能追溯。 2. 题面明确要求输出风险预警和处理建议,这些建议后续可能影响资料补正方向。 3. 当前样例中已经出现跨文档冲突、二次申报、历史临床资料替换等复杂情境,没有审计留痕会很难解释系统为何得出某个结论。 ## 4. 核心职责 ### 4.1 执行留痕 记录每次任务执行的基本信息: - 执行时间 - 操作人 - 任务类型 - 使用场景 - 输入问题 - 选中文档范围 - 申报批次 ### 4.2 处理结果留痕 记录: - 最终自然语言回答 - 结构化结果 - 风险清单 - 回填字段结果 - 缺失文件清单 ### 4.3 证据留痕 记录: - 引用文档 - 引用片段 - 命中的法规条目或目录项 - 使用的规则版本 - 工具调用过程 ### 4.4 异常留痕 记录: - 解析失败 - 入库失败 - 规则缺失 - 模型调用失败 - 输出冲突待人工确认 本题尤其需要保留失败和不确定状态,而不只是保存成功记录。 ## 5. 审计对象定义 建议将审计对象扩展为以下几类: 1. 资料目录汇总任务 2. 完整性检查任务 3. 字段抽取任务 4. 一致性核查任务 5. 风险预警任务 6. 手工重试、重新入库、重新核查等操作 这样可以避免审计模块只能记录“聊天问答”,却看不到文件处理和重跑过程。 ## 6. 审计记录字段需求 ### 6.1 基础字段 - `audit_id` - `task_type` - `scenario_id` - `project_id` - `submission_batch_id` - `created_at` - `status` ### 6.2 输入字段 - 用户输入问题 - 执行参数 - 选中文档 ID 列表 - 章节点范围 - 规则版本 - 模型名称 ### 6.3 输出字段 - 最终摘要 - 结构化输出 JSON - 风险等级 - 是否存在人工复核项 - 缺失项数量 - 冲突项数量 ### 6.4 证据字段 - 引用文档信息 - 引用片段 - 工具调用结果 - 命中规则项 ### 6.5 错误字段 - 错误类型 - 错误信息 - 失败阶段 - 是否可重试 ## 7. 与题面强相关的审计需求 ### 7.1 对完整性检查结果留痕 当系统判断“缺少临床评估报告”或“缺少某项监管声明”时,应能回查: - 是依据哪一版规则判断的 - 当前已识别到哪些资料 - 哪些资料被判定未命中 ### 7.2 对一致性冲突留痕 当前样例中产品名称明显冲突,因此系统若判定: > 说明书与申请表中的产品名称不一致 则审计中必须保留: - 冲突字段名 - 冲突值 - 对应来源文档 - 判定时间 ### 7.3 对历史申报说明的审计价值 `CH1.9` 涉及历史受理号、撤回、临床数据替换等事项,若系统在风险报告中引用这部分内容,应在审计中保留相关证据链,方便后续说明“为什么标记为历史事项风险”。 ## 8. 页面需求 ### 8.1 审计列表页 列表页不应仅展示“问了什么问题”,还应体现业务摘要。建议展示: - 执行时间 - 任务类型 - 项目 / 批次 - 状态 - 风险等级 - 缺失项数 - 冲突项数 - 是否需人工复核 ### 8.2 审计详情页 详情页建议展示: - 输入问题与参数 - 结果摘要 - 结构化结果 - 引用证据 - 工具调用 - 原始输出 - 错误信息 - 脱敏后的上下文信息 ## 9. 脱敏与安全要求 ### 9.1 不能写入敏感密钥 这一点与 AGENTS 约定一致,日志中不能保存: - API Key - 密钥类环境变量 - 不必要的鉴权头 ### 9.2 业务敏感信息控制 虽然当前题目材料以产品注册资料为主,但后续真实环境中可能包含: - 企业联系人 - 手机号 / 邮箱 - 临床机构信息 - 受理号 首版至少要具备“展示层脱敏”的设计意识。 ### 9.3 原始输出保留边界 如果 LLM 原始输出中包含大量无效 prompt 内容或潜在敏感字段,应允许: - 存摘要,不存完整原文 - 或仅对管理员展示原始输出 ## 10. 与其他模块的边界 ### 10.1 与 Chat 模块 Chat 是主要触发入口;Audit 负责把执行结果沉淀为可追踪记录。 ### 10.2 与 Documents 模块 Documents 提供文档处理事实;Audit 负责记录这些事实如何被某次审核任务引用。 ### 10.3 与 Agent Core 模块 Agent Core 负责产出结论与证据;Audit 负责记录这些产出及其上下文。 ## 11. 当前代码基线下的重构建议 ### 11.1 建议保留 - 审计列表与详情页骨架 - 原始输出展示能力 - 敏感信息脱敏思路 - 成功与失败均记录的机制 ### 11.2 建议增强 1. 将“对话日志”扩展为“任务执行审计”。 2. 增加项目批次、任务类型、章节点范围、规则版本等字段。 3. 增加缺失项数、冲突项数、人工复核标记等业务指标。 4. 增加法规命中项、字段来源和风险依据的留痕。 ## 12. 验收标准 本模块验收时,应达到以下状态: 1. 每次关键审核任务都能形成完整审计记录。 2. 审计详情足以解释“系统为什么得出这个结论”。 3. 成功、失败和待人工复核都可记录。 4. 页面层可快速筛选高风险或异常记录。 5. 敏感密钥不会进入审计内容。