# 新手引导状态（onboarding 族）

> 所属:User 组（前缀 `/api/v1/user`） | 鉴权:全部 Bearer | [← 返回 API 索引](../README.md)

按（账号, 设备）维度跟踪新手引导完成状态，跨卸载重装持久。运营可在 admin 删记录触发重走。

---

## GET /onboarding/status — 查新手引导是否已完成

已登录用户启动时查：该（账号, 设备）走过引导没。`false` → 客户端应重走。

### 入参（query）

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `device_id` | string | ❌（≤64 位） | 硬件级 ANDROID_ID；空 = 按未完成处理（不误跳过） |

Mock 请求:
```
GET /api/v1/user/onboarding/status?device_id=android_abc123def456
```

### 出参

响应 `200`:`OnboardingStatusResponse`

| 字段 | 类型 | 说明 |
|---|---|---|
| `completed` | bool | 该（设备+账号）是否已走过新手引导 |

Mock 出参:
```json
{"completed": true}
```

---

## POST /onboarding/complete — 标记新手引导完成

走完新手引导时调一次。按（当前账号, device_id）落一条完成标记，幂等（重复调用不报错）。

### 入参

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `device_id` | string | ✅ | 硬件级 ANDROID_ID（与登录请求一致） |

Mock 入参:
```json
{
  "device_id": "android_abc123def456"
}
```

### 出参

```json
{"ok": true}
```

---

## POST /api/v1/user/onboarding/reset — 重置新手引导(#114)

删除（当前账号, `device_id`）的完成标记 → 该设备下次登录/进 App 重走引导。给客户端「设置 → 重看新手引导」入口用（此前只能运营在 admin 删记录）。

### 入参
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `device_id` | string | ✅ | 硬件级 ANDROID_ID（与 complete 一致） |

### 出参
```json
{"ok": true}
```
幂等：无标记时也返回 ok。

---

## 说明
- 替代原 `force_onboarding`（按用户）→ 改设备维度后，运营删记录（或用户自己 reset）即触发重走
- 幂等：重复标记 / 重复重置都不报错
- `device_id` 为空时 `status` 一律返回未完成
