hailin
|
bcfa5143e3
|
fix(mining-app): C2C订单详情页自动刷新,列表刷新间隔缩短
- 订单详情 Provider 活跃状态(PENDING/MATCHED/PAID)每10秒自动刷新
过期/完成/取消后停止刷新,节省资源
- 市场订单和我的订单列表刷新间隔从1分钟缩短到30秒
- 离开订单详情页时立即刷新市场和我的订单列表
确保过期恢复的新PENDING订单及时在列表中显示
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-02-01 02:23:21 -08:00 |
hailin
|
7f2479d995
|
fix(mining-app): 更新弹窗不可点击外部关闭,订单详情按买卖角色显示不同倒计时文案
- 更新提示弹窗 barrierDismissible 始终为 false,防止用户误触关闭
- 订单详情页根据买家/卖家角色显示不同的倒计时提示文案
- 买方:你需要在xx:xx内完成付款 / 等待卖方确认收款
- 卖方:对方将在xx:xx内完成付款 / 请在xx:xx内确认收款
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-02-01 01:58:53 -08:00 |
hailin
|
73a617b88c
|
fix(c2c): 单价和总金额单位改为绿积分,待付款提示改为对方
- C2C市场列表/接单弹窗中单价和总金额单位从"积分值"改为"绿积分"
- 订单详情待付款倒计时提示改为"对方将在xx:xx内完成付款"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-02-01 00:57:30 -08:00 |
hailin
|
64d998c7b3
|
fix(trading): 卖出金额超过可用积分股时提示并禁用确认按钮
- 新增 _getSellValidationError 校验方法
- 输入金额反算的积分股数量 > 可用余额时显示红色提示
- 校验失败时禁用"确认交易"按钮(灰色)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 22:29:33 -08:00 |
hailin
|
b8f8831516
|
feat: PENDING订单自动过期、接单显示余额、积分股金额输入
1. C2C PENDING订单24小时自动过期并解冻冻结资产
- 新增 DEFAULT_PENDING_TIMEOUT_HOURS 常量
- findExpiredOrders 支持 PENDING 状态查询
- expireOrder 处理 PENDING 卖单解冻
2. C2C接单对话框显示卖方可用余额
- 确认出售时显示用户账户可用积分值(非订单数量)
- 新增订单数量行,方便对比
3. 积分股兑换页面新增金额输入
- 卖出时显示金额输入框(积分值),与数量双向联动
- 输入数量自动计算金额,输入金额自动反算数量
- 全部按钮同步更新两个字段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 22:15:47 -08:00 |
hailin
|
83c29f8540
|
fix(c2c): 订单详情单价和总金额标签改为绿积分
- 单价: "积分值" → "绿积分/积分值"
- 总金额: "积分值" → "绿积分"(买方实际支付的绿积分数量)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 21:46:26 -08:00 |
hailin
|
6ec829a804
|
fix(c2c): 隐藏订单详情页的买入/卖出标签
订单信息卡片中移除"买入"/"卖出"类型标签,
仅保留"我发布的"标记(当用户是maker时显示)。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 21:43:50 -08:00 |
hailin
|
a1c3657390
|
fix(c2c): 修复付款水单图片无法显示的问题
1. 后端: proofs 图片端点添加 @Public() 装饰器,
Image.network 无法携带 JWT token
2. 前端: paymentProofUrl 是相对路径,拼接 baseUrl
构建完整 URL 供 Image.network 加载
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 21:16:53 -08:00 |
hailin
|
f9835c388e
|
fix(c2c): 我的订单显示用户角色视角,修复详情页缓存
1. "我的"列表根据用户是maker/taker判断实际角色,
接买单(taker)时显示"卖出"而非"买入"
2. 订单详情 provider 改为 autoDispose,每次进入详情页
都从API获取最新数据,避免显示旧的数量和状态
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 21:02:04 -08:00 |
hailin
|
f1c99949ad
|
fix(c2c): 发布页绿积分输入框和预估卡片单位标签修正
- 第二个输入框后缀 "积分值" → "绿积分"
- 预估卡片第二行标签 "积分值数量" → "绿积分数量",单位 → "绿积分"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 20:50:32 -08:00 |
hailin
|
6bcc571453
|
revert(c2c): 还原C2C市场页资产概览为原始状态
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 09:25:03 -08:00 |
hailin
|
0ad1136e48
|
fix(c2c): 修正资产概览显示,C2C只涉及积分值不涉及积分股
左栏改回"可用积分值",右栏改为"冻结积分值",消除重复显示。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 09:23:59 -08:00 |
hailin
|
f60e3751b8
|
fix(c2c): 修复水单上传权限、手机号、卖方ID、资产显示
- Dockerfile: 用 su-exec 模式解决 Docker volume 权限问题
- JWT guard: 从 token 提取 phone 字段
- 订单详情: 新增卖方ID显示
- C2C市场页: 修复资产概览两列重复显示 availableCash,
改为左列显示可用积分股、右列显示可用积分值
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 09:19:38 -08:00 |
hailin
|
e783661002
|
fix(c2c): 修复水单上传权限、手机号显示、卖方ID显示
- Dockerfile 预创建 /app/uploads/c2c-proofs 并设置正确权限
- JWT guard 从 token payload 提取 phone 字段(之前仅提取 accountSequence)
- 订单详情页订单信息组新增卖方ID显示
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 09:13:46 -08:00 |
hailin
|
ce173451f5
|
feat(c2c): 订单详情增强、付款水单上传、买单逻辑修复及schema对齐
- 订单详情页显示完整手机号和收款账号信息
- 新增付款水单上传功能(前后端全链路)
- 修复时间显示为本地时区格式
- 移除买单发布时的积分值余额验证(买方通过外部绿积分支付)
- 前端买单发布页隐藏余额卡片和"全部"按钮
- 补齐 Prisma migration 与 schema 差异(payment_proof_url、
bot_purchased索引、market_maker_deposits/withdraws表)
- docker-compose 新增 trading-uploads 卷用于水单持久化
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 08:54:05 -08:00 |
hailin
|
c5126187d2
|
feat(mining-app): 二维码扫描支持从相册选择图片识别
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 07:21:56 -08:00 |
hailin
|
286b82c63b
|
fix(c2c): 修复 RangeError 崩溃及订单详情灰色页面问题
根因:多处 [0] 访问空列表/空字符串导致 RangeError 崩溃
- api_client.dart: 后端错误 message 为空数组时 ?[0] 崩溃,改为安全检查
- c2c_order_detail_page.dart: nickname 和 phone 均为 null 时 name[0] 崩溃,
添加 isNotEmpty 检查和 '未知用户' 回退
- c2c_market_page.dart: makerNickname 为空字符串时 [0] 崩溃,添加 isNotEmpty 检查
这是 C2C 买方"待付款灰色页面"的根本原因:页面在渲染交易双方信息时
因空用户名 RangeError 崩溃,导致整个页面无法显示
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 07:10:05 -08:00 |
hailin
|
8e63547a3e
|
fix(transfer): 修复积分股划转到分配账户失败问题
后端:
- transfer.service.ts: Error → BadRequestException,业务错误返回HTTP 400而非500
- transfer.controller.ts: Error → UnauthorizedException,正确返回HTTP 401
- 错误信息改为中文:余额不足、账户不存在等提示更明确
前端:
- asset_display.dart: 新增 tradingAvailableShares 计算属性(总可用 - 挖矿可用)
- trading_page.dart: 划转弹窗显示可用余额(扣除冻结)而非总余额
- trading_page.dart: 划转失败时显示后端具体错误信息而非通用提示
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 06:24:35 -08:00 |
hailin
|
0ffa875a85
|
fix(mining-app): 移除 debug applicationIdSuffix 修复升级后双图标
debug buildType 设置了 applicationIdSuffix = ".debug",导致
debug 包名为 com.rwadurian.mining_app.debug,release 包名为
com.rwadurian.mining_app。Android 将它们视为两个不同应用,
升级安装 release 包时不覆盖 debug 包,出现两个相同图标。
移除 applicationIdSuffix 后 debug/release 使用同一包名,
升级安装时会正确覆盖旧版本。versionNameSuffix 保留用于区分版本号。
注:用户手机上需手动卸载旧的 debug 包才能清除已存在的重复图标。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 05:57:34 -08:00 |
hailin
|
03cc5bc324
|
fix(mining-app): QR码解析加固 + debugPrint排查
- 清除不可见字符(BOM/零宽空格)
- 三级宽松解析:正则→Uri.parse→兜底phone=提取
- 添加 [QR_SCAN] 调试日志定位实际扫码值
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 05:54:34 -08:00 |
hailin
|
8c31dee000
|
fix(c2c): 修复买方待付款页面灰色无法操作问题
根因: c2c_order_model.dart 的 _parsePaymentMethod 不识别 GREEN_POINTS,
导致 paymentMethod=null → hasPaymentInfo=false → 收款信息卡片隐藏 → 页面不可操作
前端修复:
- C2cPaymentMethod 枚举增加 greenPoints,解析器支持 GREEN_POINTS
- 支持逗号分隔的多支付方式字符串(取第一个作为主要方式)
- 订单详情页增加绿积分图标和卖方 Kava 地址显示(买方可复制)
后端修复:
- takeOrder() 接买单时自动获取卖方 Kava 地址写入 sellerKavaAddress
- 买方在订单详情页可看到卖方 Kava 地址用于转绿积分
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-31 05:41:14 -08:00 |
hailin
|
9e83127113
|
fix(mining-app): C2C"我的"列表待接单订单增加取消按钮
在我的订单卡片上直接显示取消按钮(PENDING状态),
弹出确认对话框后调用 cancelOrder API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 20:46:50 -08:00 |
hailin
|
7c416adecd
|
feat(mining-app): P2P转出记录显示手续费及合计扣除
- P2pTransferModel 新增 fee 字段解析
- 转出卡片聚合显示:转账金额 + 手续费 + 合计扣除
- 转入卡片保持只显示转账金额
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 20:45:37 -08:00 |
hailin
|
7d548dac4e
|
fix(mining-app): C2C接单验证收款信息 + 数字显示优化
- 接BUY单时验证收款账号和姓名必填,仅绿积分时自动使用账户ID
- 所有C2C价格/数量/金额显示改用formatCompact,去掉多余小数位
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 14:31:08 -08:00 |
hailin
|
b50091eb1e
|
fix(mining-app): C2C 发布页"积分值金额"改为"绿积分数量"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 14:09:17 -08:00 |
hailin
|
a0750fbd42
|
fix(mining-app): C2C 发布页单价单位改为"绿积分/积分值"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 14:07:31 -08:00 |
hailin
|
d91550f704
|
fix(mining-app): FileProvider 使用 root-path 覆盖 Flutter app_flutter 目录
files-path 映射到 getFilesDir() 即 /data/data/<pkg>/files/,
但 Flutter getApplicationDocumentsDirectory() 返回 /data/data/<pkg>/app_flutter/,
两者是同级目录而非父子关系,files-path 无法覆盖。
使用 root-path 映射设备根路径 /,确保所有内部路径都能被 FileProvider 解析。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 13:58:23 -08:00 |
hailin
|
45d038bd4b
|
fix(mining-app): FileProvider 添加 app_flutter 路径,修复 APK 安装 IllegalArgumentException
下载的 APK 保存在 getApplicationDocumentsDirectory() 即 /data/data/<pkg>/app_flutter/updates/,
但 file_paths.xml 只配置了 files-path(对应 /data/data/<pkg>/files/),
导致 FileProvider.getUriForFile() 找不到匹配的根路径。
添加 <files-path name="app_flutter" path="app_flutter/" /> 与 mobile-app 保持一致。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 13:44:00 -08:00 |
hailin
|
a27ed0fa16
|
fix(mining-app): APK 安装后调用 finishAffinity() 退出旧应用,与 mobile-app 保持一致
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 13:30:42 -08:00 |
hailin
|
94d4524ee3
|
fix(c2c): 积分股→积分值,C2C交易对象修正为积分值(cash)
C2C交易的产品是积分值,支付方式是绿积分(外部1.0系统),与积分股无关。
前端:
- c2c_publish_page: 余额卡、数量输入、提示文案、确认弹窗全部改为积分值
- c2c_market_page: 余额概览(availableShares→availableCash)、订单数量标签、接单弹窗
- c2c_order_detail_page: 订单详情、划转提示、确认收款弹窗
后端 c2c.service.ts:
- createOrder SELL: freezeShares→freezeCash
- takeOrder BUY(taker=卖方): freezeShares→freezeCash
- takeOrder SELL(taker=买方): 移除冻结(买方通过外部支付绿积分)
- cancelOrder SELL: unfreezeShares→unfreezeCash
- expireOrder: unfreezeShares→unfreezeCash,SELL不再解冻taker
- executeTransfer: 统一BUY/SELL为单向积分值划转,assetType改为CASH
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 12:41:23 -08:00 |
hailin
|
cfa0e2ca40
|
fix(mining-app): 更新弹窗点击"立即更新"无反应 — 进度流订阅竞态修复
问题根因:
SelfHostedUpdater._listenToProgress() 在 initState 和 _startDownload 中
订阅 UpdateService.downloadProgressStream,但该 getter 返回
_downloadManager?.progressStream —— _downloadManager 在 downloadUpdate()
调用前为 null,?.listen 无操作。downloadUpdate() 创建新 _downloadManager
后,其 progressStream 无人监听,进度事件全部丢失,UI 无任何反馈。
修复:
1. UpdateService 新增持久化广播流 _downloadProgressController,
downloadUpdate() 创建新 DownloadManager 后将其进度转发到此流
2. downloadProgressStream getter 改为返回持久化流(非 nullable)
3. SelfHostedUpdater 在 initState 中一次性订阅持久化流,
dispose 时取消订阅,_startDownload 不再重复订阅
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 12:24:47 -08:00 |
hailin
|
bde7f0c53b
|
fix(mining-app): 自动更新检查未触发 — 修复双重节流 + 添加调试日志
问题原因:
1. checkForUpdate() 未传 force:true,被 UpdateService 内部的60分钟
SharedPreferences 间隔二次节流,导致实际请求被跳过
2. 缺少日志输出,无法诊断检查流程是否执行
修复:
- checkForUpdate(force: true) 跳过内部60分钟限制,
因为 MainShell 已有自己的90-300秒随机冷却节流
- 在 initState / dispose / didChangeAppLifecycleState /
_checkForUpdateIfNeeded 各关键节点添加 debugPrint 日志,
方便 flutter run 控制台追踪完整检查流程
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 12:20:56 -08:00 |
hailin
|
53a2e64cad
|
feat(mining-app): 启动和切回前台自动检测升级
MainShell 从 StatelessWidget 转为 StatefulWidget + WidgetsBindingObserver,
参考 mobile-app HomeShellPage 模式,实现:
- initState 首帧后自动检查更新
- didChangeAppLifecycleState(resumed) 从后台恢复时自动检查
- 90-300秒随机冷却间隔防止频繁请求(static 变量跨 rebuild 保持)
- 延迟3秒启动检查,避免干扰用户操作
- 有更新时弹出 SelfHostedUpdater 对话框(支持强制更新)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 12:07:40 -08:00 |
hailin
|
187b82e9ac
|
feat(c2c): 修复6项C2C交易问题 (#11-#16)
- #11: 价格固定1:1,最小交易数量为1
- #12: BUY买单不再冻结买方积分值(绿积分通过外部1.0系统支付)
- #13: 支持部分成交,taker可指定数量,剩余自动拆分为新PENDING订单
- #14: 发布页双向输入,积分股数量与积分值金额1:1联动
- #15: 接BUY单时弹出收款信息输入(收款方式、账号、姓名)
- #16: BUY单创建时验证积分值余额但不冻结
后端: cancelOrder/expireOrder/executeTransfer 均按BUY/SELL分别处理
前端: 发布页价格只读、市场页接单对话框增加数量和收款输入
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 11:36:57 -08:00 |
hailin
|
c28ccb6206
|
fix(mining-app): 总资产估值仅显示积分值,未包含积分股估值
问题:_calculateTotalAssetValue() 依赖 WebSocket 推送的 _currentPrice
和定时器初始化的 _currentShareBalance,在 WebSocket 未连接或定时器未
启动时这些值均为 0,导致 shareValue=0,总资产仅显示现金余额。
修复:当 WebSocket/_timer 未初始化时,回退到 API 返回的
asset.currentPrice、asset.burnMultiplier 和 asset.shareBalance,
与 _buildAssetList 中积分股估值的计算逻辑保持一致。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 11:03:41 -08:00 |
hailin
|
ca4e5393be
|
feat(p2p-transfer): 实现P2P划转手续费功能(全栈)
## 功能概述
- P2P转账(积分值)支持手续费收取,手续费存入系统成本费账户 S0000000002
- 发送方实际扣除 = 转账金额 + 手续费,接收方全额收到转账金额
- 手续费金额和最小划转金额可在管理后台动态配置(默认: 手续费5, 最小划转6)
## 后端 — mining-admin-service
- GET /configs/p2p-transfer-fee: 管理端获取手续费配置(需鉴权)
- POST /configs/p2p-transfer-fee: 管理端设置手续费配置,校验最小划转 > 手续费
- GET /configs/internal/p2p-transfer-fee: 内部调用端点(@Public 无鉴权)
## 后端 — trading-service
- Prisma schema: P2pTransfer model 新增 fee Decimal(30,8) 字段
- docker-compose: 新增 MINING_ADMIN_SERVICE_URL 环境变量
- p2p-transfer.service: 动态获取手续费配置,余额校验含手续费,
事务内分别记录转账流水和手续费流水(P2P_TRANSFER_FEE),
手续费存入系统成本费账户 S0000000002
- p2p-transfer.controller: 新增 GET /p2p/transfer-fee-config 代理端点
- 转账结果和历史记录新增 fee 字段返回
## 前端 — mining-admin-web
- configs.api.ts: 新增 getP2pTransferFee / setP2pTransferFee API
- use-configs.ts: 新增 useP2pTransferFee / useSetP2pTransferFee hooks
- configs/page.tsx: 新增"P2P划转手续费设置"卡片(手续费 + 最小划转金额)
## 前端 — mining-app (Flutter)
- api_endpoints.dart: 新增 p2pTransferFeeConfig 端点常量
- p2p_transfer_fee_config_model.dart: 新增手续费配置 Model
- trading_remote_datasource.dart: 新增 getP2pTransferFeeConfig 方法
- transfer_providers.dart: 新增 p2pTransferFeeConfigProvider
- send_shares_page.dart: 发送页面显示手续费信息、最小划转金额提示、
实际扣除金额计算、"全部"按钮扣除手续费、确认弹窗展示手续费明细
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 06:44:19 -08:00 |
hailin
|
830d99a504
|
feat(mining-app): 分离发送/接收记录 + 隐藏买入待开启
- 发送页右上角"转出记录"只显示转出明细
- 接收页右上角新增"接收记录"只显示转入明细
- P2pTransferRecordsPage 支持 filterDirection 参数过滤方向
- 兑换页隐藏"买入待开启" Tab(_showBuyTab=false,保留代码备启用)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 22:10:47 -08:00 |
hailin
|
99dbce2053
|
feat(mining-app): 添加自动版本号增长机制
mining-app 的 versionCode 写死为 1,导致版本升级检测永远无法触发。
参照 mobile-app 实现,添加 Gradle 层自增 + 构建脚本两层机制:
- build.gradle.kts: version.properties 自增 versionCode
- scripts/build.sh: 自动 bump pubspec.yaml buildNumber
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 21:32:15 -08:00 |
hailin
|
263f1ecf8e
|
feat(c2c): 卖单自动获取账户ID和Kava地址,移除手动输入
后端创建卖单时自动从 identity-service 获取卖家 Kava 地址并存入订单,
前端发布页面自动展示 accountSequence(只读),不再需要手动输入1.0系统ID。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 11:08:56 -08:00 |
hailin
|
2b7a30983e
|
fix(mining-app): 修复贡献值明细筛选栏溢出问题
使用 SingleChildScrollView 包装筛选栏,支持横向滚动
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 09:52:37 -08:00 |
hailin
|
c02d0b4c3c
|
fix(mining-app): 移除遗留的 kDebugMode 调试代码
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 09:48:51 -08:00 |
hailin
|
7560940e14
|
fix(mining-app): 修复贡献值明细页面筛选和文字溢出问题
- 将贡献值记录筛选从客户端过滤改为服务端过滤,解决同伴上贡献值记录无法显示的问题
- 使用 FittedBox 包装三栏统计标签文字,防止"同伴上贡献值"溢出
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 09:44:12 -08:00 |
hailin
|
776d181ef3
|
fix(trading-service): 修复P2P转账API响应双重包装问题
- 移除controller中的手动包装,由TransformInterceptor统一处理
- 前端增加类型检查防止解析错误
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 09:11:59 -08:00 |
hailin
|
1448435b06
|
chore(mining-app): 移除发送页面调试日志
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 08:40:37 -08:00 |
hailin
|
6ebc1f8767
|
fix(mining-app): 添加收款方验证成功提示和调试日志
- 验证成功时显示绿色 SnackBar 提示
- 添加调试日志帮助诊断可用余额问题
- 温馨提示中添加积分值获取方式说明
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 08:26:22 -08:00 |
hailin
|
8fe38525a2
|
fix(mining-app): 验证收款方失败时显示提示信息
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 08:19:39 -08:00 |
hailin
|
6bcfa18b01
|
fix(mining-app): 修复转账二维码扫描无效问题
- 修改二维码生成格式为 durian://transfer/?phone=xxx (添加路径分隔符)
- 更新解析函数使用正则匹配,兼容新旧格式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 07:39:42 -08:00 |
hailin
|
76d566d145
|
feat: 集成 mining-app 升级和遥测功能,扩展 mobile-upgrade 支持多应用
## mining-app (Flutter)
- 新增 updater 模块: 版本检查、APK下载(断点续传+SHA256校验)、安装
- 新增 telemetry 模块: 事件上报、会话追踪、心跳检测(DAU统计)
- 集成原生 MethodChannel 实现 APK 安装
- 在关于页面添加"检查更新"功能入口
## mining-admin-service (NestJS)
- 新增版本管理 API (/api/v2/versions)
- 实现 DDD 架构: Entity, Value Objects, Repository
- 支持 APK/IPA 解析 (需安装 adbkit-apkreader, jszip, plist)
- 支持文件上传和静态文件服务
## mobile-upgrade (Next.js)
- 扩展支持多后端: 榴莲 App (admin-service) + 股行 App (mining-admin-service)
- 添加应用选择器 UI
- 配置独立的 API 端点
## 修复
- 移除未使用的 _apiBaseUrl 字段 (Flutter)
- 替换废弃的 WillPopScope 为 PopScope (Flutter)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-28 20:03:26 -08:00 |
hailin
|
a2da841d59
|
feat(transfer): 添加扫码转账功能
- 添加 mobile_scanner 依赖用于二维码扫描
- 创建 QrScannerSheet 组件,支持底部弹窗扫码
- 发送积分值页面添加扫码按钮,扫描后自动填入收款方手机号
- 支持解析 durian://transfer?phone={phone} 格式的二维码
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-28 16:22:53 -08:00 |
hailin
|
0c0750ce93
|
feat(c2c): 前端添加 Bot 自动购买信息展示
- C2cOrderModel 添加 botPurchased/sellerKavaAddress/paymentTxHash 字段
- 订单详情页新增 Bot 支付信息卡片,显示 dUSDT 交易哈希
- 支持复制 Kava 地址和交易哈希
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-28 07:26:36 -08:00 |