hailin
b49c9e1af5
fix: 通过移除内边距解决验证码数字显示不全问题
...
- 添加 contentPadding: EdgeInsets.zero 移除默认内边距
- 添加 isDense: true 使用紧凑模式
- 移除之前错误的 showCursor 逻辑
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:59:21 -08:00
hailin
979780dd7e
fix: 优化验证码输入框光标显示逻辑
...
- 空输入框时显示光标,让用户知道当前输入位置
- 输入数字后隐藏光标,避免光标占用空间导致数字显示不全
- 每次输入触发setState确保showCursor状态正确更新
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:57:15 -08:00
hailin
c1b8a441b6
fix: 隐藏验证码输入框光标解决数字显示不全
...
- 添加 showCursor: false 隐藏光标
- 光标移走后数字不再被遮挡偏移
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:54:37 -08:00
hailin
74175336af
fix: 修复验证码输入框数字显示不全
...
- 增加输入框尺寸 48x56 -> 50x60
- 增大字体 20sp -> 24sp
- 移除 height: 1.2 行高限制
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:37:12 -08:00
hailin
bee48e8b87
fix: 修正推荐码验证的返回值类型处理
...
verifyReferralCode()返回Map<String, dynamic>,需要提取valid字段
同时从响应中获取message字段用于错误提示
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 05:52:52 -08:00
hailin
2a5cb0d2ec
feat: 在向导页添加推荐码API验证
...
在用户点击"继续"按钮时,调用API验证推荐码是否有效:
- 推荐码不存在或已失效时显示错误提示
- 网络错误时显示友好提示
- 验证通过后才保存并跳转到注册页
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 05:47:02 -08:00
hailin
9102a2a6d7
refactor: 移除恢复账号页面的标题和副标题
...
- 移除「手机号+密码登录」标题
- 移除「输入您的手机号和密码」副标题
- 页面更简洁,顶部只保留「恢复账号」导航标题
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 03:47:29 -08:00
hailin
9e26b2750f
fix: 修复推荐码文字颜色并统一恢复账号页面为龙虎榜风格
...
向导页修复:
- 推荐码输入框文字改为黑色,确保可见性
恢复账号页面重构:
- 背景改为与龙虎榜一致的渐变色(浅米色到浅橙色)
- 所有文字颜色改为棕色系,与背景协调
- 边框颜色改为金棕色(#D4A574)
- 登录按钮改为深棕色(#8B5A2B)
- 移除 AppBar,使用自定义顶部导航栏
- 保持 100% Flutter 兼容性和最佳实践
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 03:39:04 -08:00
hailin
6bbd4a6c78
fix: 修复恢复账号页面键盘弹出时的溢出错误
...
- 将 Column 改为 SingleChildScrollView 包裹,支持滚动
- 在底部添加额外间距,避免内容被键盘遮挡
- 修复 RenderFlex overflowed by 18 pixels 错误
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 03:35:43 -08:00
hailin
6b0194089a
fix: 修复推荐码文字可见性和统一恢复账号页面设计
...
向导页修复:
- 推荐码输入文字改为金黄色(#FFD700),与白色底边框形成对比
恢复账号页面重构:
- 背景改为白色,与手机号注册等页面保持一致
- 添加标准 AppBar,标题居中显示"恢复账号"
- 输入框改为完全透明底部边框设计,与外部容器无感融合
- 文字颜色与底色反色:深灰色(#333333 )
- 登录按钮改为金色背景(#D4A84B) + 白色文字
- 更新所有颜色以适配白色背景主题
- "立即注册"文字改为金色
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 03:29:03 -08:00
hailin
3be10493a0
refactor: 优化向导页推荐码输入框和恢复账号页面设计
...
向导页优化:
- 推荐码输入框改为透明底部边框设计,更好融入背景
- 增大输入框高度和字体大小,提升可读性
- 扫码图标改为白色,尺寸加大至 28sp
- 输入文字改为白色,与背景形成对比
恢复账号页面改版:
- 标题改为"恢复账号"并居中显示
- 移除副标题,界面更简洁
- 背景改为金色渐变,与 App 整体风格一致
- 登录按钮改为白色背景+深金色文字
- 优化所有输入框和文字颜色以适配金色背景
- "立即注册"文字改为白色带下划线
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 03:10:40 -08:00
hailin
eee8f38ea6
refactor: 简化启动流程和优化向导页文案
...
- 简化 splash 页面跳转逻辑:账号已创建直接进主页,首次启动进向导页
- 优化向导页第5页文案:更亲切的标题和更清晰的说明
- 改进推荐码输入框和扫码图标颜色:黑色文字与白色底色形成更好对比
- 简化"恢复账号"按钮文字
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 01:31:43 -08:00
hailin
08ec49322d
feat: 主页添加钱包生成状态轮询
...
手机号注册后跳转到主页,在主页后台轮询钱包生成状态:
功能实现:
- 添加钱包生成状态枚举(unknown/creating/ready/failed)
- 每5秒调用 GET /user/wallet 检查钱包状态
- 钱包就绪或失败后停止轮询
UI 显示:
- 钱包创建中:显示"创建账号审核中..."加载动画
- 钱包创建失败:显示错误信息和"重试"按钮
- 钱包已就绪:显示正常序列号
重试机制:
- 用户可点击"重试"按钮手动触发钱包生成
- 调用 POST /user/wallet/retry API
- 重新开始轮询直到成功
流程:
手机号注册 → 设置密码 → 跳转主页 → 后台轮询钱包状态 → 完成
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 23:24:43 -08:00
hailin
8519b9e608
feat: 在发送短信前验证推荐码 & 修复按钮响应
...
前端改进:
- 在发送短信验证码之前验证推荐码是否有效
- 新增 verifyReferralCode() 方法到 AccountService
- 调用后端 GET /user/by-referral-code/:code API
- 手机号输入时立即更新按钮状态(更及时的用户反馈)
流程优化:
- 推荐码验证提前到短信发送前,避免用户输入验证码后才发现推荐码无效
- 按钮在手机号输入时即时响应,无需额外点击或失焦
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 22:59:29 -08:00
hailin
00996bf160
fix: 修改密码登录页面文案
...
- 标题从恢复账号改为手机号+密码登录(更准确)
- 副标题从使用手机号和密码登录改为输入您的手机号和密码(更简洁)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 22:53:16 -08:00
hailin
ef7169f433
fix: 修复推荐码输入框颜色问题
...
- 改为白色背景(alpha: 0.9),更不透明
- 文字颜色改为 black87,清晰可见
- 边框改为绿色,更突出
- 提示文字改为灰色,易于区分
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 22:49:40 -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
65f3e75f59
feat(mobile-app): 添加手机号+密码登录页面和路由
...
功能:
- 创建 PhoneLoginPage 用于账号恢复功能
- 实现手机号和密码输入界面
- 添加输入验证(手机号格式、密码长度)
- 添加密码可见性切换
- 添加登录按钮和加载状态
- 配置 phoneLogin 路由到 app_router
- 添加 RouteNames.phoneLogin 常量
UI设计:
- 深色渐变背景(与其他认证页面一致)
- 返回按钮
- 手机号和密码输入框
- 错误提示区域
- 登录按钮(带加载状态)
- 注册提示链接
待实现:
- 后端手机号+密码登录 API
- 登录成功后的token保存和状态更新
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 20:13:09 -08:00
hailin
ed6c08914c
feat(mobile-app): 添加钱包生成状态轮询和UI显示
...
功能:
- 创建 WalletStatusProvider 管理钱包生成状态
- 每5秒轮询钱包状态直到就绪或失败
- 在个人资料页面显示钱包生成状态
- 钱包生成中:显示"账号创建审核中"和进度指示器
- 钱包生成失败:显示失败状态和重试按钮
- 钱包已就绪:显示序列号
- 在 AccountService 添加 retryWalletGeneration API 调用
- 页面初始化时自动检查并启动轮询
- 页面销毁时自动停止轮询
实现细节:
- 使用 Riverpod 状态管理
- 轮询间隔:5秒
- 自动停止轮询条件:钱包就绪或失败
- 支持手动重试钱包生成
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 19:59:02 -08:00
hailin
4906fa1815
feat(mobile-app): 重构向导页5注册流程
...
1. **推荐码改为必填项**
- 移除"我没有推荐人"选项
- 推荐码输入框始终可见
- 支持手动输入和扫码两种方式
- 添加推荐码验证逻辑
2. **隐藏导入助记词入口**
- 保留代码但设置为 if (false) 隐藏
- 需要时可修改为 true 启用
3. **添加恢复账号入口**
- 新增"恢复账号(手机号+密码登录)"按钮
- 点击跳转到 phoneLogin 页面
4. **路由更新**
- 添加 RoutePaths.phoneLogin 路由常量
UI改进:
- 推荐码输入框样式更新:半透明白色背景
- 扫码按钮图标改为 qr_code_scanner
- 副标题文案改为"请输入推荐码"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 19:08:13 -08:00
hailin
cdb55ec4cb
fix(mobile-app): 修复短信验证码界面问题
...
- 减小验证码输入框字体大小从 24.sp 到 20.sp,防止在某些设备上被截断
- 添加行高 height: 1.2 确保文字垂直居中
- 在手机号注册页面添加 60 秒倒计时功能
- 倒计时期间禁用获取验证码按钮
- 显示剩余秒数提示 "X秒后重新发送"
2025-12-20 17:40:09 -08:00
hailin
eb1ea81d8e
fix(mobile-app): 修复 deposit_usdt_page 中未定义的 _loadWalletData 方法
...
将错误的方法名 _loadWalletData 改为正确的 _loadData
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 22:22:45 -08:00
hailin
943fd9efe9
chore: 提交所有未提交的修改
...
包括:
- admin-service: 系统配置功能
- authorization-service: 自助授权申请功能
- planting-service: 资金分配服务
- reward-service: 奖励计算服务
- admin-web: 用户管理和设置页面
- mobile-app: 授权、认证、路由等功能
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 06:09:43 -08:00
hailin
5b2d255506
feat(auth): 增强提现安全验证
...
- 集成阿里云短信服务 (dysmsapi20170525)
- 提现需同时验证短信验证码和登录密码
- identity-service 添加 /verify-password API
- wallet-service 调用双重验证
- 移动端提现确认页添加密码输入
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 03:05:53 -08:00
hailin
0310865834
fix(ui): 暂时隐藏我的页面所有贡献值显示
...
用 TODO 注释隐藏以下位置的贡献值:
- 待领取区域的贡献值汇总
- 待领取明细卡片中的贡献值
- 可结算明细卡片中的贡献值
- 已过期区域的贡献值汇总
- 已过期明细卡片中的贡献值
- 领取确认对话框中的贡献值
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 08:55:04 -08:00
hailin
30db6b4238
fix(ledger): 优化账本明细流水类型显示
...
前端:
- 删除 '充值 (BSC)' 筛选选项
- '充值 (KAVA)' → '充值绿积分'
- 添加 '提取' 筛选选项 (REWARD_SETTLED)
后端:
- '充值 (KAVA)' → '充值绿积分'
- '奖励结算' → '提取'
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 08:44:34 -08:00
hailin
5c7d43b6ca
fix(ui): 我的页面 '算力' → '贡献值'
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 08:35:49 -08:00
hailin
15e2bfe236
feat(trading): 添加账本明细页面,含统计图表和流水筛选
...
后端新增:
- GET /wallet/ledger/statistics 流水统计API(按类型汇总)
- GET /wallet/ledger/trend 流水趋势API(按日期统计)
- LedgerStatisticsResponseDTO, LedgerTrendResponseDTO 等DTO
前端新增:
- 账本明细页面(统计概览Tab + 流水明细Tab)
- 收支概览卡片、趋势柱状图、按类型统计
- 流水列表支持分页加载和类型筛选
- 兑换页面右上角添加账本明细入口
授权服务:
- 5种授权方法添加认种前置检查(需至少认种1棵树才能授权)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 07:41:07 -08:00
hailin
36074948d7
feat(reward): 可结算列表改为从 reward-service 读取
...
将前端可结算奖励列表的数据源从 wallet-service 改为 reward-service:
- 后端:在 reward-service 添加 GET /rewards/settleable 接口
- 前端:修改 getSettleableRewards() 调用 /rewards/settleable
- 前端:更新 SettleableRewardItem 字段映射 (rightType, claimedAt, sourceOrderNo, memo)
解决权益收益(社区权益、市区域权益)无法在可结算列表显示的问题。
遵循单一数据源原则,reward-service 是奖励的权威数据源。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 06:55:41 -08:00
hailin
76108328c3
fix(ui): 优化"我的"页面已过期和结算栏的显示格式
...
将绿积分和贡献值的数字改为跟在标签后面显示:
- 已过期栏:绿积分:xxx,贡献值:xxx
- 可结算栏:可结算 (绿积分):xxx
- 已结算栏:已结算 (绿积分):xxx
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 03:31:31 -08:00
hailin
7ab1d73f5b
fix(ui): 优化我的页面待领取和已过期区域布局
...
待领取区域:
- 改为竖排布局:待领取 00:00:00 / 绿积分:/ 贡献值:
- 第一行加粗,后两行正常粗细
已过期区域:
- '已过期 (绿积分)' → '绿积分:'
- '已过期 (贡献值)' → '贡献值:'
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 00:57:07 -08:00
hailin
1dfa02b386
feat(ui): 将待领取、可结算、已过期列表改为堆叠卡片展示
...
- 恢复待领取列表的堆叠卡片展示(StackedCardsView)
- 将可结算明细列表改为堆叠卡片展示
- 将已过期明细列表改为堆叠卡片展示
- 新增 _buildStackedSettleableRewardCard 方法
- 新增 _buildStackedExpiredRewardCard 方法
- 添加各列表的条目数量显示
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 00:13:43 -08:00
hailin
cceae5452a
test: 暂时禁用堆叠卡片组件以测试华为恶意软件检测
...
- 注释掉 stacked_cards_widget.dart 的导入
- 注释掉 StackedCardsView 组件的使用
- 注释掉 _buildStackedPendingRewardCard 方法
- 恢复原始的待领取明细列表展示方式
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:54:29 -08:00
hailin
1d3407d157
fix(ui): 重构堆叠卡片组件为可折叠列表
...
- 改用 CollapsibleCardList 替代 Stack 布局
- 设置最大高度限制 (280px),避免穿透下方区域
- 超出高度时启用内部滚动
- 点击卡片展开/折叠,带动画效果
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:17:35 -08:00
hailin
e3300a1163
fix(ui): 移除堆叠卡片组件的震动反馈功能
...
移除 HapticFeedback 调用,避免触发华为安全检测
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:11:37 -08:00
hailin
92772f071a
feat(ui): 优化待领取明细显示和移除认种数量限制
...
- 移除单次认种100棵的数量限制 (planting-service)
- 龙虎榜省市信息分两行显示
- 待领取明细改为堆叠卡片样式,节省屏幕空间
- 支持上下滑动选择卡片
- 滑动时有震动反馈
- 选中卡片展开显示完整信息
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 22:46:48 -08:00
hailin
effd34cd0a
fix(ui): "已过期 (算力)"改为"已过期 (贡献值)"
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 16:40:54 -08:00
hailin
6fb18c6ef2
fix(ui): "待领取 (算力)"改为"待领取 (贡献值)"
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 07:50:53 -08:00
hailin
7b25ffd4dd
feat(ui): 将全部"积分"更名为"绿积分"
...
更新以下页面中的"积分"显示文本为"绿积分":
- 充值页面 (deposit_usdt_page.dart)
- 提取页面 (withdraw_usdt_page.dart, withdraw_confirm_page.dart)
- 个人中心页面 (profile_page.dart)
- 认种数量页面 (planting_quantity_page.dart)
- 交易页面 (trading_page.dart)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 07:49:45 -08:00
hailin
dc42565ab8
fix(ui): 修正"上线社区"为"上级社区"
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 07:39:05 -08:00
hailin
f24b15b34e
fix(ui): 认种页面省市选择器选择后禁用
...
- 首次选择省市后保存到本地存储
- 非首次进入时禁用省市选择器(不可重新选择)
- 添加"已锁定"标签和锁定图标显示禁用状态
- UI 显示灰色背景表示禁用
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 07:22:46 -08:00
hailin
257236480f
feat(wallet/profile): 添加可结算和已过期奖励逐笔显示功能
...
后端:
- wallet-service 新增 getSettleableRewards() 和 getExpiredRewards() 方法
- 新增 GET /wallet/settleable-rewards 和 GET /wallet/expired-rewards API
前端:
- reward_service.dart 新增 SettleableRewardItem、ExpiredRewardItem 数据模型
- profile_page.dart 可结算区域和已过期区域支持逐笔明细显示
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 07:20:44 -08:00
hailin
7aa93d6c6f
fix(ui): 隐藏我的页面的 '进入交易' 按钮
...
- 注释掉 '进入交易 (卖出 DST → 积分)' 按钮
- 代码保留在程序中,便于后续恢复
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 23:57:59 -08:00
hailin
bffea27f48
fix(ui): 我的页面 '充值 积分 (KAVA / BSC)' → '充值积分'
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 23:55:58 -08:00
hailin
d41bbbb5d1
fix(ui): 充值页面隐藏 BSC 和 DST 网络选项
...
- 注释掉 BSC 和 DST 网络按钮,只保留 KAVA
- 代码保留在程序中,便于后续恢复
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 23:54:45 -08:00
hailin
b672932480
fix(ui): 兑换页面 '人民币' → 'RMB/CNY'
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 23:53:13 -08:00
hailin
044266a169
fix(ui): 修改提取相关文字
...
- 兑换页面:'提取 / 转动' → '提取'
- 提款页面:'提款 积分' → '提取积分'
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 23:50:05 -08:00
hailin
c22d5ceb75
fix(profile): 移除骨架屏替换整个widget的逻辑
...
- Widget 结构始终保持不变,不受数据加载状态影响
- 数据值根据加载状态显示 "--" 或实际值
- 用户可正常滚动页面,静态标签始终可见
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 21:21:41 -08:00
hailin
0208022615
fix(profile): 修复懒加载骨架屏一直显示的问题
...
- 将懒加载区域的加载状态初始值改为 false
- 只有真正在加载时才显示骨架屏
- 修复条件判断逻辑导致的死锁问题
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 21:19:22 -08:00
hailin
d29ff0975b
feat(profile): 添加懒加载、防抖和失败重试机制
...
- 添加 VisibilityDetector 实现懒加载,滚动到可见区域才加载数据
- 添加 300ms 防抖机制,防止快速滑动触发大量 API 请求
- 添加失败自动重试(最多3次,指数退避:1s→2s→4s)
- 添加 60 秒定时刷新可见区域数据
- 添加下拉刷新功能
- 添加 Shimmer 骨架屏加载状态
- 添加错误状态 UI 和手动重试按钮
- 创建通用 LazyLoadSection 组件
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 20:50:27 -08:00
hailin
bbd6f2ee38
feat(mobile-app): 优化创建钱包页面UI
...
- 添加背景图片 onboarding_bg.jpg
- 移除重复的logo和标题(背景图已包含)
- 添加白色半透明卡片背景提高文字可读性
- 调整颜色主题为绿色系匹配背景
- 修改认种确认弹窗标题为"一旦确认,无法更改"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 19:33:04 -08:00
hailin
80b74e9877
feat(sentry): 集成 Sentry 自建崩溃收集与错误追踪系统
...
Backend (infrastructure/sentry):
- 添加 Sentry 自建部署 Docker Compose 配置
- 包含 PostgreSQL, Redis, Kafka, ClickHouse, Snuba 等组件
- 添加 Relay (事件网关) 和 Symbolicator (符号化服务) 配置
- 添加部署脚本 deploy.sh 和配置文件
- 更新 infrastructure README 文档
Frontend (mobile-app):
- 添加 sentry_flutter SDK 依赖
- 创建 SentryService 封装类,统一管理崩溃收集
- 创建 SentryConfig 配置类,支持开发/生产环境配置
- 创建 SentryNavigationObserver 自动追踪页面导航
- 创建 SentryDioInterceptor 自动追踪 HTTP 请求
- 在 bootstrap.dart 中集成 Sentry 初始化
- 支持 Flutter 错误和异步错误捕获
- 自动过滤敏感信息 (密码、助记词、私钥等)
- 在登录/登出/切换账号时同步 Sentry 用户信息
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 07:15:13 -08:00
hailin
cc06638e0e
feat(telemetry): 将userId改为userSerialNum字符串格式并完善遥测追踪
...
Backend (presence-service):
- 将EventLog.userId从BigInt改为String类型,存储userSerialNum(如D25121400005)
- 更新Prisma schema,userId字段改为VarChar(20)并添加索引
- 更新心跳相关命令和事件,统一使用userSerialNum字符串
- 添加数据库迁移文件
- 更新相关单元测试和集成测试
Frontend (mobile-app):
- TelemetryEvent新增toServerJson()方法,格式化为后端API期望的格式
- AccountService登录/恢复时设置TelemetryService的userId
- MultiAccountService切换账号时同步更新TelemetryService的userId
- 退出登录时清除TelemetryService的userId
- AuthProvider初始化时设置userId
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 06:55:25 -08:00
hailin
3942cb405a
fix(frontend): 添加新账号时显示加载状态提示
...
- 添加 _isAddingAccount 状态变量
- 点击"添加新账号"时显示"正在准备..."加载提示
- 添加 try-catch 错误处理,失败时显示错误提示
- 防止重复点击
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 06:14:49 -08:00
hailin
b01277ab7d
feat(withdraw): 实现完整的提取功能 - TOTP验证和KAVA转账
...
功能实现:
- identity-service: 添加TOTP二次验证功能
- 新增 UserTotp 数据模型
- 实现 TotpService (生成/验证/启用/禁用)
- 添加 /totp/* API端点
- wallet-service: 提取API添加TOTP验证
- withdrawal.dto 添加可选 totpCode 字段
- 添加 IdentityClientService 调用identity-service验证TOTP
- 添加 WithdrawalStatusHandler 处理区块链确认/失败事件
- blockchain-service: 实现真实KAVA ERC20转账
- 新增 Erc20TransferService (热钱包USDT转账)
- 更新 withdrawal-requested.handler 执行真实转账
- 发布确认/失败事件回wallet-service
- 前端: 对接真实提取API
- withdraw_confirm_page 调用 walletService.withdrawUsdt
环境变量配置:
- TOTP_ENCRYPTION_KEY (identity-service)
- IDENTITY_SERVICE_URL (wallet-service)
- HOT_WALLET_PRIVATE_KEY (blockchain-service)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 05:16:42 -08:00
hailin
2dba7633d8
fix(withdraw): 将确认页面中的提款改为提取
...
- 页面标题"确认提款" → "确认提取"
- "提款详情" → "提取详情"
- "提款网络" → "提取网络"
- "提款地址" → "接收地址"
- "提款金额" → "提取数量"
- "提款申请已提交" → "提取申请已提交"
- 按钮文字"确认提款" → "确认提取"
- 错误提示"提款失败" → "提取失败"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:54:28 -08:00
hailin
9cc66d8c61
fix(trading): 将提取/转动按钮下的人民币改为积分
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:49:44 -08:00
hailin
53cc4623ff
chore(trading): 暂时屏蔽BNB、OG、DST结算币种,只保留人民币
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:39:34 -08:00
hailin
a81aaa6acd
fix(withdraw): 修改提款页面文字并暂时屏蔽BSC网络
...
- 屏蔽 BSC (BNB Chain) 网络选项
- "提款地址" → "接收地址"
- "请输入 KAVA 或 EVM 地址" → "请输入接收积分的地址"
- "提款金额" → "积分提取数量"
- "请输入提款金额" → "请输入积分数量"
- "最小提款金额" → "最小提取数量"
- 注意事项中的"提款"改为"提取"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:38:34 -08:00
hailin
a7417be0e1
chore(trading): 暂时屏蔽卖出DST功能和DST余额显示
...
待功能开放后取消注释即可恢复
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:31:40 -08:00
hailin
83f10df29e
fix(trading): 将结算币种中的积分更换为人民币
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:30:50 -08:00
hailin
7db38114d9
fix(profile): 修复伞下树图居中问题;更名提款/转账为提取/转动
...
- 使用 LayoutBuilder 获取实际容器宽度计算节点显示
- 修改兑换页面按钮文字从"提款/转账"改为"提取/转动"
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:28:58 -08:00
hailin
4d6ce3ce08
fix(profile): 修复伞下树图未居中问题
...
使用 LayoutBuilder 获取实际容器宽度而不是屏幕宽度
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:25:19 -08:00
hailin
6dd7e64a95
feat(frontend): 多项功能改进
...
- 将所有 USDT 文本替换为 积分
- 监控页面:将"挖矿待开启"改为"开启监控",开启时显示关闭按钮
- 我的伞下:树图默认居中显示
- 树图节点:长按查看详情(序列号、认种数、直推人数)
- 分享页面:显示推荐码并支持复制
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 04:04:21 -08:00
hailin
306f003679
refactor(splash): 简化开屏动画为纯帧播放,恢复监控Tab
...
- 重构 splash_page.dart: 移除 video_player 依赖,改用纯帧动画播放
- 帧数从53张调整为36张,添加预加载优化
- 移除 pubspec.yaml 中的 video_player 依赖
- 恢复底部导航栏"监控"Tab(原"矿机")
- 调整路由索引:0-龙虎榜, 1-监控, 2-兑换, 3-我
- 移除"我的"页面的"领取全部"按钮
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 03:28:53 -08:00
hailin
f3a475a6f4
feat(account): 实现多账号管理功能
...
- 新增 MultiAccountService 处理多账号存储和切换
- 新增 AccountSwitchPage 账号切换页面
- 修改 storage_keys.dart 添加多账号相关键和前缀方法
- 修改 ProfilePage 切换账号按钮跳转到账号切换页面
- 修改退出登录逻辑,保留账号数据只清除会话状态
- 新账号创建时自动添加到账号列表
- 支持旧单账号数据自动迁移到多账号架构
- 支持删除账号(带确认对话框)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 02:57:13 -08:00
hailin
04644ea3f8
feat(profile): 添加退出登录和切换账号功能
...
- 在版本信息栏添加构建模式显示(Debug/Release/Profile)
- 在版本信息栏下方添加切换账号按钮(暂显示即将上线提示)
- 在版本信息栏下方添加退出登录按钮(带确认对话框)
- 退出登录后清除本地数据并跳转到向导页
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 02:16:36 -08:00
hailin
09e66cef10
refactor: 多项UI优化和品牌更名
...
- 品牌更名: 将"榴莲女皇"全部替换为"榴莲皇后"(前端+后端共15处)
- 导航优化: 将"交易"Tab改名为"兑换"
- 创建钱包页: 添加返回按钮,可返回向导页第5页(仅账号未创建时显示)
- 兑换页面: 禁用"一键结算"和"卖出DST"按钮,提款按钮在余额为0时禁用
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 01:43:47 -08:00
hailin
5219a5a39f
chore(nav): 暂时隐藏矿机Tab
...
- 底部导航从4个减少到3个: 龙虎榜、交易、我
- 保留矿机相关代码注释,方便后续恢复
- 调整索引映射以匹配新的Tab顺序
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 01:05:28 -08:00
hailin
db37fbf860
feat(notification): 添加通知中心功能
...
后端 (admin-service):
- 新增 Notification 和 NotificationRead 数据模型
- 支持通知类型: 系统/活动/收益/升级/公告
- 实现管理端 API: 创建/更新/删除/列表
- 实现移动端 API: 获取通知列表/未读数量/标记已读
前端 (mobile-app):
- 新增 NotificationService 和 Provider
- 新增通知中心页面 (NotificationInboxPage)
- 在"我的"页面右上角添加通知图标(带未读角标)
- 支持查看通知详情、标记已读、全部已读
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 20:45:03 -08:00
hailin
11d9b57bda
feat(splash): 将 fallback 动画改为帧动画以提升兼容性
...
- 将 Tween 动画替换为 53 帧 PNG 序列动画
- 添加 splash_frames 资源目录(15fps,约3.5秒)
- 使用 gaplessPlayback 防止帧切换闪烁
- 保留帧加载失败时的静态 fallback
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 20:18:12 -08:00
hailin
ada8a44076
feat(splash): 添加视频播放失败时的 fallback 动画
...
当设备硬件解码器无法播放视频时(如部分华为老机型),
显示 Logo 缩放 + 文字淡入的 Flutter 动画作为替代方案。
- 添加 fallback 动画控制器和动画序列
- Logo 从小到大弹性缩放 + 透明度渐显
- 文字延迟淡入显示
- 动画时长 3 秒,支持跳过按钮
- 保持与视频相同的用户体验流程
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 20:00:20 -08:00
hailin
7bfd6822a7
fix(splash): 修复华为设备启动动画兼容性问题
...
- 添加 core-splashscreen 依赖支持 Android 12+ SplashScreen API
- 配置原生 Splash 主题消除冷启动白屏
- 添加 values-v31 和 values-night-v31 适配 Android 12+
- 更新 launch_background.xml 显示品牌 Logo
- MainActivity 添加 installSplashScreen() 处理
- 视频转码为 H.264 格式解决华为 HEVC 解码器兼容问题
- 添加视频初始化调试日志
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 19:54:40 -08:00
hailin
2e44263834
feat(profile): 添加我的伞下功能 - 展示下级用户树形结构
...
- 后端新增 GET /referral/user/:accountSequence/direct-referrals API
- 前端新增伞下树组件,支持懒加载、缓存、展开/收起
- 使用 CustomPaint 绘制父子节点连接线
- 超出屏幕宽度时显示省略号,点击弹出底部列表
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 10:34:56 -08:00
hailin
2eda3be275
fix(frontend): 修正权益金额显示与后端实际配置一致
...
- 省团队权益: 10 → 20 USDT
- 市区域权益: 20 → 35 USDT
- 省区域权益: 10 → 15 USDT
权益金额配置参考 reward-service/prisma/seed.ts
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 09:46:30 -08:00
hailin
c4be2f59f7
fix(frontend): 修正市团队权益描述金额 30 → 40 USDT
...
市团队权益每棵树实际是 40 USDT,前端显示文案错误写成 30 USDT
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 09:45:05 -08:00
hailin
0860ff23b8
fix(guide): 修复向导页5导入助记词按钮导航问题
...
将 Navigator.of(context).pushNamed() 改为 context.push(),
使用 go_router 进行页面导航,与 onboarding_page 保持一致。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 09:19:25 -08:00
hailin
13d1bedb73
feat(profile): 添加市团队/省团队/市区域/省区域权益考核显示
...
在"我的"页面社区权益考核下方,根据用户拥有的角色显示对应的权益考核组件:
- 市团队:每新增认种1棵可获得30 USDT
- 省团队:每新增认种1棵可获得10 USDT
- 市区域:每新增认种1棵可获得20 USDT
- 省区域:每新增认种1棵可获得10 USDT
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 08:40:34 -08:00
hailin
6ef8824ef0
fix(referral): 修复 getMyReferralInfo 使用 userId 而不是 accountSequence 的问题
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 05:05:03 -08:00
hailin
6eea4463f8
feat(profile): 支持显示多笔待领取奖励明细
...
- 新增 PendingRewardItem 数据模型,对接 GET /rewards/pending 接口
- 修改 ProfilePage 并行加载汇总数据和待领取列表
- 重构收益区域 UI,展示每笔奖励的权益类型、金额和独立倒计时
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 01:33:13 -08:00
hailin
552b15e26b
fix(mobile): 修复序列号类型转换错误
...
accountSequence 格式已从数字改为字符串 (D + YYMMDD + 5位序号)
- profile_page.dart: `as int?` → `as String?`
- mining_page.dart: `as int?` → `as String?`
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 14:22:59 -08:00
hailin
4be9c1fb82
refactor!: 重构账户序列号格式 (BREAKING CHANGE)
...
将 accountSequence 从数字类型改为字符串类型,新格式为:
- 普通用户: D + YYMMDD + 5位序号 (例: D2512120001)
- 系统账户: S + 10位序号 (例: S0000000001)
主要变更:
- identity-service: AccountSequence 值对象改为字符串类型
- identity-service: 序列号生成器改为按日期重置计数
- 所有服务: Prisma schema 字段类型从 BigInt/Int 改为 String
- 所有服务: DTO、Command、Event 中的类型定义更新
- Flutter 前端: 相关数据模型类型更新
涉及服务:
- identity-service (核心变更)
- referral-service
- authorization-service
- wallet-service
- reward-service
- blockchain-service
- backup-service
- planting-service
- mpc-service
- admin-service
- mobile-app (Flutter)
注意: 此为破坏性变更,需要清空数据库并重新运行 migration
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 09:11:18 -08:00
hailin
26427443fe
feat(mobile): add auth-province and auth-city company display in profile page
...
- Add authProvinceCompany and authCityCompany to RoleType enum
- Update UserAuthorizationSummary to support all role types
- Update profile page to display all authorization types
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:20:25 -08:00
hailin
033268deb9
feat(mobile): improve UX with QR scanning and Huawei compatibility fixes
...
- Disable Impeller rendering engine to fix video playback on Huawei devices
- Update splash screen text from "榴莲女皇" to "榴莲皇后" and use app logo
- Make referral code input scan-only (disable manual input) on guide page 5
- Add "import mnemonic" entry on guide page 5 for account recovery
- Replace paste button with QR scanner in USDT withdraw address input
- Add camera and gallery QR scanning support for wallet addresses
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 05:39:58 -08:00
hailin
7bf88cd6a8
feat(mobile): replace splash screen with video player
...
- Add video_player dependency for video playback
- Create assets/videos directory for splash video
- Implement video splash screen with:
- Full-screen video playback (splash.mp4)
- Skip button appears after 1 second
- Fallback to logo view if video fails to load
- Auto-navigate when video completes
- Video file should be placed at: assets/videos/splash.mp4
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 04:23:04 -08:00
hailin
3644c04521
fix(mobile): auto-show confirm dialog when planting location is saved
...
When user has previously saved province/city selection:
- Automatically show confirm dialog on page load
- Skip the 5-second countdown timer
- Hide countdown text in dialog when skipCountdown is true
- User can directly confirm and proceed with planting
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 04:08:57 -08:00
hailin
ca5e903724
feat(mobile): add USDT withdraw feature with Google Authenticator verification
...
1. Trading page:
- Add withdraw/transfer button below DST balance section
- Display USDT balance from wallet-service
- Navigate to withdraw page on button tap
2. Withdraw USDT page (new):
- Network selection (KAVA / BSC)
- Wallet address input with paste support
- Amount input with max button
- Fee calculation (0.1%) and actual amount preview
- Input validation and notice section
3. Withdraw confirm page (new):
- Transaction details summary
- Google Authenticator 6-digit code verification
- Success dialog with navigation back to trading
4. Routes:
- Add /withdraw/usdt and /withdraw/confirm routes
- Configure route parameters for WithdrawUsdtParams
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 03:47:22 -08:00
hailin
7320900289
fix(mobile): sync trading page settleable data with profile page
...
Trading page now fetches settleableUsdt from reward-service instead
of wallet-service to ensure data consistency with profile page.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 03:28:02 -08:00
hailin
d1a7c44f23
fix(referral): correct response parsing for authorization-service API
...
The authorization-service uses TransformInterceptor which wraps all API
responses in a standard format: { success, data, timestamp }
Before this fix, the AuthorizationServiceClient was reading:
response.data.accountSequence (undefined)
After this fix, it correctly reads:
response.data.data.accountSequence
This ensures that nearestCommunity, nearestProvinceAuth, and nearestCityAuth
are properly extracted from the wrapped response, allowing community benefits
to be correctly allocated to authorized users instead of falling back to
SYSTEM_HEADQUARTERS_COMMUNITY.
Changes:
- Added AuthorizationServiceResponse<T> interface to model wrapped response
- Updated findNearestCommunity() to use wrapped response type
- Updated findNearestProvince() to use wrapped response type
- Updated findNearestCity() to use wrapped response type
- Updated catchError handlers to return properly structured fallback data
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 03:08:50 -08:00
hailin
7d9837fc22
refactor(reward): 前端直接从 reward-service 查询奖励数据
...
移除 reward-service 和 wallet-service 之间的 Kafka 同步机制:
- 屏蔽 reward-service 的 outbox 发布逻辑
- 屏蔽 wallet-service 的 RewardEventConsumerController 订阅
Flutter 前端改为直接调用 reward-service API:
- 新增 RewardService 调用 /rewards/summary
- profile_page 改用 rewardService.getMyRewardSummary()
这样简化了架构,数据从源头获取,避免同步问题。
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 00:36:53 -08:00
hailin
05040b3495
feat(mobile): integrate community hierarchy API in profile page
...
- Call getMyCommunityHierarchy() to get parent/child community info
- Display parent community name (defaults to 总部社区 if none)
- Display child communities count and first name
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:13:52 -08:00
hailin
c1d30b0a65
fix(mobile): correct community benefit description
...
Changed from "有资格获得 3% 的社区福利" to "每新增认种 1 棵可获得 80 USDT"
which accurately reflects the actual community benefit rule.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 17:49:19 -08:00
hailin
176a4b1493
fix(guide): change referral code input text color to black for visibility
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 10:44:39 -08:00
hailin
1b2211d641
feat(mobile): add personal planting count to profile page
...
Added "个人种植数" stat between direct referral count and team planting
count in the profile page team stats section.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 09:13:20 -08:00
hailin
317ea1234d
fix(mobile): use wallet-service for balance queries
...
- Planting page: fetch USDT balance from wallet-service instead of blockchain-service
- Deposit page: fetch USDT balance from wallet-service instead of blockchain-service
This ensures balance reflects internal wallet state, not on-chain balance.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 09:07:15 -08:00
hailin
d84fc9409b
fix(mobile): add 5s delay before confirm-province-city API call
...
Backend requires 5 seconds wait time after selectProvinceCity before
confirmProvinceCity can be called. Added delay to comply with this rule.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:30:52 -08:00
hailin
c887cf7ec6
fix(mobile): send all 4 fields for province/city selection API
...
API requires provinceCode, provinceName, cityCode, cityName (all strings).
Previous fix only sent 2 fields, now sending all 4 required fields.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:27:15 -08:00
hailin
a44f6c7c35
fix(mobile): send provinceName/cityName instead of codes to API
...
API expects provinceName and cityName (strings) but frontend was
sending provinceCode and cityCode (numbers), causing 400 error.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:23:03 -08:00
hailin
4074281088
feat(mobile): allow manual input for planting quantity
...
- Replace static text with editable TextField for quantity
- Add warning when input exceeds max quantity based on balance
- Sync +/- buttons with input field value
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:16:23 -08:00
hailin
3dcf685715
feat(mobile): add close button to planting confirm dialog
...
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 08:07:27 -08:00