# 接口文档

## ID 定义

| 名称 | 定义 |
|------|------|
| `uid` | 用户 UID |
| `activity_center_id` | 活动中心活动 ID，对应 Step 2a 请求的 `id` |
| `apollo_activity_id` / `act_id` | Apollo/转盘活动 ID，对应 module 后缀和 Step 3/4 的 `act_id` |
| `activity_entry_id` | Step 2a `group_list[0].id`，只用于记录，不参与 Apollo 或抽奖请求 |

不得按数字位数推断这些 ID。未标注数字存在歧义时，在调用任何接口前询问用户。

## Step 1：查询用户详情

**接口**：`GET https://snake-proxy.wepieoa.com/http://139.224.2.208:7008/api/user_api/get_user_info`

| 参数 | 位置 | 值 |
|------|------|----|
| `user` | query | 用户 uid |
| `market` | query | 默认 `wechat` |
| `_t` | query | 当前毫秒时间戳 |
| `x-token` | header | 小游戏后台 x-token（`config.json` → `minigame_backend`） |
| `appname` | header | `SnakeMini` |
| `Accept` | header | `application/json, text/plain, */*` |

---

## Step 2a：查询活动基本信息

**接口**：`POST https://snake-proxy.wepieoa.com/http://106.14.144.130:7072/api/model/get_model_list`

**请求头**：`x-token: 小游戏后台 x-token`，`Content-Type: application/json`

**请求 Body（JSON）**：

```json
{
  "id": <已明确或由 Apollo draw_card_id 派生的 activity_center_id>,
  "out_date_type": 0,
  "page": 1,
  "page_size": 20,
  "model_type": 2003,
  "start": 0,
  "end": 0
}
```

**处理逻辑**：
1. 唯一精确匹配 → 记录名称、时间、page_link，继续 Step 2b
2. 候选不唯一或与用户描述冲突 → 展示候选并询问
3. 未找到 → 报告"未找到活动"，请用户重新提供

---

## Step 2b：查询 Apollo 配置

**接口**：`POST https://apollo-admin-api.wepie.com/api/module/detail`

**请求头**：`x-token: 阿波罗 x-token`（`config.json` → `apollo`），`env: dev`

**请求 Body（multipart/form-data）**：

| 参数 | 值 |
|------|----|
| `app_id` | `qqsnake` |
| `namespace` | `act2025` |
| `module` | `guaranteed_turntable_` + 已验证的 `apollo_activity_id` / `act_id`。从 Step 2a 开始时，该 ID 取自 `group_list[0].page_link` 的 `id` 参数（如 page_link=`snake://...?page_key=67&id=32` → `guaranteed_turntable_32`），不是 `activity_center_id` 或 `activity_entry_id` |

**校验逻辑**：
- 当前时间 < `start_time` → 报告"活动未开始，终止测试"
- 当前时间 > `end_time` → 报告"活动已结束，终止测试"

---

## Step 3：查询保底转盘主页信息

**接口**：`POST http://106.14.144.130:7071/share/guaranteed_turntable/info`

**请求 Body（multipart/form-data）**：

| 参数 | 值 |
|------|----|
| `act_id` | 已验证的 `apollo_activity_id` / `act_id`（如 `31`） |
| `uid` | 已通过 Step 1 验证的用户 uid |

**确认项**：

| 信息 | 来源 |
|------|------|
| 活动名称 / act_id / 活动时间 | Apollo config |
| 用户 uid / market / 当前道具数量 | Step 1 + info |
| 已抽次数 / 总次数 | `info.reward_got` 数 / `do_cost` 数组长度 |

---

## Step 4：循环执行抽奖

**接口**：`POST http://106.14.144.130:7071/share/guaranteed_turntable/lottery`

**请求 Body（multipart/form-data）**：

| 参数 | 值 |
|------|----|
| `act_id` | 与 Step 3 相同的已验证 Apollo/转盘活动 ID |
| `uid` | 与 Step 3 相同的已验证用户 uid |

**每次记录**：抽奖时间、花费代币数（`do_cost[N-1].price`）、奖品 name/type/item_id/num/use_limit_time
