docs:更新 README 文档

- 更新技术栈版本信息和核心依赖
- 添加日志系统功能介绍和使用示例
- 新增测试命令说明
- 完善项目结构说明
This commit is contained in:
moyin
2025-12-13 16:18:56 +08:00
parent dff0ac8325
commit 6aa34ea379

185
README.md
View File

@@ -4,28 +4,38 @@
## 技术栈 ## 技术栈
- **NestJS** `^10.0.0` - 渐进式 Node.js 框架 - **NestJS** `^10.4.20` - 渐进式 Node.js 框架
- **TypeScript** `^5.3.0` - 类型安全 - **TypeScript** `^5.9.3` - 类型安全
- **Socket.IO** - WebSocket 实时通信支持 - **Socket.IO** - WebSocket 实时通信支持
- **RxJS** `^7.8.1` - 响应式编程库 - **RxJS** `^7.8.2` - 响应式编程库
- **Pino** `^10.1.0` - 高性能日志库
- **Jest** `^29.7.0` - 测试框架
### 核心依赖 ### 核心依赖
**生产环境:** **生产环境:**
- `@nestjs/common` `^10.0.0` - NestJS 核心功能 - `@nestjs/common` `^10.4.20` - NestJS 核心功能
- `@nestjs/core` `^10.0.0` - NestJS 核心模块 - `@nestjs/core` `^10.4.20` - NestJS 核心模块
- `@nestjs/platform-express` `^10.0.0` - Express 平台适配器 - `@nestjs/config` `^4.0.2` - 配置管理
- `@nestjs/websockets` `^10.0.0` - WebSocket 支持 - `@nestjs/platform-express` `^10.4.20` - Express 平台适配器
- `@nestjs/platform-socket.io` `^10.0.0` - Socket.IO 适配器 - `@nestjs/websockets` `^10.4.20` - WebSocket 支持
- `reflect-metadata` `^0.1.13` - 装饰器元数据支持 - `@nestjs/platform-socket.io` `^10.4.20` - Socket.IO 适配器
- `rxjs` `^7.8.1` - 响应式编程 - `nestjs-pino` `^4.5.0` - Pino 日志集成
- `pino` `^10.1.0` - 高性能日志库
- `reflect-metadata` `^0.1.14` - 装饰器元数据支持
- `rxjs` `^7.8.2` - 响应式编程
**开发环境:** **开发环境:**
- `@nestjs/cli` `^10.0.0` - NestJS 命令行工具 - `@nestjs/cli` `^10.4.9` - NestJS 命令行工具
- `@nestjs/schematics` `^10.0.0` - NestJS 代码生成器 - `@nestjs/schematics` `^10.2.3` - NestJS 代码生成器
- `@types/node` `^20.0.0` - Node.js 类型定义 - `@nestjs/testing` `^10.4.20` - 测试工具
- `ts-node` `^10.9.0` - TypeScript 运行时 - `@types/jest` `^29.5.14` - Jest 类型定义
- `typescript` `^5.3.0` - TypeScript 编译器 - `@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 美化输出
## 开发规范 ## 开发规范
@@ -82,11 +92,50 @@ git commit -m "api添加玩家信息查询接口"
详细规范请查看:[Git 提交规范文档](./docs/git_commit_guide.md) 详细规范请查看:[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)
## 文档 ## 文档
- [NestJS 使用指南](./docs/nestjs_guide.md) - 详细的 NestJS 开发指南,包含实战案例 - [NestJS 使用指南](./docs/nestjs_guide.md) - 详细的 NestJS 开发指南,包含实战案例
- [命名规范](./docs/naming_convention.md) - 项目命名规范和最佳实践 - [命名规范](./docs/naming_convention.md) - 项目命名规范和最佳实践
- [Git 提交规范](./docs/git_commit_guide.md) - Git 提交信息格式和最佳实践 - [Git 提交规范](./docs/git_commit_guide.md) - Git 提交信息格式和最佳实践
- [后端开发规范](./docs/backend_development_guide.md) - 注释标准、业务逻辑设计和日志记录要求
## 前置要求 ## 前置要求
@@ -112,23 +161,6 @@ pnpm --version
pnpm install pnpm install
``` ```
**注意**首次安装时pnpm 可能会提示需要批准构建脚本。这是 pnpm 的安全特性,用于防止恶意脚本执行。
如果看到以下警告:
```
Warning: Ignored build scripts: @nestjs/core.
Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.
```
请运行以下命令批准 NestJS 的构建脚本:
```bash
pnpm approve-builds
```
然后选择批准 `@nestjs/core` 和其他 NestJS 相关包的构建脚本。
## 开发 ## 开发
启动开发服务器(支持热重载): 启动开发服务器(支持热重载):
@@ -139,6 +171,26 @@ pnpm dev
服务器将运行在 `http://localhost:3000` 服务器将运行在 `http://localhost:3000`
## 测试
运行测试:
```bash
pnpm test
```
运行测试并监听文件变化:
```bash
pnpm test:watch
```
运行测试并生成覆盖率报告:
```bash
pnpm test:cov
```
## 构建 ## 构建
```bash ```bash
@@ -156,11 +208,11 @@ pnpm start:prod
``` ```
src/ src/
├── api/ # API 接口层(控制器、网关) ├── api/ # API 接口层(控制器、网关)
├── config/ # 配置文件 ├── business/ # 业务逻辑层
├── data/ # 数据访问层(数据库、缓存) ├── core/ # 核心功能模块
├── model/ # 数据模型、实体、DTO │ ├── db/ # 数据库相关
├── service/ # 业务逻辑层 │ └── utils/ # 工具函数
├── utils/ # 工具函数 │ └── logger/ # 日志系统
├── main.ts # 应用入口 ├── main.ts # 应用入口
├── app.module.ts # 根模块 ├── app.module.ts # 根模块
├── app.controller.ts # 根控制器 ├── app.controller.ts # 根控制器
@@ -168,8 +220,67 @@ src/
test/ test/
├── api/ # API 测试 ├── api/ # API 测试
└── service/ # 服务测试 └── service/ # 服务测试
docs/ # 项目文档
├── backend_development_guide.md # 后端开发规范
├── git_commit_guide.md # Git 提交规范
├── naming_convention.md # 命名规范
└── nestjs_guide.md # NestJS 使用指南
``` ```
## 核心功能
### 日志系统
项目集成了完整的日志系统,基于 Pino 高性能日志库:
**特性:**
- 🚀 高性能日志记录
- 🔒 自动敏感信息过滤
- 🎯 多级别日志控制
- 🔍 请求上下文绑定
- 📊 结构化日志输出
**使用示例:**
```typescript
import { AppLoggerService } from './core/utils/logger/logger.service';
@Injectable()
export class UserService {
constructor(private readonly logger: AppLoggerService) {}
async createUser(userData: CreateUserDto) {
this.logger.info('开始创建用户', {
operation: 'createUser',
email: userData.email,
timestamp: new Date().toISOString()
});
try {
const user = await this.userRepository.save(userData);
this.logger.info('用户创建成功', {
operation: 'createUser',
userId: user.id,
email: userData.email
});
return user;
} catch (error) {
this.logger.error('用户创建失败', {
operation: 'createUser',
email: userData.email,
error: error.message
}, error.stack);
throw error;
}
}
}
```
详细使用方法请参考:[后端开发规范指南 - 日志系统使用指南](./docs/backend_development_guide.md#四日志系统使用指南)
## 下一步 ## 下一步
-`src/api/` 目录下创建游戏相关的控制器和网关 -`src/api/` 目录下创建游戏相关的控制器和网关