# 深度风险扫描模块设计 (Risk Scan Module) ## 1. 业务目标 将单点硬规则风控(如:发票大于 500 元是否合规)升级为**图谱式全局风控**。Hermes 将利用大语言模型(LLM)的逻辑推理能力,在海量历史数据中寻找隐藏的违规模式。 ## 2. 核心扫描链路 本模块将作为一个独立的 Skill 被定时任务触发。 ### 第一步:数据快照聚合 - **提取目标**:拉取状态为 `draft`、`submitted` 且最近 30 天内活跃的报销单,同时带出相关的发票明细。 - **降维处理**:为避免超出大模型的 Token 上下文限制,必须对单据信息进行降维。仅提取:`申请人、时间、地点、商户名、金额、报销类型` 形成精简的 CSV 或 JSON Lines 格式。 ### 第二步:大模型批量推理 (LLM Batch Inference) - **风险定义植入**:通过 System Prompt 将目前财务最头疼的几类风险定义给模型(如拆单、套现、虚假连号发票)。 - **执行方式**:将数据按“同部门”或“同地域”分块 (Chunking) 喂给大模型。 - **Prompt 示例**: ```markdown 你是一个内控审计 Agent。以下是某部门近半个月的报销流水清单。 请找出其中是否存在: 1. 拆单行为(同人、同地点、连日、小额累加) 2. 聚众套现行为(不同人、同偏僻餐馆、同日极高额) 如果发现风险,请输出对应的单号集合以及你的推理过程。 ``` ### 第三步:风险标记与处置 - 解析大模型返回的结构化 JSON。 - 对被判定的高危单据,在主库中插入 `hermes_risk_report` 记录。 - **动作反馈**:如果该单据正处于 `submitted` 状态,并且得分极高(如虚假连号发票),可以通过 X-Financial 原有接口自动注入“退回”动作,并附加大模型的分析日志。 ## 3. 防抖与自我迭代 - **扫描去重**:利用 `expense_claim.hermes_scanned_at` 防止已经出具过报告的单据被重复投入分析队列。 - **人工纠偏 (Human-in-the-loop)**:当财务在前端驳回 Hermes 的风险提示(即认为没问题)时,事件将被记录。Hermes 可通过夜间的反思任务优化下一次 Prompt 中的判定容忍度。