模块 4 · 未接线

菜单有 ≠ API 已接
Chat 还有 B 方案三端点

前端 P0 主链路已真接(含风控三页 · 问数标签 · Dashboard hooks),但仍有分析对话占位、看板无钻取等缝。 开发态若 Dashboard「先闪错再正常」,多半是 StrictMode 双请求——已用 useAsyncSequence 丢弃过期响应。

仍开放 / 已修清单(2026-09-10)

风控 UI

台账筛选 · 适当性校验 · AML 扫描页已接 REST;高级运营能力仍简版。

问数

AnalystChatShell 占位 · 真问数在 AnalystQueryPage(模板/缓存标签 + dashboard/assets)。

竞态修复

useAsyncSequence 用于 Dashboard hooks、ChatPanel、风控/客户列表页等。

游客

VisitorChatWidget 首页试聊 · 与登录 ChatPanel 不同 API。

Chat 方案 B:三端点 + SSE 注意点

会话 API
GET  /api/chat/sessions
GET  /api/chat/sessions/{id}/messages
POST /api/chat/sessions/{id}/close
POST /api/chat/stream  → customer SSE
白话

列表/历史/关闭与发消息共用同一套鉴权(Bearer + X-Agent-Type)。

SSE 无心跳:断连可能留下半空回合——排障时查 session 表 + 是否 uvicorn 重启。

HashRouter:URL 带 #,生产 Nginx 要配 SPA fallback。

改 URL 进别人工作台

RequireAuth 只验「有没有 token」,不验「这个角色能不能进 /app/risk」。菜单隐藏 ≠ 安全——后端 AGENT_ACCESS_MATRIX 和平台 RBAC 才拒 403。

客户账号手动打开 /app/risk/alerts,只靠前端能拦住吗?