rwadurian/backend/services/identity-service/docs/REMAINING_STEPS.md

144 lines
4.8 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.

# 剩余步骤说明
所有源代码错误已修复!现在需要执行以下步骤来解决 Prisma Client 和依赖包的问题。
## 🔧 需要执行的命令(按顺序)
### 1. 安装新增的依赖包
```bash
npm install
```
这将安装以下新增的包:
- `@nestjs/passport@^10.0.0`
- `@nestjs/schedule@^4.0.0`
- `passport-jwt@^4.0.1`
- `@types/passport-jwt@^4.0.0`
### 2. 生成 Prisma Client
```bash
npm run prisma:generate
```
这将根据更新后的 `schema.prisma` 生成新的 Prisma Client包括
- `DeadLetterEvent` 模型
- `SmsCode` 模型
### 3. 创建并应用数据库迁移
```bash
npm run prisma:migrate
```
这将创建并应用新表的数据库迁移。如果提示输入迁移名称,可以使用:
```
add_dead_letter_and_sms_tables
```
### 4. 启动开发服务器
```bash
npm run start:dev
```
## ✅ 已修复的所有错误(共 21 个)
### 代码层面的修复:
1.**DomainException → DomainError** (3 处)
- [wallet-generator.service.ts:131](src/infrastructure/external/blockchain/wallet-generator.service.ts#L131)
- [wallet-generator.service.ts:153](src/infrastructure/external/blockchain/wallet-generator.service.ts#L153)
- [wallet-generator.service.ts:169](src/infrastructure/external/blockchain/wallet-generator.service.ts#L169)
2.**UserId 类型问题** (2 处)
- 修改为使用 `UserId.create(params.userId)` 并使用 `WalletAddress.createFromMnemonic()`
- [wallet-generator.service.ts:54-65](src/infrastructure/external/blockchain/wallet-generator.service.ts#L54-L65)
- [wallet-generator.service.ts:84-95](src/infrastructure/external/blockchain/wallet-generator.service.ts#L84-L95)
3.**Seed Buffer 类型问题** (2 处)
- 添加 `Buffer.from()` 转换
- [wallet-generator.service.ts:102](src/infrastructure/external/blockchain/wallet-generator.service.ts#L102)
4.**IDENTITY_TOPICS 缺失主题** (2 处)
- 添加 `KYC_APPROVED``ACCOUNT_FROZEN`
- [event-publisher.service.ts:28-31](src/infrastructure/kafka/event-publisher.service.ts#L28-L31)
5.**DomainEventMessage 缺失字段** (2 处)
- 添加 `eventId``occurredAt` 字段
- [event-retry.service.ts:40-47](src/infrastructure/kafka/event-retry.service.ts#L40-L47)
- [event-retry.service.ts:77-84](src/infrastructure/kafka/event-retry.service.ts#L77-L84)
### 需要命令解决的问题:
6.**Prisma Client 未生成** (10 处)
- 需要运行 `npm run prisma:generate`
- 涉及所有 `prisma.deadLetterEvent``prisma.smsCode` 的调用
7.**依赖包未安装** (2 处)
- 需要运行 `npm install`
- `@nestjs/passport``passport-jwt`
## 📝 修改的文件列表
- ✏️ [prisma/schema.prisma](prisma/schema.prisma) - 添加 DeadLetterEvent 和 SmsCode 模型
- ✏️ [package.json](package.json) - 添加依赖包
- ✏️ [src/infrastructure/external/blockchain/wallet-generator.service.ts](src/infrastructure/external/blockchain/wallet-generator.service.ts) - 修复所有类型和导入问题
- ✏️ [src/infrastructure/kafka/event-publisher.service.ts](src/infrastructure/kafka/event-publisher.service.ts) - 添加缺失的主题
- ✏️ [src/infrastructure/kafka/event-retry.service.ts](src/infrastructure/kafka/event-retry.service.ts) - 修复 DomainEventMessage 参数
## 🎯 验证步骤
完成上述命令后,验证所有问题已解决:
```bash
# 1. 检查编译
npm run build
# 2. 运行测试
npm test
# 3. 启动开发服务器
npm run start:dev
```
如果一切正常,你应该看到类似以下的输出:
```
[Nest] 12345 - 2025/11/24, 9:43:00 AM LOG [NestFactory] Starting Nest application...
[Nest] 12345 - 2025/11/24, 9:43:00 AM LOG [InstanceLoader] AppModule dependencies initialized
...
[Nest] 12345 - 2025/11/24, 9:43:01 AM LOG [NestApplication] Nest application successfully started
```
## 🔍 如果遇到问题
### Prisma 迁移失败
如果数据库迁移失败,可以尝试:
```bash
# 重置数据库(开发环境)
npm run prisma:migrate reset
# 或手动创建迁移
npx prisma migrate dev --create-only
# 然后编辑迁移文件
# 最后应用迁移
npx prisma migrate dev
```
### 依赖安装失败
如果 npm install 失败,尝试:
```bash
# 清理缓存
npm cache clean --force
# 删除 node_modules 和 lock 文件
rm -rf node_modules package-lock.json
# 重新安装
npm install
```
## 📚 相关文档
- [Prisma 迁移文档](https://www.prisma.io/docs/concepts/components/prisma-migrate)
- [Passport JWT 文档](http://www.passportjs.org/packages/passport-jwt/)
- [NestJS Passport 文档](https://docs.nestjs.com/security/authentication)
- [NestJS 定时任务文档](https://docs.nestjs.com/techniques/task-scheduling)