## 新入库(`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 个文件**,只抽样确认了改动性质与规模。若其中有需要复核的段落,
请指明文件,我逐处核对。
4.5 KiB
4.5 KiB
数据库依赖与读写边界
文档功能
本文档用于说明风控模块依赖的数据库表、读取和写入边界、关键字段用途及不可越界操作,供主项目合并、审计和排障使用。
读取表
| 表 | 用途 |
|---|---|
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显式标记,不能伪装为全量结果。