// API 桥接层:所有对后端 /api/* 的调用统一从这里发出 // M1 阶段只定义接口壳,各画板暂不消费真实数据(继续用源码 mock) // M2 阶段画板逐个切到真实数据时,就用这里的方法 // ===== 登录拦截:仅对 /api/* 生效 ===== // 1) fetch → 注入 Authorization: Bearer ;响应 401 → 清 token 跳 /login // 2) EventSource → token 写到 query ?sso_token=(SSE 不能带 header) // 3) withApiToken(url) → 给