# 深度风险扫描模块设计 (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 中的判定容忍度。
