Commit Graph

181 Commits

Author SHA1 Message Date
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 a5d5f78f17 fix(reward): 为 ExpiredRewardItem 添加 rightTypeName getter 别名
解决 profile_page.dart 编译错误:
- 添加 rightTypeName getter 作为 allocationTypeName 的别名
- 保持与 PendingRewardItem/SettleableRewardItem 的接口一致

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 08:09:11 -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 4504d6cb39 chore: 更新版本号和项目名称以匹配新包名
- pubspec.yaml 版本更新为 2.0.0(大版本更新)
- 项目名称改为 durianqueen_app

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 00:29:43 -08:00
hailin 9508861fd1 refactor: 更换包名和签名证书以绕过华为风险软件检测
## 更改内容
- 包名: com.rwadurian.rwa_android_app → com.durianqueen.app
- 签名证书: 使用新的 durianqueen-release.keystore
- MethodChannel: 更新为新包名前缀

## 原因
华为应用市场 13.2+ 版本对未上架应用检测更严格,
会记录包名和签名,标记为"风险应用"。
更换包名和签名证书让华为识别为全新应用。

## 注意
- 用户需要卸载旧版本重新安装
- 本地数据会丢失

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 00:24:22 -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 60b41f991c fix: 移除未使用的区块链依赖库
移除 web3dart, bip39, ed25519_hd_key, hex 等未使用的库
这些库底层使用 sun.misc.Unsafe,可能触发华为安全检测

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:45:32 -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 8d27c90bdc fix(android): 升级 Kotlin 版本至 2.1.0
按 Flutter 建议升级 Kotlin 版本以避免兼容性问题

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 20:00:07 -08:00
hailin 390bb1c22b fix(android): 降级 Kotlin 版本至 1.9.22 修复构建错误
sentry_flutter 插件不兼容 Kotlin 2.2.20,降级到稳定版本

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 19:53:01 -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 ebb0b85ab5 fix(sentry): 修复 Flutter 代码分析错误
- 修复 bootstrap.dart 中 deviceModel 属性访问错误 (使用 brand + model)
- 移除 sentry_navigation_observer.dart 中未使用的 _previousRouteName 字段
- 更新 sentry_service.dart 使用新版 Sentry API (captureFeedback)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 11:04:28 -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 2a4efe0828 fix(frontend): 修复添加新账号时旧状态未清除的问题
问题: logoutCurrentAccount() 方法只清除了 5 个状态,导致添加新账号时
旧账号的钱包地址、助记词备份状态等仍然存在,影响新账号创建/导入流程。

修复: 现在清除全部 16 个账号相关状态:
- Token: accessToken, refreshToken
- 账号信息: userSerialNum, username, avatarSvg, avatarUrl,
  referralCode, inviterSequence, isAccountCreated
- 钱包信息: walletAddressBsc, walletAddressKava, walletAddressDst,
  mnemonic, isWalletReady, isMnemonicBackedUp

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 06:07:23 -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 8d68b292c8 fix(deps): 降级 share_plus 版本修复 Android 构建错误
将 share_plus 从 ^10.0.0 降级到 ^7.2.2,解决 Android SDK 35 构建时的 Kotlin 编译错误

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 03:38:24 -08:00