Files
group_fqcd_jr/docs/风控业务演示文档/22-风控模块需求说明书.md

15 KiB

风控模块需求说明书

文档信息

项目 内容
文档版本 v1.0
编制日期 2026-09-14
适用对象 主项目架构、前端、后端、测试、运维和风控业务人员
实现基线 当前 RM2_develop 风控模块代码
文档定位 主项目合并和联调时的风控模块统一需求口径

1. 背景与目标

本模块面向公募基金模拟交易场景,基于客户、产品、交易、资金、持仓、登录、工单等数据执行确定性风险扫描,生成风险预警,并提供证据查询、人工处置、通知、日报和只读 Agent 研判能力。

模块目标:

  • 对异常交易和适当性风险形成可解释、可追溯的结构化预警。
  • 支持风控人员确认、调查、关闭误报、完成结案和升级处理。
  • 提供客户、产品、交易、资金、持仓、登录、预警和通知八类证据。
  • 对高风险预警提供站内通知和邮件通知。
  • 提供九段式风险日报和日报邮件。
  • 提供“奶龙风控智能助手”只读查询和研判草案能力。
  • 所有关键动作写入审计,支持按预警和客户追溯。

2. 范围

2.1 本期范围

  • 风险概览。
  • 预警队列、筛选、排序、分页和详情。
  • 手动规则扫描。
  • 定时规则扫描。
  • 适当性错配、异常交易和频率筛查规则。
  • 预警确认、调查、误报关闭、完成结案、升级和证据归档。
  • 客户行为分更新。
  • 八类证据只读查询。
  • 通知记录查询。
  • 高风险预警邮件通知。
  • 九段式日报、流式生成和日报邮件发送。
  • 奶龙风控智能助手只读工具调用。
  • 风控操作审计。

2.2 不在本期范围

  • 用户登录、JWT 签发和通用 RBAC 底座。
  • 客户账户开户、充值、提现和真实资金操作。
  • 修改交易、资金、持仓和产品事实。
  • 自动确认、自动关闭或自动升级预警。
  • 演示数据由演示机按 26-演示机数据插入规则.md 准备,风控模块不负责初始化。
  • 正式前端页面由主项目统一前端实现,风控模块只提供接口和合并约束。
  • 高风险预警邮件多收件人扩展。
  • 将定时扫描自动注册到主项目统一 Worker。

3. 用户、角色与权限

3.1 角色

角色 使用范围
风控专员 risk_operator 查询风控数据、执行规则扫描、人工处置和日报操作
管理员 admin 具备风控业务权限,并负责配置和运维

3.2 权限

权限码 用途
risk:alert:read 风险概览、预警、证据、通知、日报和 Agent 只读查询
risk:alert:write 确认、调查、误报关闭、完成结案、升级和证据归档
risk:alert:scan 手动规则扫描
risk:report:mail 发送日报邮件
agent:run 运行奶龙风控智能助手

3.3 数据范围

  • 风控查询必须执行服务端客户数据范围过滤。
  • data_scope=all 可访问全部客户;受控范围只能访问归属客户。
  • 没有有效客户归属时必须失败关闭,不能默认放开。
  • 列表、详情、证据、通知、日报和 Agent 工具使用同一数据范围。

4. 预警状态与人工处置

4.1 状态

状态 含义 是否未闭环
待处理 预警已生成,尚未确认接收 是
调查中 已确认接收并进入人工调查 是
已排除 人工认定为误报并关闭 否
已结案 人工调查完成并形成处置结论 否

“升级处理”通过 is_escalated、escalated_at 和 escalation_reason 标记,不改变上述状态。

4.2 状态流转

待处理
  -> 确认接收
  -> 进入调查
  -> 关闭误报

待处理
  -> 确认接收
  -> 进入调查
  -> 完成结案

待处理或调查中
  -> 升级处理
  -> 保持原未闭环状态

4.3 处置规则

操作 前置条件 结果
确认接收 状态为待处理且尚未确认 写确认状态、确认时间和处理人
进入调查 已确认且状态为待处理 状态改为调查中
关闭误报 已确认且未闭环 状态改为已排除,记录误报理由和关闭时间
完成结案 已确认且状态为调查中 状态改为已结案,写处置结论并更新行为分
升级处理 已确认、未闭环且尚未升级 写明升级理由,不改变闭环状态
上传证据 已确认且状态为调查中 每笔预警最多归档一个文件,归档后不可覆盖

4.4 行为分

  • 初始行为分为 20 分。
  • 完成结案时按预警等级扣分:
    • 低风险扣 3 分。
    • 中风险扣 5 分。
    • 高风险扣 20 分。
  • 最低扣至 0 分。
  • 关闭误报和未闭环预警不扣分。
  • 行为分变化必须写入审计。

行为分关注等级:

等级 分数范围 筛选值
正常 16-20 normal
轻微关注 11-15 slight
需要关注 6-10 attention
高度关注 1-5 high
立即关注 0 immediate

5. 风控规则

5.1 通用扫描规则

  • 扫描只读取交易、资金、持仓、客户、产品、工单和登录数据。
  • 同一交易和同一规则组合不能重复生成预警。
  • 同一交易命中多个规则时合并为一条预警,保留最高风险等级并汇总规则和证据。
  • 扫描结果写入 fin_risk_alert 和审计。
  • 手动扫描和定时扫描共用同一扫描服务。

5.2 RW-003 大额快进快出

项目 要求
触发对象 赎回交易
条件 3 天内存在成功入金,且赎回比例不低于 80%
金额要求 赎回金额不低于 500000 元
风险等级 高
核心证据 入金流水、赎回交易、金额、时间、赎回比例

5.3 RW-007 适当性错配

项目 要求
触发对象 申购交易
条件 产品风险等级高于客户风险承受等级
风险留痕 缺少风险揭示、二次确认或双录任一项即认为留痕不完整
豁免额度 C3 买 R4 的单只持仓占比超过 20%,或 C4 买 R5 超过 10%
风险等级 等级差不少于 2 时为高;等级差为 1 时为中
核心证据 客户等级、产品等级、等级差、留痕、豁免比例和工单

5.4 RW-012 老年客户异常赎回

项目 要求
触发对象 赎回交易
年龄要求 不低于 65 岁
金额要求 赎回金额不低于 300000 元
均值要求 赎回金额不低于近一年历史平均金额的 3 倍
设备要求 交易前最近一次成功登录使用非常用设备
风险等级 高
核心证据 年龄、金额、历史均值、倍数、登录时间和设备

5.5 RW-015 夜间小额交易

项目 要求
触发时间 北京时间 00:00-05:59
金额要求 不超过 10000 元
风险等级 低
定位 夜间小额行为筛查,不直接认定异常

5.6 RW-018 自动定投频繁交易筛查

项目 要求
触发对象 存在工单关联的交易
条件 工单渠道为“定投”或“自动定投”
风险等级 低
定位 识别可能由有效定投产生的误报候选

6. 功能需求

FR-01 风险概览

  • 展示当前未闭环预警总数,不是当天新增数量。
  • 展示高风险、中风险和低风险数量。
  • 展示待处理数量和已超时数量。
  • 返回最多 3 条重点高风险预警。

FR-02 预警队列

  • 默认只查询未闭环预警。
  • 支持按关键词、客户编号、产品、风险等级、规则和创建时间筛选。
  • 按高风险、中风险、低风险排序,同等级按创建时间倒序。
  • 预警队列每页固定最多 10 条。

FR-03 预警详情

  • 返回预警编号、客户编号、脱敏姓名、产品、规则、等级、状态和证据摘要。
  • 返回客户、交易、产品、工单、资金流水、持仓、登录记录和证据快照。
  • 资金流水、持仓和登录记录各有详情上限,超过时通过 evidence_truncated 标识。

FR-04 手动规则扫描

  • 需要 risk:alert:scan 权限。
  • 需要 Idempotency-Key。
  • 与定时扫描互斥,不能同时执行。
  • 返回新增预警数、高风险数、通知记录数和通知创建失败原因。

FR-05 定时规则扫描

  • 默认关闭。
  • 开启后按配置间隔扫描。
  • 多个进程同时运行时通过分布式锁避免并发重复扫描。
  • 当前使用独立进程 python -m app.worker.risk_scan_scheduler。
  • 正式接入主项目时,应注册到统一 Worker 或由部署编排统一启动。

FR-06 人工处置

  • 支持确认接收、进入调查、关闭误报、完成结案和升级处理。
  • 所有写操作需要 risk:alert:write。
  • 写操作需要幂等键,重复请求回放首次响应。
  • 状态不允许跳步,重复操作返回冲突错误。

FR-07 行为分

  • 结案时更新客户行为分。
  • 行为分与预警状态更新在同一事务内提交。
  • 审计记录应包含变更前分数、扣分和变更后分数。

FR-08 证据归档

  • 支持 JPG、JPEG、PNG、WEBP、PDF、DOC、DOCX、XLS、XLSX、PPT、PPTX 和 TXT。
  • 单个文件默认最大 10 MB。
  • 文件保存到 RISK_EVIDENCE_DIR。
  • 文件重命名为预警编号并增加原扩展名。
  • 一笔预警只能归档一个文件,成功或重复归档均需有明确结果。
  • 归档状态写入预警证据快照。

FR-09 通知与预警邮件

  • 高风险预警同时创建站内通知和邮件通知。
  • 手动扫描和定时扫描均自动触发高风险预警邮件。
  • 邮件发送成功写 已发送,失败写 发送失败 和失败原因。
  • 邮件发送失败不回滚预警和站内通知。
  • 当前高风险预警邮件只支持一个收件人。
  • 日报邮件支持最多 10 个收件人,与预警邮件配置独立。

FR-10 风险日报

日报按北京时间和固定九段式模板生成:

  1. 当日预警数量。
  2. 等级分布。
  3. 重点风险事件。
  4. 未闭环事项,包含全部历史未闭环预警。
  5. 误报统计。
  6. 类型分布。
  7. 处置结果。
  8. 规则效果。
  9. 建议优化方向。
  • 日报统计数据来自数据库,模型只生成建议。
  • 模型不可用、返回空内容或输出不合规时使用规则化建议。
  • 日报生成写入审计。

FR-11 日报流式生成与邮件

  • 流式接口使用 SSE。
  • 事件类型包括 start、progress、replace 和 done。
  • 日报邮件需要 risk:report:mail 权限。
  • 日报邮件支持多个收件人和 dry-run。

FR-12 奶龙风控智能助手

  • 使用主项目 agent_type=risk。
  • 只允许查询风险概览、预警列表和指定预警证据。
  • 支持生成研判草案、沟通话术和工单摘要。
  • 同一 session_id 内使用最近 10 轮会话历史,支持连续追问。
  • 通用风险问答和预警上下文分别维护会话。
  • 刷新页面后当前不承诺跨刷新恢复。
  • Agent 不能确认、调查、关闭、升级预警,不能修改客户和交易事实。
  • 客户姓名和敏感信息必须脱敏。

FR-13 审计

以下动作必须写审计:

  • 规则扫描生成预警。
  • 定时扫描成功或失败。
  • 确认、调查、误报关闭、完成结案和升级。
  • 证据归档。
  • 日报生成。
  • 权限拒绝和安全操作。

7. 数据读写边界

7.1 主要写入表

表 用途
fin_risk_alert 预警、状态、人工处置和证据快照
fin_risk_notification 站内通知和邮件通知状态
biz_work_order 风险处置和关联工单兼容
interaction_audit 风控操作审计

7.2 只读数据源

数据 表
客户 sys_user、fin_customer_profile、fin_risk_assessment
产品 fin_product
交易 fin_transaction
资金 fin_capital_flow
持仓 fin_holding
登录 sys_login_record
工单 biz_work_order

风控模块不得修改交易、资金、持仓和产品事实。

8. 非功能要求

8.1 安全

  • 所有接口必须经过主项目鉴权。
  • 所有业务查询必须执行数据范围校验。
  • Agent 工具必须执行工具白名单和权限校验。
  • 日志、错误和响应不得泄露密码、密钥和完整敏感信息。

8.2 幂等

  • 扫描、确认、调查、关闭、结案、升级等写接口必须携带 Idempotency-Key。
  • 幂等键长度为 16-128 位 ASCII。
  • 同一键重复提交返回首次结果。
  • 同一键对应不同请求返回 409 IDEMPOTENCY_CONFLICT。

8.3 分页

  • 预警列表和其他列表每页最多 10 条。
  • 使用游标分页,游标绑定用户、筛选条件和数据范围。
  • 不允许只把页码或 offset 暴露给客户端。

8.4 时区

  • 数据库保存 UTC naive 时间。
  • 对外时间统一转换为 ISO 8601。
  • 日内判断、日报日期和夜间规则统一按 Asia/Shanghai。

8.5 降级

  • 模型不可用时使用规则化建议。
  • 邮件失败只影响通知状态。
  • Redis 等外部依赖失败不得破坏核心预警查询和处置链路。

9. 配置要求

9.1 扫描

  • RISK_SCAN_SCHEDULE_ENABLED
  • RISK_SCAN_INTERVAL_MINUTES
  • RISK_SCAN_RUN_IMMEDIATELY
  • RISK_SCAN_RETRY_LIMIT
  • RISK_SCAN_POLL_SECONDS

RISK_SCAN_RUN_IMMEDIATELY 当前仅保留兼容,不控制首次执行。

9.2 高风险预警邮件

  • RISK_ALERT_MAIL_ENABLED
  • RISK_ALERT_MAIL_DRY_RUN
  • RISK_ALERT_MAIL_RECIPIENTS

当前只支持一个收件人。

9.3 SMTP

  • RISK_SMTP_HOST
  • RISK_SMTP_PORT
  • RISK_SMTP_USERNAME
  • RISK_SMTP_PASSWORD
  • RISK_SMTP_SENDER
  • RISK_SMTP_USE_SSL
  • RISK_SMTP_TIMEOUT_SECONDS

9.4 证据

  • RISK_EVIDENCE_DIR
  • RISK_EVIDENCE_MAX_FILE_SIZE_MB

10. 验收标准

  • 未闭环预警、等级分布、待处理和超时统计正确。
  • 预警队列按风险等级排序,每页最多 10 条。
  • 五类规则按条件正确触发,不重复生成同一交易同规则预警。
  • 多规则命中同一交易时正确合并。
  • 人工处置状态机不允许非法跳转。
  • 结案后行为分正确扣减。
  • 八类证据可按数据范围查询。
  • 证据归档格式、大小和重复归档规则正确。
  • 高风险预警邮件状态能体现真实发送结果。
  • 日报九段式内容完整,历史未闭环预警不被分页截断。
  • Agent 只读边界和脱敏规则有效。
  • 关键操作均可在审计中追溯。

11. 当前限制与后续事项

  • 高风险预警邮件当前只支持一个收件人。
  • 定时扫描当前仍需独立进程,主项目需提供统一 Worker 注册或部署编排。
  • 本期不支持对话历史长期归档和 Redis-only 会话方案。
  • 正式前端已接入主项目,后续变更继续遵循 17-风控模块-前端合并提示词与验收约束.md。
  • 主项目合并前需要按 21-主项目合并后后端必改清单.md 完成接入。