rwadurian/frontend/mining-admin-web
hailin ac3adfc90a feat(pre-planting): 新增预种积分股卖出限制(方案B纯新增)
限制仅有预种份数(未合并成棵)的用户卖出积分股,
直到用户完成首次预种合并后方可卖出。

=== 改动范围(全部 2.0 系统,纯新增)===

contribution-service:
- prisma/pre-planting/schema.prisma: 新增 PrePlantingSellRestrictionOverride 模型
- migrations/20260304000000: 对应建表 SQL
- src/pre-planting/application/services/sell-restriction.service.ts: 核心判断逻辑
  isRestricted = has_pre_planting_marker AND !has_real_tree AND !admin_override
- src/api/controllers/pre-planting-restriction.controller.ts: 暴露内部接口
  GET  /api/v2/pre-planting/sell-restriction/:accountSequence (@Public)
  POST /api/v2/pre-planting/sell-restriction/:accountSequence/unlock (@Public)
- src/api/api.module.ts: 注册新 controller 和 SellRestrictionService

trading-service:
- src/application/services/sell-restriction.service.ts: HTTP + Redis 缓存(TTL 60s)
  fail-open:contribution-service 不可用时允许卖出,保障业务连续性
- src/application/services/order.service.ts: 卖单前增加限制检查(4行)
- src/application/application.module.ts: 注册 TradingSellRestrictionService

mining-admin-service:
- src/application/services/pre-planting-restriction.service.ts: 代理接口 + 审计日志
  每次管理员解除操作均写入 AuditLog,保证严格可追溯性
- src/api/controllers/pre-planting-restriction.controller.ts:
  GET  /pre-planting-restriction/:accountSequence
  POST /pre-planting-restriction/:accountSequence/unlock
- api.module.ts / application.module.ts: 注册新服务和接口

mining-admin-web:
- users.api.ts: 新增 getPrePlantingRestriction / unlockPrePlantingRestriction
- use-users.ts: 新增 usePrePlantingRestriction / useUnlockPrePlantingRestriction hooks
- users/[accountSequence]/page.tsx: 受限时在基本信息卡显示红色警告 + 解除按钮

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 05:04:57 -08:00
..
nginx fix(nginx): API 请求改为代理到 Next.js 而非直连 mining-admin-service 2026-02-02 01:36:55 -08:00
public fix(mining-admin-web): add public/.gitkeep to fix Docker build 2026-02-01 22:03:01 -08:00
src feat(pre-planting): 新增预种积分股卖出限制(方案B纯新增) 2026-03-04 05:04:57 -08:00
.env.production fix(mining-admin): 池账户钱包配置移到后端 .env,前端从 API 读取 2026-02-03 00:14:38 -08:00
.gitignore chore(mining-admin-web): 添加.gitignore文件 2026-01-10 20:18:35 -08:00
DEVELOPMENT_GUIDE.md feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00
Dockerfile fix(snapshot): Dockerfile 添加 SNAPSHOT_SERVICE_URL build ARG 2026-02-24 00:43:33 -08:00
deploy.sh feat(mining-admin-web): 添加独立部署脚本和docker-compose配置 2026-01-10 20:06:20 -08:00
docker-compose.yml fix(mining-admin-web): docker-compose 自动连接 rwa-2-network 2026-02-02 01:43:06 -08:00
next.config.js fix(snapshot): 前端 API 改走 Next.js rewrites 代理 + WebSocket 改 REST 轮询 2026-02-24 00:37:41 -08:00
package-lock.json chore: 更新前端 package-lock.json 同步 socket.io-client 依赖 2026-02-23 21:56:28 -08:00
package.json fix(snapshot): 前端 API 改走 Next.js rewrites 代理 + WebSocket 改 REST 轮询 2026-02-24 00:37:41 -08:00
postcss.config.js feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00
tailwind.config.js feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00
tsconfig.json feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00