Files
group_fqcd_jr/docs/风控业务演示文档/08-数据库依赖与读写边界.md
lzf_0626 36c7a9d8d2 文档:审查报告入库 + 全量校对补注
## 新入库(`docs/演示用/`)

- `代码库全面审查报告-2026-09-14.md`
- `代码修改方案-2026-09-14.md`
- `记忆系统排查报告-2026-09-14.md`
- `记忆系统修复文档-2026-09-14.md`
- `文档一致性审计报告-2026-09-14.md`
- `多Worker接入方案-2026-09-14.md`

## 全量校对(32 个既有文档 + `AGENTS.md`)

跨 39 个文件、**1125 insertions / 148 deletions**。

⚠️ **这批改动同样不是本次会话写的**。我抽样核对过性质:是**实质内容补充**而不是
格式/换行转换。例如 `docs/44-演示流程.md` 新增两条"2026-09-14 补注":

- `启动金融Agent平台.bat` 只在**桌面**上,仓库里只有 `启动平台.bat` 这一份
  (两份由同一个 `tools/make_launcher_bat.py` 产出,改完 `start.ps1` 重跑它一起更新);
- `advisor_t`(9020) 与 `offsite_t`(9006) **不在 `tools/seed_test_rbac.py` 的演示用户里**
  (那里只有 `cust_t`/`risk_t`/`admin_t`/`review_t` 四个),由 `grant_*.py` 系列创建,
  **重跑种子不会重建它们** —— 换机器时这两个账号登录失败,要先查 `sys_user` 有没有这两行,
  而不是查密码。

这两条都是对的地方,与我这一路踩到的现象一致(我确实用到了 `advisor_t`/`offsite_t`)。

**我没有逐字审阅全部 39 个文件**,只抽样确认了改动性质与规模。若其中有需要复核的段落,
请指明文件,我逐处核对。
2026-09-14 20:36:00 +08:00

4.5 KiB
Raw Permalink Blame History

数据库依赖与读写边界

文档功能

本文档用于说明风控模块依赖的数据库表、读取和写入边界、关键字段用途及不可越界操作,供主项目合并、审计和排障使用。

读取表

表 用途
sys_user 客户和员工身份、状态、客户风险等级
sys_role 角色定义
sys_permission 权限码和数据范围
sys_user_role 用户角色关系
sys_role_permission 角色权限关系
sys_customer_assignment 员工客户归属
fin_customer_profile 客户画像和行为分
fin_risk_assessment 风险测评历史
fin_product 产品名称、代码、风险等级和适当性要求
fin_transaction 申购、赎回归模拟成交
fin_capital_flow 入金、出金和标准化资金流水
fin_holding 持仓、成本和当前市值
sys_login_record 登录结果、设备和常用设备标识
biz_work_order 定投渠道、风险揭示、二次确认和录音编号

⚠️ 实现归属说明(2026-09-14 补):上表混了两类表。按代码实际所在 repository 划分:

归属 表
风控域(app/repository/risk_repository.py) fin_risk_alert、fin_risk_notification、fin_risk_assessment、fin_customer_profile(只读 + 结案改行为分)
身份域(app/repository/identity_repository.py) sys_user、sys_role、sys_permission、sys_user_role、sys_role_permission、sys_customer_assignment、sys_login_record
场内交易域(其他 repository,风控只读) fin_product、fin_transaction、fin_capital_flow、fin_holding、biz_work_order

风控侧从不 import 身份域/交易域的 repository —— 需要这些数据时走跨域只读查询, 这对应 AGENTS.md 规则 6(MVC+S 分层)与风控红线(不改业务事实)。

✅ 红线 2 已实测复核:risk_repository.py 中没有任何 memory_unit / profile_snapshot 引用,画像数据只读 fin_customer_profile(8 处以上 join 均为该表)。 即有"风控不能读原始记忆台账、只能读画像落地表"这条边界。

写入表

表 允许写入内容
fin_risk_alert 新增预警、处置状态、确认信息、结案信息、升级信息、证据快照和 AI 分析
fin_customer_profile 结案时更新行为分
fin_risk_notification 新增风险通知和发送状态
interaction_audit 追加处置、权限拒绝、工具调用和 AI 生成审计

只读边界

  • 不修改客户、产品、交易、资金、持仓、登录和工单业务事实。
  • 不删除预警、通知、审计和处置记录。
  • 不直接修改 RBAC 表。
  • 不通过规则扫描写入撮合委托或成交。
  • 证据文件内容保存在项目配置的归档目录,数据库只记录归档信息。

关键字段

fin_risk_alert

  • alert_no:对外预警编号。
  • customer_id:客户内部关联 ID。
  • related_transaction_id:关联交易。
  • related_work_order_id:关联工单。
  • alert_type:风险类型。
  • alert_level:风险等级。
  • trigger_rule_codes:命中规则。
  • evidence_summary:证据摘要。
  • evidence_snapshot:结构化证据和归档信息。
  • status:处置状态。
  • ack_status、ack_at:确认状态和时间。
  • handle_result、close_reason、closed_at:闭环结果。
  • is_escalated、escalated_at、escalation_reason:升级信息。
  • ai_analysis:研判、话术和工单摘要。

sys_customer_assignment

  • customer_id:客户用户 ID。
  • employee_id:员工用户 ID。
  • employee_role:归属岗位类型。
  • assigned_at:归属生效时间。
  • unassigned_at:归属失效时间。

事务和一致性

  • 预警状态、行为分和审计在同一业务事务中提交。
  • 重复扫描和重复处置必须有幂等或状态保护。
  • 证据归档先写文件,成功后更新证据快照;失败不得留下业务状态脏数据。
  • 审计只允许追加,不允许普通业务接口修改或删除。

查询上限与索引

  • fin_risk_alert.trigger_rule_codes 增加 JSON 多值索引,用于规则编号筛选。
  • 预警详情中的资金流、持仓和登录记录分别最多返回 200 条。
  • 日报每组预警最多读取 5000 条。
  • 超限时通过 evidence_truncated 或 data_truncated 显式标记,不能伪装为全量结果。