docs(api): 移除 /app/creator/works 与 /app/creator/stats 的 C 端定义

创作者中心(工作台 / 作品管理 / 数据看板)由 Web 端承载,创作者登录后台管理使用
(见 api-phase1.md §2.10),App 客户端不提供创作者中心。因此契约 §1.9 去掉这两条,
只保留「创作者入驻申请 + 启动配置 + 系统公告」;§1.9 标题与说明同步修正,
apply 幂等表里"已通过"一行改为指向 Web 端。

为什么要改:原定义要求 App 侧再实现一份「创作者数据看板」,虽与后台 07 看板同口径,
但代码完全独立,两份长期必然漂移(后台数字与创作者看到的数字对不上是信任问题)。
按产品口径创作者中心不上 App,这份重复实现没有存在意义,移除即从根上消除漂移风险,
也避免前端照旧契约开发后返工。
This commit is contained in:
jianghaifeng committed 2026-10-16 15:14:34 +08:00
1 parent 14b5e4137f
commit bb219203bc
1 file changed
+9 -36
+9 -36
View File
@@ -260,16 +260,19 @@ B1-2 的退款/拒付复验依赖它。服务端凭据(`packageName` + service
服务端按 `(platform, storeTransactionId)` 识别"权益已发过",**返回既有订单、不重复发币**; 服务端按 `(platform, storeTransactionId)` 识别"权益已发过",**返回既有订单、不重复发币**;
若商店侧有购买而本地没有订单(例如换机前没同步),会**按校验结果补单落库**再发放,不需要人工介入。 若商店侧有购买而本地没有订单(例如换机前没同步),会**按校验结果补单落库**再发放,不需要人工介入。
### 1.9 创作者(C 端,已实现) ### 1.9 创作者入驻、启动配置与公告(C 端,已实现)
> 说明:本节原来把 `/app/orders`、`/app/wallet`、`/app/episodes/{id}/unlock` 也列在这里, > 说明 1:本节原来把 `/app/orders`、`/app/wallet`、`/app/episodes/{id}/unlock` 也列在这里,
> 那三条**属「金币与订单」,已在 §1.8 实现并冻结**,因此已从本节移出(本节只讲创作者 + 启动配置 + 公告)。 > 那三条**属「金币与订单」,已在 §1.8 实现并冻结**,因此已从本节移出。
>
> 说明 2(**口径变更 2026-10-16**):**创作者中心(工作台 / 作品管理 / 数据看板)由 Web 端承载** ——
> 创作者登录后台管理使用,见 §2.10;**App 客户端不提供创作者中心**。
> 因此本节**已移除** `GET /app/creator/works`、`GET /app/creator/stats` 两条原定义。
> C 端只保留「入驻申请」+「启动配置」+「系统公告」,下面三条即全部。
| 方法 | 路径 | 鉴权 | 说明 | | 方法 | 路径 | 鉴权 | 说明 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| POST | `/app/creator/apply` | 登录 | 创作者入驻申请(**幂等**:重复提交返回当前状态,不重复建档) | | POST | `/app/creator/apply` | 登录 | 创作者入驻申请(**幂等**:重复提交返回当前状态,不重复建档) |
| GET | `/app/creator/works` | 登录 | 我的作品与审核状态(**非生效创作者直接报错**,不返回空列表) |
| GET | `/app/creator/stats` | 登录 | 创作者数据看板(与后台 07 看板同口径,只读、仅本人作品) |
| GET | `/app/config` | **匿名** | 启动配置(协议版本、最低版本、开关;**只下发白名单键**) | | GET | `/app/config` | **匿名** | 启动配置(协议版本、最低版本、开关;**只下发白名单键**) |
| GET | `/app/notices` | **匿名** | 系统公告(无数据返回空列表,不是 404) | | GET | `/app/notices` | **匿名** | 系统公告(无数据返回空列表,不是 404) |
@@ -355,40 +358,10 @@ GET /app/notices?pageIndex=1&pageSize=20
| --- | --- | | --- | --- |
| 首次申请 | 建档,`status=pending`,返回 `{id, code, status, statusText, auditNote, appliedAt}` | | 首次申请 | 建档,`status=pending`,返回 `{id, code, status, statusText, auditNote, appliedAt}` |
| 已申请(pending) | **返回当前状态**,不重复建档、不改动已有记录 | | 已申请(pending) | **返回当前状态**,不重复建档、不改动已有记录 |
| 已通过(approved) | 返回 `status=approved`(客户端据此直接进创作者中心) | | 已通过(approved) | 返回 `status=approved`(**创作者工作台在 Web 端**,见 §2.10;App 端只提示"已通过,请到创作者后台使用") |
| 被驳回 / 冻结 | 返回当前状态与 `auditNote`(是否允许重新申请由运营在后台处理,本期不做二次申请) | | 被驳回 / 冻结 | 返回当前状态与 `auditNote`(是否允许重新申请由运营在后台处理,本期不做二次申请) |
| 并发重复提交 | 唯一索引兜底:捕获冲突后**读回已有记录返回**,不报 500 | | 并发重复提交 | 唯一索引兜底:捕获冲突后**读回已有记录返回**,不报 500 |
#### 1.9.4 `GET /app/creator/works`(登录)
```
GET /app/creator/works?pageIndex=1&pageSize=10&keyword=&status=
```
分页与筛选口径**与管理端 `/admin/creator-center/dramas/page` 完全一致**(同一套查询与 VO 形状:
`id/code/title/subtitle/genre/description/cover/trailerUrl/language/status/statusText/episodes/views/updatedAt`)。
**归属与鉴权**:`creator.user_id = 当前登录的 C 端账号`,**接口不接收 creatorId**;
所有查询都收敛到"我的作品",因此天然不会返回他人作品。
**非生效创作者必须报错(不返回空数组)**:
| 状态 | `code` | 提示 |
| --- | --- | --- |
| 未申请 | `200007` | 尚未提交创作者入驻申请 |
| `pending` | `200007` | 入驻申请审核中,请耐心等待 |
| `rejected` | `200007` | 入驻申请未通过:{auditNote} |
| `frozen` | `200007` | 创作者账号已冻结,请联系运营 |
> `200007 CREATOR_NOT_ACTIVE`:C 端专用「当前账号不是生效中的创作者」。
> 与后台的 `200004 CREATOR_NOT_BOUND`(当前账号未绑定创作者主体)区分开,客户端据此决定"引导申请"还是"提示等待"。
#### 1.9.5 `GET /app/creator/stats`(登录)
**指标口径与后台 07 创作者中心数据看板完全一致**(实现上共用同一份计算:`CreatorDashboardQueryService`),
字段与语义见 §2.7 创作者数据看板说明;**只读、且只统计本人作品**。
非生效创作者同样返回 `200007`。
## 2. 后台管理接口(/admin/**) ## 2. 后台管理接口(/admin/**)
### 2.1 认证与系统(已实现) ### 2.1 认证与系统(已实现)