模块 1 · 路由与登录

四角色路由、HashRouter
与 Demo 账号

前端在 web/,用 React + HashRouter 做四角色工作台。登录后按角色跳进不同「家」——改路由时先对 App.tsx 和 demoAccounts.ts。

四角色默认入口

CUST-9527客户 → /app/customer/home
STAFF-10086理财师 → /app/advisor/home
STAFF-20001分析员 → /app/analyst/home
STAFF-30001风控 → /app/risk/home

登录页一键 Demo:LoginPage 调 POST /api/auth/login 拿 JWT,saveAuth 写入 localStorage,再 navigate(defaultRoute)。

路由树(App.tsx)

customer/*

home、profile、holdings、trades、chat。持仓/流水走平台 API,对话走 ChatPanel。

advisor/*

home、customers、chat。顾问助手 SSE,可指定 customer_id 查名下客户。

analyst/*

home、analytics/query(问数)、analytics/assets、analytics/chat。问数走 /api/analyst/*。

risk/*

home、alerts、simulate、chat。台账 REST + 风控对话,JWT 须带 risk 角色。

HashRouter 为什么? 构建产物是纯静态文件,#/app/customer/home 不依赖服务端路由重写,双击 dist/index.html 也能跑(API 仍要 proxy 或同域)。
main.tsx + App.tsx
// main.tsx
<HashRouter>
  <AppRoutes />
</HashRouter>

// demoAccounts.ts
defaultRoute: '#/app/customer/home'

// App.tsx · RequireAuth
if (!auth) return <Navigate to="/login" />
白话

整站包在 HashRouter 里,路径变化不刷新整页。

每个 Demo 账号绑好「登录后跳哪」——带 # 前缀,和 Hash 路由一致。

/app 下子路由都要过 RequireAuth:没 token 踢回登录页。

分析员 Demo 登录成功,默认打开哪条路径?