# 游戏陪玩接单系统 · 全链路功能设计文档（PRD + 功能清单）

> 文档名称：陪玩点单/接单平台 全链路功能设计文档
> 文档版本：v1.0（功能清单基线版，可直接作为开发任务拆解依据）
> 适用端：用户端（APP / 微信小程序 / H5）、陪玩师端（APP / H5）、公会/工作室端、平台运营后台、开放 API
> 目标环境：Linux CentOS 7.9 / PHP ≥ 7.4 / MySQL ≥ 5.6（建议 5.7）
> 定位：**全链路**——从注册、认证、上架、点单、支付、派单、接单、服务、结算、提现、售后，一条不漏

---

## 目录

- [0. 阅读说明与前置约定](#0-阅读说明与前置约定)
- [1. 项目定位与商业模式](#1-项目定位与商业模式)
- [2. 角色与权限矩阵](#2-角色与权限矩阵)
- [3. 全链路业务主流程](#3-全链路业务主流程)
- [4. 技术架构与环境要求](#4-技术架构与环境要求)
- [5. 功能模块详细清单](#5-功能模块详细清单)
  - [5.1 用户端（玩家/老板）](#51-用户端玩家老板)
  - [5.2 陪玩师端（接单方）](#52-陪玩师端接单方)
  - [5.3 陪玩师入驻与资质认证](#53-陪玩师入驻与资质认证)
  - [5.4 商品与服务规格（SKU/技能/段位定价）](#54-商品与服务规格sku技能段位定价)
  - [5.5 订单全链路](#55-订单全链路)
  - [5.6 派单/抢单/竞价/指定](#56-派单抢单竞价指定)
  - [5.7 服务过程：开黑、计时、语音房、连麦](#57-服务过程开黑计时语音房连麦)
  - [5.8 即时通讯 IM 与陌生人社交风控](#58-即时通讯-im-与陌生人社交风控)
  - [5.9 礼物、打赏与虚拟货币](#59-礼物打赏与虚拟货币)
  - [5.10 评价、信誉分、等级与成长体系](#510-评价信誉分等级与成长体系)
  - [5.11 会员、优惠券、活动与营销](#511-会员优惠券活动与营销)
  - [5.12 分销、推广与代理商](#512-分销推广与代理商)
  - [5.13 公会/工作室体系](#513-公会工作室体系)
  - [5.14 资金：钱包、充值、提现、结算、对账](#514-资金钱包充值提现结算对账)
  - [5.15 客服、工单、仲裁与售后](#515-客服工单仲裁与售后)
  - [5.16 风控、反作弊与违规处置](#516-风控反作弊与违规处置)
  - [5.17 消息通知中心](#517-消息通知中心)
  - [5.18 数据统计与报表](#518-数据统计与报表)
  - [5.19 平台运营后台（Admin）](#519-平台运营后台admin)
  - [5.20 开放 API 与第三方对接](#520-开放-api-与第三方对接)
- [6. 订单状态机（权威定义）](#6-订单状态机权威定义)
- [7. 数据库设计（核心表清单）](#7-数据库设计核心表清单)
- [8. 接口设计规范与清单](#8-接口设计规范与清单)
- [9. 定时任务、队列与异步](#9-定时任务队列与异步)
- [10. 安全设计](#10-安全设计)
- [11. 性能、容量与可用性](#11-性能容量与可用性)
- [12. 合规与法律风险（务必先看）](#12-合规与法律风险务必先看)
- [13. 开发排期与里程碑](#13-开发排期与里程碑)
- [14. 验收 Checklist](#14-验收-checklist)
- [15. 附录：术语、枚举、字段字典](#15-附录术语枚举字段字典)

---

## 0. 阅读说明与前置约定

### 0.1 本文档怎么用

| 使用者 | 用法 |
|---|---|
| 产品/老板 | 看第 1、2、3、12、13 章，确认商业模型和合规底线 |
| 项目经理 | 用第 5 章做任务拆解，用第 13 章排期，用第 14 章验收 |
| 后端 | 用第 5、6、7、8、9 章写代码；第 6 章状态机是唯一真理 |
| 前端 | 用第 5.1/5.2/5.7 章做页面清单与交互 |
| 测试 | 用第 6 章状态机 + 第 14 章 Checklist 设计用例 |
| 运维 | 用第 4、11 章部署与环境基线 |

### 0.2 术语统一（全文一致）

| 术语 | 含义 |
|---|---|
| 老板 / 玩家 / 用户 | 下单消费方 |
| 陪玩 / 陪玩师 / PW / 打手 | 提供游戏陪玩服务方，接单方 |
| 公会 / 工作室 | 组织化管理陪玩师的团体，可抽成 |
| 点单 | 用户下单购买陪玩时长/局数 |
| 派单 | 平台把订单分发给陪玩师（指派 / 大厅抢单 / 竞价） |
| 上麦 / 开黑 | 进入语音房或进入游戏一起玩 |
| 结算 | 订单完成后把金额记入陪玩师可提现余额 |
| 提现 | 陪玩师把余额提到银行卡/支付宝/微信 |
| 局 / 单 / 小时 | 计费单位，见 5.4.2 |

### 0.3 三条铁律（贯穿全文的设计约束）

1. **钱只有一条账**：所有资金变动都走 `资金流水表`，余额是流水的推导结果，任何"直接改余额"的代码都禁止。
2. **订单状态只走状态机**：任何状态变更必须校验"当前态 → 目标态"是否合法，禁止随便 update。
3. **每一笔钱都能对账**：平台流水 = 第三方支付流水 = 陪玩师结算流水，三者必须能日对账。

---

## 1. 项目定位与商业模式

### 1.1 产品定位

一个 **C2C 撮合 + 平台担保交易** 的游戏陪玩点单平台：

- 用户按"游戏 → 服务类型 → 段位/技能 → 时长/局数 → 陪玩师"选人下单；
- 平台托管资金、保障服务、处理纠纷；
- 陪玩师入驻、上架技能、接单、结算提现；
- 公会/工作室批量管理陪玩师并分成；
- 平台通过 **抽成 + 增值服务 + 流量变现** 盈利。

### 1.2 用户画像与核心诉求

| 角色 | 核心诉求 | 关键功能 |
|---|---|---|
| 玩家（15–30 岁男性为主） | 有人陪玩、上分、不孤单、社交、被尊重 | 快速下单、选人、语音连麦、评价、优惠 |
| 陪玩师（18–28 岁为主，男女皆有） | 稳定单量、收入透明、提现快、被保护 | 抢单大厅、接单提醒、收入明细、提现、防骚扰 |
| 公会/工作室 | 批量签人、统一排班、分成对账 | 公会后台、成员管理、公会钱包、数据看板 |
| 平台运营 | 拉新、留存、防风险、控成本 | 活动配置、内容审核、风控、报表 |

### 1.3 商业模式（变现点清单）

| 变现方式 | 说明 | 建议费率/规则 |
|---|---|---|
| 订单抽成 | 每单从陪玩师收入中抽成 | 10%–30%，可按公会/等级/类目差异化 |
| 提现手续费 | 提现时收取 | 0–1%，或每月免手续费 N 次 |
| 充值/虚拟币 | 虚拟币充值，礼物消费 | 见 5.9，注意合规 |
| 礼物打赏 | 用户送礼物给陪玩师 | 平台抽 30%–50% |
| 会员订阅 | 月卡/季卡，享折扣、优先派单、专属客服 | 9.9–99 元/月 |
| 排名/曝光位 | 陪玩师购买首页推荐、搜索置顶 | 按天/周计费 |
| 公会入驻费/管理费 | 公会开通、认证、保证金 | 一次性 + 年费 |
| 广告位 | 游戏厂商、外设品牌 | 招商 |
| 数据/工具服务 | 公会 SaaS 管理工具 | 订阅 |

> 注：**不建议**做"抽奖开箱""押注竞猜""盲盒概率"类玩法，涉赌风险极高，见第 12 章。

### 1.4 竞品参照（做功能取舍时参考）

比心（原伴伴）、猎游、捞月狗、TT 语音、皮皮陪玩、一伴等。可参考其"标签体系 + 语音房 + 派单大厅 + 等级勋章"的组合，但**不要抄其已下架的灰色玩法**。

---

## 2. 角色与权限矩阵

### 2.1 角色清单

| 编号 | 角色 | 所属端 | 说明 |
|---|---|---|---|
| R01 | 游客 | 用户端 | 未登录，只能浏览 |
| R02 | 注册用户（玩家） | 用户端 | 可下单、聊天、评价 |
| R03 | 实名认证用户 | 用户端 | 可下单高额订单、可提现 |
| R04 | 陪玩师（待认证） | 陪玩端 | 已提交资料，未通过 |
| R05 | 陪玩师（已认证） | 陪玩端 | 可上架、可接单 |
| R06 | 陪玩师（暂停/封禁） | 陪玩端 | 不可接单，可见违规原因 |
| R07 | 公会会长 | 公会端 | 管理公会成员与分成 |
| R08 | 公会管理员 | 公会端 | 部分权限 |
| R09 | 客服 | 后台 | 工单、退款申请、纠纷 |
| R10 | 审核员 | 后台 | 头像/语音/资料/举报审核 |
| R11 | 运营 | 后台 | 活动、Banner、优惠券、内容 |
| R12 | 财务 | 后台 | 提现审核、对账、发票 |
| R13 | 风控 | 后台 | 黑名单、风控规则、异常单 |
| R14 | 超级管理员 | 后台 | 全部权限 + 系统配置 |
| R15 | 系统（定时任务） | 服务端 | 自动关单、自动结算 |

### 2.2 后台权限粒度（RBAC）

- 模型：**用户 → 角色 → 权限节点（菜单/按钮/接口）→ 数据范围（全部/本公会/本人）**
- 建议实现：`admin_user` / `admin_role` / `admin_rule`（树形）/ `admin_role_rule` / `admin_user_role`
- 必须支持：
  - 菜单级 + 按钮级 + 接口级三层控制；
  - 数据范围：全部 / 指定公会 / 指定游戏类目 / 仅自己创建；
  - 操作日志：谁在什么时间改了什么（含变更前后值）；
  - 危险操作二次确认 + 双人复核（退款、提现审核、手动加款）。

### 2.3 功能 × 角色 权限矩阵（核心几条）

| 功能 | 游客 | 玩家 | 陪玩师 | 公会 | 客服 | 财务 | 超管 |
|---|---|---|---|---|---|---|---|
| 浏览大厅/搜索 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 下单支付 | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 接单 | ❌ | ❌ | ✅ | ✅（代接） | ❌ | ❌ | ❌ |
| 查看他人真实手机号 | ❌ | ❌ | ❌ | 部分 | 脱敏 | ❌ | 审计留痕 |
| 订单退款发起 | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| 提现审核 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| 手动调账 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅（双人） | ✅（双人） |
| 封号 | ❌ | ❌ | ❌ | ❌ | 申请 | ❌ | ✅ |

---

## 3. 全链路业务主流程

### 3.1 老板侧主流程（Happy Path）

```mermaid
flowchart TD
    A[打开App/小程序] --> B{已登录?}
    B -- 否 --> C[手机号/微信/QQ登录]
    B -- 是 --> D[首页: 游戏分类]
    C --> D
    D --> E[选游戏 如 王者荣耀]
    E --> F[选服务类型: 上分/娱乐/教学/连麦/五排]
    F --> G[选规格: 段位区间/时长/局数]
    G --> H{下单方式}
    H -- 指定陪玩 --> I[进陪玩主页 选TA]
    H -- 快速下单 --> J[发布需求 进派单大厅]
    H -- 系统推荐 --> K[按标签/评分/在线推荐]
    I --> L[确认订单页: 价格/优惠券/备注]
    J --> L
    K --> L
    L --> M[支付: 微信/支付宝/余额]
    M --> N{支付成功?}
    N -- 否 --> N1[超时15分钟自动关单]
    N -- 是 --> O[订单进入待接单/待上麦]
    O --> P[陪玩师接单]
    P --> Q[双方进入语音房/游戏对局]
    Q --> R[服务进行中 计时/计局]
    R --> S{谁发起完成}
    S -- 老板确认 --> T[订单完成]
    S -- 陪玩发起 老板未确认 --> S1[超时自动完成或申诉]
    S1 --> T
    T --> U[评价 + 打分 + 打赏]
    U --> V[结算: 平台抽成后入陪玩师余额]
    V --> W[陪玩师申请提现]
    W --> X[财务审核 → 打款]
```

### 3.2 陪玩师侧主流程

```mermaid
flowchart TD
    A[下载陪玩端] --> B[注册/手机号登录]
    B --> C[提交入驻资料]
    C --> C1[实名认证 身份证+人脸]
    C1 --> C2[游戏技能认证: 段位截图/战绩视频]
    C2 --> C3[语音试音 10-30秒]
    C3 --> C4[头像/照片/简介]
    C4 --> D[平台审核 1-3工作日]
    D -- 驳回 --> C
    D -- 通过 --> E[设置服务价格/接单时段]
    E --> F[上线: 接单中/休息中]
    F --> G{接单方式}
    G -- 大厅抢单 --> H[看大厅订单 一键抢]
    G -- 系统派单 --> I[收到派单提醒 15秒内接]
    G -- 预约单 --> J[接受预约 按时上线]
    H --> K[进入语音房/开黑]
    I --> K
    J --> K
    K --> L[服务中]
    L --> M[发起完成/等待确认]
    M --> N[订单结算: 收入 = 订单额 - 抽成]
    N --> O[我的钱包]
    O --> P[提现申请]
    P --> Q[审核/打款/到账]
    Q --> R[提现记录/收入报表]
```

### 3.3 平台侧全链路（资金视角，最重要）

```mermaid
flowchart LR
    U[用户支付] --> P1[第三方支付: 微信/支付宝]
    P1 --> P2[平台商户号]
    P2 --> P3[平台托管账户<br/>订单冻结金额]
    P3 -->|服务完成| P4[分账: 陪玩师收入 + 平台抽成 + 公会抽成]
    P4 --> P5[陪玩师可提现余额]
    P5 --> P6[提现审核]
    P6 --> P7[打款: 银行卡/支付宝/微信]
    P3 -->|退款| P8[原路退回]
    P4 --> P9[平台收入账户]
    P9 --> P10[对账/开票/纳税]
```

### 3.4 关键业务规则（写代码前必须确认）

| 编号 | 规则 | 建议值 | 备注 |
|---|---|---|---|
| BR-01 | 未支付订单自动关闭 | 15 分钟 | 可配 |
| BR-02 | 待接单订单超时 | 10 分钟未接 → 转大厅/推荐他人/自动退款 | 可配 |
| BR-03 | 陪玩师接单后未按时开始 | 5 分钟未进房 → 可无责取消 | 保护用户 |
| BR-04 | 服务中订单自动完成 | 陪玩发起完成后 24 小时用户未确认 → 自动完成 | 可申诉 |
| BR-05 | 结算账期 | 订单完成 + 24 小时（T+1）后可提现 | 预留纠纷处理窗口 |
| BR-06 | 提现门槛/次数 | 满 10 元起提，每日 1 次 | 防小额刷单 |
| BR-07 | 退款规则 | 未接单 100%；已接单未开始 90%；已开始按已完成部分折算 | 见 5.15.4 |
| BR-08 | 评价有效期 | 订单完成后 7 天内 | 超时不评默认好评 |
| BR-09 | 违约金 | 陪玩师爽约扣信誉分 + 赔用户 20% | 平台留存 |
| BR-10 | 资金冻结 | 争议订单金额冻结，禁止结算和提现 | 风控强制 |

---

## 4. 技术架构与环境要求

### 4.1 环境基线（按用户要求）

| 项 | 要求 | 建议 | 说明 |
|---|---|---|---|
| 操作系统 | Linux CentOS 7.9（兼容 CentOS Stream / Rocky / Ubuntu 20.04） | CentOS 7.9 x64 | 注意 CentOS 7 已于 2024-06-30 EOL，建议后续迁移到 Rocky Linux 9 / Alibaba Cloud Linux 3 |
| Web 服务器 | Nginx | Nginx 1.20+ | 反向代理 + 静态资源 + 限流 |
| PHP | ≥ 7.4 | **PHP 7.4 / 8.0 / 8.1** | 框架建议 ThinkPHP 6/8、Laravel 8/9（PHP 7.4 兼容） |
| MySQL | ≥ 5.6 | **MySQL 5.7**（utf8mb4 + InnoDB） | 5.6 不支持 JSON 类型、无 `utf8mb4_0900_ai_ci`，注意语法兼容 |
| Redis | — | 5.0+ | 缓存/会话/队列/排行榜/分布式锁/限流 |
| 消息队列 | — | Redis List / RabbitMQ / RocketMQ | 订单超时、派单推送、结算 |
| 搜索引擎 | — | Elasticsearch 7+（可选） | 陪玩师/订单搜索；小规模可先用 MySQL 全文/前缀索引 |
| 对象存储 | — | 阿里云 OSS / 腾讯云 COS / MinIO | 头像、语音试音、聊天图片、凭证 |
| 音视频 | — | 声网 Agora / 腾讯 TRTC / 网易云信 | 语音房、连麦、变声；不做游戏内画面传输 |
| IM | — | 环信 / 融云 / 腾讯 IM / 自研 WebSocket | 私聊、群聊、系统消息 |
| 短信 | — | 阿里云/腾讯云 | 验证码、通知 |
| 推送 | — | 极光 / 厂商通道（小米/华为/OPPO/VIVO）/ 微信订阅消息 | 接单提醒 |
| 支付 | — | 微信支付 V3、支付宝、Apple IAP（如上 iOS） | 见 12 章合规 |
| 部署 | — | 单机 → 双机（Nginx+PHP+Nginx）、MySQL 主从 | 前期单机 + 云数据库 |

### 4.2 目录结构与代码分层（PHP 侧建议）

```
/www/wwwroot/pw.qyhulian.cn/
├── public/                 # Web 根目录（Nginx root 指向这里）
│   ├── index.php
│   ├── admin.php           # 后台入口（独立域名/独立鉴权）
│   ├── api.php             # 对 App/小程序的 API 入口
│   └── static/             # 编译后的前端资源
├── app/
│   ├── api/                # 用户端接口
│   │   ├── controller/
│   │   ├── logic/
│   │   └── validate/
│   ├── pw/                 # 陪玩端接口
│   ├── admin/              # 后台
│   ├── common/             # 公共：模型、枚举、服务、异常
│   │   ├── model/
│   │   ├── service/        # OrderService / PayService / WalletService
│   │   ├── enum/           # OrderStatus / PayStatus / ...
│   │   └── listener/       # 事件监听（支付成功、订单完成）
│   └── command/            # 定时任务/队列消费者
├── config/
├── extend/
├── runtime/                # 日志、缓存（不可 web 访问）
├── vendor/
├── docs/                   # 本文档所在
└── sql/                    # 建表脚本与迁移
```

**分层铁律**：Controller 只做参数校验与响应；业务写在 Service；Model 只管数据；跨表事务在 Service 内用事务包裹。

### 4.3 关键中间件与依赖

| 依赖 | 用途 | 建议选型 |
|---|---|---|
| 缓存 | 首页数据、陪玩师在线状态、限流 | Redis |
| 队列 | 延时关单、结算、推送、日志 | Redis List + 定时扫描，或 RabbitMQ 延时队列 |
| 分布式锁 | 抢单、结算、提现 | Redis `SET NX PX` + Lua 释放 |
| 事务 | 支付/结算 | MySQL InnoDB 本地事务 + 最终一致（消息表） |
| 幂等 | 支付回调、提现 | 唯一键 + 状态机校验 + 去重表 |
| 日志 | 审计 | 文件 + 数据库（关键操作） |
| 监控 | 可用性 | Prometheus + Grafana / 云监控 |

### 4.4 三端 + 后台技术建议

| 端 | 技术 | 说明 |
|---|---|---|
| 用户端 | uni-app / Flutter / 微信小程序原生 | 小程序审核易被拒（见 12 章），建议 APP + H5 为主 |
| 陪玩端 | 同上，独立 App 或同 App 双身份 | 同 App 内切换"我是老板/我是陪玩"更省成本 |
| 公会端 | Web 后台（Vue/React） | 复用管理后台框架 |
| 平台后台 | Vue3 + Element Plus / Ant Design Vue | 与后端 admin 模块对接 |

---

## 5. 功能模块详细清单

> 本章是本文档的核心。每个模块按 **页面/入口 → 功能点 → 关键字段 → 规则与异常** 四段写。
> 功能点前的 `P0/P1/P2` 表示优先级：P0 = 首版必须有，P1 = 第二期，P2 = 可选增强。

### 5.1 用户端（玩家/老板）

#### 5.1.1 启动与登录注册

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 闪屏/引导页 | 首次安装展示 3 张引导图，可跳过 |
| P0 | 协议勾选 | 用户协议、隐私政策、未成年人提示（必须主动勾选，不得默认勾选） |
| P0 | 手机号验证码登录 | 11 位手机号 + 6 位短信码，60 秒重发限制，图形/滑块验证码防刷 |
| P0 | 一键登录 | 运营商号码认证（可选） |
| P0 | 微信登录 | 小程序/APP 微信授权，绑定手机号 |
| P0 | QQ 登录 | APP 可选 |
| P0 | 注册送券/新人礼包 | 首登弹窗领取 |
| P1 | 账号密码登录 | 用于 H5/PC |
| P1 | 第三方解绑/换绑手机 | 需原手机验证 |
| P0 | 设备与登录日志 | 记录设备号、IP、机型，异常登录提醒 |
| P0 | 注销账号 | 合规要求：可申请注销，7 天冷静期，删除/匿名化数据 |
| P1 | 多端在线互踢策略 | 同账号仅 1 端在线（可选） |

**关键字段**：`user_id, mobile, nickname, avatar, gender, birthday, real_name_status, is_minor, register_source, invite_code, last_login_ip, status`

#### 5.1.2 首页 / 发现

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 顶部搜索框 | 搜陪玩昵称/游戏/标签 |
| P0 | 游戏分类金刚区 | 王者荣耀、和平精英、英雄联盟、云顶之弈、永劫无间、原神、和平精英、蛋仔派对、CSGO、无畏契约、语音聊天、其他 |
| P0 | 轮播 Banner | 后台可配置，跳转活动/H5/商品/陪玩主页 |
| P0 | 推荐陪玩列表 | 按"在线 + 评分 + 接单率 + 人工加权"混合排序 |
| P0 | 在线陪玩瀑布流 | 头像、昵称、等级、标签、价格/小时、评分、接单数、在线状态 |
| P0 | 筛选器 | 性别、游戏、价格区间、段位、标签（技术大神/声音好听/幽默/教学/女陪/男陪）、接单状态 |
| P0 | 排序 | 综合、价格、评分、接单量、距离（可选） |
| P1 | 同城/附近 | 基于定位，需授权 |
| P1 | 新人专区/榜单 | 人气榜、收入榜、好评榜（榜单需防刷） |
| P1 | 猜你喜欢 | 基于历史点击/下单的简单推荐（可先规则化） |
| P2 | 视频/动态流 | 陪玩师发短视频、图文动态（内容审核成本高） |

#### 5.1.3 陪玩师主页（用户视角）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 基本信息 | 头像、昵称、ID、性别、年龄（可隐藏）、等级/勋章、在线状态 |
| P0 | 认证标识 | 实名认证、技能认证（各游戏段位）、公会标识 |
| P0 | 语音试音 | 10–30 秒语音条，可播放，后台审核后展示 |
| P0 | 技能与价格 | 每个游戏/服务类型的单价、规格（每小时/每局/每段） |
| P0 | 评分与评价 | 综合评分、评价数、标签统计（"声音好听 128"） |
| P0 | 接单数据 | 服务次数、准时率、好评率、平均响应时长 |
| P0 | 相册 | 图片墙，需人工审核（防低俗） |
| P0 | 立即下单 | 选择规格 → 下单页 |
| P0 | 私聊/打招呼 | 未下单也可聊（需限制条数防骚扰） |
| P0 | 关注/收藏 | 关注后上新/上线提醒 |
| P0 | 举报 | 举报类型：涉黄、诈骗、诱导站外交易、虚假段位、辱骂 |
| P1 | 预约 | 选未来时间段下单 |
| P1 | 送礼 | 进入礼物面板 |
| P1 | 排班表 | 展示可接单时段 |

#### 5.1.4 下单页（核心转化页，转化率关键）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 选择服务规格 | 游戏 + 服务类型 + 段位区间 + 时长/局数，价格实时联动 |
| P0 | 数量选择 | 1–10 小时/局，超出提示 |
| P0 | 预约时间 | 立即开始 / 预约某个时间段 |
| P0 | 优惠券选择 | 自动匹配可用券，显示最优 |
| P0 | 余额/积分抵扣 | 可开关 |
| P0 | 备注 | 游戏区服、ID、特殊要求（敏感词过滤） |
| P0 | 价格明细 | 单价 × 数量 - 优惠 = 实付，展示平台服务费（如有） |
| P0 | 支付方式 | 微信 / 支付宝 / 余额（Apple 端按 IAP 规则） |
| P0 | 协议确认 | 下单即同意《陪玩服务协议》 |
| P0 | 提交订单 | 生成订单号、锁库存（可接单容量）、拉起支付 |

**关键规则**：
- 下单前校验陪玩师是否在线/可接单/未被封禁/未超接单上限；
- 下单即冻结优惠券（`coupon.status=locked`），支付成功核销，失败释放；
- 金额计算全部在服务端完成，前端传的价格一律不信任。

#### 5.1.5 订单中心（用户侧）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 订单列表 | 全部/待支付/待接单/待开始/服务中/已完成/售后中/已取消 |
| P0 | 订单详情 | 订单号、陪玩师、规格、金额、时间线、操作按钮 |
| P0 | 倒计时 | 待支付剩余时间、待接单等待时间 |
| P0 | 操作：取消订单 | 按 BR-07 规则计算退款 |
| P0 | 操作：催单 | 给陪玩师发提醒（限频） |
| P0 | 操作：申请退款 | 选原因 + 上传凭证 |
| P0 | 操作：确认完成 | 服务结束后确认 |
| P0 | 操作：评价 | 见 5.1.6 |
| P0 | 操作：联系陪玩师 | 跳转聊天/语音房 |
| P0 | 操作：再次下单 | 一键复购 |
| P1 | 开发票 | 抬头/税号/邮箱，见 5.14.8 |
| P1 | 订单分享 | 分享战绩卡片 |

#### 5.1.6 评价体系（用户侧）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 星级评分 | 1–5 星（服务态度/技术水平/声音/准时 可多维度） |
| P0 | 文字评价 | 10–500 字，敏感词过滤 |
| P0 | 图片评价 | 最多 6 张，需审核 |
| P0 | 标签评价 | 预置标签：声音好听、技术强、有耐心、幽默、准时、温柔 |
| P0 | 匿名评价 | 可选 |
| P0 | 评价修改/追加 | 7 天内可追评 1 次 |
| P0 | 商家回复 | 陪玩师可回复 1 次 |
| P0 | 举报评价 | 恶意差评申诉入口 |
| P1 | 评价奖励 | 评价得积分/优惠券 |
| P1 | 晒单广场 | 精选评价展示 |

#### 5.1.7 我的（个人中心）

| 优先级 | 功能点 |
|---|---|
| P0 | 头像/昵称/性别/生日 编辑 |
| P0 | 实名认证（姓名+身份证+人脸，见 5.1.8） |
| P0 | 我的钱包（余额、充值、流水、提现——用户侧仅退款到余额） |
| P0 | 我的优惠券 / 积分 / 会员卡 |
| P0 | 我的关注 / 收藏 / 浏览历史 |
| P0 | 我的评价 / 待评价 |
| P0 | 收货/游戏账号（游戏区服 ID 管理） |
| P0 | 邀请好友（分销，见 5.12） |
| P0 | 客服入口 / 意见反馈 / 帮助中心 |
| P0 | 设置：消息通知、隐私、缓存清理、关于、注销 |
| P1 | 我的战绩 / 段位记录 |
| P1 | 黑名单管理 |

#### 5.1.8 实名认证与未成年人保护（P0，合规硬要求）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 实名认证 | 姓名 + 身份证号 + 人脸活体（对接公安三要素/第三方如阿里云实名认证） |
| P0 | 未成年人识别 | 按身份证生日计算年龄，< 18 标记 `is_minor` |
| P0 | 未成年人限制 | 禁止下单/打赏，或按法规限制时段与时长 |
| P0 | 家长/青少年模式 | 一键开启，隐藏充值入口 |
| P0 | 认证失败处理 | 允许重试 3 次，超过走人工 |
| P0 | 认证信息加密 | 身份证号 AES 加密存储，展示脱敏 |
| P1 | 人脸核身 | 高额订单/提现时二次核身 |

#### 5.1.9 搜索

| 优先级 | 功能点 |
|---|---|
| P0 | 关键词搜索（陪玩昵称、游戏名、标签） |
| P0 | 搜索历史 + 热搜词（后台可配） |
| P0 | 搜索联想 |
| P0 | 搜索结果筛选排序（复用首页筛选器） |
| P1 | 拼音首字母搜索 |
| P1 | 搜索无结果推荐 |

---

### 5.2 陪玩师端（接单方）

#### 5.2.1 工作台（首页）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 今日数据卡 | 今日接单数、今日收入、待接单数、好评数 |
| P0 | 接单开关 | "接单中 / 休息中"，休息中不进派单池 |
| P0 | 听单状态 | 是否开启语音播报（重要：陪玩师在打游戏，靠听） |
| P0 | 待处理事项 | 待接单、待上麦、待确认完成、待回复评价 |
| P0 | 快捷入口 | 抢单大厅、我的订单、钱包、数据、课程/成长 |
| P0 | 公告/规则 | 平台通知、违规提醒 |
| P1 | 收入趋势图 | 近 7 天/30 天 |

#### 5.2.2 抢单大厅

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 大厅列表 | 卡片：游戏、规格、金额、老板等级、下单时间、剩余可抢时间 |
| P0 | 实时刷新 | WebSocket 推送新单，无需手动刷新 |
| P0 | 一键抢单 | 抢单成功 → 生成接单记录 → 通知老板 |
| P0 | 抢单规则 | 按等级/认证/公会白名单限制可抢范围 |
| P0 | 抢单失败提示 | 已被抢、等级不足、距离不符 |
| P1 | 定向派单提醒 | 系统推给你的专属单，15 秒内确认 |
| P1 | 自动接单 | 满足条件自动接（需谨慎，防误接） |
| P1 | 竞价模式 | 陪玩师报价，老板选（见 5.6.4） |

#### 5.2.3 我的订单（陪玩侧）

| 优先级 | 功能点 |
|---|---|
| P0 | 待接单 / 待开始 / 服务中 / 待确认 / 已完成 / 已取消 列表 |
| P0 | 接单 / 拒单（拒单影响接单率） |
| P0 | 开始服务（进入语音房/填入游戏房间号） |
| P0 | 计时器（显示已服务时长） |
| P0 | 发起完成（需上传战绩截图，可选） |
| P0 | 申请提前结算 / 申请订单延期 |
| P0 | 联系老板 / 查看联系方式（脱敏，需双方同意） |
| P0 | 申请取消（需老板同意或客服介入） |
| P1 | 排班日历 |

#### 5.2.4 收入与钱包（陪玩侧）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 可提现余额 / 冻结金额 / 累计收入 | 首页三宫格展示，冻结金额点开看原因 |
| P0 | 收入明细 | 每单：订单号、金额、抽成、实得 |
| P0 | 礼物收入明细 | 与订单收入分账记录 |
| P0 | 提现申请 | 提现金额、渠道（支付宝/微信/银行卡）、手续费说明 |
| P0 | 提现记录 | 状态：审核中/已打款/已驳回 |
| P0 | 绑定收款账户 | 支付宝账号/银行卡（需与实名一致） |
| P1 | 收入报表 | 日/周/月，按游戏/服务类型拆分 |
| P1 | 提现加速/加急 | 付费加急（谨慎，涉资金合规） |

#### 5.2.5 陪玩师成长与运营

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 等级体系 | 青铜→王者 等等级，按接单量/好评/收入成长 |
| P0 | 信誉分 | 初始 100，违规扣分，低于阈值限流/封禁 |
| P0 | 勋章/标签 | 认证徽章、金牌陪玩、新人王 |
| P0 | 任务中心 | 每日/每周任务：接 3 单得奖励 |
| P1 | 培训中心 | 教学视频、话术规范、违规案例 |
| P1 | 排行榜 | 收入榜、好评榜（公会内/全平台） |
| P1 | 曝光位购买 | 首页推荐位、搜索置顶 |
| P2 | 公会招募入口 | 公会可招募陪玩师 |

---

### 5.3 陪玩师入驻与资质认证

#### 5.3.1 入驻流程

```
填资料 → 实名认证 → 技能认证（游戏段位/战绩） → 语音试音 → 人脸核身 → 签署协议 → 平台审核 → 开通接单权限 → 设置价格 → 上线
```

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 入驻协议 | 电子签署，留存签署记录与时间 |
| P0 | 基础资料 | 昵称、头像、性别、生日、身高体重（可选）、所在城市、简介 |
| P0 | 实名认证 | 与用户端一致，强制 |
| P0 | 技能认证 | 每游戏分别提交：段位截图、战绩查询链接/截图、擅长的服务类型 |
| P0 | 语音试音 | 15–30 秒，用于展示，人工审核（涉黄/擦边拒） |
| P0 | 照片审核 | 头像与相册需人工审核，禁低俗、禁盗图、禁二维码/联系方式 |
| P0 | 审核状态页 | 待审核 / 通过 / 驳回（含原因、可重新提交） |
| P0 | 保证金（可选） | 部分平台要求缴保证金，需谨慎设计（见 12 章） |
| P0 | 一人一号 | 同身份证只能注册 1 个陪玩账号 |
| P1 | 公会推荐入驻 | 通过公会邀请链接入驻，自动归属 |
| P1 | 面试/试音房 | 线上语音面试 |
| P1 | 等级免审 | 高等级用户转陪玩可简化 |

#### 5.3.2 审核后台（平台侧）

| 优先级 | 功能点 |
|---|---|
| P0 | 待审列表（按游戏/公会/时间筛选） |
| P0 | 资料详情查看（含身份证 OCR 结果、人脸比对分数） |
| P0 | 通过 / 驳回（必须选原因模板） |
| P0 | 批量审核 |
| P0 | 审核日志 |
| P1 | 自动审核（OCR + 段位图识别，风险低自动过） |
| P1 | 复审/抽查 |

---

### 5.4 商品与服务规格（SKU/技能/段位定价）

#### 5.4.1 商品模型设计

平台必须有 **"游戏 → 服务类型 → 规格模板 → 陪玩师报价"** 四层结构，否则后期无法扩展：

| 层 | 表 | 说明 |
|---|---|---|
| L1 游戏 | `game` | 王者荣耀、和平精英… |
| L2 服务类型 | `service_type` | 上分、娱乐、教学、陪聊、连麦、代打（代打慎用，违反游戏厂商规则） |
| L3 规格模板 | `sku_template` | 定义该服务类型的计价维度与可选值 |
| L4 陪玩报价 | `pw_sku` | 陪玩师对某规格的具体价格与可接状态 |

#### 5.4.2 计价维度（重点）

| 计价方式 | 适用 | 字段 | 例子 |
|---|---|---|---|
| 按小时 | 娱乐、陪聊、连麦 | `price_per_hour` | 30 元/小时 |
| 按局 | MOBA、FPS | `price_per_round` | 15 元/局 |
| 按段位 | 上分 | `price_per_star` / 段位区间价目表 | 星耀→王者 8 元/星 |
| 按天/包周 | 长期陪伴 | `price_per_day` | 199 元/天 |
| 套餐 | 组合 | `套餐 ID + 价格` | 5 小时套餐 130 元 |

**段位区间表**（示例，BOSS 段位需可配置）：

| 游戏 | 段位序列 |
|---|---|
| 王者荣耀 | 青铜→白银→黄金→铂金→钻石→星耀→王者→荣耀王者 |
| 和平精英 | 青铜→白银→黄金→铂金→钻石→皇冠→王牌→战神 |
| 英雄联盟 | 黑铁→青铜→白银→黄金→铂金→翡翠→钻石→大师→宗师→王者 |

#### 5.4.3 功能点清单

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 游戏管理 | 增删改查、排序、图标、上/下架、是否热门 |
| P0 | 服务类型管理 | 名称、图标、计价方式、是否需战绩凭证、抽成比例覆盖 |
| P0 | 规格模板管理 | 自定义规格项（如"段位区间""时长""模式：排位/娱乐/五排"） |
| P0 | 陪玩师报价设置 | 逐游戏逐规格设价，可批量、可一键同步 |
| P0 | 价格校验 | 平台设最低价，防恶性价格战；设最高价防宰客 |
| P0 | 接单容量 | 每天最多接单数、同时进行中订单上限 |
| P0 | 可接单时段 | 周一至周日 + 时段 |
| P1 | 动态调价 | 高峰期加价、供需浮动价（谨慎，需明示） |
| P1 | 套餐/优惠包 | 买 5 送 1 |
| P1 | 类目抽成差异 | 教学类抽 10%，娱乐类抽 20% |

---

### 5.5 订单全链路

> 这是整个系统的心脏。**任何功能都要回答"它对订单状态做了什么"。**

#### 5.5.1 订单主流程（分段说明）

| 阶段 | 触发 | 系统动作 | 用户可见 | 陪玩可见 |
|---|---|---|---|---|
| ① 创建 | 用户提交订单 | 校验陪玩可接、冻结优惠券、生成订单号 `PW+yyyyMMddHHmmss+rand4` | 待支付 | 不可见 |
| ② 支付 | 用户支付成功回调 | 订单状态 → 待接单/待派单；通知派单中心 | 等待陪玩接单 | 收到派单/大厅可见 |
| ③ 接单 | 陪玩接单 | 锁定陪玩，状态 → 待开始；通知用户 | 陪玩已接单，等待开始 | 待开始，可进房 |
| ④ 开始 | 陪玩点击开始/进入语音房 | 状态 → 服务中，开始计时 | 服务中，倒计时 | 计费中 |
| ⑤ 完成 | 陪玩发起 + 用户确认（或超时自动） | 状态 → 已完成，生成结算单（T+1 入账） | 待评价 | 待结算 |
| ⑥ 评价 | 用户评价 | 更新陪玩评分与标签统计 | 已评价 | 可回复 |
| ⑦ 结算 | 定时任务 T+1 | 平台抽成、公会抽成、陪玩入账 | 无感 | 收入明细 |
| ⑧ 售后 | 用户在 N 天内申请 | 状态 → 售后中，冻结该单资金 | 处理中 | 处理中 |
| ⑨ 关闭 | 超时未支付/取消/退款完成 | 状态 → 已取消/已退款，释放优惠券与库存 | 已取消 | 已取消 |

#### 5.5.2 订单类型

| 类型 | 说明 | 特殊处理 |
|---|---|---|
| 即时单 | 立即开始 | 派单超时短 |
| 预约单 | 指定未来时间 | 提前提醒；未按时上线算爽约 |
| 指定单 | 指定某陪玩师 | 只派给他，超时转大厅（可配） |
| 大厅单/悬赏单 | 不指定，公开抢 | 先进先得或竞价 |
| 续单 | 服务中追加时长 | 复用父订单，单独生成子订单 |
| 包天/包周单 | 长期 | 按天核销，支持部分退款 |
| 多陪单 | 一单多陪玩（如五排） | 拆分为多个子订单，各自结算 |
| 公会单 | 公会对公下单 | 走公会对公结算 |

#### 5.5.3 订单字段（核心）

| 字段 | 类型 | 说明 |
|---|---|---|
| `order_id` | bigint | 主键 |
| `order_no` | varchar(32) | 业务单号，唯一 |
| `user_id` / `pw_id` | bigint | 下单人 / 陪玩师 |
| `guild_id` | int | 公会 |
| `game_id` / `service_type_id` / `sku_id` | int | 商品 |
| `order_type` | tinyint | 1 即时 2 预约 3 指定 4 大厅 5 续单 |
| `title` / `snapshot` | varchar/json | 下单时的商品快照（价格变了不影响老单） |
| `quantity` | int | 数量（小时/局） |
| `unit_price` | decimal(10,2) | 单价 |
| `total_amount` | decimal(10,2) | 订单总额 |
| `discount_amount` | decimal(10,2) | 优惠金额 |
| `pay_amount` | decimal(10,2) | 实付 |
| `platform_fee` | decimal(10,2) | 平台抽成 |
| `guild_fee` | decimal(10,2) | 公会抽成 |
| `pw_income` | decimal(10,2) | 陪玩实得 |
| `status` | tinyint | 见第 6 章 |
| `pay_status` / `pay_type` / `pay_time` | — | 支付相关 |
| `start_time` / `end_time` / `finish_time` | datetime | 时间 |
| `appoint_time` | datetime | 预约时间 |
| `user_remark` / `pw_remark` | varchar | 备注 |
| `room_id` | varchar | 语音房 ID |
| `contact_mobile` | varchar | 联系方式（加密） |
| `cancel_reason` / `refund_status` | — | 取消与退款 |
| `settle_status` | tinyint | 未结算/已结算/冻结 |
| `source` | tinyint | APP/小程序/H5/后台代下 |
| `ip` | varchar | 下单 IP（风控用） |

#### 5.5.4 订单相关功能点

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 下单幂等 | 同一用户同一 SKU 3 秒内重复提交只生成 1 单（token 防重） |
| P0 | 价格快照 | 下单时把商品信息 JSON 存进订单，防止陪玩改价影响老单 |
| P0 | 超时关单 | 15 分钟未支付自动关闭（延时队列） |
| P0 | 派单超时处理 | 超时未接 → 转大厅 / 推荐他人 / 自动退款（策略可配） |
| P0 | 取消订单 | 用户/陪玩/客服/系统 四类取消来源 |
| P0 | 退款 | 全额/部分，原路退回 + 余额退回两种 |
| P0 | 订单快照与日志 | 每次状态变更写 `order_log` |
| P0 | 联系信息保护 | 手机号/微信仅展示脱敏，需"申请交换"或平台虚拟号 |
| P0 | 订单超时提醒 | 待支付、待接单、待开始、待确认 各自提醒 |
| P1 | 订单改期 | 预约单改时间（双方同意） |
| P1 | 订单转让 | 陪玩师把单转给公会内其他人（需用户同意） |
| P1 | 加时/续单 | 服务中一键加 1 小时 |
| P1 | 订单投诉标记 | 一键上报客服，附聊天记录 |
| P2 | 订单存档/导出 | 财务导出对账 |

#### 5.5.5 派单引擎规则（详见 5.6）

订单创建/支付成功后进入派单：

```
if 指定单(pw_id 不为 0):
    只派给该陪玩师 → 60 秒未响应 → 按策略（转大厅 / 推荐同公会 / 退款）
elif 大厅单:
    进入抢单大厅，同时按"匹配分"推送 N 个候选陪玩师
    首个抢单成功者得（Redis 分布式锁保证唯一）
    超过 X 分钟无人抢 → 提升曝光 / 系统指派 / 退款
else:
    系统指派：按 在线 + 技能匹配 + 段位匹配 + 评分 + 当前负载 + 公会权重 计算匹配分
```

匹配分公式（可调权重）：

```
score = 0.3*rating_norm + 0.2*online + 0.2*(1 - load) + 0.15*level_norm + 0.15*accept_rate_norm
```

---

### 5.6 派单/抢单/竞价/指定

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 指定下单 | 用户直接选人，锁定该陪玩师 |
| P0 | 大厅抢单 | 先到先得，Redis 锁 + MySQL 唯一索引双保险 |
| P0 | 系统指派 | 按匹配分推送候选，逐个/并行推送 |
| P0 | 派单通知 | 推送 + 语音播报 + 站内信，多通道 |
| P0 | 接单确认超时 | 15 秒/30 秒/60 秒可配，超时自动转下一个 |
| P0 | 接单上限 | 每陪玩同时进行中订单 ≤ N，防超卖 |
| P0 | 接单范围限制 | 等级、认证、公会、游戏类目 |
| P1 | 竞价模式 | 陪玩师对悬赏单报价，用户从报价列表选人；需防串通抬价 |
| P1 | 公会派单 | 会长把单指派给成员，统一调度 |
| P1 | 预约排班派单 | 按陪玩师排班表自动匹配 |
| P1 | 派单失败兜底 | 3 次失败自动退款 + 给用户发券安抚 |
| P2 | 智能调度 | 高峰期动态扩池、跨类目推荐 |

**抢单并发控制（必须做对）**：

```sql
-- 订单表加唯一约束：order_no 唯一；接单记录表加 (order_id) 唯一索引
INSERT INTO order_accept (order_id, pw_id, created_at) VALUES (?, ?, now());
-- 唯一索引冲突 = 已被别人抢走；同时用 Redis SET order:accept:{id} NX PX 30000 做前置挡板
```

---

### 5.7 服务过程：开黑、计时、语音房、连麦

#### 5.7.1 语音房（如采用）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 创建房间 | 订单接单后自动创建 1v1 语音房，返回 RTC Token |
| P0 | 加入/退出 | 仅订单双方可进（校验订单状态） |
| P0 | 麦克风/扬声器控制 | 静音、外放、切换 |
| P0 | 房间状态 | 等待中 / 通话中 / 已结束，结束自动写通话时长 |
| P0 | 通话计时 | 与订单计时联动 |
| P0 | 断线重连 | RTC SDK 自带 + 服务端心跳兜底 |
| P0 | 录音存证（可选） | 需双方同意并告知，仅用于纠纷，加密存储 30 天 |
| P1 | 多人房 | 五排房、公会房、派对房 |
| P1 | 变声/音效 | SDK 能力 |
| P1 | 背景音乐/游戏音效 | 版权注意 |
| P1 | 房间列表/上麦位 | 派对房玩法（审核成本高） |

#### 5.7.2 开黑（不进语音房，纯游戏内）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 填写游戏信息 | 区服、角色名、房间号/邀请码 |
| P0 | 开始/结束标记 | 双方各自点击，以陪玩侧为准（可申诉） |
| P0 | 战绩上传 | 陪玩上传胜利截图作为完成凭证（可选，防代打争议） |
| P1 | 游戏账号绑定 | 绑定游戏 ID 展示段位（需厂商开放或手动认证） |
| P1 | 一键复制房间号 | 体验优化 |

#### 5.7.3 计时与计费引擎

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 服务开始时启动计时 | 写 `service_start_at` |
| P0 | 按时长计费 | 超出部分自动生成续单提醒或按分钟计费 |
| P0 | 按局计费 | 陪玩每局记录一次，用户确认局数 |
| P0 | 暂停/中断 | 双方协商暂停，暂停不计费；中断需客服介入 |
| P0 | 计时展示 | 双方同步显示（服务端时间为准，防客户端改时间） |
| P0 | 时长异常检测 | 实际时长 < 订单时长 50% 但标记完成 → 风控标记 |

---

### 5.8 即时通讯 IM 与陌生人社交风控

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 单聊 | 文本、语音条、图片、表情、订单卡片 |
| P0 | 会话列表 | 未读数、最后一条消息、置顶、删除 |
| P0 | 消息状态 | 发送中/已发送/已读 |
| P0 | 离线消息 | 上线拉取历史（分页） |
| P0 | 系统消息 | 订单通知、审核结果、活动公告 |
| P0 | 敏感词过滤 | 涉黄、涉政、辱骂、站外引流（微信/QQ 号/手机号） |
| P0 | 图片/语音审核 | 机审 + 人审抽查 |
| P0 | 举报与拉黑 | 一键举报，拉黑后不可发消息 |
| P0 | 陌生人限制 | 未下单用户每天最多发 N 条；未互关不能发图 |
| P0 | 站外引流拦截 | 检测微信号/QQ 号，替换为 `***` 并提示风险 |
| P0 | 反诈提示 | 首次聊天弹出"请勿站外交易/转账"提示 |
| P1 | 语音/视频通话 | 走 RTC |
| P1 | 消息撤回 | 2 分钟内 |
| P1 | 快捷短语 | "你好呀""准备好了吗" |
| P1 | 聊天记录云端存储 | 合规要求留存（≥6 个月） |
| P2 | 群聊 | 公会群、粉丝群 |

**IM 技术选择**：优先用成熟第三方（环信/融云/腾讯 IM），自研 WebSocket 只适合最小可用版本，长期看消息可靠性与多端同步会吃掉大量人力。

---

### 5.9 礼物、打赏与虚拟货币

> ⚠️ 合规红线：**虚拟货币不得双向兑换**（人民币→虚拟币可以，虚拟币→人民币不可以），不得做概率抽奖，不得做"押注"玩法。详见第 12 章。

#### 5.9.1 虚拟货币体系

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 充值（人民币 → 平台币） | 固定档位：6/30/68/128/328/648 元 |
| P0 | 平台币消费 | 送礼物、买曝光、买会员 |
| P0 | 平台币不可提现 | 明确在协议与 UI 提示 |
| P0 | 余额与流水 | 每笔变动有流水，可查 |
| P0 | 首充双倍/赠送 | 赠送部分单独记 `gift_balance`，不可提现 |
| P1 | 充值优惠/月卡 | |
| P1 | 过期规则 | 赠送币可设有效期（需显著提示） |

#### 5.9.2 礼物系统

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 礼物墙 | 静态礼物：小心心 1 币、鲜花 10 币、跑车 999 币、嘉年华 9999 币 |
| P0 | 送礼流程 | 选礼物 → 选数量 → 支付 → 全频道飘屏（可选） |
| P0 | 礼物收入分账 | 陪玩师得 50%–70%，平台留存 |
| P0 | 礼物榜 | 日榜/周榜/总榜（榜单一律需防刷与合规文案） |
| P0 | 礼物记录 | 送礼记录、收礼记录 |
| P1 | 动态礼物/特效礼物 | 需美术与前端特效 |
| P1 | 礼物抽成按等级 | 等级越高分成越高 |
| P1 | 粉丝团/守护 | 订阅制，需谨慎设计避免"诱导消费"投诉 |

---

### 5.10 评价、信誉分、等级与成长体系

#### 5.10.1 评分算法（注意防刷）

```
陪玩综合评分 = 加权平均(近 90 天评价)
权重：5星=1.0, 4星=0.8, 3星=0.5, 2星=0.2, 1星=0
仅统计已完成且非异常订单；同一用户对同一陪玩 7 天内只计 1 次
新陪玩前 5 单不参与评分展示（避免冷启动 0 分）
```

#### 5.10.2 等级与成长

| 维度 | 规则（建议） |
|---|---|
| 陪玩等级 | 按累计接单数 + 好评率 + 收入，分 10 级；等级影响派单权重、抽成、可接高价单 |
| 用户等级 | 按累计消费，分 V1–V10；等级影响折扣、专属客服、优先派单 |
| 信誉分 | 初始 100；爽约 -10、被投诉成立 -15、辱骂 -20、涉黄 -100（封号）；可在完成订单后 +1（上限 100） |
| 勋章 | 实名勋章、技能认证、金牌、新人王、连签王 |
| 降级/清退 | 信誉分 < 60 限流，< 40 暂停接单，< 20 清退 |

#### 5.10.3 功能点

| 优先级 | 功能点 |
|---|---|
| P0 | 评分计算定时任务（每日凌晨重算） |
| P0 | 评价标签统计与展示 |
| P0 | 恶意差评识别（同一 IP/设备批量差评 → 风控） |
| P0 | 差评申诉与客服改判（留痕） |
| P1 | 等级权益配置后台 |
| P1 | 成长值/积分体系（消费得积分，积分抵现） |

---

### 5.11 会员、优惠券、活动与营销

#### 5.11.1 会员体系

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 会员卡类型 | 月卡/季卡/年卡，价格与权益可配 |
| P0 | 会员权益 | 下单折扣、每月优惠券、优先派单、专属客服、免提现手续费（对陪玩） |
| P0 | 会员购买/续费 | 支付、到期提醒、自动续费（需明示并易取消） |
| P0 | 会员标识 | 头像挂件、昵称颜色 |
| P1 | 成长型会员 | 消费升级制 |

#### 5.11.2 优惠券

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 券类型 | 满减券、折扣券、无门槛券、时长券（送 1 小时） |
| P0 | 发放方式 | 新人礼包、活动领取、后台定向发放、邀请奖励、评价奖励 |
| P0 | 使用限制 | 指定游戏/服务类型/陪玩师/最低金额/有效期/每人限领 |
| P0 | 领取中心 | 用户可领券页面 |
| P0 | 核销 | 下单锁定 → 支付核销 → 取消释放 |
| P0 | 券统计 | 领取量、使用率、带动 GMV |
| P1 | 券叠加规则 | 是否与会员折扣叠加，需明确 |

#### 5.11.3 营销活动

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | Banner/弹窗/浮窗配置 | 后台可视化配置，定时上下线 |
| P0 | 限时折扣 | 指定陪玩师/类目打折 |
| P0 | 满减活动 | 满 100 减 20 |
| P0 | 新人首单立减 | |
| P1 | 拼团/组队 | 多人拼单享折扣 |
| P1 | 秒杀 | 限量特价单（防超卖） |
| P1 | 邀请有礼 | 见 5.12 |
| P1 | 签到/任务 | 签到得积分/券 |
| P1 | 抽奖 | ⚠️ 仅限"免费次数 + 实物/券"且不可变现，规避赌博定性，建议先不做 |
| P2 | 内容运营 | 攻略、话题、社区 |

#### 5.11.4 消息触达（营销侧）

| 优先级 | 功能点 |
|---|---|
| P0 | 站内信、推送、短信模板管理 |
| P0 | 模板变量与审核（短信需报备） |
| P0 | 用户触达频次控制（防骚扰，每日 ≤ 3 条营销） |
| P1 | 人群包/标签圈选 |
| P1 | 召回策略（7 天未下单发券） |

---

### 5.12 分销、推广与代理商

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P1 | 邀请码/邀请链接 | 每个用户唯一邀请码，记录上下级关系（一级） |
| P1 | 邀请奖励 | 被邀请人首单后，邀请人得现金/券/积分 |
| P1 | 分销员/推广员 | 申请成为推广员，专属海报与链接 |
| P1 | 佣金结算 | 按订单金额比例，T+N 结算，可提现 |
| P1 | 二级分销 | ⚠️ 法律风险高，**强烈建议只做一级**，层级过深涉嫌传销（见 12 章） |
| P1 | 代理商/城市合伙人 | 区域代理，独立后台与分账 |
| P1 | 公会/工作室推广 | 公会拉新给奖励 |
| P2 | 分销数据看板 | 邀请数、转化、佣金 |

**分销合规要点**：佣金只能来自真实成交的服务费，不得收取"入门费/加盟费/资格费"，不得以发展人员数量作为计酬依据。

---

### 5.13 公会/工作室体系

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 公会入驻 | 提交营业执照/负责人信息，平台审核 |
| P0 | 公会主页 | 名称、LOGO、简介、成员数、公会评分 |
| P0 | 成员管理 | 邀请、审核、踢出、转让、设置管理员 |
| P0 | 公会分成 | 公会从成员订单中抽 X%，平台再从公会抽 Y% |
| P0 | 公会对账 | 按月/按单，导出明细 |
| P0 | 公会钱包 | 公会收入、提现 |
| P0 | 公会数据看板 | 成员数、在线数、GMV、订单量、好评率 |
| P1 | 公会等级/权益 | 高级公会获更多流量 |
| P1 | 公会任务/活动 | 达标奖励 |
| P1 | 公会内排班 | 排班表、值班表 |
| P1 | 公会内派单 | 会长把订单派给成员 |
| P2 | 公会保证金与违规扣罚 | 需合同约定 |
| P2 | 公会 SaaS | 独立管理工具 |

---

### 5.14 资金：钱包、充值、提现、结算、对账

> 本章是"钱"的全部。**任何一条写错都会导致资金损失或法律风险。**

#### 5.14.1 账户体系（必须分离）

| 账户 | 归属 | 说明 |
|---|---|---|
| 用户余额 | 用户 | 充值/退款入账，可消费不可提现（或按当地法规可退） |
| 用户平台币 | 用户 | 礼物消费用，**不可提现、不可转让** |
| 陪玩可提现余额 | 陪玩师 | 订单结算、礼物分成入账 |
| 陪玩冻结余额 | 陪玩师 | 提现审核中、争议订单冻结 |
| 公会余额 | 公会 | 公会分成收入 |
| 平台收入账户 | 平台 | 抽成、手续费、广告收入 |
| 平台托管/待结算 | 平台 | 已收未结的订单金额（会计上的"预收款"） |

**核心一致性要求**：`用户余额 + 陪玩余额 + 公会余额 + 平台收入 + 托管未结算 + 冻结 = 已收资金总额`（对账恒等式）。

#### 5.14.2 充值

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 充值档位 | 6/30/68/128/328/648，可后台配 |
| P0 | 支付对接 | 微信 Native/H5/JSAPI、支付宝、APP 支付 |
| P0 | 异步回调 | 验签 + 幂等 + 金额核对，成功才加款 |
| P0 | 充值记录 | 订单号、渠道流水号、状态、时间 |
| P0 | 补单 | 主动查单（支付后前端未收到回调时轮询查单） |
| P0 | 退款 | 未消费可原路退回（需符合支付渠道规则） |
| P1 | 充值赠送 | 充 100 送 10 |
| P1 | 对账单下载 | 每日渠道对账文件比对 |

#### 5.14.3 提现（陪玩师/公会）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 提现申请 | 金额、渠道、账户（须与实名一致） |
| P0 | 门槛与频次 | 满 10 元，每日 1 次，单笔上限 |
| P0 | 手续费 | 0–1%，展示实际到账 |
| P0 | 冻结 | 申请即从可用余额转冻结余额 |
| P0 | 审核流 | 自动（小额）→ 人工（大额/异常） |
| P0 | 打款 | 支付宝转账/微信商家转账/银行卡代付（需资质） |
| P0 | 结果回调 | 成功→扣冻结；失败→退回可用 |
| P0 | 提现记录 | 全状态可查 |
| P1 | 加急提现 | 付费 T+0 |
| P1 | 自动提现 | 每周自动打款 |
| P1 | 提现风控 | 新号/改卡/异常 IP → 人工审核 |

#### 5.14.4 结算（分账）

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 结算单生成 | 订单完成 + 24h，生成结算明细 |
| P0 | 分账计算 | `pw_income = pay_amount - platform_fee - guild_fee - 其他扣款` |
| P0 | 抽成规则 | 支持按类目/等级/公会/活动配置，优先级从高到低匹配 |
| P0 | 入账 | 写流水 → 加余额（同一事务） |
| P0 | 结算失败重试 | 队列重试 3 次后告警 |
| P0 | 结算冻结 | 售后/风控中订单不结算 |
| P1 | T+0 结算（会员/高等级） | 需资金垫付 |
| P1 | 结算单对账导出 | 财务用 |

#### 5.14.5 分账计算示例

```
订单实付 100 元
平台抽成 20% = 20 元
公会抽成 10%（基于陪玩收入）= 8 元
陪玩实得 = 100 - 20 - 8 = 72 元
用户优惠券 10 元由平台承担 → 平台实际收入 = 20 - 10 = 10 元
```

> **必须明确"优惠券成本由谁承担"**（平台/陪玩/公会），否则结算必吵。

#### 5.14.6 对账

| 优先级 | 功能点 |
|---|---|
| P0 | 支付渠道对账（每日下载渠道账单，比对本地订单） |
| P0 | 内部资金对账（恒等式校验，日切） |
| P0 | 差异单处理（漏单、金额不符、重复回调） |
| P1 | 自动修复（补单/冲正） |
| P1 | 财务报表导出（收入、成本、退款、佣金） |

#### 5.14.7 资金流水表设计（关键）

| 字段 | 说明 |
|---|---|
| `流水号` | 唯一 |
| `账户类型 + 账户 ID` | user / pw / guild / platform / escrow |
| `收支方向` | in / out |
| `变动金额` / `变动前余额` / `变动后余额` | 三件套，可审计 |
| `业务类型` | 充值/消费/退款/结算/礼物/提现/调账 |
| `业务单号` | 关联订单号/提现单号 |
| `状态` | 成功/失败/冲正 |
| `备注` / `操作人` | 人工调账必填 |

#### 5.14.8 发票

| 优先级 | 功能点 |
|---|---|
| P1 | 开票申请（个人/企业，税号、邮箱） |
| P1 | 开票额度与进度 |
| P1 | 电子发票对接（诺诺/百望） |
| P2 | 陪玩师个税代扣（视业务模式与当地政策，务必咨询税务） |

---

### 5.15 客服、工单、仲裁与售后

#### 5.15.1 客服工作台

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 实时会话 | 用户/陪玩师接入，排队、转接、结束 |
| P0 | 快捷回复 | 常用话术库 |
| P0 | 用户画像侧边栏 | 订单历史、消费、违规记录、实名状态 |
| P0 | 会话标签/备注 | |
| P0 | 会话质检 | 抽检、评分 |
| P0 | 服务时间配置 | 在线客服时段 + 留言 |
| P1 | 智能机器人 | 常见问题自动答，转人工 |
| P1 | 多渠道接入 | APP/小程序/公众号/网页 |

#### 5.15.2 工单系统

| 优先级 | 功能点 |
|---|---|
| P0 | 工单类型：退款、投诉、举报、账号、提现、其他 |
| P0 | 工单流转：待受理→处理中→待用户确认→已解决→已关闭 |
| P0 | 优先级与 SLA（超时升级） |
| P0 | 附件上传 |
| P0 | 处理记录与内部备注 |
| P0 | 满意度评价 |

#### 5.15.3 举报与内容审核

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 举报入口 | 用户主页、聊天、评价、语音房 |
| P0 | 审核队列 | 图文/语音/视频，机审+人审 |
| P0 | 处置动作 | 警告、隐藏内容、限流、封禁 7/30/永久、移交公安（涉黄涉诈） |
| P0 | 申诉 | 被处置方可申诉 1 次 |
| P0 | 审核留痕 | 审核人、时间、依据 |

#### 5.15.4 退款规则与仲裁（必须写清）

| 场景 | 责任方 | 退款比例 | 说明 |
|---|---|---|---|
| 未支付超时 | 系统 | — | 关单 |
| 已支付未接单，用户取消 | 用户 | 100% | 全额退 |
| 已接单未开始，用户取消 | 用户 | 90% | 扣 10% 违约金给陪玩 |
| 已接单未开始，陪玩爽约 | 陪玩 | 100% + 赔付 | 陪玩扣信誉分 |
| 服务中，用户单方取消 | 用户 | 按未服务时长折算 | 需客服确认 |
| 服务中，陪玩单方终止 | 陪玩 | 100% + 处罚 | |
| 服务完成，用户称未服务 | — | 客服仲裁 | 看语音房记录/聊天记录/游戏战绩 |
| 服务完成，用户称质量差 | — | 部分退款（0–100%） | 需证据，客服裁量 |
| 涉黄/诈骗/违规 | 违规方 | 100% + 封号 | 严重者移交公安 |

**仲裁流程**：用户申请 → 客服受理 → 双方举证（48h）→ 客服裁定 → 执行退款/驳回 → 可申诉 1 次 → 终裁。

---

### 5.16 风控、反作弊与违规处置

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P0 | 设备指纹 | 设备号、IMEI/OAID、IP、机型，识别多账号 |
| P0 | 注册风控 | 同 IP/设备注册数限制、验证码、行为验证 |
| P0 | 登录风控 | 异地登录、密码爆破、异常设备 |
| P0 | 下单风控 | 高频下单、异常金额、异常 IP、黑名单地址 |
| P0 | 刷单识别 | 同一用户-陪玩师重复下单、金额雷同、时间规律 |
| P0 | 套现识别 | 用户与陪玩师串通，充值→送礼物→提现 |
| P0 | 提现风控 | 新账号大额提现、频繁改卡、IP 与常住地不符 |
| P0 | 黑名单 | 手机号、身份证、设备、IP、收款账户 |
| P0 | 内容风控 | 敏感词库、图片 OCR/鉴黄（阿里云内容安全/腾讯天御） |
| P0 | 语音风控 | 语音转文字后过敏感词（成本较高，抽样） |
| P1 | 信用模型 | 基于行为评分的动态风控 |
| P1 | 人工审核队列 | 高风险订单人工复核 |
| P1 | 反爬 | 接口签名、频控、设备绑定 |
| P1 | 游戏厂商合规 | 代练/代打可能违反游戏用户协议，需在协议中明确风险与免责 |

**违规分级与处置**：

| 等级 | 行为 | 处置 |
|---|---|---|
| L1 轻微 | 迟到、语气差、爽约 1 次 | 警告 + 扣信誉分 |
| L2 一般 | 虚假段位、诱导站外交易、骚扰 | 限流 7 天 + 扣分 |
| L3 严重 | 辱骂、恶意取消、刷单 | 停单 30 天 + 罚款（视规则） |
| L4 极严重 | 涉黄、诈骗、盗号、代练致封号纠纷 | 永久封禁 + 移交司法 |

---

### 5.17 消息通知中心

| 通道 | 场景 | 说明 |
|---|---|---|
| 站内信 | 全部系统消息 | 必须有，作为兜底 |
| APP 推送 | 新订单、接单成功、订单提醒 | 厂商通道 + 极光 |
| 短信 | 验证码、提现结果、重要订单 | 需报备模板，控制成本 |
| 微信模板/订阅消息 | 小程序用户 | 需用户授权 |
| 语音播报 | 陪玩师听单 | TTS + 铃声，可关闭 |
| 邮件 | 对账单、发票 | |
| 电话外呼 | 高风险订单人工确认（可选） | 需资质 |

**功能点**：

| 优先级 | 功能点 |
|---|---|
| P0 | 消息模板管理（变量、渠道、开关） |
| P0 | 用户通知偏好设置（营销类可退订） |
| P0 | 发送记录与失败重试 |
| P0 | 免打扰时段（如 23:00–08:00 不发营销） |
| P1 | 频控（同类消息每日上限） |
| P1 | 消息聚合（同一订单多次提醒合并） |

---

### 5.18 数据统计与报表

#### 5.18.1 核心看板（运营）

| 优先级 | 指标 |
|---|---|
| P0 | 实时：在线人数、进行中订单、今日 GMV、今日新增订单 |
| P0 | 趋势：DAU/MAU、新增用户、下单转化率、复购率、客单价 |
| P0 | 供给：在线陪玩师数、接单率、平均响应时长、接单率、爽约率 |
| P0 | 交易：GMV、订单量、退款率、客诉率、抽成收入 |
| P0 | 质量：平均评分、差评率、违规数 |
| P1 | 漏斗：曝光→点击→下单→支付→完成 |
| P1 | 留存：次日/7 日/30 日 |
| P1 | 渠道分析：来源、成本、ROI |
| P1 | 公会排行、陪玩师排行 |
| P2 | 自定义报表（拖拽式） |

#### 5.18.2 财务看板

| 优先级 | 指标 |
|---|---|
| P0 | 收入（抽成/礼物/会员/广告）、支出（补贴/退款/佣金） |
| P0 | 待结算、已结算、冻结金额 |
| P0 | 渠道手续费、税 |
| P0 | 现金流与账期 |

#### 5.18.3 技术实现

- 订单类实时指标：Redis 计数器 / 定时聚合；
- 明细类：MySQL 按天分表或宽表 `stat_daily`；
- 大数据量后接 ClickHouse / Doris（可选）。

---

### 5.19 平台运营后台（Admin）

#### 5.19.1 菜单结构（完整）

```
├── 工作台
│   ├── 数据概览
│   ├── 待办事项（待审/待退款/待提现）
│   └── 快捷入口
├── 用户管理
│   ├── 用户列表（搜索/详情/封禁/改密/调账）
│   ├── 实名认证记录
│   ├── 用户等级/标签
│   └── 黑名单
├── 陪玩师管理
│   ├── 入驻审核
│   ├── 陪玩师列表
│   ├── 技能与段位认证
│   ├── 试音审核
│   ├── 相册审核
│   ├── 等级/信誉分调整
│   └── 接单状态管理
├── 公会管理
│   ├── 公会审核
│   ├── 公会列表
│   ├── 成员管理
│   ├── 分成配置
│   └── 公会对账
├── 商品管理
│   ├── 游戏管理
│   ├── 服务类型
│   ├── 规格模板
│   ├── 段位配置
│   └── 价格审核/最低价
├── 订单管理
│   ├── 订单列表（全维度筛选）
│   ├── 订单详情（时间线/聊天记录/语音记录）
│   ├── 派单监控
│   ├── 退款审核
│   ├── 售后仲裁
│   └── 订单导出
├── 财务管理
│   ├── 充值记录
│   ├── 消费流水
│   ├── 结算管理
│   ├── 提现审核
│   ├── 手动调账（双人复核）
│   ├── 对账中心
│   ├── 发票管理
│   └── 财务报表
├── 内容运营
│   ├── Banner/弹窗
│   ├── 公告
│   ├── 活动管理
│   ├── 优惠券
│   ├── 会员卡
│   ├── 礼物配置
│   └── 敏感词库
├── 审核中心
│   ├── 内容审核（图文/语音/视频）
│   ├── 举报处理
│   └── 申诉处理
├── 客服中心
│   ├── 在线会话
│   ├── 工单
│   └── 话术库
├── 风控中心
│   ├── 风控规则
│   ├── 风险订单
│   ├── 黑名单
│   └── 异常行为报表
├── 数据报表
│   └── 见 5.18
├── 消息中心
│   ├── 模板管理
│   ├── 推送任务
│   └── 发送记录
├── 系统设置
│   ├── 基础配置（站点名/logo/客服电话）
│   ├── 支付配置
│   ├── 短信/推送配置
│   ├── RTC/IM 配置
│   ├── 存储配置
│   ├── 抽成规则
│   ├── 权限/角色/管理员
│   ├── 操作日志
│   └── 定时任务监控
```

#### 5.19.2 后台通用能力（P0）

| 功能 | 说明 |
|---|---|
| 登录 | 独立域名/独立入口，账号密码 + 谷歌验证器/短信二次验证 |
| 列表页 | 分页、搜索、多条件筛选、排序、批量操作、导出 Excel |
| 表单页 | 校验、图片上传、富文本、关联选择 |
| 操作日志 | 记录 IP、UA、操作前后值 |
| 数据权限 | 按角色限制可见数据 |
| 危险操作 | 二次确认 + 原因必填 + 双人复核 |
| 多语言/时区 | 如做海外 |
| 审计导出 | 监管/自查用 |

---

### 5.20 开放 API 与第三方对接

| 优先级 | 功能点 | 说明 |
|---|---|---|
| P1 | 开放 API | 给公会 SaaS、合作渠道提供下单/查询接口，AppKey + 签名 + 限流 |
| P1 | 回调通知 | 订单状态变更回调，需验签与重试 |
| P1 | 渠道对接 | 抖音/快手/游戏社区导流落地页 |
| P1 | 企业微信/钉钉 | 客服与审批 |
| P2 | 游戏数据对接 | 厂商开放平台查段位/战绩（多数不开放，需人工认证） |
| P2 | 电子签名 | 入驻协议电子签（e签宝/法大大） |

---

## 6. 订单状态机（权威定义）

### 6.1 状态枚举

| 值 | 常量 | 中文 | 说明 | 可终止 |
|---|---|---|---|---|
| 0 | `PENDING_PAY` | 待支付 | 已创建未付款 | 否 |
| 1 | `PENDING_ACCEPT` | 待接单/待派单 | 已付款，等待陪玩师接单 | 否 |
| 2 | `ACCEPTED` | 已接单/待开始 | 陪玩已接，等待开始服务 | 否 |
| 3 | `IN_SERVICE` | 服务中 | 计时中 | 否 |
| 4 | `PENDING_CONFIRM` | 待确认完成 | 陪玩发起完成，等用户确认 | 否 |
| 5 | `COMPLETED` | 已完成 | 双方确认，待结算 | 否 |
| 6 | `SETTLED` | 已结算 | 资金已入陪玩账户 | 是 |
| 7 | `CANCELED` | 已取消 | 用户/陪玩/系统取消 | 是 |
| 8 | `REFUNDING` | 售后中 | 退款/仲裁进行中 | 否 |
| 9 | `REFUNDED` | 已退款 | 退款完成 | 是 |
| 10 | `CLOSED` | 已关闭 | 超时/异常关闭 | 是 |
| 11 | `DISPUTED` | 仲裁中 | 升级到平台仲裁 | 否 |

### 6.2 状态迁移表

| 当前态 | 允许动作 | 目标态 | 触发方 | 前置条件 |
|---|---|---|---|---|
| 0 待支付 | 支付成功 | 1 待接单 | 支付回调 | 金额一致、签名正确 |
| 0 待支付 | 用户取消 | 7 已取消 | 用户 | — |
| 0 待支付 | 超时未付 | 10 已关闭 | 定时任务 | 创建 > 15 分钟 |
| 1 待接单 | 陪玩接单 | 2 待开始 | 陪玩 | 未被抢、在可接范围、未超上限 |
| 1 待接单 | 用户取消 | 7 已取消 | 用户 | 全额退款 |
| 1 待接单 | 派单超时 | 7 已取消 / 1 | 定时任务 | 按策略 |
| 1 待接单 | 陪玩拒单 | 1 待接单 | 陪玩 | 记录拒单率，转派 |
| 2 待开始 | 陪玩开始服务 | 3 服务中 | 陪玩 | 到预约时间 ±15 分钟 |
| 2 待开始 | 用户取消 | 8 售后中 | 用户 | 按 BR-07 扣违约金 |
| 2 待开始 | 陪玩超时未开始 | 8 售后中 | 定时任务 | 超过预约时间 15 分钟 |
| 2 待开始 | 陪玩爽约 | 7 已取消 | 系统 | 全额退 + 处罚 |
| 3 服务中 | 陪玩发起完成 | 4 待确认 | 陪玩 | 已服务时长 ≥ 订单 50% |
| 3 服务中 | 用户申请退款 | 8 售后中 | 用户 | 冻结资金 |
| 3 服务中 | 客服强制结束 | 4/8 | 客服 | 留痕 |
| 3 服务中 | 加时 | 3 服务中 | 双方 | 生成续单 |
| 4 待确认 | 用户确认 | 5 已完成 | 用户 | — |
| 4 待确认 | 超时 24h 自动确认 | 5 已完成 | 定时任务 | 无进行中售后 |
| 4 待确认 | 用户拒绝/投诉 | 8 售后中 | 用户 | — |
| 5 已完成 | 结算完成 | 6 已结算 | 定时任务 | T+1 且无冻结 |
| 5 已完成 | 用户申请售后 | 8 售后中 | 用户 | 完成后 7 天内 |
| 5 已完成 | 评价 | 5 已完成 | 用户 | 7 天内 |
| 6 已结算 | 平台追偿 | 8 售后中 | 客服 | 需双人复核 |
| 7 已取消 | — | 终态 | — | — |
| 8 售后中 | 退款成功 | 9 已退款 | 客服/系统 | 审批通过 |
| 8 售后中 | 驳回 | 5 已完成 | 客服 | 留痕 |
| 8 售后中 | 升级 | 11 仲裁中 | 客服 | — |
| 11 仲裁中 | 裁决退款 | 9 已退款 | 客服主管 | 双人复核 |
| 11 仲裁中 | 裁决驳回 | 5 已完成 | 客服主管 | 双人复核 |
| 9/10 | — | 终态 | — | — |

### 6.3 状态图

```mermaid
stateDiagram-v2
    [*] --> 待支付
    待支付 --> 待接单: 支付成功
    待支付 --> 已取消: 用户取消
    待支付 --> 已关闭: 15分钟超时
    待接单 --> 待开始: 陪玩接单
    待接单 --> 已取消: 用户取消/派单超时
    待开始 --> 服务中: 陪玩开始
    待开始 --> 售后中: 用户取消(扣违约金)
    待开始 --> 已取消: 陪玩爽约
    服务中 --> 待确认: 陪玩发起完成
    服务中 --> 售后中: 申请退款
    待确认 --> 已完成: 用户确认/24h自动
    待确认 --> 售后中: 用户拒绝
    已完成 --> 已结算: T+1结算
    已完成 --> 售后中: 7天内售后
    售后中 --> 已退款: 审批通过
    售后中 --> 已完成: 驳回
    售后中 --> 仲裁中: 升级仲裁
    仲裁中 --> 已退款: 裁决退款
    仲裁中 --> 已完成: 裁决驳回
    已退款 --> [*]
    已结算 --> [*]
    已取消 --> [*]
    已关闭 --> [*]
```

### 6.4 与资金状态的关系（重要）

订单状态 ≠ 资金状态，**必须两张状态机分别管**：

| 资金状态 | 含义 |
|---|---|
| `UNPAID` | 未收款 |
| `PAID` | 已收款，托管中 |
| `FROZEN` | 争议冻结 |
| `SETTLED` | 已分账给陪玩/公会/平台 |
| `REFUNDING` | 退款中 |
| `REFUNDED` | 已退款 |

**规则**：`订单=已完成` 但 `资金=PAID` 是正常中间态（T+1 等待期）；`订单=已取消` 时 `资金` 必须是 `UNPAID/REFUNDED`。

---

## 7. 数据库设计（核心表清单）

> 约定：所有表 `id` 自增主键、`created_at`/`updated_at`、软删除用 `deleted_at`（或用 `is_deleted`）；金额统一 `decimal(12,2)`；时间 `datetime`；状态字段用 `tinyint` 并在代码枚举里定义。
> MySQL 5.6 注意：无 JSON 类型，用 `text` 存 JSON 并应用层解析；索引前缀长度、`utf8mb4` 索引 191 字符限制。

### 7.1 表清单（约 60 张，按模块）

#### 用户与账号

| 表名 | 说明 | 关键字段 |
|---|---|---|
| `user` | 用户主表 | id, mobile, password, nickname, avatar, gender, birthday, real_name_status, is_minor, level, status, invite_code, inviter_id, last_login_at |
| `user_realname` | 实名认证 | user_id, real_name(加密), id_card(加密), id_card_hash(索引), face_score, status, audit_at |
| `user_wallet` | 用户钱包 | user_id, balance, coin_balance, gift_balance, frozen, version(乐观锁) |
| `user_login_log` | 登录日志 | user_id, ip, device_id, ua, login_type |
| `user_device` | 设备绑定 | user_id, device_id, oaid, brand, model |
| `user_tag` | 用户标签 | user_id, tag_id |
| `user_address` / `game_account` | 游戏账号 | user_id, game_id, zone, role_name, role_id |

#### 陪玩师

| 表名 | 说明 | 关键字段 |
|---|---|---|
| `pw_profile` | 陪玩资料 | user_id, nickname, avatar, gender, intro, voice_url, voice_duration, city, height, weight, online_status, accept_status, level, credit_score, rating, order_count, good_rate, max_daily_order |
| `pw_apply` | 入驻申请 | user_id, step, status, reject_reason, submit_at, audit_at, auditor_id |
| `pw_cert` | 技能认证 | user_id, game_id, rank_id, cert_images, status, audit_at |
| `pw_voice` | 试音 | user_id, file_url, duration, status, audit_at |
| `pw_photo` | 相册 | user_id, url, sort, status, audit_at |
| `pw_sku` | 报价 | user_id, game_id, service_type_id, sku_key, price, unit, min_qty, max_qty, status |
| `pw_schedule` | 排班 | user_id, weekday, start_time, end_time |
| `pw_wallet` | 陪玩钱包 | user_id, balance, frozen, total_income, today_income |
| `pw_bank` | 收款账户 | user_id, type, account(加密), name, is_default, verify_status |
| `pw_income` | 收入明细 | user_id, order_id, amount, platform_fee, guild_fee, type, status |
| `pw_level_log` | 等级变更 | user_id, from_level, to_level, reason |
| `pw_punish` | 处罚记录 | user_id, type, level, reason, start_at, end_at, operator |

#### 商品

| 表名 | 说明 | 关键字段 |
|---|---|---|
| `game` | 游戏 | name, icon, sort, is_hot, status |
| `service_type` | 服务类型 | game_id, name, icon, charge_type(hour/round/star), need_proof, fee_rate, sort, status |
| `sku_template` | 规格模板 | service_type_id, name, options(text/json), required, sort |
| `rank_config` | 段位 | game_id, name, sort, icon |
| `price_level` | 段位价目 | game_id, from_rank, to_rank, price, status |

#### 订单

| 表名 | 说明 | 关键字段 |
|---|---|---|
| `order` | 订单主表 | 见 5.5.3 |
| `order_log` | 状态日志 | order_id, from_status, to_status, action, operator_type, operator_id, remark |
| `order_accept` | 接单记录 | order_id(唯一), pw_id, accept_at, source |
| `order_extra` | 订单扩展 | order_id, game_zone, game_role, room_no, room_id, service_start, service_end, duration |
| `order_charge` | 费用明细 | order_id, item, amount, payer(平台/用户/陪玩) |
| `order_evaluate` | 评价 | order_id, user_id, pw_id, star, star_service, star_skill, star_voice, content, images, tags, anonymous, status |
| `order_evaluate_reply` | 商家回复 | evaluate_id, content |
| `order_refund` | 退款单 | order_no, order_id, amount, reason, images, status, auditor_id, refund_no |
| `order_appeal` | 申诉 | order_id, user_id, type, content, status |
| `order_snapshot` | 快照（可并入 order.snapshot） | — |

#### 资金

| 表名 | 说明 | 关键字段 |
|---|---|---|
| `wallet_log` | 资金流水（统一） | account_type, account_id, direction, amount, before, after, biz_type, biz_no, status, remark |
| `recharge_order` | 充值单 | order_no, user_id, amount, give_amount, pay_type, pay_status, trade_no, pay_at |
| `withdraw_order` | 提现单 | order_no, user_type, user_id, amount, fee, real_amount, channel, account_info, status, audit_at, pay_at, fail_reason |
| `settle_order` | 结算单 | order_id, pw_id, guild_id, order_amount, platform_fee, guild_fee, pw_income, status, settle_at |
| `adjust_log` | 人工调账 | user_type, user_id, amount, reason, operator, reviewer, status |
| `reconcile_record` | 对账记录 | date, channel, total_local, total_channel, diff, status |

#### 营销

| 表名 | 说明 |
|---|---|
| `coupon` / `coupon_user` | 券模板 / 用户券（status: 未用/锁定/已用/过期） |
| `activity` / `activity_rule` | 活动与规则 |
| `banner` / `popup` | 运营位 |
| `vip_card` / `vip_order` / `vip_right` | 会员 |
| `gift` / `gift_order` / `gift_log` | 礼物与送礼记录 |
| `coin_recharge` / `coin_log` | 平台币 |
| `sign_log` / `task_log` | 签到/任务 |
| `invite_relation` / `commission_log` | 分销 |

#### 公会

| 表名 | 说明 |
|---|---|
| `guild` | 公会（name, logo, owner_id, level, fee_rate, status） |
| `guild_member` | 成员（guild_id, user_id, role, join_at, status） |
| `guild_apply` | 入驻申请 |
| `guild_wallet` / `guild_income` | 公会钱包与收入 |
| `guild_settle` | 公会对账单 |

#### 内容与审核

| 表名 | 说明 |
|---|---|
| `audit_task` | 审核任务（type: 头像/相册/语音/评价/聊天/视频） |
| `report` | 举报（target_type, target_id, reason, images, status） |
| `punish` | 处罚 |
| `sensitive_word` | 敏感词库 |
| `announcement` | 公告 |
| `feedback` | 意见反馈 |

#### IM 与房间

| 表名 | 说明 |
|---|---|
| `im_session` | 会话 |
| `im_message` | 消息（存第三方消息 ID，正文可只存审计副本） |
| `im_blacklist` | 拉黑 |
| `rtc_room` | 语音房（order_id, channel_id, started_at, ended_at, duration） |
| `rtc_record` | 通话记录 |

#### 系统

| 表名 | 说明 |
|---|---|
| `admin_user` / `admin_role` / `admin_rule` / `admin_role_rule` | 后台权限 |
| `admin_log` | 操作日志 |
| `config` | 系统配置（key-value） |
| `payment_config` / `sms_config` / `push_config` | 各类配置（密钥加密） |
| `sms_log` / `push_log` / `mail_log` | 发送记录 |
| `stat_daily` / `stat_pw_daily` / `stat_guild_daily` | 统计宽表 |
| `job_log` | 定时任务执行日志 |
| `notify_template` | 消息模板 |

### 7.2 关键索引设计

```sql
-- 订单：按用户/陪玩/状态/时间查询
ALTER TABLE `order` ADD INDEX `idx_user_status` (`user_id`, `status`, `created_at`);
ALTER TABLE `order` ADD INDEX `idx_pw_status` (`pw_id`, `status`, `created_at`);
ALTER TABLE `order` ADD INDEX `idx_status_created` (`status`, `created_at`);
ALTER TABLE `order` ADD UNIQUE KEY `uk_order_no` (`order_no`);

-- 资金流水：按账户+时间
ALTER TABLE `wallet_log` ADD INDEX `idx_account` (`account_type`, `account_id`, `id`);
ALTER TABLE `wallet_log` ADD UNIQUE KEY `uk_biz` (`biz_type`, `biz_no`, `account_id`);  -- 幂等

-- 抢单唯一约束（防并发重复接单）
ALTER TABLE `order_accept` ADD UNIQUE KEY `uk_order` (`order_id`);

-- 评价：一单一评
ALTER TABLE `order_evaluate` ADD UNIQUE KEY `uk_order` (`order_id`);

-- 提现单号
ALTER TABLE `withdraw_order` ADD UNIQUE KEY `uk_no` (`order_no`);
```

### 7.3 数据量预估与分表建议

| 表 | 日增（1 万单/日） | 一年 | 建议 |
|---|---|---|---|
| order | 1 万 | 365 万 | 2 年后按 `created_at` 月分表或归档 |
| order_log | 5 万 | 1800 万 | 按订单号归档到冷表 |
| wallet_log | 10 万 | 3650 万 | 按账期分表/归档到历史库 |
| im_message | 50 万 | 1.8 亿 | **不落主库**，用第三方 IM |
| stat_daily | 少量 | 少量 | 可长期保留 |

---

## 8. 接口设计规范与清单

### 8.1 通用规范

| 项 | 规范 |
|---|---|
| 风格 | REST 风格，路径 `/api/v1/{module}/{action}` |
| 传输 | HTTPS 强制，JSON body |
| 鉴权 | `Authorization: Bearer {token}`，JWT（有效期 7 天 + refresh token） |
| 签名 | 重要接口（下单/支付/提现）加 `sign = md5(params + timestamp + secret)`，时间戳 5 分钟内有效 |
| 返回 | `{"code":0,"msg":"ok","data":{},"trace_id":"..."}`；`code != 0` 为业务错误 |
| 分页 | `page`, `page_size`（≤50），返回 `total`,`list` |
| 错误码 | 分段：10000 通用 / 20000 用户 / 30000 订单 / 40000 资金 / 50000 商品 / 90000 系统 |
| 幂等 | 下单、支付、提现必须带 `request_id` |
| 限流 | 按用户 60 次/分钟，登录/短信 1 次/60 秒 |
| 日志 | 每个请求记录 trace_id、耗时、状态 |

### 8.2 接口清单（用户端 api）

| 模块 | 接口 | 方法 | 说明 |
|---|---|---|---|
| 认证 | `/api/v1/auth/sendSms` | POST | 发送验证码 |
| 认证 | `/api/v1/auth/login` | POST | 手机号登录 |
| 认证 | `/api/v1/auth/wxLogin` | POST | 微信登录 |
| 认证 | `/api/v1/auth/refresh` | POST | 刷新 token |
| 认证 | `/api/v1/auth/logout` | POST | 退出 |
| 用户 | `/api/v1/user/info` | GET | 我的信息 |
| 用户 | `/api/v1/user/update` | POST | 修改资料 |
| 用户 | `/api/v1/user/realname` | POST | 实名认证 |
| 用户 | `/api/v1/user/realname/status` | GET | 认证状态 |
| 首页 | `/api/v1/home/index` | GET | 首页聚合（banner+分类+推荐） |
| 首页 | `/api/v1/home/games` | GET | 游戏分类 |
| 陪玩 | `/api/v1/pw/list` | GET | 陪玩列表（筛选排序分页） |
| 陪玩 | `/api/v1/pw/detail` | GET | 陪玩主页 |
| 陪玩 | `/api/v1/pw/sku` | GET | 陪玩报价 |
| 陪玩 | `/api/v1/pw/evaluations` | GET | 评价列表 |
| 陪玩 | `/api/v1/pw/follow` | POST | 关注 |
| 搜索 | `/api/v1/search` | GET | 搜索 |
| 订单 | `/api/v1/order/price` | POST | 试算价格 |
| 订单 | `/api/v1/order/create` | POST | 创建订单 |
| 订单 | `/api/v1/order/list` | GET | 我的订单 |
| 订单 | `/api/v1/order/detail` | GET | 订单详情 |
| 订单 | `/api/v1/order/cancel` | POST | 取消 |
| 订单 | `/api/v1/order/urge` | POST | 催单 |
| 订单 | `/api/v1/order/confirm` | POST | 确认完成 |
| 订单 | `/api/v1/order/refund` | POST | 申请退款 |
| 订单 | `/api/v1/order/evaluate` | POST | 评价 |
| 支付 | `/api/v1/pay/create` | POST | 发起支付（返回支付参数） |
| 支付 | `/api/v1/pay/status` | GET | 查支付状态 |
| 支付 | `/api/v1/pay/notify/{channel}` | POST | 异步回调（无鉴权，验签） |
| 钱包 | `/api/v1/wallet/info` | GET | 余额 |
| 钱包 | `/api/v1/wallet/log` | GET | 流水 |
| 钱包 | `/api/v1/wallet/recharge` | POST | 充值 |
| 券 | `/api/v1/coupon/list` | GET | 我的券 |
| 券 | `/api/v1/coupon/receive` | POST | 领券 |
| 券 | `/api/v1/coupon/usable` | GET | 可用券 |
| 会员 | `/api/v1/vip/info` | GET | 会员信息 |
| 会员 | `/api/v1/vip/buy` | POST | 购买会员 |
| 礼物 | `/api/v1/gift/list` | GET | 礼物墙 |
| 礼物 | `/api/v1/gift/send` | POST | 送礼 |
| IM | `/api/v1/im/token` | GET | 获取 IM 凭证 |
| IM | `/api/v1/im/session/list` | GET | 会话列表 |
| IM | `/api/v1/im/history` | GET | 历史消息 |
| IM | `/api/v1/im/black` | POST | 拉黑 |
| 房间 | `/api/v1/rtc/token` | POST | 获取 RTC Token |
| 房间 | `/api/v1/rtc/join` | POST | 加入房间 |
| 房间 | `/api/v1/rtc/leave` | POST | 离开房间 |
| 反馈 | `/api/v1/feedback` | POST | 意见反馈 |
| 反馈 | `/api/v1/report` | POST | 举报 |
| 配置 | `/api/v1/config/app` | GET | 启动配置（升级、协议、开关） |
| 上传 | `/api/v1/upload` | POST | 通用上传（token 直传 OSS） |

### 8.3 接口清单（陪玩端 pw）

| 接口 | 说明 |
|---|---|
| `/pw/v1/auth/*` | 登录注册 |
| `/pw/v1/apply/submit` | 提交入驻 |
| `/pw/v1/apply/status` | 审核状态 |
| `/pw/v1/cert/submit` | 技能认证 |
| `/pw/v1/voice/submit` | 试音上传 |
| `/pw/v1/profile/update` | 资料 |
| `/pw/v1/online/switch` | 接单开关 |
| `/pw/v1/hall/list` | 抢单大厅 |
| `/pw/v1/hall/grab` | 抢单 |
| `/pw/v1/order/list` | 我的订单 |
| `/pw/v1/order/accept` | 接单（指派单） |
| `/pw/v1/order/reject` | 拒单 |
| `/pw/v1/order/start` | 开始服务 |
| `/pw/v1/order/finish` | 发起完成 |
| `/pw/v1/order/proof` | 上传战绩 |
| `/pw/v1/sku/save` | 保存报价 |
| `/pw/v1/sku/list` | 我的报价 |
| `/pw/v1/wallet/info` | 钱包 |
| `/pw/v1/wallet/log` | 收入明细 |
| `/pw/v1/withdraw/apply` | 提现 |
| `/pw/v1/withdraw/list` | 提现记录 |
| `/pw/v1/bank/save` | 绑定账户 |
| `/pw/v1/stat/overview` | 数据概览 |
| `/pw/v1/schedule/save` | 排班 |

### 8.4 接口清单（后台 admin）

后台接口建议 `/admin/{module}/{action}`，统一走 RBAC 中间件 + 操作日志。数量约 150–250 个，按 5.19 菜单一一对应即可，此处不逐一罗列。

### 8.5 第三方回调接口（必须幂等）

| 回调 | 来源 | 要求 |
|---|---|---|
| 支付结果 | 微信/支付宝 | 验签、金额核对、幂等、返回 success |
| 退款结果 | 微信/支付宝 | 同上 |
| 提现结果 | 代付渠道 | 同上 |
| 短信回执 | 短信商 | 更新状态 |
| IM 消息 | IM 服务商 | 敏感词检测、落审计日志 |
| RTC 事件 | RTC 服务商 | 房间开始/结束、异常 |

---

## 9. 定时任务、队列与异步

| 任务 | 频率 | 说明 |
|---|---|---|
| 关闭超时未支付订单 | 每分钟 | 扫 `status=0 AND created_at < now()-15min` |
| 派单超时处理 | 每 30 秒 | 扫 `status=1` 超时单，转派/退款 |
| 服务开始超时检测 | 每分钟 | 预约时间 +15 分钟未开始 → 提醒/取消 |
| 自动确认完成 | 每 10 分钟 | `status=4` 超 24h |
| 订单结算 | 每小时 | `status=5` 且完成满 24h，生成结算 |
| 评价邀请 | 每小时 | 完成 1 小时未评价，推送提醒 |
| 评分重算 | 每日 03:00 | 重算陪玩评分、好评率、等级 |
| 会员到期 | 每日 01:00 | 到期降级、提醒续费 |
| 券过期 | 每日 02:00 | 批量置为过期 |
| 对账 | 每日 06:00 | 下载渠道账单比对 |
| 提现自动打款 | 每小时 | 小额自动审核通过并打款 |
| 数据统计 | 每日 01:30 | 生成 `stat_daily` |
| 在线状态检测 | 每分钟 | 心跳超时置离线 |
| 异常订单巡检 | 每小时 | 长时间停留某状态的订单告警 |
| 日志清理 | 每周 | 清理 90 天前日志 |
| 队列消费 | 常驻 | `php think queue:work` 或 supervisor 守护 |

**队列任务清单**：

```
OrderTimeoutClose     订单超时关闭
DispatchOrder         派单推送
AutoSettle            自动结算
SendPush / SendSms    消息发送
ContentAudit          内容机审
ScoreRecalc           评分重算
WithdrawPay           提现打款
StatAggregate         统计聚合
```

---

## 10. 安全设计

### 10.1 应用安全

| 风险 | 措施 |
|---|---|
| SQL 注入 | 全量使用 ORM/预处理，禁止字符串拼接 SQL；后台导出注意注入 |
| XSS | 富文本白名单过滤；用户昵称/评价输出转义 |
| CSRF | 后台表单加 token；API 用 Bearer Token 天然免疫 |
| 越权 | 每个接口校验资源归属（`where user_id = current`），禁止只靠前端隐藏 |
| 文件上传 | 白名单后缀 + MIME 校验 + 重命名 + 存储与执行目录分离 + OSS 直传回调校验 |
| 短信轰炸 | 图形验证码 + IP/手机号频控 + 每日上限 |
| 接口刷单 | 签名 + 时间戳 + nonce 去重 + 风控规则 |
| 支付篡改 | 金额服务端计算；回调验签；订单金额与实付比对 |
| 撞库 | 登录失败锁定、密码强度、异地验证 |
| 敏感数据 | 身份证/银行卡/手机号 AES-256 加密，密钥走环境变量/KMS；展示脱敏 |
| 日志脱敏 | 日志中禁止出现完整身份证、手机号、token |
| 后台安全 | 独立域名 + IP 白名单（可选）+ 双因素 + 登录日志 + 会话超时 30 分钟 |

### 10.2 资金安全（重点）

1. 所有资金操作走统一 `WalletService`，事务内 `SELECT ... FOR UPDATE` 或乐观锁 `version`；
2. 流水表唯一键防重复入账（`biz_type + biz_no + account_id` 唯一）；
3. 提现必须校验：可提现余额、冻结金额、风控状态、实名一致、账户已绑定；
4. 大额提现人工审核 + 双人复核；
5. 每日对账恒等式校验，不平立即告警；
6. 禁止在后台提供"直接改余额"功能，只能"调账"（生成流水）。

### 10.3 服务器安全（CentOS 7.9 基线）

| 项 | 措施 |
|---|---|
| 系统 | 最小化安装；关闭无用端口；`firewalld` 只放 22/80/443 |
| SSH | 禁 root 登录、改端口、密钥登录、fail2ban |
| 账户 | 应用以非 root 用户（如 www）运行 |
| PHP | `disable_functions` 禁用 `exec,system,passthru,shell_exec,proc_open,popepassthru`；`open_basedir` 限制 |
| 目录权限 | `runtime/` 可写，其余只读；上传目录禁止 PHP 执行 |
| 数据库 | 只监听内网/127.0.0.1；独立账号最小权限；定期备份 |
| 备份 | 数据库每日全量 + binlog，保留 7–30 天，异地存储，**定期恢复演练** |
| 加固 | 等保 2.0 要求的日志留存 ≥ 6 个月 |
| WAF | 云 WAF 或 Nginx + Lua 规则，防注入/CC |
| 漏洞 | 定期更新 PHP/依赖，`composer audit` |
| HTTPS | 全站强制，HSTS，TLS 1.2+ |

### 10.4 隐私合规（PIPL）

- 收集清单最小必要：手机号、实名信息（法定要求）、设备信息；
- 首次启动弹隐私政策并**单独同意**；
- 提供个人信息查阅、复制、更正、删除、注销入口；
- 第三方 SDK 清单公示（推送、支付、RTC、统计）；
- 不得强制索取非必要权限（通讯录、位置）；
- 数据出境需评估（如用海外服务）。

---

## 11. 性能、容量与可用性

### 11.1 性能目标

| 指标 | 目标 |
|---|---|
| 接口 P95 响应 | < 300ms（读） / < 800ms（写） |
| 首页加载 | < 1.5s（4G） |
| 抢单接口 | P99 < 200ms，支持 500 QPS 并发抢同一个单不超卖 |
| 支付回调 | 幂等且 < 1s 返回 |
| 系统可用性 | 99.9%（年停机 < 8.8 小时） |

### 11.2 容量规划（按 1 万 DAU 估）

| 指标 | 估算 |
|---|---|
| 日订单 | 1,000–3,000 |
| 峰值 QPS | 200–500 |
| 在线长连接 | 1 万（用第三方 IM 则不占自身） |
| 语音并发 | 500–2000 路（RTC 厂商承载） |
| MySQL | 8C16G 起，数据 < 50G |
| Redis | 2C4G 起 |
| 服务器 | 2 台应用（4C8G）+ 1 台 DB + 1 台 Redis（或云托管） |

### 11.3 可用性设计

- Nginx + 2 台 PHP-FPM，负载均衡，健康检查；
- MySQL 主从 + 半同步，故障切换；
- Redis 主从 + 哨兵；
- 静态资源 CDN；
- 支付/短信/IM 等第三方**降级方案**（短信失败转语音/推送）；
- 灰度发布与回滚；
- 监控告警：接口错误率、慢查询、队列积压、对账不平、订单状态异常堆积。

### 11.4 建议的部署拓扑

```
                    ┌──────────┐
  用户/App/小程序 → │  CDN/WAF │
                    └────┬─────┘
                         │
                    ┌────▼─────┐
                    │  Nginx   │  (SLB)
                    └────┬─────┘
              ┌──────────┴──────────┐
        ┌─────▼─────┐         ┌─────▼─────┐
        │ PHP-FPM A │         │ PHP-FPM B │
        └─────┬─────┘         └─────┬─────┘
              └──────────┬──────────┘
        ┌────────────────┼────────────────┐
   ┌────▼────┐      ┌────▼────┐      ┌────▼────┐
   │ MySQL   │      │  Redis  │      │  队列    │
   │ 主/从    │      │ 主/从    │      │ Worker  │
   └─────────┘      └─────────┘      └─────────┘
        │
   ┌────▼─────────────────────────────┐
   │ OSS / RTC / IM / 支付 / 短信      │
   └──────────────────────────────────┘
```

---

## 12. 合规与法律风险（务必先看）

> ⚠️ **本节不是法律意见**。陪玩/陪聊属于强监管领域，且近年多次被点名整治。上线前请务必让律师做一次合规审查，尤其是资金、内容、未成年人与税务四条线。

### 12.1 资质清单（中国大陆经营参考）

| 资质 | 是否需要 | 说明 |
|---|---|---|
| 营业执照 | 必须 | 经营范围含"互联网信息服务""网络文化"等 |
| ICP 备案 | 必须 | 域名备案 |
| 增值电信业务经营许可证（ICP 证） | 经营性网站必须 | 通过平台向用户收费即属经营性 |
| 网络文化经营许可证（文网文） | 大概率需要 | 涉及网络表演/网络演出剧（语音房、直播陪聊） |
| 信息网络传播视听节目许可证 | 视是否做音视频内容 | 门槛极高，一般通过合作 |
| 网络安全等级保护（等保 2.0） | 必须 | 一般定级二级，涉及大量个人信息可能三级 |
| 公安联网备案 | 必须 | 上线 30 日内 |
| 未成年人保护相关 | 必须 | 实名 + 防沉迷 + 青少年模式 |
| 支付业务许可 | 不可自建 | 平台不得从事"二清"，见 12.2 |
| 人力资源服务许可 | 视用工模式 | 若被认定为灵活用工/劳务派遣 |

### 12.2 资金合规："二清"红线（最容易被查）

**问题**：用户付钱先进平台商户号，平台再打给陪玩师，本质是"平台归集资金再清算"，属于无证从事支付结算业务（俗称"二清"），是监管重点打击对象。

**合规做法（三选一或组合）**：

1. **支付机构分账**：微信支付"分账"、支付宝"分账/直付通"，资金由持牌机构按指令直接分给陪玩师，平台只收自己的服务费；
2. **银行存管/托管账户**：与银行合作开立专用存管账户，平台不能随意挪用；
3. **灵活用工/个体工商户模式**：陪玩师注册个体户或通过灵活用工平台结算（注意税务与用工实质）。

**禁止**：平台沉淀大量用户/陪玩师资金、形成资金池、用后账补前账。

### 12.3 内容合规（涉黄是行业头号杀手）

| 风险 | 措施 |
|---|---|
| 语音/文字擦边、涉黄 | 敏感词库 + 语音转文字抽检 + 人工巡检 + 一键举报 + 严惩 |
| 头像/相册低俗 | 人审 + 机审（鉴黄） |
| 未成年人涉入 | 实名 + 年龄校验 + 禁止未成年人接单（陪玩师必须 ≥18） |
| 诱导站外交易 | 拦截微信号/QQ/手机号，提示风险 |
| 诈骗 | 反诈提示 + 交易全程站内 + 异常提现拦截 |
| 直播/语音房 | 需具备相应资质，落实主播实名、内容审核、24 小时巡查、日志留存 |

**明确禁止的业务**：任何形式的色情陪侍、线下陪伴（"线下单"极易演变为涉黄，**强烈建议不做**）。

### 12.4 游戏代练/代打风险

- 多数游戏用户协议禁止账号共享与代练，代练可能导致封号；
- 国内已有游戏厂商起诉代练平台的判例（不正当竞争）；
- 建议：
  - 只做"陪玩"（同局游戏、语音陪伴），不做"代打/代练/代上分"；
  - 若必须做，需在协议中明确风险，限制类目，并评估被诉风险。

### 12.5 赌博与传销红线

| 红线 | 说明 |
|---|---|
| 抽奖/开箱/概率玩法 | 若奖品可兑换为现金/虚拟币可提现，可能被认定为赌博；建议不做 |
| 竞猜/押注 | 严禁 |
| 虚拟币双向兑换 | 严禁（币→人民币） |
| 多级分销 | 层级 ≥3 或收入来自"拉人头"可能构成传销；建议仅一级、佣金来自真实服务 |
| 保证金/加盟费 | 以"入职费""培训费"名义收费易被认定为诈骗/传销，慎用 |

### 12.6 税务

- 平台收入需开票、纳税；
- 陪玩师收入个税：按"劳务报酬"或"经营所得"代扣代缴，取决于用工模式；
- 建议接入合规灵活用工平台或要求陪玩师注册个体户；
- 虚拟币销售、礼物分成均需确认收入时点与税率。

### 12.7 未成年人保护（强制）

- 用户实名 + 年龄识别；
- 未成年人**禁止**打赏/充值（或严格限额并需监护人同意）；
- 未成年人**不得**成为陪玩师；
- 青少年模式：隐藏充值、限制时长、内容过滤；
- 落实《未成年人保护法》《未成年人网络保护条例》。

### 12.8 其他

- 个人信息保护影响评估（PIA）；
- 算法推荐备案（如有推荐算法，需按《算法推荐管理规定》备案）；
- 数据留存 ≥ 6 个月（网安法）；
- 用户协议/隐私政策/陪玩师协议/公会协议 四份法律文本必须由律师出具；
- 保险：可考虑雇主责任险/意外险（若涉及线下）。

### 12.9 App/小程序上架现实

- 陪玩类 App 在各大应用商店审核极严，历史上多次被下架；
- 微信小程序对"陪玩/陪聊"类目审核严格，可能要求资质或不给过；
- 建议：App 为主（自有下载渠道 + 应用商店分版本上架），H5 兜底，小程序作为辅助（内容做合规包装）；
- 提前准备：软著、ICP 备案、隐私政策、内容审核机制说明、未成年人保护方案。

---

## 13. 开发排期与里程碑

> 假设团队：后端 2 人、前端（App/H5）2 人、后台 1 人、UI 1 人、测试 1 人、产品 1 人（可兼）。
> 周期按"能上线跑通交易闭环"为目标，不含内容审核团队建设。

### 13.1 分期规划

| 阶段 | 周期 | 目标 | 交付内容 |
|---|---|---|---|
| **P0 立项准备** | 1 周 | 定方案 | 本文档评审、原型图、技术选型、合规咨询、资质启动 |
| **P1 交易闭环（MVP）** | 6–8 周 | 能下单能收钱能结算 | 用户登录/实名、陪玩入驻审核、商品与报价、下单支付、派单大厅/指定、接单、开始/完成、钱包与流水、结算、提现（人工打款）、基础后台、评价、IM 基础版 |
| **P2 体验与运营** | 4 周 | 能运营能增长 | 优惠券/会员/活动/Banner、礼物与平台币、评分等级信誉分、语音房（RTC）、推送与听单、数据看板、客服工单、举报审核 |
| **P3 规模化** | 4 周 | 能管公会能控风险 | 公会体系与分成、分销、风控中心、对账系统、报表体系、开放 API、APP 上架优化 |
| **P4 精细化** | 持续 | 提效增收 | 智能派单、推荐、社区内容、SaaS 化、多语言（出海） |

### 13.2 P1 详细任务拆解（示意）

| 周 | 后端 | 前端 | 后台 |
|---|---|---|---|
| W1 | 建库、框架、登录鉴权、实名认证 | 框架搭建、登录页 | 后台框架、RBAC |
| W2 | 用户/陪玩资料、入驻审核流 | 首页、陪玩列表、详情 | 用户/陪玩管理 |
| W3 | 商品/规格/报价 | 下单页、支付页 | 商品管理 |
| W4 | 订单创建/支付/回调/关单 | 订单列表/详情 | 订单管理 |
| W5 | 派单/抢单/接单/开始/完成 | 陪玩端工作台、大厅 | 派单监控 |
| W6 | 钱包/流水/结算/提现 | 钱包页 | 财务模块 |
| W7 | 评价/消息/上传 | 评价页、消息页 | 审核中心 |
| W8 | 联调、压测、修 bug、上线准备 | 联调 | 联调 |

### 13.3 上线前必做

- [ ] 支付渠道签约完成并通过测试
- [ ] 短信签名/模板报备通过
- [ ] 域名备案、HTTPS、等保测评启动
- [ ] 律师审核四份协议
- [ ] 内容审核流程与人员就位
- [ ] 客服话术与工单流程就位
- [ ] 对账流程演练
- [ ] 数据备份与恢复演练
- [ ] 应急预案（支付故障、RTC 故障、被攻击）

---

## 14. 验收 Checklist

### 14.1 交易链路（P0）

- [ ] 下单金额服务端计算，前端改价无效
- [ ] 重复提交只生成一单（幂等）
- [ ] 15 分钟未支付自动关单，优惠券释放
- [ ] 支付回调验签失败不入账；重复回调不重复入账
- [ ] 已支付订单不可再支付
- [ ] 指定单只派给指定陪玩，超时按策略处理
- [ ] 大厅单 100 并发抢，只有 1 人成功
- [ ] 陪玩接单后用户可看到，双方状态一致
- [ ] 服务中可计时，时间以服务端为准
- [ ] 发起完成后 24 小时自动确认
- [ ] 取消按规则计算退款金额，退款原路返回
- [ ] 订单完成 T+1 结算，金额 = 实付 - 平台抽成 - 公会抽成
- [ ] 资金流水 before/after 连续，无断点
- [ ] 对账恒等式成立（见 5.14.1）

### 14.2 账号与认证（P0）

- [ ] 验证码 60 秒限制、5 分钟有效、错误 5 次失效
- [ ] 实名信息加密存储，页面脱敏
- [ ] 未成年人无法下单/打赏
- [ ] 同一身份证只能注册一个陪玩账号
- [ ] 注销账号 7 天冷静期，数据按规处理

### 14.3 提现（P0）

- [ ] 可用余额不足不能提现
- [ ] 提现后余额转冻结，审核失败退回
- [ ] 手续费展示与实际扣款一致
- [ ] 大额提现进入人工审核
- [ ] 提现账户必须与实名一致

### 14.4 安全（P0）

- [ ] 越权测试：A 用户不能查看/操作 B 用户订单
- [ ] 上传 php/jsp 文件被拒
- [ ] 后台无 token 无法访问
- [ ] 敏感接口有签名与限流
- [ ] SQL 注入、XSS 扫描无高危
- [ ] 日志不含明文敏感信息

### 14.5 运营（P1）

- [ ] 优惠券领取/使用/过期/释放全流程正确
- [ ] 会员折扣与券叠加规则符合配置
- [ ] 礼物赠送扣费与分成正确
- [ ] 评价影响评分，差评可申诉
- [ ] 举报可处置，处置有留痕

### 14.6 合规（上线卡点）

- [ ] 实名认证强制
- [ ] 未成年人保护生效
- [ ] 敏感词过滤生效
- [ ] 用户协议/隐私政策可查看
- [ ] 内容审核有记录
- [ ] 资金不形成"二清"（走分账/存管）
- [ ] 无抽奖/竞猜/多级分销

---

## 15. 附录：术语、枚举、字段字典

### 15.1 状态枚举速查

**订单状态**：0 待支付 / 1 待接单 / 2 待开始 / 3 服务中 / 4 待确认 / 5 已完成 / 6 已结算 / 7 已取消 / 8 售后中 / 9 已退款 / 10 已关闭 / 11 仲裁中

**支付状态**：0 未支付 / 1 支付中 / 2 已支付 / 3 支付失败 / 4 已退款 / 5 部分退款

**提现状态**：0 待审核 / 1 审核通过待打款 / 2 打款中 / 3 已到账 / 4 驳回 / 5 打款失败

**审核状态**：0 待审 / 1 通过 / 2 驳回 / 3 复审中

**陪玩在线**：0 离线 / 1 在线接单中 / 2 在线休息 / 3 服务中 / 4 封禁

**用户等级**：V1–V10；**陪玩等级**：L1–L10

**优惠券状态**：0 未使用 / 1 已锁定 / 2 已使用 / 3 已过期

**结算状态**：0 未结算 / 1 结算中 / 2 已结算 / 3 冻结

### 15.2 错误码分段建议

| 段 | 含义 | 示例 |
|---|---|---|
| 0 | 成功 | — |
| 10000–10999 | 通用 | 10001 参数错误、10002 未登录、10003 无权限、10004 频率超限 |
| 20000–20999 | 用户 | 20001 用户不存在、20002 已封禁、20003 未实名 |
| 30000–30999 | 订单 | 30001 订单不存在、30002 状态不允许、30003 已被抢、30004 已超时 |
| 40000–40999 | 资金 | 40001 余额不足、40002 支付失败、40003 重复提交、40004 提现受限 |
| 50000–50999 | 商品 | 50001 已下架、50002 不可接单 |
| 60000–60999 | 内容/审核 | 60001 含敏感词、60002 图片违规 |
| 90000–90999 | 系统 | 90001 系统繁忙、90002 第三方异常 |

### 15.3 常用配置项（后台可改）

| 配置 | 默认 | 说明 |
|---|---|---|
| `order.pay_timeout` | 15 | 分钟 |
| `order.accept_timeout` | 10 | 分钟 |
| `order.auto_confirm_hours` | 24 | 小时 |
| `order.settle_delay_hours` | 24 | 小时 |
| `withdraw.min_amount` | 10 | 元 |
| `withdraw.daily_limit` | 1 | 次/日 |
| `withdraw.fee_rate` | 0 | % |
| `platform.fee_rate` | 0.2 | 默认抽成 |
| `guild.fee_rate` | 0.1 | 公会抽成 |
| `pw.max_concurrent_order` | 1 | 同时进行中上限 |
| `evaluate.expire_days` | 7 | 天 |
| `refund.apply_days` | 7 | 天 |
| `user.daily_im_limit` | 20 | 未下单私聊条数 |

### 15.4 名词对照（对外文案用）

| 内部叫法 | 对外文案（更友好） |
|---|---|
| 陪玩师 | 大神 / 陪玩师 / 玩伴 |
| 派单大厅 | 接单广场 / 抢单大厅 |
| 抽成 | 平台服务费 |
| 仲裁 | 平台介入 |
| 封禁 | 账号受限 |
| 信誉分 | 信用分 |

### 15.5 一句话总结优先级

**先跑通"钱→单→服务→钱"的闭环，再谈增长。**
没有可靠的订单状态机、资金流水和结算对账，任何营销玩法都是在放大事故。

---

> 文档结束。后续如需扩展，建议补充：
> 1. 每个页面的原型图与交互稿（Axure/Figma）；
> 2. 每个接口的详细参数表（可用 OpenAPI/Swagger 生成）；
> 3. 公会端、财务端、客服端的独立操作手册；
> 4. 内容审核 SOP 与话术库；
> 5. 律师出具的协议文本与合规意见书。

