hailin
0f745a17fd
feat(kyc): 实现完整三层KYC认证功能
...
实现三层KYC认证系统,支持后台配置开关:
- 层级1: 实名认证 (二要素: 姓名+身份证号)
- 层级2: 实人认证 (人脸活体检测)
- 层级3: KYC (证件照上传验证)
后端变更:
- 更新 Schema 添加三层认证字段和 KycConfig 表
- 添加 migration 支持增量字段和配置表
- 重写 AliyunKycProvider 支持阿里云实人认证 API
- 重写 KycApplicationService 实现三层认证逻辑
- 更新 KycController 添加用户端和管理端 API
前端变更:
- 更新 KycService 支持三层认证 API
- 重构 KycEntryPage 显示三层认证状态
- 重构 KycIdPage 用于层级1实名认证
- 新增 KycFacePage 用于层级2人脸认证
- 新增 KycIdCardPage 用于层级3证件照上传
- 添加 uploadFile 方法到 ApiClient
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 07:14:11 -08:00
hailin
a549768de4
feat(kyc): 实现实名认证和更换手机号功能
...
主要变更:
- 注册流程: 添加跳过短信验证选项(3分钟后显示)
- KYC功能: 手机号验证 + 身份证实名认证(阿里云二要素)
- 更换手机号: 四步验证流程(旧手机验证→输入新号→新手机验证→确认)
- 独立管控: phoneVerified, emailVerified, kycStatus 三个状态分别管理
后端:
- 新增 KYC 控制器和服务
- 新增更换手机号 API 端点
- Schema 添加 KYC 和验证状态字段
- 集成阿里云身份二要素验证
前端:
- 新增 KYC 入口页、手机验证页、身份证验证页
- 新增更换手机号页面
- Profile 页面添加实名认证入口
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 06:38:39 -08:00
hailin
f8dbac449a
fix(identity): add EmailService to InfrastructureModule in app.module.ts
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 21:12:22 -08:00
hailin
1d21ae8ff7
fix(identity-service): 修复 InternalController 未注册问题
...
- 在 app.module.ts 的内联 ApiModule 中添加 InternalController
- 添加 InfrastructureModule 导入和 UserAccountRepositoryImpl provider
- 修正 authorization-service 的 identity-service URL 默认值
问题原因:app.module.ts 定义了内联 ApiModule,不是导入的 api.module.ts
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 03:04:57 -08:00
hailin
b4c4239593
feat: 实现手机号+密码登录和账号恢复功能
...
## 后端更改
### 新增功能
- 添加手机号+密码登录 API (`POST /user/login-with-password`)
- 新增 LoginWithPasswordDto 验证手机号格式和密码长度
- 实现 loginWithPassword 服务方法,使用 bcrypt 验证密码
- 返回 JWT tokens(accessToken + refreshToken)
### 代码优化
- 修复 phone.validator.ts 中的 TypeScript 类型错误(Object -> object)
## 前端更改
### 新增功能
- 实现手机号+密码登录页面 (phone_login_page.dart)
- 完整的表单验证(手机号格式、密码长度)
- 集成 AccountService.loginWithPassword API
- 登录成功后自动更新认证状态并跳转主页
### 账号服务优化
- 在 AccountService 中添加 loginWithPassword 方法
- 调用后端 login-with-password API
- 自动保存认证数据(tokens、用户信息)
- 使用 _savePhoneAuthData 统一保存逻辑
### UI 文案更新
- 向导页文案修改:"创建账号" → "注册账号"
- 更新标题、副标题和按钮文本
- 添加"恢复账号"按钮,跳转到手机号密码登录页
## 已验证功能
✅ 前端代码编译通过(0 errors, 仅有非关键警告)
✅ 后端代码编译通过(0 errors, 仅有非关键警告)
✅ 30天登录状态保持(JWT refresh token 已配置为30天)
✅ 自动路由逻辑(有登录状态直接进入主页)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 20:35:44 -08:00
hailin
959fe93092
feat(identity-service): 添加钱包生成自动重试机制
...
功能:
- 新增 WalletRetryTask 定时任务,每分钟扫描一次
- 自动检测超过 60 秒仍在 generating/deriving 状态的钱包
- 自动检测状态为 failed 的钱包生成
- 幂等重试机制,最多 10 分钟内持续重试
- 记录重试次数和时间戳
技术实现:
- 使用 @nestjs/schedule 的 Cron 装饰器
- 在 UserAccount 聚合根中添加 createWalletGenerationEvent() 方法
- 在 RedisService 中添加 keys() 方法支持模式匹配扫描
- 通过重新发布 UserAccountCreatedEvent 触发幂等重试
相关需求:
- 用户手机号验证成功后立即创建账号
- 钱包生成在后台异步进行
- 失败后自动重试,无需用户感知
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 19:20:55 -08:00
hailin
e153e2144d
fix(identity-service): 添加 TotpService 到 ApplicationModule
2025-12-19 19:27:43 -08:00
hailin
fd5768f8c5
fix(identity-service): 将 AuthController 和 TotpController 添加到 ApiModule
2025-12-19 19:17:46 -08:00
hailin
81cd90eae0
fix(identity): add StorageService to InfrastructureModule in app.module.ts
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 21:53:06 -08:00
hailin
493a76117a
fix(identity-service): ensure BlockchainWalletHandler is initialized
...
- Add BlockchainEventConsumerService to InfrastructureModule
- Add BlockchainWalletHandler and MpcKeygenCompletedHandler to ApplicationModule
- Inject event handlers into UserApplicationService to force NestJS initialization
- This ensures onModuleInit is called for event handlers, enabling Kafka event consumption
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-07 03:46:55 -08:00
hailin
fcb949c799
fix(identity-service): remove WalletGeneratorService from app.module.ts
2025-12-07 00:15:08 -08:00
hailin
383a9540a0
refactor: move backup-service client from identity-service to mpc-service
...
Architecture change: delegate share storage is now handled by mpc-service.
- identity-service no longer calls backup-service directly
- mpc-service calls backup-service after keygen completion
- This follows proper domain boundaries (MPC domain handles share storage)
Flow:
1. identity-service publishes mpc.KeygenRequested
2. mpc-service calls mpc-system for keygen
3. mpc-service stores delegate share to backup-service
4. mpc-service publishes mpc.KeygenCompleted
5. identity-service updates user wallet address
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 22:56:35 -08:00
hailin
32c806b90c
fix(identity-service): add MpcEventConsumerService to app.module.ts
...
The InfrastructureModule was defined inline in app.module.ts, not using
the separate infrastructure.module.ts file. Added MpcEventConsumerService
to the inline module definition.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 22:36:01 -08:00
hailin
747e4ae8ef
refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing
...
- Remove Address field from PartyEndpoint (parties connect to router themselves)
- Update K8s Discovery to only manage PartyID and Role labels
- Add Party registration and SessionEvent protobuf definitions
- Implement PartyRegistry and SessionEventBroadcaster domain logic
- Add RegisterParty and SubscribeSessionEvents gRPC handlers
- Prepare infrastructure for party-driven MPC coordination
This is the first phase of migrating from coordinator-driven to party-driven
architecture following international MPC system design patterns.
2025-12-05 08:11:28 -08:00
Developer
a966d71fa0
.
2025-11-30 06:44:57 -08:00
hailin
0340d068e7
.
2025-11-24 03:35:26 -08:00
hailin
44d2e2ad80
.
2025-11-24 06:58:46 +00:00
hailin
c29c185a03
identity_service_context first commit
2025-11-24 06:09:06 +00:00