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

4.5 KiB
Raw Blame History

修复总结

已修复的错误 (27个)

1. Prisma Schema 缺失表定义

已修复: 在 prisma/schema.prisma 中添加了:

  • DeadLetterEvent 模型 - 用于死信队列事件存储
  • SmsCode 模型 - 用于短信验证码存储

2. DTO 命名不一致

已修复:

  • SubmitKycDto -> 添加了 SubmitKYCDto 别名导出
  • UserProfileDto -> 添加了 UserProfileResponseDto 别名导出
  • DeviceDto -> 添加了 DeviceResponseDto 别名导出

3. 领域模块导入路径错误

已修复: wallet-generator.service.ts

  • @domain/... 修改为 @/domain/...
  • @shared/... 修改为 @/shared/...

4. ethers.js 类型错误

已修复: wallet-generator.service.ts:172

  • Uint8Array 私钥转换为十六进制字符串格式
  • 添加 0x 前缀以符合 ethers.js 要求

5. Kafka 事件发布接口缺失

已修复: event-publisher.service.ts

  • 添加了 DomainEventMessage 接口定义(包含 aggregateType 字段)
  • 添加了 IDENTITY_TOPICS 常量导出
  • publish 方法添加了重载,支持两种调用方式:
    • publish(event: DomainEvent) - 发布领域事件
    • publish(topic: string, message: DomainEventMessage) - 直接发布到指定主题(用于重试)

6. @nestjs/schedule 依赖移除

已修复: event-retry.service.ts

  • 移除了 @Cron 装饰器和 CronExpression 导入
  • 保留了重试逻辑,可通过 API 手动触发

7. Kafka 模块重复导出

已修复: event-publisher.service.ts

  • 删除了文件末尾错误的 KafkaModule 类定义
  • 保留了 kafka.module.ts 中的正确定义

8. package.json 缺失依赖

已修复: package.json

  • 添加了 @nestjs/passport: ^10.0.0
  • 添加了 @nestjs/schedule: ^4.0.0
  • 添加了 passport-jwt: ^4.0.1
  • 添加了 @types/passport-jwt: ^4.0.0

接下来需要做的步骤

1. 安装依赖

npm install

2. 生成 Prisma Client

npm run prisma:generate

3. 运行数据库迁移(如果需要)

npm run prisma:migrate

4. 启动开发服务器

npm run start:dev

注意事项

  1. 数据库迁移: 由于修改了 Prisma Schema添加了两个新表你需要

    • 如果是开发环境:运行 npm run prisma:migrate 创建并应用迁移
    • 如果是生产环境:运行 npm run prisma:migrate:prod 应用迁移
  2. 环境变量: 确保 .env 文件中配置了所有必需的环境变量:

    DATABASE_URL=postgresql://...
    JWT_SECRET=...
    JWT_ACCESS_EXPIRES_IN=2h
    JWT_REFRESH_EXPIRES_IN=30d
    REDIS_HOST=localhost
    REDIS_PORT=6379
    KAFKA_BROKERS=localhost:9092
    WALLET_ENCRYPTION_SALT=...
    
  3. 定时任务: EventRetryService 的定时任务功能已移除。如果需要自动重试失败事件,你可以:

    • 使用外部调度器(如 cron、Kubernetes CronJob调用相应的 API
    • 或者重新添加 @Cron 装饰器(需要在 AppModule 中导入 ScheduleModule
  4. passport-jwt: 如果你的项目使用了 JWT 认证策略,确保 JwtStrategy 正确配置在 SharedModuleAuthModule 中。

文件修改清单

验证修复

运行以下命令验证所有错误已修复:

# 编译检查
npm run build

# 运行测试
npm run test

# 启动开发服务器
npm run start:dev

如果编译成功且没有错误,说明所有问题都已解决!