# AI_RULES（AI开发规则）

## 核心原则

- 必须基于 SERVICE_MAP 开发
- 不允许绕过 Service 层
- 不允许直接操作数据库（除 repository）
- 必须遵守 STATE_MACHINE
- 必须接入 BILLING（如果涉及收费）
- 必须接入 PERMISSION
- 必须遵循 DOMAIN_MODEL 定义的实体关系
- 必须按照 TEST_SPEC 进行测试

---

## 开发顺序

1. Service（业务逻辑）
2. Repository（数据访问）
3. Controller（接口层）
4. Frontend（前端实现）
5. Test（测试用例）

---

## 禁止行为

- Controller 写业务逻辑
- 前端控制状态
- 跳过权限校验
- 硬编码业务规则
- 直接修改数据库表结构
- 忽略状态机流转
- 绕过服务层直接调用底层API

---

## 代码规范

- 服务类统一使用 `Service` 后缀
- 控制器类统一使用 `Controller` 后缀
- 仓库类统一使用 `Repository` 后缀
- 方法名使用驼峰命名法
- 变量名使用驼峰命名法
- 常量使用大写蛇形命名法
- 类名使用帕斯卡命名法

---

## 注释规范

- 每个服务类必须包含完整 JSDoc
- 每个方法必须包含参数和返回值说明
- 关键业务逻辑必须添加注释
- 状态变更必须添加注释说明
- 收费相关逻辑必须添加注释

---

## 错误处理

- 所有错误必须通过统一的错误处理机制
- 错误信息必须清晰明确
- 错误必须记录详细日志
- 敏感错误信息不得返回给前端

---

## 日志规范

- 所有服务调用必须记录日志
- 状态变更必须记录日志
- 收费行为必须记录日志
- 权限校验失败必须记录日志
- 异常情况必须记录日志

---

## 安全规范

- 密码必须加密存储
- 敏感数据必须加密传输
- API 调用必须使用 token 认证
- 防止 SQL 注入
- 防止 XSS 攻击
- 防止 CSRF 攻击

---

## 性能规范

- 避免不必要的数据库查询
- 合理使用缓存
- 批量操作优化
- 异步处理耗时操作
- 合理设置超时时间

---

## 测试规范

- 每个服务必须有对应的测试用例
- 测试用例必须覆盖正常流程和异常流程
- 测试用例必须基于 TEST_SPEC
- 测试结果必须记录详细日志
- 测试失败必须及时修复

---

## 代码审查

- 代码提交前必须进行自我审查
- 审查重点：
  - 业务逻辑正确性
  - 状态机遵循情况
  - 权限校验完整性
  - 收费逻辑正确性
  - 错误处理完整性
  - 性能优化
  - 安全漏洞

---

## 版本控制

- 代码必须使用 Git 进行版本控制
- 提交信息必须清晰明确
- 分支管理必须规范
- 代码合并前必须进行代码审查

---

## 持续集成

- 代码提交后必须触发 CI 流程
- CI 流程必须包含：
  - 代码质量检查
  - 单元测试
  - 集成测试
  - 构建检查
- CI 失败必须及时修复

---

## 逻辑集中化强制规则

> **详细规范**: 详见 [项目规则 - 第8章](../../.trae/rules/project-specific-rules.md#8-逻辑集中化原则硬性约束)

### 核心原则
- 所有业务逻辑必须集中在 Service 层
- 禁止分散在 Controller、前端或数据库操作中

### AI开发强制规则（摘要）

1. **禁止在 Controller 中实现业务逻辑** - Controller 只负责请求/响应和权限校验
2. **禁止在前端实现业务规则** - 前端只负责展示、交互和调用接口
3. **禁止直接操作数据库** - 所有数据库操作必须通过 Repository 层
4. **所有业务逻辑必须封装在 Service 层** - 每个业务操作必须对应一个 Service 方法
5. **所有状态变更必须通过 Service 方法** - 禁止直接修改状态字段

### 违反后果
- **代码审查不通过**：任何违反逻辑集中化原则的代码将被拒绝合并
- **AI 任务失败**：AI 无法维护分散的逻辑，导致任务执行失败
- **生产环境风险**：分散逻辑导致数据不一致，直接影响系统稳定性

---

## Mock 数据规范

> **详细规范**: 详见 [项目规则 - 第11章](../../.trae/rules/project-specific-rules.md#11-mock数据规范ai上下文安全)

### 核心原则
- **禁止**: 在业务组件中硬编码 Mock 数据
- **必须**: 通过 DataSource 抽象层获取数据
- **必须**: 所有 Mock 文件放在 `/mock` 目录

---

## TypeScript 编译错误修复

> **详细方案**: 详见 [TypeScript 错误修复方案](07_TypeScript_Error_Fix_Guide.md)

当前存在 613 个编译错误，必须按照分阶段策略修复：
1. **阶段 1**: 修复 tsconfig.json 配置
2. **阶段 2**: 消除所有 any 类型
3. **阶段 3**: 修复类型不匹配
4. **阶段 4**: 统一模块导入导出
5. **阶段 5**: 正确处理 undefined 和 null