# Authorization Service 开发指南 ## 目录 1. [环境准备](#环境准备) 2. [项目初始化](#项目初始化) 3. [开发规范](#开发规范) 4. [代码结构约定](#代码结构约定) 5. [DDD 实践指南](#ddd-实践指南) 6. [常见开发任务](#常见开发任务) 7. [调试技巧](#调试技巧) --- ## 环境准备 ### 系统要求 | 软件 | 版本 | 说明 | |------|------|------| | Node.js | 20.x LTS | 推荐使用 nvm 管理 | | npm | 10.x | 随 Node.js 安装 | | PostgreSQL | 15.x | 关系型数据库 | | Redis | 7.x | 缓存服务 | | Kafka | 3.7.x | 消息队列 | | Docker | 24.x | 容器运行时 | ### 开发工具推荐 - **IDE**: VSCode - **VSCode 扩展**: - ESLint - Prettier - Prisma - REST Client - Docker ### 本地环境配置 #### 1. 安装 Node.js ```bash # 使用 nvm 安装 Node.js nvm install 20 nvm use 20 ``` #### 2. 启动基础设施 使用 Docker Compose 启动开发环境: ```bash # 启动 PostgreSQL、Redis、Kafka docker compose up -d ``` #### 3. 配置环境变量 复制环境变量模板: ```bash cp .env.example .env.development ``` 编辑 `.env.development`: ```env # 数据库 DATABASE_URL="postgresql://postgres:postgres@localhost:5432/authorization_dev" # Redis REDIS_HOST=localhost REDIS_PORT=6379 # Kafka KAFKA_BROKERS=localhost:9092 # JWT JWT_SECRET=your-development-secret-key JWT_EXPIRES_IN=1h # 应用 NODE_ENV=development PORT=3002 ``` --- ## 项目初始化 ### 1. 安装依赖 ```bash npm install ``` ### 2. 生成 Prisma 客户端 ```bash npx prisma generate ``` ### 3. 运行数据库迁移 ```bash npx prisma migrate dev ``` ### 4. 启动开发服务器 ```bash npm run start:dev ``` 服务将在 `http://localhost:3002` 启动。 ### 5. 访问 API 文档 ``` http://localhost:3002/api/docs ``` --- ## 开发规范 ### 代码风格 项目使用 ESLint + Prettier 进行代码规范检查: ```bash # 检查代码风格 npm run lint # 自动修复 npm run lint:fix # 格式化代码 npm run format ``` ### 命名规范 #### 文件命名 | 类型 | 格式 | 示例 | |------|------|------| | 聚合根 | `{name}.aggregate.ts` | `authorization-role.aggregate.ts` | | 实体 | `{name}.entity.ts` | `ladder-target-rule.entity.ts` | | 值对象 | `{name}.vo.ts` | `month.vo.ts` | | 服务 | `{name}.service.ts` | `authorization-command.service.ts` | | 控制器 | `{name}.controller.ts` | `authorization.controller.ts` | | 仓储接口 | `{name}.repository.ts` | `authorization-role.repository.ts` | | 仓储实现 | `{name}.repository.impl.ts` | `authorization-role.repository.impl.ts` | | DTO | `{name}.dto.ts` | `apply-authorization.dto.ts` | | 测试 | `{name}.spec.ts` | `authorization-role.aggregate.spec.ts` | #### 类命名 | 类型 | 格式 | 示例 | |------|------|------| | 聚合根 | `{Name}` | `AuthorizationRole` | | 值对象 | `{Name}` | `Month`, `RegionCode` | | 服务 | `{Name}Service` | `AuthorizationCommandService` | | 控制器 | `{Name}Controller` | `AuthorizationController` | | 仓储接口 | `I{Name}Repository` | `IAuthorizationRoleRepository` | | DTO | `{Name}Dto` | `ApplyAuthorizationDto` | ### Git 提交规范 使用 Conventional Commits 规范: ``` ():