# AI代码检查执行指南 - Whale Town 游戏服务器

## 🎯 执行前准备

### 📋 必须收集的用户信息
在开始任何检查之前，**必须**收集以下信息：
- **用户当前日期**：用于修改记录和时间戳更新
- **用户名称**：用于@author字段处理和修改记录

### 🏗️ 项目特性识别
本项目是**NestJS游戏服务器**，具有以下特点：
- **双模式架构**：支持数据库模式和内存模式
- **实时通信**：基于WebSocket的实时双向通信
- **属性测试**：管理员模块使用fast-check进行随机化测试
- **分层架构**：Core层（技术实现）+ Business层（业务逻辑）

## 🔄 执行原则

### ⚠️ 强制要求
- **分步执行**：每次只执行一个步骤，严禁跳步骤或合并执行
- **等待确认**：每步完成后必须等待用户确认才能进行下一步
- **修改验证**：每次修改文件后必须重新检查该步骤并提供验证报告
- **🔥 修改后必须重新执行当前步骤**：如果在当前步骤中发生了任何修改行为（文件修改、重命名、移动等），AI必须立即重新执行该步骤的完整检查，不能直接进入下一步骤
- **问题修复后重检**：如果当前步骤出现问题需要修改时，AI必须在解决问题后重新执行该步骤，确保没有其他遗漏的问题
- **用户信息使用**：所有日期字段使用用户提供的真实日期，@author字段正确处理

### 🎯 执行流程
```
用户请求代码检查
    ↓
收集用户信息（日期、名称）
    ↓
识别项目特性
    ↓
执行步骤1 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤1 → 验证报告 → 等待确认
    ↓
执行步骤2 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤2 → 验证报告 → 等待确认
    ↓
执行步骤3 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤3 → 验证报告 → 等待确认
    ↓
执行步骤4 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤4 → 验证报告 → 等待确认
    ↓
执行步骤5 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤5 → 验证报告 → 等待确认
    ↓
执行步骤6 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤6 → 验证报告 → 等待确认
    ↓
执行步骤7 → 提供报告 → 等待确认
    ↓
[如果发生修改] → 🔥 立即重新执行步骤7 → 验证报告 → 等待确认

⚠️ 关键规则：任何步骤中发生修改行为后，必须立即重新执行该步骤！
```

## 📚 步骤执行指导

### 步骤1：命名规范检查
**执行时读取：** `step1-naming-convention.md`
**重点关注：** 文件夹结构扁平化、游戏服务器特殊文件类型
**完成后：** 提供检查报告，等待用户确认

### 步骤2：注释规范检查
**执行时读取：** `step2-comment-standard.md`
**重点关注：** @author字段处理、修改记录更新、时间戳规则
**完成后：** 提供检查报告，等待用户确认

### 步骤3：代码质量检查
**执行时读取：** `step3-code-quality.md`
**重点关注：** TODO项处理、未使用代码清理
**完成后：** 提供检查报告，等待用户确认

### 步骤4：架构分层检查
**执行时读取：** `step4-architecture-layer.md`
**重点关注：** Core层命名规范、依赖关系检查
**完成后：** 提供检查报告，等待用户确认

### 步骤5：测试覆盖检查
**执行时读取：** `step5-test-coverage.md`
**重点关注：** 严格一对一测试映射、测试文件位置、测试执行验证
**完成后：** 提供检查报告，等待用户确认

#### 🧪 测试文件调试规范
**调试测试文件时必须遵循以下流程：**

1. **读取jest.config.js配置**
   - 查看jest.config.js了解测试环境配置
   - 确认testRegex模式和文件匹配规则
   - 了解moduleNameMapper和其他配置项

2. **使用package.json中的已有测试指令**
   - **禁止自定义jest命令**：必须使用package.json中scripts定义的测试命令
   - **常用测试指令**：
     - `npm run test` - 运行所有测试
     - `npm run test:unit` - 运行单元测试(.spec.ts文件)
     - `npm run test:integration` - 运行集成测试(.integration.spec.ts文件)
     - `npm run test:e2e` - 运行端到端测试(.e2e.spec.ts文件)
     - `npm run test:watch` - 监视模式运行测试
     - `npm run test:cov` - 运行测试并生成覆盖率报告
     - `npm run test:debug` - 调试模式运行测试
     - `npm run test:isolated` - 隔离运行测试
   
3. **特定模块测试指令**
   - **Zulip模块测试**：
     - `npm run test:zulip` - 运行所有Zulip相关测试
     - `npm run test:zulip:unit` - 运行Zulip单元测试
     - `npm run test:zulip:integration` - 运行Zulip集成测试
     - `npm run test:zulip:e2e` - 运行Zulip端到端测试
     - `npm run test:zulip:performance` - 运行Zulip性能测试

4. **测试执行验证流程**
   ```
   发现测试问题 → 读取jest.config.js → 选择合适的npm run test:xxx指令 → 执行测试 → 分析结果 → 修复问题 → 重新执行测试
   ```

5. **测试指令选择原则**
   - **单个文件测试**：使用`npm run test -- 文件路径`
   - **特定类型测试**：使用对应的test:xxx指令
   - **调试测试**：优先使用`npm run test:debug`
   - **CI/CD环境**：使用`npm run test:isolated`

### 步骤6：功能文档生成
**执行时读取：** `step6-documentation.md`
**重点关注：** API接口文档、WebSocket事件文档
**完成后：** 提供检查报告，等待用户确认

### 步骤7：代码提交
**执行时读取：** `step7-code-commit.md`
**重点关注：** Git变更校验、修改记录一致性检查、规范化提交流程
**完成后：** 提供检查报告，等待用户确认

## 📋 统一报告模板

每步完成后使用此模板报告：

```
## 步骤X：[步骤名称]检查报告

### 🔍 检查结果
[发现的问题列表]

### 🛠️ 修正方案  
[具体修正建议]

### ✅ 完成状态
- 检查项1 ✓/✗
- 检查项2 ✓/✗

**请确认修正方案，确认后进行下一步骤**
```

## 🚨 全局约束

### 📝 文件修改记录规范（重要）
**每次执行完修改后，文件顶部都需要更新修改记录和相关信息**

#### 修改类型定义
- `代码规范优化` - 命名规范、注释规范、代码清理等
- `功能新增` - 添加新的功能或方法
- `功能修改` - 修改现有功能的实现
- `Bug修复` - 修复代码缺陷
- `性能优化` - 提升代码性能
- `重构` - 代码结构调整但功能不变

#### 修改记录格式要求
```typescript
/**
 * 最近修改：
 * - [用户日期]: 代码规范优化 - 清理未使用的导入 (修改者: [用户名称])
 * - 2024-01-06: Bug修复 - 修复邮箱验证逻辑错误 (修改者: 李四)
 * - 2024-01-05: 功能新增 - 添加用户验证码登录功能 (修改者: 王五)
 * 
 * @author [处理后的作者名称]
 * @version x.x.x
 * @since [创建日期]
 * @lastModified [用户日期]
 */
```

#### 🔢 最近修改记录数量限制
- **最多保留5条**：最近修改记录最多只保留最新的5条记录
- **超出自动删除**：当添加新的修改记录时，如果超过5条，自动删除最旧的记录
- **保持时间顺序**：记录按时间倒序排列，最新的在最上面
- **完整记录保留**：每条记录必须包含完整的日期、修改类型、描述和修改者信息

#### 版本号递增规则
- **修订版本+1**：代码规范优化、Bug修复 (1.0.0 → 1.0.1)
- **次版本+1**：功能新增、功能修改 (1.0.1 → 1.1.0)
- **主版本+1**：重构、架构变更 (1.1.0 → 2.0.0)

#### 时间更新规则
- **仅检查不修改**：如果只是检查而没有实际修改文件内容，**不更新**@lastModified字段
- **实际修改才更新**：只有真正修改了文件内容时才更新@lastModified字段和添加修改记录
- **Git变更检测**：通过`git status`和`git diff`检查文件是否有实际变更，只有git显示文件被修改时才需要添加修改记录和更新时间戳

### @author字段处理规范
- **保留原则**：人名必须保留，不得随意修改
- **AI标识替换**：只有AI标识（kiro、ChatGPT、Claude、AI等）才可替换为用户名称
- **判断示例**：`@author kiro` → 可替换，`@author 张三` → 必须保留

### 游戏服务器特殊要求
- **WebSocket文件**：Gateway文件必须有完整的连接、消息处理测试
- **双模式服务**：内存服务和数据库服务都需要完整测试覆盖
- **属性测试**：管理员模块使用fast-check进行属性测试
- **测试分离**：严格区分单元测试、集成测试、E2E测试、性能测试

## 🔧 修改验证流程

### 🔥 修改后立即重新执行规则（重要）
**任何步骤中发生修改行为后，AI必须立即重新执行该步骤，不能直接进入下一步骤！**

#### 修改行为包括但不限于：
- 文件内容修改（代码、注释、配置等）
- 文件重命名
- 文件移动
- 文件删除
- 新建文件
- 文件夹结构调整

#### 强制执行流程：
```
步骤执行中 → 发现问题 → 执行修改 → 🔥 立即重新执行该步骤 → 验证无遗漏 → 用户确认 → 下一步骤
```

### 问题修复后的重检流程
当在任何步骤中发现问题并进行修改后，必须遵循以下流程：

1. **执行修改操作**
   - 根据发现的问题进行具体修改
   - 确保修改内容准确无误
   - **更新文件顶部的修改记录、版本号和@lastModified字段**

2. **🔥 立即重新执行当前步骤**
   - **不能跳过这一步！**
   - 完整重新执行该步骤的所有检查项
   - 不能只检查修改的部分，必须全面重检

3. **提供验证报告**
   - 确认之前发现的问题已解决
   - 确认没有引入新的问题
   - 确认没有遗漏其他问题

4. **等待用户确认**
   - 提供完整的验证报告
   - 等待用户确认后才能进行下一步骤

### 验证报告模板
```
## 步骤X：修改验证报告

### 🔧 已执行的修改操作
- 修改类型：[文件修改/重命名/移动/删除等]
- 修改内容：[具体修改描述]
- 影响文件：[受影响的文件列表]

### 📝 已更新的修改记录
- 添加修改记录：[用户日期]: [修改类型] - [修改内容] (修改者: [用户名称])
- 更新版本号：[旧版本] → [新版本]
- 更新时间戳：@lastModified [用户日期]

### 🔍 重新执行步骤X的完整检查结果
[完整重新执行该步骤的所有检查项的结果]

### ✅ 验证状态
- 原问题已解决 ✓
- 修改记录已更新 ✓
- 无新问题引入 ✓
- 无其他遗漏问题 ✓
- 步骤X检查完全通过 ✓

**🔥 重要：本步骤已完成修改并重新验证，请确认后进行下一步骤**
```

### 重检的重要性
- **确保完整性**：避免修改过程中遗漏其他问题
- **防止新问题**：确保修改没有引入新的问题
- **保证质量**：每个步骤都达到完整的检查标准
- **维护一致性**：确保整个检查过程的严谨性
- **🔥 强制执行**：修改后必须重新执行，不能跳过这个环节

## ⚡ 关键成功要素

- **严格按步骤执行**：不跳步骤，不合并执行
- **🔥 修改后立即重新执行**：任何修改行为后必须立即重新执行当前步骤，不能直接进入下一步
- **问题修复后必须重检**：修改文件后必须重新执行整个步骤，确保无遗漏
- **修改记录必须更新**：每次修改文件后都必须更新文件顶部的修改记录、版本号和时间戳
- **真实修改验证**：通过工具验证修改效果
- **用户信息准确使用**：日期和名称信息正确应用
- **项目特性适配**：针对游戏服务器特点优化检查
- **完整报告提供**：每步都提供详细的检查报告

---

**开始执行前，请确认已收集用户日期和名称信息！**