xtraderClient/docs/FEATURES.md
2026-02-14 18:59:36 +08:00

144 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 功能实现状态
本文档列出项目中**已实现**与**未实现**的功能,便于开发与迭代时参考。
---
## 已实现功能
### 认证与用户
| 功能 | 说明 |
|------|------|
| 钱包登录 (SIWE) | 通过 MetaMask 等钱包签名,调用 `/base/walletLogin` 获取 token存入 userStore |
| 用户信息 | `getUserInfo` 获取头像、昵称等,登录后自动拉取 |
| USDC 余额 | `getUsdcBalance` 获取余额,除以 1_000_000 后展示 |
| 登出 | 清空 token、user移除 localStorage |
### 首页 (Home)
| 功能 | 说明 |
|------|------|
| 分类 Tab | 调用 `getPmTagMain` 获取分类树,支持三层;接口失败时回退 `MOCK_CATEGORY_TREE` |
| 事件列表 | `getPmEventPublic` 分页获取,支持 keyword、tagSlug、tagId 等筛选 |
| 搜索 | 关键词搜索、搜索历史localStorage最多 10 条) |
| 下拉刷新 | VPullToRefresh 组件 |
| 无限滚动 | 滚动到底部加载更多 |
| 列表缓存 | 切换页面时复用 `eventListCache`,下拉刷新时清空 |
| 单一/多选项卡片 | MarketCard 支持 singleYes/No与 multi轮播多选项 |
### 交易详情 (TradeDetail)
| 功能 | 说明 |
|------|------|
| 事件详情 | `findPmEvent` 按 id/slug 获取,需鉴权 |
| 分时图 | ECharts 渲染,时间粒度 1H/6H/1D/1W/1M/ALL**当前为本地生成 mock 数据** |
| 交易组件 | Buy/Sell、Market 模式、Merge、Split |
| 下单 | `pmOrderPlace` 调用 CLOB 下单接口 |
| Split | `pmMarketSplit` 用 USDC 兑换 Yes+No |
| Merge | `pmMarketMerge` 合并 Yes+No 得 USDC |
| 移动端适配 | 底部 Yes/No 栏 + 弹窗交易组件 |
| 多市场切换 | 支持 query.marketId 指定当前 market |
### 钱包 (Wallet)
| 功能 | 说明 |
|------|------|
| Portfolio 卡片 | 展示 userStore.balance |
| Deposit/Withdraw 弹窗 | UI 完整Deposit 展示固定地址与二维码Withdraw 支持金额、网络、目标地址选择 |
| 取消订单 | `pmCancelOrder` 调用真实接口,**但 Positions/Open orders/History 数据为 mock** |
| Profit/Loss 图表 | ECharts 展示,**数据为 mock** |
| Positions/Orders/History Tab | 表格与移动端列表,**数据为 mock** |
| 搜索、分页 | 对 mock 数据生效 |
### 事件市场列表 (EventMarkets)
| 功能 | 说明 |
|------|------|
| 事件详情 | `findPmEvent` 获取,失败时用 `getMockEventById` 兜底 |
| 市场列表 | 展示该 Event 下多个 Market可点击跳转交易详情 |
### API 层
| 模块 | 已实现 |
|------|--------|
| request | get、post支持 BASE_URL、自定义 headers |
| event | getPmEventPublic、findPmEvent、mapEventItemToCard、缓存 |
| category | getPmTagMain、enrichWithIcons、MOCK_CATEGORY_TREE |
| categoryIcons | resolveCategoryIcon、resolveCategoryIconColor |
| market | pmOrderPlace、pmCancelOrder、pmMarketSplit、pmMarketMerge |
| user | getUserInfo、getUsdcBalance、formatUsdcBalance |
| constants | OrderType、Side |
### 其他
| 功能 | 说明 |
|------|------|
| 路由 | 6 个页面createWebHistory |
| Keep-alive | Home 页面缓存 |
| 多语言 | 当前中英混用,无 i18n |
---
## 未实现 / Mock 功能
### 认证
| 功能 | 状态 |
|------|------|
| 邮箱密码登录 | 仅前端校验,无真实 API 调用,直接跳转首页 |
### 首页
| 功能 | 状态 |
|------|------|
| 分类接口失败兜底 | 使用 MOCK_CATEGORY_TREE非真实数据 |
### 交易详情
| 功能 | 状态 |
|------|------|
| 分时图数据 | 本地 `generateData()` 生成随机曲线,未对接 WebSocket 或历史接口 |
| Comments | 占位文案 "No comments yet." |
| Top Holders | 占位文案 "Top holders will appear here." |
| Activity | 使用硬编码 mock 数据,未对接交易活动接口 |
### 订单簿 (OrderBook)
| 功能 | 状态 |
|------|------|
| Asks/Bids | 硬编码 mock 数据,定时随机变化模拟 |
| Last/Spread | mock |
| 真实订单簿 | 需对接 CLOB 或 WebSocket |
### 钱包
| 功能 | 状态 |
|------|------|
| Positions | mock 数据 |
| Open orders | mock 数据,取消订单调用真实 API 但列表为 mock |
| History | mock 数据 |
| Profit/Loss 图表 | mock 数据 |
| Portfolio 余额 | 来自 userStore真实非 mock |
| Deposit 实际充值 | 仅展示地址与二维码,未对接链上或托管充值 |
| Withdraw 实际提现 | 仅 UI 流程,未对接提现接口 |
| Close Losses | TODO未实现 |
| Export | TODO未实现 |
| 筛选/排序 | 部分按钮为占位,未实现逻辑 |
### 其他
| 功能 | 状态 |
|------|------|
| 注册页 | 路由未配置Login 中链接指向 `/register` |
| Limit 单 | TradeComponent 有 Limit 选项,下单逻辑以 Market 为主 |
| 订单簿点击下单 | 点击行价格填入 TradeComponent 未实现 |
---
## 实现优先级建议
1. **高**订单簿真实数据、分时图真实数据、Positions/Orders/History 真实接口
2. **中**Comments、Top Holders、Activity 接口Deposit/Withdraw 实际流程
3. **低**邮箱密码登录、注册页、Limit 单完善