You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.9 KiB
3.9 KiB
后端联调指南
环境与代理
- 前端目录:
frontend-vue - 开发代理:
frontend-vue/vite.config.ts:25-30将前端的/api代理到后端VITE_API_TARGET - 环境变量:
frontend-vue/.env.development示例:VITE_API_TARGET=https://your-backend.example.com- 可选:
VITE_DEV_HOST、VITE_ALLOWED_HOSTS控制本地开发主机与允许的外网访问
- 启动与构建:
- 开发:
cd frontend-vue && npm i && npm run dev - 预览:
npm run preview
- 开发:
鉴权与凭证
- 认证头:
Authorization: Bearer <token> - 前端存储:
localStorage键名:cm_user、cm_token- 应用启动恢复:
frontend-vue/src/app/main.ts:10-12
- 路由守卫:
frontend-vue/src/app/router/index.ts:23-30未登录重定向到登录页;基于meta.roles进行角色校验
关键接口规范
- 健康检查:
GET /v1/health - 登录:
POST /v1/user/login- 请求体:
{ username, password } - 响应体:
{ token, user: { username, role, email? } }
- 请求体:
- 注册:
POST /v1/user/register- 请求体:
{ username, email, password, fullName } - 响应体:
{ token?, user: { username, role, email? } }
- 请求体:
- 用户列表:
GET /api/v1/users- 响应体:
{ users: Array<{ username, role, email }> }或Array<{ username, role, email }> - 前端选择逻辑:仅匹配当前登录用户名;未匹配则显示错误提示
- 权限不足(例如操作员 403):页面显示权限提示
- 角色值规范化:后端返回的
role会统一转为小写并支持常见别名(如administrator→admin、ops→operator)
- 响应体:
- 集群与节点:
GET /v1/clusters→[{ uuid, host, ip, count, health }]POST /v1/clusters、DELETE /v1/clusters/:id、POST /v1/clusters/:id/start|stopGET /v1/nodes?cluster=<uuid>→[{ name, ip, status, cpu, mem, updated }]POST /v1/nodes/:name/start|stop、DELETE /v1/nodes/:name
- 指标:
- CPU 趋势:
GET /v1/metrics/cpu_trend?cluster=<uuid>→{ times: string[], values: number[] } - 内存使用:
GET /v1/metrics/memory_usage?cluster=<uuid>→{ used: number, free: number }
- CPU 趋势:
- 诊断:
- 故障摘要:
GET /v1/faults/summary?node=<name>|cluster=<host>→{ code, time, scope } - AI 对话历史:
GET /v1/ai/history?sessionId=<id>→{ messages: Array<{ role, content, reasoning? }> } - AI 对话:
POST /v1/ai/chat→{ reply, reasoning? }
- 故障摘要:
前端数据绑定要点
- 个人主页:
frontend-vue/src/app/views/Profile.vue- 仅使用后端数据;加载中与错误态可视化
- 角色标签映射:
frontend-vue/src/app/constants/roles.ts
- 角色来源:
- 登录/注册优先采用后端返回的
user.role或role(frontend-vue/src/app/stores/auth.ts:55-72,74-91)
- 登录/注册优先采用后端返回的
- 诊断页与导航:
- 路由授权:
diagnosis允许admin/operator(frontend-vue/src/app/router/index.ts:12) - 侧边栏入口基于角色显示(
frontend-vue/src/app/components/Sidebar.vue:7)
- 路由授权:
联调步骤
- 设置
VITE_API_TARGET指向后端地址,确保后端允许来自前端的 CORS 与 Host - 启动前端后检查
GET /v1/health返回正常 - 使用真实账号登录,确认:
GET /v1/user/me返回用户信息,个人主页字段显示为后端数据- 侧边栏与页面访问受角色控制
- 仪表板与诊断页数据来自后端接口
- 常见问题:
- Token 无效或过期 → 返回
401,需要重新登录 - 代理失败 → 检查
VITE_API_TARGET与后端协议/端口 - 外网访问本地开发 → 配置
VITE_ALLOWED_HOSTS,参考Cloudflare-Tunnel-Guide.md
- Token 无效或过期 → 返回
参考文件
frontend-vue/vite.config.tsfrontend-vue/src/app/main.tsfrontend-vue/src/app/router/index.tsfrontend-vue/src/app/stores/auth.tsfrontend-vue/src/app/views/Profile.vuefrontend-vue/src/app/components/Sidebar.vuefrontend-vue/src/app/constants/roles.ts