Commit Graph

168 Commits

Author SHA1 Message Date
hailin 188075b2be fix: 短信超时返回成功状态避免前端报错
超时情况下短信可能已发送成功,返回 success: true + uncertain: true

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 20:55:31 -08:00
hailin 2897a0c74c feat: 添加 register-by-phone API 实现手机号一步注册
- 后端: 添加 POST /user/register-by-phone 接口
  - 验证短信验证码、创建账户、绑定手机号、设置密码、触发钱包生成
  - 添加 RegisterByPhoneCommand 和 RegisterByPhoneDto
- 前端: 修改注册流程使用新 API
  - SmsVerifyPage 直接跳转到密码页面传递验证码
  - SetPasswordPage 调用 registerByPhoneWithPassword 一步完成
  - AccountService 添加 registerByPhoneWithPassword 方法

修复手机号注册流程中手机号和密码未正确保存的问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 20:19:46 -08:00
hailin 10b25e222e fix: 防止钱包生成中状态下重复触发MPC keygen
问题:
- 前端在钱包状态为"generating"时仍然调用retryWalletGeneration
- 后端identity-service没有检查生成中状态
- mpc-service没有幂等保护,可能导致同一用户多次keygen

修复:
1. 前端 wallet_status_provider.dart:
   - 只在"failed"状态下才触发重试
   - "generating"状态只更新UI,继续轮询等待

2. 后端 identity-service user-application.service.ts:
   - retryWalletGeneration添加Redis状态检查
   - pending/generating/deriving状态下跳过重试
   - 只有failed或无状态时才触发重试

3. 后端 mpc-service keygen-requested.handler.ts:
   - 使用分布式锁防止同一用户重复keygen
   - 锁TTL为5分钟,覆盖整个keygen过程
   - 无法获取锁时跳过请求

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 18:55:51 -08:00
hailin 5b731498de feat: 充值页面添加长按二维码10秒切换到真实钱包地址模式
- 长按二维码超过10秒可切换到显示真实KAVA钱包地址
- 切换后显示完整区块链地址和对应二维码
- 页面退出后自动恢复到充值ID模式
- 隐藏功能,不影响普通用户使用

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 18:46:35 -08:00
hailin 54a225ebf2 feat: 充值/提现页面添加钱包状态检查,优化钱包状态轮询逻辑
- 充值页面: 先检查钱包状态,未就绪时显示"账号审核中..."
- 提现页面: 先检查钱包状态,未就绪时显示"账号审核中..."
- 监控页面: 先从本地存储读取钱包状态,已就绪则跳过轮询
- wallet_status_provider: 先检查本地存储,避免不必要的API调用

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 18:36:44 -08:00
hailin 3e352dbcfe refactor: 钱包状态轮询自动重试,移除手动重试按钮
设计原则:只要钱包不是 ready 状态,就持续轮询并自动重试生成
- 移除 failed 状态和重试按钮(用户无需手动操作)
- 非 ready 时自动调用 retryWalletGeneration API(幂等)
- 轮询间隔改为60秒(API 1-10分钟幂等)
- 只有 ready 时停止轮询

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 18:20:10 -08:00
hailin ffd4fae0b6 fix: 只有钱包ready时才显示序列号
- mining_page: unknown状态也显示"创建账号审核中..."
- profile_page: 默认分支改为显示"创建账号审核中..."
- 符合设计:只要不成功就持续轮询重试

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 18:15:15 -08:00
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