# 编码标准和测试策略

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

## 现有标准合规性
- **代码风格**: TypeScript严格模式，一致的缩进和命名
- **linting规则**: 已配置ESLint，支持TypeScript和React
- **测试模式**: 完整的测试框架已配置（Vitest + Testing Library + Playwright）
- **文档风格**: 代码注释良好，测试策略文档完整

### 增强特定标准
- **测试框架**: 使用Vitest + Testing Library + hono/testing + Playwright
- **测试位置**: 统一在 `tests/` 目录中，按类型分层组织
- **覆盖率目标**: 核心业务逻辑 > 80%
- **测试类型**: 单元测试、集成测试、E2E测试
- **测试策略**: 详见 [测试策略文档](./testing-strategy.md)

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

## 通用CRUD开发规范
- **CRUD开发**: 遵循 [通用CRUD规范](./generic-crud-standards.md) 进行开发
- **实体设计**: 使用TypeORM装饰器定义字段，为所有字段添加 `comment` 配置，包含时间戳字段
- **Schema设计**: 创建、更新、响应使用不同的Zod schema
- **枚举定义**: 所有业务枚举必须在共享类型文件中定义（如 `packages/server/src/share/*.types.ts`），避免在实体文件中定义，确保前端可安全导入
- **路由生成**: 使用 `createCrudRoutes` 自动生成API路由
- **用户跟踪**: 实现用户跟踪功能记录操作人信息

## 非通用CRUD路由开发规范
- **非通用路由开发**: 遵循 [非通用CRUD路由规范](./non-generic-crud-standards.md) 进行开发
- **路由类型**: 统计查询、层级数据查询、业务操作等非标准CRUD场景
- **Schema设计**: 使用Zod schema定义查询参数、路径参数和响应格式
- **错误处理**: 统一错误响应格式，包含完整的错误状态码
- **权限控制**: 复用现有中间件，实现资源所有权验证
- **文档生成**: 自动生成OpenAPI文档，包含请求响应示例

## Taro小程序开发规范
- **组件开发**: 遵循 [Taro小程序开发规范](./taro-mini-program-standards.md) 进行开发
- **平台适配**: 正确处理微信小程序、H5等平台差异
- **状态管理**: 使用React Query管理服务端状态
- **路由导航**: 统一使用Taro路由API

## Tailwind CSS样式规范
- **样式开发**: 遵循 [Tailwind CSS样式规范](./tailwind-css-standards.md) 进行开发
- **原子化原则**: 优先使用Tailwind原子类，避免自定义CSS
- **响应式设计**: 移动端优先的响应式布局
- **组件样式**: 使用shadcn/ui组件库和变体系统

## mini-demo迁移规范
- **迁移指导**: 遵循 [mini-demo迁移指导规范](./mini-demo-migration-guide.md) 进行迁移
- **样式保留**: 确保百分百样式保留，保持用户体验一致性
- **技术栈转换**: 原生小程序 → Taro + React + TypeScript
- **数据集成**: 模拟数据 → 真实后端API

## 管理后台开发规范
- **管理后台开发**: 遵循 [管理后台开发规范](./admin-dashboard-standards.md) 进行开发
- **页面结构**: 统一页面结构和布局标准
- **数据表格**: 标准表格组件使用规范
- **权限控制**: 基于角色的访问控制实现
- **用户体验**: 统一的加载状态、错误处理和用户反馈机制
