1.9 KiB
1.9 KiB
测试、安全与运维
测试
tests/unit 覆盖脱敏、错误归一化、主题持久化、API 响应校验、认证原子存储、single-flight 续约、幂等重试、401 单次重放、运行数据不变量、结果语义标识和运行进入终态时的最终结果同步。tests/integration 验证主题切换、逐条结果筛选与搜索、单条重试结果跨筛选置顶跟踪等页面交互,以及所有 service 到后端路由的映射。
pnpm test
pnpm lint
pnpm build
安全
- 前端不包含
TARGET_API_KEY或JUDGE_API_KEY,也不应在 Vite 变量中暴露它们。 - 完整认证对象保存在
localStorage以支持多标签页原子轮换,不分开写入 access/refresh token;生产环境必须使用 HTTPS 并保持严格 CSP,降低 XSS 窃取风险。 - 续约的待处理 refresh token 和
Idempotency-Key作为一组保存;网络/5xx 失败后不换 key,refresh 401 或用户主动退出才清理凭据。 - logger 对 password、token、API key、Authorization 等键及嵌套数据递归脱敏。
- UI 权限控制只用于交互,真实授权必须由后端执行。
- 生产环境应使用 HTTPS,并将后端 CORS 限制为实际前端域名。
日志与错误
VITE_LOG_LEVEL 可为 debug / info / warn / error。生产环境推荐 warn。日志是结构化对象,但不发送到外部系统;如果日后引入观测平台,只需替换 logging/logger.ts 的输出端。React Error Boundary 处理未捕获的渲染错误,请求错误由页面提供重试入口。
部署
Docker 采用 Node 构建 + Nginx 静态服务两阶段镜像。Nginx 配置了 SPA history fallback、静态资源缓存和 /healthz。API 地址在构建时写入:
docker build --build-arg VITE_API_BASE_URL=https://api.example.com/api/v1 -t ai-safety-console-web .
docker run --rm -p 8080:80 ai-safety-console-web