# position.ts **路径**:`src/api/position.ts` ## 功能用途 持仓相关 API:分页获取持仓列表,以及将 `ClobPositionItem` 映射为钱包展示项。`PageResult` 来自 `@/api/types`,使用 `buildQuery` 构建请求参数。接口定义以 Swagger doc.json 为准。 ## 核心能力 - `getPositionList`:分页获取持仓列表(需鉴权 x-token、x-user-id);返回项含 `needClaim`、`market`(内嵌市场 question、outcomes、outcomePrices) - `mapPositionToDisplayItem`:将接口项转为展示结构;`market` 优先用 `market.question`,否则用 marketID;`avgNow` 有 `market.outcomePrices` 时展示「AVG → NOW」格式;`iconChar`/`iconClass`/`imageUrl` 用于展示图标(market.image 优先) ## GET /clob/position/getPositionList ### 请求参数(Query) | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | number | 否 | 页码 | | pageSize | number | 否 | 每页数量 | | startCreatedAt | string | 否 | 开始时间 | | endCreatedAt | string | 否 | 结束时间 | | marketID | string | 否 | 市场ID | | tokenID | string | 否 | Token ID | | userID | number | 否 | 用户ID | ### 响应 `{ code, data, msg }`,`data` 为 `PageResult`。 ### ClobPositionItem(实际返回结构) | 字段 | 类型 | 说明 | |------|------|------| | ID | number | 主键 | | userID | number | 用户ID | | marketID | number \| string | 市场ID | | tokenId | string | Token ID | | size | string | 份额(6 位小数) | | available | string | 可用份额 | | lock | string | 锁单数量 | | cost | string | 成本 | | outcome | string | 方向 | | version | number | 版本号 | | needClaim | boolean | 是否待领取结算 | | market | ClobPositionMarket | 内嵌市场详情(question、outcomes、outcomePrices 等) | | createdAt | string | 创建时间 | | updatedAt | string | 更新时间 | ### ClobPositionMarket(market 字段) | 字段 | 类型 | 说明 | |------|------|------| | ID | number | 市场ID | | question | string | 市场问题 | | slug | string | 市场 slug | | image | string | 市场图片 URL | | icon | string | 市场图标 URL | | outcomes | string[] | 选项(如 ["Up", "Down"]) | | outcomePrices | string[] \| number[] | 各选项当前价格 | | clobTokenIds | string[] | CLOB Token ID 列表 | ## 使用方式 ```typescript import { getPositionList, mapPositionToDisplayItem } from '@/api/position' ```