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
|
9adef67bb8
|
feat(admin-web): P2P划转记录管理页面 + 手续费汇总
## 后端 — mining-admin-service
- users.controller: 新增 GET /users/p2p-transfers 端点(搜索+分页)
- 放在 :accountSequence 路由之前避免被 catch-all 拦截
- users.service: 新增 getP2pTransfers() 代理方法
- 调用 trading-service 的 /api/v2/p2p/internal/all-transfers
- 返回划转记录列表 + 汇总统计 + 分页信息
## 前端 — mining-admin-web
- 新增 /p2p-transfers 页面:
- 三个汇总卡片:累计手续费收入、累计划转金额、成功划转笔数
- 搜索框支持账号、手机号、转账单号搜索
- 记录表格:转账单号、发送方、接收方、转账金额、手续费、备注、时间
- 分页控件
- sidebar: 新增"P2P划转"导航项(位于"交易管理"下方)
- users.api: 新增 getP2pTransfers API + P2pTransferRecord 类型
- use-users: 新增 useP2pTransfers hook
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 10:41:55 -08:00 |
hailin
|
9f94344e8b
|
feat: 算力记录排序 + P2P转账管理后台查询端点
## 算力记录排序(全栈)
- mining-admin-service controller: 新增 sortBy/sortOrder 查询参数
- users.service: 动态构建 orderBy(支持 sourceType, levelDepth, amount, createdAt)
- levelDepth 排序特殊处理:先按 sourceType 分组,再按 levelDepth/bonusTier 排序,null 值排末尾
- admin-web contribution-records-list: 可点击排序表头(来源、获得算力、层级/等级、生效日期)
- 三态切换:升序 → 降序 → 取消排序
- 排序图标指示当前状态
## P2P转账管理后台查询端点(后端准备)
- trading-service P2pTransferService: 新增 getAllTransfers() 方法
- 列出全部已完成 P2P 转账记录(分页 + 搜索)
- 返回汇总统计:总手续费、总转账金额、总笔数
- trading-service controller: 新增 GET /p2p/internal/all-transfers(@Public 内部端点)
- P2pTransferHistoryItem 接口扩展 fromPhone/fromNickname/toNickname 字段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-30 10:37:22 -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
|
35fc957eaf
|
fix(mobile-upgrade): 自动解包 mining-admin-service TransformInterceptor 响应
mining-admin-service 的 TransformInterceptor 将所有响应包装为
{ success, data, timestamp } 格式,导致前端 .map() 调用崩溃。
在 API client 的 response interceptor 中自动检测并解包,
对不包装响应的 admin-service (1.0) 无影响。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 13:01:12 -08:00 |
hailin
|
4112b45b9e
|
feat(mining-admin): 新建公开版本管理接口供 mobile-upgrade 前端使用
mining-admin-service 有全局 AdminAuthGuard,导致 mobile-upgrade 前端
调用版本接口返回 401。新建 UpgradeVersionController (@Public) 作为
独立的公开接口,路径为 /api/v2/upgrade-versions,不影响现有需认证的
/api/v2/versions 接口。前端 apiPrefix 同步更新。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 12:53:29 -08:00 |
hailin
|
7b7c9cd9f6
|
Revert "fix(mobile-upgrade): 修复股行App版本管理API路径匹配Kong路由"
This reverts commit 5ef0992448.
|
2026-01-29 12:30:52 -08:00 |
hailin
|
5ef0992448
|
fix(mobile-upgrade): 修复股行App版本管理API路径匹配Kong路由
NEXT_PUBLIC_MINING_API_URL 从 /mining-admin 改为 /api/v2/mining-admin,
apiPrefix 从 /api/v2/versions 改为 /versions,使最终URL匹配Kong路由
/api/v2/mining-admin/*
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 12:29:39 -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
|
40389fcfc7
|
feat(trading-service, mining-admin-web): 支持在管理后台配置做市商钱包地址
- 后端: 在 UpdateConfigDto 和 updateConfig 方法中添加 kavaWalletAddress 字段
- 前端: 在充值对话框中添加钱包地址配置输入框
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-29 07:53:04 -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
|
58feec255d
|
feat(market-maker): 实现做市商区块链充提功能
- 扩展 mining-blockchain-service 支持 eUSDT/fUSDT 转账
- 添加 trading-service 区块链提现 API(自动回滚失败交易)
- 前端支持中心化和区块链充提两种模式(Tab切换)
- 区块链充值显示钱包地址和二维码
- 区块链提现支持输入目标地址直接转账
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-28 17:56:15 -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 |
hailin
|
2597d0ef46
|
feat: 实现P2P转账功能及前端资产页面优化
- trading-service: 添加P2pTransfer模型和P2P转账API
- auth-service: 添加用户手机号查询接口用于转账验证
- frontend: 修复资产页面冻结份额显示和转账页面余额字段
- frontend: 添加P2P转账记录页面
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-28 06:25:42 -08:00 |
hailin
|
e9dea69ee9
|
feat(batch-mining): 动态获取批量补发计算起始日期
重构批量补发功能,将硬编码的起始日期(2025-11-08)改为从 Excel 数据中
动态获取,提高计算的准确性和灵活性。
后端改动 (mining-service):
- 新增 DEFAULT_MINING_START_DATE 常量作为找不到有效数据时的默认值
- 新增 getCalculatedStartDate() 方法:从批次1用户的 miningStartDate 中
获取最早日期
- 新增 parseDate() 方法:支持解析 2025.11.8、2025-11-08、2025/11/8 格式
- 修改 buildMiningPhases() 方法:新增 startDateStr 参数,不再硬编码日期
- 修改 preview/execute 方法:在返回结果中包含 calculatedStartDate 字段
前端改动 (mining-admin-web):
- 更新 BatchPreviewResult 接口,新增 calculatedStartDate 字段
- 预览结果描述中显示计算起始日期(蓝色高亮)
- 确认对话框中新增"计算起始日期"行
降级策略:
- 若批次1用户不存在或日期均无效,自动使用默认日期 2025-11-08
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-23 02:01:40 -08:00 |
hailin
|
f3d460ba09
|
fix(mining-app): 修复批量补发记录解析字段名
API 返回 records 字段,而非 data 或 items
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 02:11:10 -08:00 |
hailin
|
623e695353
|
fix(mining-app): 修正批量补发记录 API 路径
添加 /admin 前缀以匹配 mining-service 的 AdminController 路由
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 01:45:41 -08:00 |
hailin
|
b6d723333c
|
fix(mining-app): 修复 BatchMiningRecordsPage 类名冲突
将页面类重命名为 BatchMiningRecordsListPage 以避免与实体类冲突
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 01:42:46 -08:00 |
hailin
|
d5dc248a16
|
feat(mining-app): 添加补发记录功能
- 添加批量补发记录 API endpoint
- 创建 BatchMiningRecord 实体和模型
- 添加批量补发记录 provider 和页面
- 在"我的"页面动态显示补发记录入口(仅当用户有记录时显示)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 01:35:53 -08:00 |
hailin
|
8a47659c47
|
feat(batch-mining): 按阶段创建补发记录并添加用户查询功能
- 修改BatchMiningRecord表结构,添加phase和daysInPhase字段
- 修改execute函数,按阶段为每个用户创建记录
- 添加用户批量补发记录查询API
- mining-admin-web用户详情页添加"批量补发"Tab
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 00:30:06 -08:00 |
hailin
|
7a5faad665
|
feat(mining-app): UI调整 - 隐藏部分功能和文案修改
- 兑换页面:将"挖矿账户"改为"分配账户"
- 我的页面:隐藏"账户设置"栏目(2.0版本暂不需要)
- 贡献值页面:隐藏"今日预估收益"栏目
- 贡献值明细页:同伴上贡献值不显示用户ID
- 参与记录页:将"算力"改为"贡献值"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 18:00:40 -08:00 |
hailin
|
8f0fc09a4c
|
fix(mining-admin-web): 解包 mining-admin-service 响应的 TransformInterceptor 包装
mining-admin-service 也使用 TransformInterceptor 将所有响应包装为 { success, data, timestamp } 结构,
前端需要从 res.data.data 中提取实际数据。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 06:34:36 -08:00 |
hailin
|
7a4f5591b7
|
feat(batch-mining): 添加详细的调试日志
- mining-service batch-mining.service.ts: 添加所有方法的详细日志
- mining-admin-service batch-mining.service.ts: 添加 HTTP 请求和响应日志
- mining-admin-service batch-mining.controller.ts: 添加控制器层日志
- frontend batch-mining page.tsx: 添加前端 console.log 日志
便于调试部署后的 404 等问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 05:49:04 -08:00 |
hailin
|
cb9831f2fc
|
feat(mining-admin-web): 前端实现区域代码到中文名称转换
系统账户列表现在显示中文省市名称(如"广州市公司")而不是区域代码(如"440100账户")
- 新增 region-codes.ts 包含完整的省市行政区划代码映射
- 修改 accounts-table.tsx 使用 getRegionDisplayName() 转换名称
- 修改 account-card.tsx 使用区域代码映射
- 修改账户详情页使用区域代码映射显示标题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 05:20:50 -08:00 |
hailin
|
71151eaabf
|
feat(mining): 添加批量补发挖矿功能
- 新增批量补发服务和API (mining-service)
- 支持按批次累积计算全网算力
- 用户算力 = 认种棵数 × 22617 × 70%
- 补发金额 = (用户算力/全网算力) × 每秒分配量 × 天数 × 86400
- 防重复执行机制(只能执行一次)
- 新增文件上传和批量补发API (mining-admin-service)
- 支持上传 Excel 文件解析
- 预览和执行两步操作
- 审计日志记录
- 新增批量补发页面 (mining-admin-web)
- Excel 文件上传
- 按批次预览计算结果
- 执行确认对话框
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 04:59:13 -08:00 |
hailin
|
e7260be219
|
feat(contribution): 添加系统账户算力来源类型字段
- 添加 sourceType 字段区分算力来源类型:
- FIXED_RATE: 固定比例分配(OPERATION 12%、PROVINCE 1%、CITY 2%)
- LEVEL_OVERFLOW: 层级溢出归总部(上线未解锁该级别)
- LEVEL_NO_ANCESTOR: 无上线归总部(该级无上线)
- BONUS_TIER_1/2/3: 团队奖励未解锁归总部
- 添加 levelDepth 字段记录层级深度(1-15级)
- 更新前端表格显示来源类型列
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 04:23:50 -08:00 |
hailin
|
e89c3166bf
|
feat(mining-admin-web): 系统账户算力明细显示更多信息
- 显示认种订单:日期、树数
- 显示认种用户:姓名/手机号
- 更新类型定义匹配后端新字段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-21 03:36:02 -08:00 |
hailin
|
fda022d29c
|
fix(frontend): 添加 regionCode 到 SystemAccount 类型
|
2026-01-21 02:23:35 -08:00 |
hailin
|
97e974b6da
|
fix(frontend): 添加 regionCode 参数到算力来源 API 调用
|
2026-01-21 02:13:41 -08:00 |
hailin
|
09b0bc077e
|
feat(system-accounts): 实现系统账户按省市细分算力和挖矿分配
## 核心功能
### 1. 算力按省市细分分配
- accountType 从枚举改为组合键字符串:PROVINCE_440000, CITY_440100
- 新增 baseType (基础类型) 和 regionCode (区域代码) 字段
- 认种时根据 selectedProvince/selectedCity 分配到具体省市账户
- 无省市信息时归入汇总账户
### 2. 系统账户参与挖矿
- 运营、省、市账户按各自 totalContribution 参与挖矿
- 总部账户(HEADQUARTERS)不直接参与,接收待解锁算力收益
- 待解锁算力 100% 参与挖矿,收益归总部
### 3. 算力来源明细追溯
- 新增 SystemContributionRecord 记录每笔算力来源
- 新增 SystemContributionRecordCreatedEvent 事件同步明细
- 前端新增"算力来源"标签页展示明细
## 修改的服务
### contribution-service
- schema: SystemAccount 新增 baseType, regionCode
- contribution-calculator: 按省市生成组合键
- system-account.repository: 支持动态创建省市账户
- 新增 SystemContributionRecordCreatedEvent 事件
### mining-service
- schema: SystemMiningAccount 从枚举改为字符串
- network-sync: 处理带 baseType/regionCode 的同步事件
- mining-distribution: 系统账户和待解锁算力参与挖矿
### mining-admin-service
- schema: 新增 SyncedSystemContributionRecord 表
- cdc-sync: 处理 SystemContributionRecordCreated 事件
- system-accounts.service: 新增算力来源明细和统计 API
### mining-admin-web
- 新增 ContributionRecordsTable 组件
- 系统账户详情页新增"算力来源"标签页
- 显示来源认种ID、用户、分配比例、金额
## 数据库迁移
- contribution-service: 20250120000001_add_region_to_system_accounts
- mining-service: 20250120000001_add_region_to_system_mining_accounts
- mining-admin-service: 20250120000001, 20250120000002
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 19:55:14 -08:00 |
hailin
|
1d5e3ebff2
|
fix(contribution): 使用 upsert 替代 update 避免记录不存在错误
将 addContribution 方法改为 upsert,当系统账户不存在时自动创建,
存在时增加算力余额。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 08:43:37 -08:00 |
hailin
|
5668de0a58
|
fix(asset): formatCompact保留原始精度(最多8位小数)
修复资产页面累计卖出等数字显示没有小数位的问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 05:27:50 -08:00 |
hailin
|
995dfa898e
|
feat(trading): 添加涨跌幅显示及修复成交明细数据
1. 后端:
- 添加 getFirstSnapshot() 获取上线首日价格
- PriceInfo 接口增加 priceChangePercent 和 initialPrice 字段
- 计算涨跌幅 = (当前价格 - 首日价格) / 首日价格 × 100%
- 修复 originalQuantity 为0时的数据计算逻辑
2. 前端:
- 交易页面涨跌幅移到价格下方单独显示
- 添加"较上线首日"说明文字
- 根据涨跌正负显示不同颜色和图标
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 05:24:23 -08:00 |
hailin
|
7ff7157115
|
refactor(ui): 隐藏"我的"页面中的"同伴与收益"栏
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 04:44:16 -08:00 |
hailin
|
e1cc364b0d
|
refactor(ui): 兑换页面文案调整
- 标题"积分股交易"改为"积分股兑换"
- "当前积分股价格"改为"当前积分股价值"
- 移除价格前的¥符号
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 04:43:08 -08:00 |