# Hermes 数据库表结构设计 为了支持后台异步任务的执行和长期记忆(风险标记、执行结果归档),我们需要在数据库中增加(或扩充)以下表结构。 ## 1. 任务调度与执行表 ### `hermes_task_config` (定时任务配置表) 用于管理所有的后台巡检和推送任务,支持动态调整频率与开关。 - `id`: string (UUID) - `task_type`: string (enum: `global_risk_scan`, `weekly_expense_report`, `kb_validation`...) - `cron_expression`: string (e.g., `0 2 * * *`) - `is_enabled`: boolean (默认 True) - `payload_template`: jsonb (预留参数,如扫描的时间窗口、特定部门过滤条件等) - `updated_at`: datetime ### `hermes_task_execution_log` (任务执行日志表) 记录每次任务的执行状态,便于排错与溯源。 - `id`: string (UUID) - `config_id`: string (外键,关联 `hermes_task_config`) - `started_at`: datetime - `completed_at`: datetime - `status`: string (enum: `running`, `success`, `failed`) - `result_summary`: string (执行结果的简要说明,如“扫描了 1500 条单据,发现 12 条高危”) - `error_trace`: text (如果失败,存储错误堆栈) ## 2. 深度分析结果表 ### `hermes_risk_report` (深度风险报告表) 用于存储 LLM 找出的深层逻辑风险。 - `id`: string (UUID) - `claim_id`: string (外键,关联存疑的主单据 `expense_claim`) - `execution_log_id`: string (外键,由哪次扫描任务产生的) - `risk_level`: string (enum: `low`, `medium`, `high`, `critical`) - `risk_type`: string (enum: `split_billing` 拆单, `collusion` 合谋, `policy_violation` 违规...) - `risk_description`: text (大模型生成的自然语言报告,如“该单据与前天提交的单据存在拆分可能...”) - `related_claim_ids`: jsonb (存储关联的同谋/相关单据 ID 列表,提供上下文线索) - `status`: string (enum: `pending_review` 待人工复核, `confirmed` 已确认为风险, `dismissed` 已忽略) ## 3. 现有表的平滑改造 ### 修改 `employee` 表 (员工信用分预留) - **新增字段** `compliance_score`: int (默认 100,由 Hermes 动态扣减或恢复,用于风控引擎调节对该员工的抽查率和宽容度) ### 修改 `expense_claim` 表 (风控标记) - **新增字段** `hermes_scanned_at`: datetime (记录该单据上次被 Hermes 扫描的时间,防止重复扫描) - **新增字段** `hermes_risk_flag`: boolean (快速判断该单子是否被挂载了 `hermes_risk_report`)