# Module Spec：api-system（src/api + axios request 封装）

module:
  id: api-system
  name: API 层（src/api 域拆分 + src/utils/request.ts）
  type: core
  entrypoints:
    - src/api/
    - src/utils/request.ts

public_api:
  concept:
    - "src/api/<domain>.ts：按业务域拆分 API 函数"
    - "src/utils/request.ts：axios 实例 + 拦截器 + 统一错误处理 + token 注入"

dependency_closure:
  runtime:
    - "axios（instance + interceptors）"
    - "qs（x-www-form-urlencoded 序列化）"
    - "store/user：token 注入、401/402 时 resetAll / refresh token"
    - "plugin-vab：gp.$baseMessage / gp.$baseLoading（loading 与错误提示）"
    - "plugin-errorlog：needErrorLog/addErrorLog（请求异常入库）"
    - "router：401/403 跳转"
    - "config：baseURL/requestTimeout/contentType/successCode/statusName/messageName/debounce 等"
    - "api/refreshToken：402 刷新 token 重试队列"

acceptance:
  - "正常接口返回 code=200 时返回 data"
  - "401 跳转 /login 且 resetAll 执行"
  - "402 触发 refreshToken 并重放队列请求"

pitfalls:
  - "request.ts 强依赖 gp（全局注入）与 user store；抽取到新项目需明确入口安装顺序"
  - "successCode/statusName/messageName 等与后端协议强耦合，迁移时先在规格声明差异"
