前后端 API 稳定化与前端重整计划
更新时间:2026-03-15
1. 目标
- 先冻结后端 API 契约,再推进前端页面重整。
- 把前端改造成“域适配层驱动”,而不是“页面直连接口字段”。
- 所有扩展相关页面统一收敛为 extension-first 语义。
2. 范围
优先覆盖以下域:
- extension catalog/installations/runtime/events
- platform(external-platform)入口与调用体验
- ops 中已扩展化模块(alerts/approval/notification/backup)
不在本阶段:
- 全站视觉重设计
- 非扩展域页面大规模改版
3. 契约冻结清单
以下接口作为第一批冻结对象:
GET /api/v1/extensions/catalogGET /api/v1/extensions/catalog/:idGET /api/v1/extensions/catalog/:id/releasesGET /api/v1/extensions/installationsGET /api/v1/extensions/installations/:idPOST /api/v1/extensions/installPOST /api/v1/extensions/:id/enablePOST /api/v1/extensions/:id/disablePOST /api/v1/extensions/:id/upgradeDELETE /api/v1/extensions/:id/uninstallGET /api/v1/extensions/:id/eventsPOST /api/v1/extensions/:id/health-checkPOST /api/v1/extensions/:id/reconcile
冻结内容:
- 请求/响应字段
- 分页参数与默认值
- 错误码与
details结构 - 权限键要求
4. 前端分层模板
建议统一三层:
api client:纯 HTTP 与 DTO 类型。domain adapter:把 DTO 映射为前端稳定 ViewModel。ui pages:只消费 ViewModel,不直接读后端细节字段。
约束:
- 页面禁止直接访问
response.data.raw异构字段。 - 结构化错误统一经过
errorMapper。
5. 错误语义标准化
最低支持以下错误码映射:
extension_already_installeddependency_blockedmissing_dependencyversion_mismatchdependency_cycleforbiddennot_found
前端统一处理:
- toast 简短错误
- 详情弹窗展示
details.blockers/details.missing/details.expected
6. 页面重整顺序
Phase A(先稳契约)
- 输出 OpenAPI/TS 类型基线(生成文件入库)。
- 建立
services/api+services/adapters双层结构。
Phase B(核心页面切流)
- 商店页与安装列表页改为 adapter 驱动。
- 安装详情页(config/events/health)统一字段来源。
Phase C(业务页切流)
- platform 页面去 legacy 文案与状态逻辑。
- alerts/approval/notification/backup 入口切到扩展页面容器。
Phase D(门禁与回归)
- 增加联调 smoke:安装、启停、升级、健康检查、事件分页。
- 增加 UI 回归截图对比。
7. 交付物模板
docs/contracts/extensions-openapi-v1.yaml(当前已落地)dashboard/src/services/api/extensions.ts(API 层)dashboard/src/services/adapters/extensions.ts(适配层)dashboard/src/constants/error-codes.tsdashboard/src/tests/smoke/extensions/*.spec.ts
8. 验收标准
- 后端新增非破坏字段不导致前端改动。
- 后端兼容更新时,前端仅改 adapter,不改页面业务逻辑。
- 扩展域关键链路(安装/升级/启停/健康检查)可稳定回归。
