Appearance
ADR-004: 移除 Mock 层,接入真实 AI API
Status
Accepted
Date
2026-03-25
Context
MVP 初期使用 setTimeout + 预设数据模拟 AI 生成能力(文本/图片/视频)。随着后端 AI 能力 API 就绪,继续维护 Mock 层带来双重负担:
- 代码路径分叉(Mock/Real 切换逻辑),增加理解和测试成本
- Mock 数据与真实响应格式存在偏差,测试置信度低
- 真实错误场景(超时、API 限额、模型不可用)无法通过 Mock 验证
Options Considered
方案 A:保留 Mock,通过环境变量切换
- 优点:离线开发可用、测试不依赖外部服务
- 缺点:两套代码路径的维护成本;Mock 数据与真实响应格式容易失真
方案 B:完全移除 Mock,仅保留真实 API 实现
- 优点:代码路径唯一、测试置信度高;消除 Mock/Real 维护偏差
- 缺点:开发环境需要真实 API;单元测试需要 mock HTTP 层
Decision
选择 方案 B。
通过 AiService 接口抽象(见 ADR-006),单元测试对 ApiClient 进行 mock 即可隔离外部依赖,比维护完整 Mock 服务开销更小、置信度更高。
Consequences
正面影响:
services/ai/目录下只有一条真实代码路径(real.ts)- 移除了
import.meta.env分支判断和services/mock/目录
负面影响 / 已知风险:
- 开发环境需要配置
NUXT_PUBLIC_API_BASE(见.env.example) - 无网络时无法调试 AI 生成功能
需要的后续行动:
- 测试策略中说明如何 mock
ApiClient进行集成测试 - 确保
.env.example包含所有必需的环境变量
替代此决策的条件
若后端 API 频繁变更接口格式导致前端联调成本过高,可重新评估引入 Mock 层。