Files
whale-town-end/README.md
moyin eb2ff99b09 docs:重构文档结构
- 创建模块化文档系统
- 添加用户认证系统详细文档
- 添加日志系统专门文档
- 简化主README,通过链接引用子系统文档
- 提高文档的可维护性和可读性
2025-12-17 14:39:55 +08:00

305 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pixel Game Server
一个基于 NestJS 的 2D 像素风游戏后端服务
---
## 🚨 开发者必读警告
**⚠️ 在开始任何开发工作之前,请务必阅读:[AI 辅助开发规范指南](./docs/AI辅助开发规范指南.md)**
**📢 重要提醒:**
- 🚫 **未阅读 AI 辅助指南的代码将无法通过审查**
- 🤖 **学会使用 AI 助手可以让你的开发效率提升 300%**
- 📝 **AI 可以帮你自动生成符合规范的代码和注释**
- 🔍 **AI 可以实时检查你的代码质量**
**👉 [立即阅读 AI 辅助开发指南](./docs/AI辅助开发规范指南.md)**
---
## 技术栈
- **NestJS** `^10.4.20` - 渐进式 Node.js 框架
- **TypeScript** `^5.9.3` - 类型安全
- **Socket.IO** - WebSocket 实时通信支持
- **RxJS** `^7.8.2` - 响应式编程库
- **Pino** `^10.1.0` - 高性能日志库
- **Jest** `^29.7.0` - 测试框架
### 核心依赖
**生产环境:**
- `@nestjs/common` `^10.4.20` - NestJS 核心功能
- `@nestjs/core` `^10.4.20` - NestJS 核心模块
- `@nestjs/config` `^4.0.2` - 配置管理
- `@nestjs/platform-express` `^10.4.20` - Express 平台适配器
- `@nestjs/websockets` `^10.4.20` - WebSocket 支持
- `@nestjs/platform-socket.io` `^10.4.20` - Socket.IO 适配器
- `nestjs-pino` `^4.5.0` - Pino 日志集成
- `pino` `^10.1.0` - 高性能日志库
- `reflect-metadata` `^0.1.14` - 装饰器元数据支持
- `rxjs` `^7.8.2` - 响应式编程
**开发环境:**
- `@nestjs/cli` `^10.4.9` - NestJS 命令行工具
- `@nestjs/schematics` `^10.2.3` - NestJS 代码生成器
- `@nestjs/testing` `^10.4.20` - 测试工具
- `@types/jest` `^29.5.14` - Jest 类型定义
- `@types/node` `^20.19.26` - Node.js 类型定义
- `jest` `^29.7.0` - 测试框架
- `ts-jest` `^29.2.5` - TypeScript Jest 支持
- `ts-node` `^10.9.2` - TypeScript 运行时
- `typescript` `^5.9.3` - TypeScript 编译器
- `pino-pretty` `^13.1.3` - Pino 美化输出
## 🚨 重要:开发前必读
### ⚠️ 所有开发者必须先阅读 AI 辅助开发指南
**在开始任何开发工作之前,请务必阅读:[AI 辅助开发规范指南](./docs/AI辅助开发规范指南.md)**
这个指南将教你如何:
- 🤖 使用 AI 助手遵循项目规范
- 📝 自动生成规范的代码和注释
- 🔍 实时检查代码质量
- 🚀 显著提高开发效率和代码质量
**不阅读此指南直接开发,代码审查将无法通过!**
---
## 开发规范
### 命名规范
项目采用统一的命名规范,确保代码风格一致:
- **文件/文件夹**:下划线分隔(如 `order_controller.ts`
- **变量/函数**:小驼峰命名(如 `userName``async queryUserInfo()`
- **类/构造函数**:大驼峰命名(如 `UserModel``OrderService`
- **常量**:全大写 + 下划线(如 `PORT``DB_HOST`
- **接口路由**:全小写 + 短横线(如 `/user/get-info``/order/create-order`
详细规范请查看:[命名规范文档](./docs/naming_convention.md)
### Git 提交规范
项目采用约定式提交规范,提交信息格式:`<类型><简短描述>`
**常用提交类型:**
- `feat` - 新增功能
- `fix` - 修复 Bug
- `docs` - 文档更新
- `style` - 代码格式调整
- `refactor` - 代码重构
- `perf` - 性能优化
- `test` - 测试相关
- `chore` - 构建/工具变动
**后端特定类型:**
- `api` - API 接口
- `db` - 数据库
- `websocket` - WebSocket
- `auth` - 认证授权
- `dto` - 数据传输对象
- `service` - 服务层
**核心原则:**
- ⭐ 一次提交只做一件事
- 使用中文冒号 ``
- 简短明确(不超过 50 字符)
- 能拆分就拆分,保持提交历史清晰
**示例:**
```bash
git commit -m "feat实现玩家注册和登录功能"
git commit -m "fix修复房间加入时的并发问题"
git commit -m "api添加玩家信息查询接口"
```
详细规范请查看:[Git 提交规范文档](./docs/git_commit_guide.md)
### 后端开发规范
项目要求严格的代码质量和可维护性标准:
**核心要求:**
- **完整注释**:每个模块、类、方法都必须有详细注释
- **全面业务逻辑**:考虑所有可能情况,包括异常和边界条件
- **关键日志记录**:重要操作必须记录日志,便于问题排查
- **防御性编程**:对所有输入进行验证,实现健壮的错误处理
**注释要求:**
```typescript
/**
* 玩家服务类
*
* 职责:处理玩家相关的业务逻辑
* 主要方法createPlayer(), updatePlayerInfo(), getPlayerById()
* 使用场景:玩家注册登录流程、个人陈列室数据管理
*/
@Injectable()
export class PlayerService {
/**
* 创建新玩家
* @param email 玩家邮箱地址
* @param nickname 玩家昵称
* @returns Promise<Player> 创建成功的玩家对象
* @throws BadRequestException 当邮箱格式错误时
*/
async createPlayer(email: string, nickname: string): Promise<Player> {
// 详细的业务逻辑实现...
}
}
```
详细规范请查看:[后端开发规范指南](./docs/backend_development_guide.md)
## 📚 开发文档
### 🔥 必读文档
- **[AI 辅助开发规范指南](./docs/AI辅助开发规范指南.md)** - 🚨 **所有开发者必读!** 教你如何使用 AI 遵循项目规范
### 📋 规范文档
- [后端开发规范](./docs/backend_development_guide.md) - 注释标准、业务逻辑设计和日志记录要求
- [Git 提交规范](./docs/git_commit_guide.md) - Git 提交信息格式和最佳实践
- [命名规范](./docs/naming_convention.md) - 项目命名规范和最佳实践
- [NestJS 使用指南](./docs/nestjs_guide.md) - 详细的 NestJS 开发指南,包含实战案例
### 💡 使用建议
1. **开发前**:先读 AI 辅助指南,了解如何用 AI 帮助遵循规范
2. **开发中**:参考具体规范文档,使用 AI 实时检查代码质量
3. **提交前**:用 AI 检查代码和提交信息是否符合规范
## 前置要求
- **Node.js** >= 18.0.0 默认24.7.0
- **pnpm** >= 8.0.0推荐默认10.25.0
如果还没有安装 pnpm请先安装
```bash
npm install -g pnpm
```
检查版本:
```bash
node --version
pnpm --version
```
## 安装依赖
```bash
pnpm install
```
## 开发
启动开发服务器(支持热重载):
```bash
pnpm dev
```
服务器将运行在 `http://localhost:3000`
## 测试
运行测试:
```bash
pnpm test
```
运行测试并监听文件变化:
```bash
pnpm test:watch
```
运行测试并生成覆盖率报告:
```bash
pnpm test:cov
```
## 构建
```bash
pnpm build
```
## 生产环境运行
```bash
pnpm start:prod
```
## 项目结构
```
src/
├── api/ # API 接口层(控制器、网关)
├── business/ # 业务逻辑层
├── core/ # 核心功能模块
│ ├── db/ # 数据库相关
│ └── utils/ # 工具函数
│ └── logger/ # 日志系统
├── main.ts # 应用入口
├── app.module.ts # 根模块
├── app.controller.ts # 根控制器
└── app.service.ts # 根服务
test/
├── api/ # API 测试
└── service/ # 服务测试
docs/ # 项目文档
├── backend_development_guide.md # 后端开发规范
├── git_commit_guide.md # Git 提交规范
├── naming_convention.md # 命名规范
└── nestjs_guide.md # NestJS 使用指南
```
## 核心功能
### 🔐 用户认证系统
完整的用户认证解决方案,支持多种登录方式和安全特性:
- 用户名/邮箱/手机号登录
- GitHub OAuth 第三方登录
- 密码重置和修改功能
- bcrypt 密码加密
- 基于角色的权限控制
**详细文档**: [用户认证系统文档](./docs/systems/user-auth/README.md)
### 📊 日志系统
基于 Pino 的高性能日志系统,提供结构化日志记录:
- 高性能日志记录
- 自动敏感信息过滤
- 多级别日志控制
- 请求上下文绑定
**详细文档**: [日志系统文档](./docs/systems/logger/README.md)
**💡 提示:使用 [AI 辅助开发指南](./docs/AI辅助开发规范指南.md) 可以让 AI 帮你自动生成符合规范的代码!**
## 下一步
-`src/api/` 目录下创建游戏相关的控制器和网关
-`src/model/` 目录下定义游戏数据模型
-`src/service/` 目录下实现游戏业务逻辑
- 使用 NestJS CLI 快速生成模块:`nest g module game`
- 添加 WebSocket 网关实现实时游戏逻辑