Files
group_fqcd_jr/docs/风控业务演示文档/24-主项目风控前端改造TODO.md

20 KiB

主项目风控前端改造 TODO

文档信息

项目 内容
文档版本 v1.0
编制日期 2026-09-14
对比对象 原项目单页风控工作台与主项目 /portal/employee-risk/dashboard/
改造原则 保留主项目增强能力,补齐原项目缺失能力,破坏性交互调整先讨论

1. 改造边界

1.1 必须保留

以下能力属于主项目统一前端增强,不得因对齐原项目而回退:

  • 统一登录、JWT、RBAC、数据范围和服务端权限校验。
  • 统一门户、员工登录页和角色分流。
  • 统一 api-client.js、错误码、trace ID、重试和 401 会话失效处理。
  • 风险概览“未闭环预警”正确口径。
  • 预警队列按风险等级排序,每页 10 条。
  • 预警筛选、证据筛选和游标分页。
  • 通知记录展示发送状态和失败原因。
  • 手动扫描 RK006 60 秒独立超时。
  • 响应式布局、统一主题、组件和移动端基础适配。
  • 证据上传大小限制、文件类型校验和归档唯一约束。

1.2 不在本次前端改造范围

  • 修改风控 REST 接口路径、权限码和数据范围逻辑。
  • 修改预警状态机、行为分和规则扫描算法。
  • 将高风险邮件扩展为多收件人。
  • 自动确认、自动关闭或自动升级预警。
  • 将定时扫描并入 Web 进程。

2. TODO 总览

编号 事项 类型 优先级 是否需先讨论 预计影响
FE-01 保留主项目统一前端增强能力 约束 P0 否 防止功能回退
FE-02 日报展示数据来源、生成时间和结构化九段内容 修改 P0 否 前端
FE-03 Agent 连续会话与会话归属 部分完成 P0 否 同页连续会话已完成,刷新恢复待后续讨论
FE-04 Agent 绑定当前预警上下文 修改 P0 是 前端,可能涉及 Agent 输入约定
FE-05 恢复研判、话术、工单摘要快捷指令 修改 P1 是 前端提示词
FE-06 增加 Agent 能力边界和免责声明 修改 P1 否 前端
FE-07 恢复证据表关键字段 修改 P1 是 前端
FE-08 政策解读入口和数据来源 缺失 P1 是 前端,可能需后端接口
FE-09 系统提示入口 缺失 P2 是 前端,可能复用通知
FE-10 预警处置交互是否恢复原分步流程 交互 P2 是 前端
FE-11 主项目统一前端专项验收 验证 P0 否 测试

3. 直接修改项

FE-02 日报展示数据来源、生成时间和结构化九段内容

现状:

  • 日报弹窗主要展示一个可编辑文本区。
  • 模型成功生成时,接口返回 source=模型,但页面没有明确展示。
  • generated_at 和结构化九段数据没有完整呈现。

目标:

  • 生成完成后展示 日报日期、生成时间 和 source。
  • source=模型 显示为“大模型生成”,source=规则模板 显示为“规则降级”。
  • 保留可编辑正文和邮件发送。
  • 增加九段式结构化预览,至少展示重点风险、未闭环、误报原因、类型分布和规则效果。
  • data_truncated=true 时必须持续显示数据截断提示。

接口字段已存在,预计只需修改前端。

FE-06 增加 Agent 能力边界和免责声明

目标:

  • 明确说明 Agent 只能读取概览、预警和证据。
  • 明确不能确认、调查、关闭、升级预警。
  • 明确结论只是研判草案,不能替代人工复核。
  • 文案遵循主项目品牌和统一组件样式。

不涉及接口和权限变化。

4. 先讨论后实现

FE-03 Agent 连续会话与会话归属

当前状态:

  • 同一页面、同一会话内已复用 session_id。
  • Worker 会读取同一会话最近 10 轮消息并传给风险 Agent。
  • 通用风险问答与预警上下文分别维护。
  • 刷新页面后仍会创建新会话,当前不承诺跨刷新恢复。

剩余讨论:

  1. 会话是否按“当前用户 + 预警编号”归属。
  2. 通用风控问答是否使用独立会话。
  3. 会话历史和消息是否只保存在 Redis,还是继续写 MySQL。
  4. 页面刷新后是否需要恢复上下文。
  5. 是否保留多预警并行会话。

推荐方向:

  • 每个预警一个会话。
  • 通用问答一个会话。
  • 会话 ID 在页面状态中复用,不再每条消息重新生成。
  • 会话历史遵循主项目现有会话和记忆策略。

FE-04 Agent 绑定当前预警上下文

原项目行为:

  • 打开某条预警后,聊天上下文自动切换到该预警。
  • 研判、话术和工单摘要预设自动携带当前预警。
  • 可以主动退出当前预警上下文。

主项目当前行为:

  • Agent 面板与预警详情没有上下文绑定。
  • 快捷问题始终是通用问题。

需要讨论:

  • 前端把 alert_no 拼入提问文本,还是扩展 Agent 请求上下文。
  • 打开预警弹窗是否自动切换 Agent 上下文。
  • Agent 标签页如何显示当前绑定的预警编号。
  • 从预警详情切到通用问答时如何明确提示。

FE-05 恢复研判、话术、工单摘要快捷指令

目标快捷指令:

  • 生成研判:命中规则、核心证据、风险判断和人工复核建议。
  • 生成话术:中性审慎的客户回访话术,不预设客户违规。
  • 工单摘要:工单标题、命中规则、关键证据、建议动作和处理时限。

讨论项:

  • 是否只在绑定预警后启用。
  • 是否由前端拼提示词,还是由后端提供场景化任务模板。
  • 是否分别映射 task_type,以便模型路由和评测。

FE-07 恢复证据表关键字段

原项目比主项目多展示的字段:

  • 客户:年龄、职业、总资产、风险等级、测评分数、测评是否过期、行为分。
  • 产品:风险揭示、二次确认、双录要求。
  • 交易:渠道、交易状态、风险揭示、二次确认、确认时间。
  • 预警:优先级、处理时限、证据归档状态。

需要讨论:

  • 在当前宽表布局中恢复全部字段,还是使用“主要列 + 详情展开”。
  • 移动端隐藏哪些次要列。
  • 是否通过列配置统一定义,避免每张表重复代码。

推荐方向:

  • 桌面端保留核心列,增加“更多字段”展开。
  • 移动端使用卡片详情,不强行展示宽表。
  • 字段配置集中维护。

FE-08 政策解读入口和数据来源

原项目包含“政策解读”弹窗,主项目风控工作台没有该入口。

需要讨论:

  1. 政策内容来自知识库、独立风控接口还是静态配置。
  2. 是否只允许风控角色查看。
  3. 内容更新是否走知识发布流程。
  4. 是否需要显示来源、版本、生效时间和引用链接。
  5. 是否复用客服 Agent 的政策知识,而不是新增重复数据源。

当前主项目没有对应的风控政策 REST 端点,因此该事项可能需要先确定后端来源。

FE-09 系统提示入口

原项目通过“系统提示”弹窗查看通知,主项目已把通知记录放进独立标签页。

需要讨论:

  • 是否还需要全局系统提示图标。
  • 是否只提示未读通知、系统公告和操作风险。
  • 系统提示与通知记录是否合并。
  • 已读状态当前没有后端能力,是否需要新增。

推荐方向:

  • 不复制通知列表,只在统一门户提供未读通知入口。
  • 没有已读能力前,不引入“已读”视觉状态。

FE-10 预警处置交互是否恢复原分步流程

现状:

  • 主项目使用统一操作弹窗。
  • 误报理由、结案结论和升级理由通过通用字段提交。
  • 证据上传独立放在预警详情中。

原项目:

  • 确认接收有二次确认。
  • 关闭误报、结案和升级使用独立面板。
  • 证据上传附在结案面板中。

需要讨论:

  • 统一弹窗是否已足够清晰。
  • 是否恢复确认接收二次确认。
  • 是否把证据上传重新放入结案流程。
  • 是否保持主项目统一交互规范优先。

后端接口不变,改造只影响前端交互。

5. 实施顺序建议

第一阶段:低风险前端补齐

  1. 日报展示 source、生成时间、截断提示和结构化内容。
  2. Agent 能力边界和免责声明。
  3. 证据表字段配置化。

第二阶段:Agent 体验改造

  1. 确定会话归属策略。
  2. 恢复连续会话。
  3. 绑定当前预警上下文。
  4. 恢复研判、话术和工单摘要快捷指令。

第三阶段:待确认功能

  1. 政策解读数据源和接口方案。
  2. 系统提示与通知的关系。
  3. 预警处置交互是否恢复分步流程。

6. 验收清单

  • 主项目登录、RBAC、数据范围、错误码和会话失效能力不回退。
  • 风险概览显示未闭环口径。
  • 预警队列、证据、通知和 Agent 均使用统一 api-client。
  • 日报能直观看出模型生成或规则降级。
  • Agent 能绑定当前预警并连续对话。
  • 研判、话术和工单摘要三个场景可用。
  • 证据关键字段可查询且移动端不溢出。
  • 政策解读和系统提示若实现,必须有明确数据源。
  • 所有按钮权限与后端权限码一致。
  • 关键写操作保留幂等键和成功失败提示。
  • 主项目统一前端专项测试通过。

7. 已确认决策

  1. Agent 会话按“用户 + 预警”归属,通用问答和预警问答分开。
  2. 政策解读本期只保留前端入口和说明,不接入具体内容。
  3. 系统提示独立于通知记录,在账号信息旁提供按钮和弹窗列表。
  4. 证据表使用“核心列 + 展开详情”。
  5. 预警处置暂不恢复原分步交互,继续使用主项目统一操作弹窗。
  6. 所有改造必须遵循主项目前端风格,不能影响其他业务前端。

8. 本轮前端实现状态

已完成:

  • Agent 按通用和预警分别维护会话状态。
  • Agent 在同一会话内复用 session_id。
  • 风险 Agent 已使用同一会话最近 10 轮历史。
  • 打开预警后自动切换预警会话,并支持退出上下文。
  • 增加研判、话术和工单摘要三个预警场景指令。
  • 增加 Agent 能力边界和免责声明。
  • 增加账号信息旁的系统提示按钮和弹窗通知列表。
  • 增加政策解读预留按钮和未开放说明。
  • 证据表改为核心列加展开详情。
  • 日报增加结构化摘要、生成时间和模型来源展示。

待联调:

  • 使用主项目统一前端完成桌面端、移动端和权限状态验收。
  • 验证 Agent 连续会话与预警上下文在真实模型下的表现。
  • 评估是否将 session_id 持久化,以支持刷新页面后的会话恢复。
  • 政策解读数据源接入属于后续独立事项。

9. 前端问题记录、解答与处理状态(2026-09-14)

BUG-01 证据表展开按钮位于最右侧

问题:

  • 当前只能点击表格最右侧“展开”按钮。
  • 宽表需要横向滚动后才能看到按钮,操作不方便。

当前实现:

  • tableMarkup() 在最右侧增加 data-expand-row 按钮。
  • bindExpandableRows() 只监听该按钮。

结论与方案:

  • 可以改为点击整行任意数据单元格展开或缩回。
  • 建议保留操作列点击行为,其他数据单元格均切换详情。
  • 需要增加键盘可访问性和 aria-expanded 状态。
  • 只涉及前端,不修改接口。

BUG-02 展开详情显示数据库原生字段

问题:

  • 展开后字段名使用数据库列名。
  • 业务人员无法直接理解字段含义。

当前实现:

  • detailMarkup() 直接遍历 Object.entries(item)。

结论与方案:

  • 需要为八类证据分别建立业务字段标签和格式化规则。
  • 金额、比率、时间、布尔值和数组要使用统一格式。
  • 未登记的新字段可以回退显示原名,但必须标记为技术字段。
  • 只涉及前端字段映射。

BUG-03 Agent 缺少手动输入或选择预警编号的入口

问题:

  • 当前只有打开预警详情后才会自动进入该预警上下文。
  • 直接进入智能助手时只能进行通用问答。
  • 没有手动填写或选择预警编号的控件。

当前实现:

  • openAlert() 成功后调用 switchChatContext(alert.alert_no)。
  • Agent 请求会附带“当前预警编号:xxx”。
  • 用户主动退出后回到通用会话。

结论与方案:

  • 自动绑定可以保留。
  • 建议在智能助手中增加预警编号输入框和“绑定”按钮。
  • 绑定前可调用预警详情接口校验编号是否存在及是否有权限。
  • 也可提供当前预警列表的搜索选择,但首版输入框最直接。
  • 需要明确绑定失败、无权限和编号不存在时的提示。
  • 只涉及前端;现有详情接口足够完成校验。

BUG-04 报错信息持续展示

问题:

  • 部分错误提示出现后不会自动消失。
  • 影响表单继续操作。

当前实现:

  • Toast 默认 3.6 秒后移除。
  • 操作弹窗和邮件表单使用 form-alert--visible,只在下次打开或再次提交时才清除。
  • 内容区 renderError() 会持续显示到重试或刷新。

结论与方案:

  • 表单内错误应在以下时机清除:
    • 用户修改输入。
    • 用户关闭弹窗。
    • 请求重新开始。
    • 操作成功。
  • 内容区错误应保留到重试成功,否则用户会丢失状态说明。
  • 不建议所有错误统一自动消失,需区分“表单错误”和“页面加载错误”。

BUG-05 弹窗打开时 Toast 被遮挡

问题:

  • 预警告警操作成功或失败后,通知看不到。
  • 原生 dialog 位于浏览器顶层,普通页面 Toast 的 z-index 无法超过它。

当前实现:

  • showToast() 把 Toast 挂在 document.body。
  • 操作结果同时通过 Toast 展示。

结论与方案:

  • 弹窗内操作结果应优先使用弹窗内部状态区展示。
  • 推荐流程:
    • 失败:在弹窗内展示错误,弹窗保持打开。
    • 成功:弹窗内短暂展示成功状态,再关闭并刷新。
  • 关闭后的 Toast 只作为补充提示,不能作为唯一反馈。
  • 不修改后端。

BUG-06 证据时间筛选是否有效

问题:

  • 所有证据类型都展示开始时间和结束时间。
  • 用户无法判断时间筛选是否真的生效。

当前实现:

  • 时间条件已传给后端。
  • 后端只在以下证据类型应用时间:
    • transactions
    • capital_flows
    • login_records
    • notifications
  • 以下类型当前不应用时间:
    • customers
    • products
    • holdings
    • alerts

结论与方案:

  • 时间筛选不是摆设,但对部分证据类型无效。
  • 前端应根据证据类型动态显示或禁用时间筛选。
  • 在 alerts 类型下如果要按预警创建时间筛选,需要后端补充参数透传,属于后续后端事项。
  • 当前阶段至少应隐藏无效输入,避免误导业务人员。

本轮处理结果

  • BUG-01 已处理:证据表主行可直接点击或使用键盘展开、缩回。
  • BUG-02 已处理:展开详情使用业务字段标签,未知字段明确标记为技术字段。
  • BUG-03 已处理:智能助手增加预警编号输入和绑定入口,并保留打开预警详情后的自动绑定。
  • BUG-04 已处理:表单错误在输入、关闭和成功提交时清理;页面加载错误保留到重试。
  • BUG-05 已处理:成功操作自动关闭相关弹窗后在页面层展示 Toast;失败保留弹窗并显示错误。
  • BUG-06 已处理:删除证据时间筛选框;行为关注度只在客户证据类型显示。
  • BUG-07 已处理:证据快照改用业务字段标签,支持归档信息和合并证据嵌套展示,原始 JSON 改为折叠入口。
  • BUG-08 已处理:证据上传成功自动关闭详情弹窗并显示结果 Toast;失败保留弹窗并定位错误。
  • BUG-09 已处理:预警详情头部展示证据归档状态和归档文件名。
  • BUG-10 已处理:表单错误统一 5 秒自动消失;页面级错误保留到重试。
  • 站内提醒入口已优化:改为带铃铛图标和数量的明确按钮,弹窗只展示站内提醒,支持直接打开预警和跳转通知记录。
  • 风控列表分页已增加总条数和总页数:接口补齐 meta.total、meta.page_size,前端显示“第 x / y 页,共 n 条”。

10. 新增前端问题记录与解答(2026-09-14)

BUG-07 预警详情中的证据快照显示数据库原生字段

当前实现:

  • 预警详情通过 detailSection('证据快照', detail.evidence_snapshot) 显示。
  • detailSection() 对对象直接执行 JSON.stringify()。
  • 因此会看到 product_id、ratio、device_id、merged_alerts 等技术字段。

结论与方案:

  • 需要把证据快照改成业务化展示。
  • 建议按快照类型建立字段映射,例如:
    • product_id -> 产品记录编号,同时优先展示产品名称。
    • ratio -> 命中比例或赎回比例。
    • amount -> 交易金额。
    • average_amount -> 历史平均金额。
    • device_id -> 登录设备。
    • merged_alerts -> 多规则合并证据列表。
  • 保留“查看原始 JSON”作为专家模式入口,不默认展示。
  • 只涉及前端,不修改接口。

本次修复范围扩展:

  • 客户画像、关联交易、关联产品、关联工单、资金流水、持仓证据、登录证据全部改为业务字段展示。
  • 证据快照中的普通字段、归档信息、合并证据继续单独业务化渲染。
  • 各区块默认不再显示原生 JSON。
  • 原始 JSON 统一移动到“查看原始数据”折叠入口。

BUG-08 上传证据结果位于详情底部,反馈不直观

当前实现:

  • 证据上传表单位于预警详情最底部。
  • 成功和失败提示仍靠近表单显示。
  • 页面较长时,用户需要滚动到底部才能看到结果。

结论与方案:

  • 成功时自动关闭预警详情弹窗,再在普通页面层显示 Toast,避免被原生 dialog 遮挡。
  • 失败时保留详情弹窗,显示明确原因并滚动到错误位置。
  • 成功后刷新预警列表即可看到最新归档状态。
  • 只涉及前端交互和布局。

BUG-09 预警详情缺少证据归档状态

当前实现:

  • 列表预警对象已有 evidence_archived。
  • 预警详情主体也包含该字段。
  • 前端详情头部没有单独展示。

结论与方案:

  • 在预警详情头部增加“证据归档”字段。
  • 建议展示:
    • 已归档
    • 未归档
  • 已归档时如果能从 evidence_snapshot.evidence_archive 取得文件名,可继续展示。
  • 只涉及前端展示。

BUG-10 错误信息仍持续展示

当前实现:

  • 表单错误已在输入、关闭和成功提交时清除。
  • 但没有统一的 5 秒自动消失机制。
  • 页面加载错误和权限错误仍会持续展示到重试或刷新。

结论与方案:

  • 表单级错误统一在 5 秒后自动消失。
  • 新错误出现时取消旧错误计时器,避免旧计时器误清新错误。
  • 成功提示也可以统一使用 5 秒自动消失。
  • 页面级错误建议保留:
    • 登录失效
    • 无权限
    • 页面数据加载失败 这些错误不能自动消失,否则用户会不知道页面为空的原因。

BUG-11 重点预警的展示逻辑

当前实现:

  • 数据来自风险概览接口的 high_priority。
  • 查询条件为:
    • risk_level=高
    • open_only=true
    • 最多返回 3 条
  • 排序为先高等级、再按创建时间倒序。
  • 点击“查看详情”打开对应预警弹窗。

是否为新前端功能:

  • 是。
  • 原项目单页前端重点展示统一指标和预警队列。
  • 主项目统一风控前端新增了独立的“重点预警”侧栏,用于快速查看最多 3 条高风险未闭环预警。

结论:

  • 展示逻辑符合当前后端口径,不需要修改。
  • 如果后续希望调整数量、排序或展示字段,只需修改前端或新增概览参数。