# 编码标准和测试策略

## 版本信息
| 版本 | 日期 | 描述 | 作者 |
|------|------|------|------|
| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |

## 现有标准合规性
- **代码风格**: TypeScript严格模式，一致的缩进和命名
- **linting规则**: 已配置ESLint，支持TypeScript和React
- **测试模式**: 完整的测试框架已配置（Vitest + Testing Library + Playwright）
- **文档风格**: 代码注释良好，测试策略文档完整
- **UI包开发**: 必须遵循[UI包开发规范](./ui-package-standards.md)（基于史诗008经验总结）

## 增强特定标准
- **测试框架**: 使用Vitest + Testing Library + hono/testing + Playwright
- **测试位置**: `__tests__` 文件夹与源码并列
- **覆盖率目标**: 核心业务逻辑 > 80%
- **测试类型**: 单元测试、集成测试、E2E测试

## 关键集成规则
- **现有API兼容性**: 确保测试不破坏现有API契约
- **数据库集成**: 使用测试数据库，避免污染生产数据
- **错误处理**: 测试各种错误场景和边界条件
- **日志一致性**: 测试日志格式和错误信息

## UI包开发提示

### 必须遵循的规范
开发UI包时，**必须**参考并遵循[UI包开发规范](./ui-package-standards.md)，该规范基于史诗008（AllIn UI模块移植）的经验总结。

### 关键检查点（基于史诗008经验）
1. **API路径映射验证**：开发前必须验证故事中的API路径映射与实际后端路由定义的一致性
2. **类型推断最佳实践**：必须使用RPC推断类型，而不是直接导入schema类型
3. **测试选择器优化**：必须为关键交互元素添加`data-testid`属性
4. **表单组件模式**：必须使用条件渲染两个独立的Form组件
5. **API调用一致性**：必须根据实际路由名称修正API调用

### 常见错误避免
- ❌ 不要直接导入schema类型（可能导致Date/string类型不匹配）
- ❌ 不要使用`getByText()`查找可能重复的文本元素
- ❌ 不要在单个Form组件上动态切换props
- ❌ 不要使用故事中描述但实际不存在的路由名称

### 参考实现
- 广告管理UI包：`packages/advertisement-management-ui`
- 平台管理UI包：`allin-packages/platform-management-ui`
- 渠道管理UI包：`allin-packages/channel-management-ui`（史诗008.002）
