Commit Graph

197 Commits

Author SHA1 Message Date
hailin cba7ff590a fix(mining-app): K线蜡烛图最小实体高度优化,消除横线"-"显示
问题:销毁时段(无交易)的小时K线中,open ≈ close(价差仅 ~2.8e-10),
蜡烛实体映射到像素后高度接近0,旧代码强制最小1px导致显示为横线"-"。

修复:将蜡烛实体最小高度从固定1px改为 max(bodyWidth * 0.4, 3.0)px,
即至少为蜡烛宽度的40%或3像素(取较大值),使 doji 蜡烛显示为
可辨识的小方块而非横线。有正常涨跌幅的蜡烛不受影响。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 21:31:52 -08:00
hailin ef5ac2bf94 fix(mining-app): 价格刷新倒计时与后端销毁调度器同步
- 倒计时不再从页面打开时任意起点开始
- 自动计算距下一个整分钟第3秒的剩余秒数作为初始值
  (销毁在每分钟第0秒执行,留3秒余量等数据库写完)
- 倒计时归零时通过 ref.invalidate 主动刷新价格数据
- 确保每次刷新都能拿到最新的销毁后价格

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 21:17:10 -08:00
hailin abb0da36a9 feat(mining-app): 兑换页价格刷新改为60秒并显示倒计时
- 价格 Provider 刷新间隔从15秒改为60秒,与后端销毁调度器同步
  (销毁每分钟执行一次,15秒内数据不会变化,避免无意义请求)
- 兑换页"当前积分股价值"右侧新增倒计时显示(60s→1s)
  让用户直观知道下次数据刷新时间

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 21:14:16 -08:00
hailin b639b5d499 fix(mining-app): 价格显示优化 + 涨跌幅精度再提升
- 兑换页顶部价格改用 formatPriceFull 显示完整零(不再用 0.0{n} 缩写)
- K线纵坐标有效数字从7位精简为4位,节省空间更简洁
- 涨跌幅精度再提升:后端 toFixed(8)→toFixed(12),前端 6位→10位小数

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:43:48 -08:00
hailin 2e91686a88 fix(mining-app): 优化页面文案与涨跌幅精度
- 兑换页顶部隐藏价格后方"积分值"文字,界面更简洁
- 兑换页"较上线首日"涨跌幅精度从2位小数提升至6位,每分钟销毁引起的涨幅尾数可见
- 兑换页"黑洞销毁量"文案改为"已销毁量",更直观易懂
- 贡献值页"积分股池实时余量"文案改为"100亿销毁剩余量"
- 后端 priceChangePercent 精度从 toFixed(2) 提升至 toFixed(8),支持前端高精度显示

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:23:59 -08:00
hailin dcc46c37b6 fix(mining-app): 价格有效数字从6位调整为7位,最后2位每分钟可见变化
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:12:15 -08:00
hailin f5d25afab8 fix(mining-app): 价格显示有效数字从3位增加到6位
每分钟销毁引起的价格变化约 4.66e-12(第7位有效数字),
原来只显示3位有效数字 0.0{5}979 无法观察到变化。
改为6位后 0.0{5}979941,最后一位每1-2分钟变化一次,
用户可在兑换页面实时观察到销毁带来的价格上涨。

影响范围:formatPrice、K线图Y轴/十字线、交易记录、挖矿记录

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:09:32 -08:00
hailin 59acea33fe feat(trading): K线图增加周/月/年周期
- 前端周期选项增加「周」「月」「年」
- 后端 parsePeriodToMinutes 增加 1w/1M/1y 映射
- getPeriodStart 对日历周期按自然边界对齐:
  - 1w → 周一 00:00 UTC(ISO 周标准)
  - 1M → 月初1日 00:00 UTC
  - 1y → 年初1月1日 00:00 UTC
- 固定周期(1m~1d)仍使用 epoch 模运算,不受影响

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 18:42:38 -08:00
hailin c24f383501 fix(trading): K线Y轴动态缩放 + 价格显示格式统一 + 首日涨幅修复
- K线图Y轴改为只基于可见K线计算范围,实现动态缩放(类似TradingView)
- 价格显示统一使用 0.0{n}xxx 格式替代科学计数法,覆盖全局 formatPrice、
  K线图、交易记录页、挖矿记录页
- 修复"较上线首日"百分比始终显示 +0.00% 的问题:getFirstSnapshot 过滤
  price=0 的早期快照

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 18:36:26 -08:00
hailin 88ad3ab53d feat: 2.0 API 域名从 rwaapi.szaiai.com 迁移到 mapi.szaiai.com
- mining-admin-web: .env.production, next.config.js fallback URL
- mining-app: environment.dart baseUrl, update_config.dart checkUpdateUrl
- docker-compose.2.0.yml: mining-admin-service UPLOAD_BASE_URL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:58:03 -08:00
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 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 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 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