Files
2026-05-04 09:53:07 +08:00

8.5 KiB

1. 后端数据模型

  • 1.1 新增 Flyway 迁移 V41__create_copy_trading_leader_pool.sql,创建 copy_trading_leader_pool 表、leader_id 唯一约束、状态/来源索引和 leader 外键。
  • 1.2 新增 LeaderPool JPA 实体,字段覆盖状态、来源、建议配置、复核时间、晋升时间、冷却时间、锁定标记和时间戳。
  • 1.3 新增 LeaderPoolRepository,支持按 leaderId 查询、判断是否存在、按状态查询、按创建时间排序和删除池子项。
  • 1.4 新增池子状态常量或枚举,覆盖 CANDIDATEWATCHPAPERTRIALACTIVECOOLDOWNRETIRED;锁定使用独立 locked 布尔字段,不作为状态。
  • 1.5 扩展 CopyTradingRepository 或新增查询方法,支持按 leaderId 批量查询/聚合跟单配置,避免 Leader 池列表 N+1 查询。

2. 后端 DTO 与服务

  • 2.1 新增 Leader 池请求/响应 DTO,包括列表请求、加入请求、状态更新请求、建议配置更新请求、创建试跟配置请求和移除请求。
  • 2.2 为创建试跟配置请求增加 enableImmediatelyconfirm 字段;当 enableImmediately=true 且未确认时后端必须拒绝创建。
  • 2.3 新增 LeaderPoolService.addToPool,校验 leader 存在、处理重复加入,并默认创建 CANDIDATE 状态池子项。
  • 2.4 在 addToPool 中捕获数据库唯一约束冲突,并返回“已在池子中”的明确业务结果,覆盖并发重复加入。
  • 2.5 新增 LeaderPoolService.getPoolList,使用批量查询聚合 leader 信息、池子状态、建议配置、跟单配置数量、是否存在启用跟单和汇总概览。
  • 2.6 新增 LeaderPoolService.updateStatus,支持状态更新、冷却截止时间保存、更新时间刷新,并确保淘汰不删除 leader 地址。
  • 2.7 新增 LeaderPoolService.updatePlan,只更新建议固定金额、每日最大单数、每日最大亏损、价格区间和最大持仓,不修改已有 copy_trading
  • 2.8 新增 LeaderPoolService.createTrialConfig,先检查同一 accountId + leaderId 是否已有跟单配置,默认拒绝重复创建。
  • 2.9 createTrialConfig 复用 CopyTradingService.createCopyTrading 创建默认禁用的保守 FIXED 小额跟单配置。
  • 2.10 创建试跟配置成功后更新池子项为 TRIAL 并记录 lastPromotedAt;失败时保持原状态并返回错误。
  • 2.11 在 Leader 池服务中记录加入池子、状态变化、建议配置更新、试跟配置创建成功/失败的关键日志。
  • 2.12 在 updatePlancreateTrialConfig 中校验建议配置安全边界:固定金额大于 0、每日最大单数 1-100、每日最大亏损大于 0、价格区间在 0-1 且最小价不大于最大价、最大持仓大于 0。
  • 2.13 新增 Leader 池专用错误码和中英繁三套 i18n 文案,使用不冲突编号 4251-42545451-5453,覆盖池子不存在、已存在、重复试跟、立即启用未确认和服务失败。

3. 后端 API

  • 3.1 新增 LeaderPoolController,路径为 /api/copy-trading/leader-pool
  • 3.2 实现 POST /list,返回池子列表和汇总概览。
  • 3.3 实现 POST /add,支持从已有 leader 加入池子。
  • 3.4 实现 POST /update-status,支持候选、观察、小额试跟、冷却、淘汰等状态更新。
  • 3.5 实现 POST /update-plan,支持更新建议配置字段。
  • 3.6 实现 POST /create-trial-config,支持创建保守小额试跟配置。
  • 3.7 实现 POST /remove,只移除池子项,不删除 leader 地址,不删除已有跟单配置。
  • 3.8 为重复加入、并发唯一约束冲突、leader 不存在、账户不存在、池子项不存在、立即启用未确认、重复试跟配置、创建配置失败等错误返回明确业务错误。

4. 前端 API 与类型

  • 4.1 在 frontend/src/types/index.ts 新增 Leader 池状态、池子项、汇总、请求和响应类型。
  • 4.2 在 frontend/src/services/api.ts 新增 leaderPool API 分组,覆盖 list、add、updateStatus、updatePlan、createTrialConfig、remove。
  • 4.3 确保前端类型包含跟单配置数量、是否有启用跟单、建议最大持仓和估算暴露字段。

5. 前端入口与页面

  • 5.1 新增 frontend/src/pages/LeaderPool.tsx 页面。
  • 5.2 在 frontend/src/App.tsx 添加受保护路由 /leader-pool
  • 5.3 在 frontend/src/components/Layout.tsx跟单交易 子菜单中加入 Leader 池,位置在 跟单配置Leader 管理 之间。
  • 5.4 更新 getInitialOpenKeys 和路径变化逻辑,使 /leader-pool 自动展开 跟单交易 菜单。
  • 5.5 在 frontend/src/locales/zh-CN/common.jsonzh-TW/common.jsonen/common.json 增加 Leader 池菜单和页面基础文案。

6. Leader 池页面交互

  • 6.1 页面顶部展示池子人数、试跟中人数、估算最坏暴露和待处理风险统计卡片。
  • 6.2 页面列表展示 leader 名称或地址、状态、来源、建议固定金额、建议每日最大单数、建议每日最大亏损、跟单配置状态和最后复核时间。
  • 6.3 支持按状态筛选池子项,至少覆盖全部、候选、观察、小额试跟、冷却、淘汰。
  • 6.4 支持从页面中把已有 leader 加入池子,并处理空列表、重复加入和 leader 不存在错误。
  • 6.5 支持更新池子状态,冷却状态允许填写冷却截止时间。
  • 6.6 支持编辑建议配置,保存后只更新池子建议字段。
  • 6.7 支持打开 leader 的 Polymarket profile。
  • 6.8 支持从池子项创建小额试跟配置,提交前展示固定金额、每日最大单数、每日最大亏损、价格区间和最大持仓确认信息。
  • 6.9 创建试跟配置提交期间按钮进入 loading/disabled 状态,防止双击重复提交。
  • 6.10 创建试跟配置成功后刷新池子列表,并提供跳转到 跟单配置 的入口。
  • 6.11 创建试跟配置失败时展示后端错误,不在前端假更新状态。
  • 6.12 Leader 池列表不默认逐行查询 leader 余额,避免照搬 Leader 管理 的重型余额加载路径。

7. Leader 管理联动

  • 7.1 在 frontend/src/pages/LeaderList.tsx 操作列增加 加入 Leader 池 操作。
  • 7.2 点击加入后调用 Leader 池 add API,并对已加入池子的 leader 展示明确提示。
  • 7.3 加入成功后提示用户可以前往 Leader 池 继续设置观察或小额试跟。

8. 测试

  • 8.1 新增后端服务测试:成功加入池子、重复加入不创建重复项、leader 不存在返回错误。
  • 8.2 新增后端服务测试:并发/唯一约束重复加入被转换为明确“已在池子中”结果。
  • 8.3 新增后端服务测试:状态更新、冷却截止时间保存、淘汰不删除 leader 地址。
  • 8.4 新增后端服务测试:建议配置更新不修改已有 copy_trading
  • 8.5 新增后端服务测试:无效建议配置被拒绝且不修改原池子项。
  • 8.6 新增后端服务测试:创建试跟配置使用保守默认值、默认禁用、成功后状态变为 TRIAL
  • 8.7 新增后端服务测试:创建试跟配置失败时池子状态不变。
  • 8.8 新增后端服务测试:同账户同 leader 已有跟单配置时默认拒绝重复试跟创建。
  • 8.9 新增后端服务测试:立即启用但未确认时拒绝创建跟单配置。
  • 8.10 新增后端服务测试:池子列表使用批量查询路径,避免每个池子项逐条查 leader 和跟单配置。
  • 8.11 新增后端控制器测试或集成测试,覆盖 list、add、update-status、update-plan、create-trial-config、remove 的主要成功和失败路径。
  • 8.12 前端至少通过 TypeScript 构建验证,确保新增页面、类型、API 和菜单没有编译错误。
  • 8.13 手动或自动验证前端双击创建试跟配置不会发起重复提交。
  • 8.14 手动或自动验证 Leader 池列表不会默认逐行请求 leader 余额接口。

9. 文档与验证

  • 9.1 新增或更新中文文档,说明 Leader 池Leader 管理跟单配置 的区别。
  • 9.2 文档中明确 Leader 池 不会自动加仓、不自动启用大额跟单、不自动抓取 leaderboard。
  • 9.3 运行后端测试,至少覆盖 Leader 池相关测试。
  • 9.4 运行前端构建。
  • 9.5 运行前端 lint。
  • 9.6 手动验证页面入口、空态、加入池子、状态更新、建议配置更新和创建小额试跟配置流程。