docs(GOV-010): 记录开发需求与完成结果
This commit is contained in:
@@ -145,7 +145,7 @@ utils/request.ts(Axios)
|
||||
|
||||
业务 API 文件从生成 Schema 中提取请求与响应类型,并使用封装后的 request。Vue 页面、组件、Store 和 Composable 不得直接导入 Axios、调用浏览器 `fetch` 或拼接业务 URL。DTO 到 ViewModel 的转换保留在功能适配层,使后端传输字段不会扩散到展示组件。
|
||||
|
||||
## 7. Axios 迁移
|
||||
## 7. Axios 迁移与依赖评估
|
||||
|
||||
迁移现有健康请求客户端脚手架,并建立业务 API 样例。当前页面尚未消费健康接口,现有 `client.ts` 只有直接单元测试,Playwright 则从测试进程直接请求后端;因此本次不虚构页面调用方:
|
||||
|
||||
@@ -158,7 +158,16 @@ utils/request.ts(Axios)
|
||||
|
||||
OpenAPI 文档与 OpenAI 兼容 API 是不同概念:前者是 NestJS 对本项目 HTTP 契约的机器可读描述;后者是未来后端 AI Provider 需要兼容的外部调用协议。本功能只改变浏览器到本项目 API 的 Axios 实现。
|
||||
|
||||
## 8. 安全设计
|
||||
### Axios 依赖评估
|
||||
|
||||
- 用途:Axios 1.19.0 作为浏览器到本项目 API 的唯一 HTTP 请求实现,由 `web/src/utils/request.ts` 封装。
|
||||
- 来源与维护:npm 包元数据指向官方仓库 `https://github.com/axios/axios.git`,许可证为 MIT;版本写入 `web/package.json` 并由 `pnpm-lock.yaml` 锁定。
|
||||
- 替代方案:原生 `fetch` 依赖最少,但拦截器、超时和错误策略需自行维护;旧 `openapi-fetch` 能直接消费 OpenAPI paths 类型,但不符合本项目已确认的 Axios 请求范式。
|
||||
- 选择理由:统一拦截器、取消信号和错误归一化能力成熟,能让业务 API 只返回类型化 DTO,同时继续由 `openapi-typescript` 提供契约类型。
|
||||
- 成本与风险:增加前端构建体积和一项供应链依赖;以生产构建字节数和 `pnpm audit --prod` 记录实际证据,不以主观估计代替。
|
||||
- 退出方式:保留稳定的 `RequestClient` 接口;若后续需要移除 Axios,可在 `utils/request.ts` 内切换到原生 `fetch`,业务域 API 无需改为直接 HTTP 调用。
|
||||
|
||||
## 8. 安全策略与评估
|
||||
|
||||
### 资产与信任边界
|
||||
|
||||
@@ -176,7 +185,7 @@ OpenAPI 文档与 OpenAI 兼容 API 是不同概念:前者是 NestJS 对本项
|
||||
|
||||
残余风险是自动校验无法判断文字结论是否真实,因此保留结构化人工 Review;Axios 响应数据的运行时 Schema 校验不在本次引入,现有健康适配器继续拒绝未知枚举,后续高风险接口按具体功能决定是否引入运行时校验。
|
||||
|
||||
## 9. 性能设计
|
||||
## 9. 性能目标与评估
|
||||
|
||||
- Axios 替代 `openapi-fetch` 会增加有限前端依赖体积,但换取项目已确认的统一请求范式、成熟拦截器和取消能力;构建产物记录迁移前后体积并在 Review 中评估变化。
|
||||
- 统一请求层不得默认无限重试,避免行情刷新时形成放大流量;本次不加入自动重试。
|
||||
|
||||
Reference in New Issue
Block a user