docs: add admin content subscription operations

This commit is contained in:
qingfeng 2026-04-13 20:07:28 +08:00
parent 4a5fa8b914
commit 33b2f2d417
4 changed files with 196 additions and 21 deletions

View File

@ -282,6 +282,14 @@
| 用户管理 | `user:view` | 查看用户列表/详情 |
| 用户管理 | `user:ban` | 封禁/解封用户 |
| 创作者管理 | `creator:view` | 查看创作者列表/详情 |
| 内容管理 | `content:list` | 查看帖子列表/创作者作品列表 |
| 内容管理 | `content:read` | 查看帖子详情 |
| 内容管理 | `content:takedown` | 强制下架帖子 |
| 内容管理 | `content:visibility:edit` | 编辑帖子可见性/订阅档位 |
| 创作者代运营 | `creator:create` | 后台创建创作者 |
| 创作者代运营 | `content:create` | 后台上传媒体 |
| 创作者代运营 | `content:publish:direct` | 后台直接发布内容 |
| 创作者代运营 | `creator:subscription:manage` | 后台配置/强制启用创作者订阅档位 |
| 财务 | `finance:withdrawal:review` | 提现审核(通过/拒绝) |
| 财务 | `finance:withdrawal:pay` | 确认打款 |
| 财务 | `finance:refund` | 退款处理 |

View File

@ -1,12 +1,12 @@
# ADMIN-API-11 内容管理POST-A
> 共 4 个接口POST-A01~04
> 共 6 个接口POST-A01~06
本模块用于运营全量浏览/排查帖子,与 ADMIN-API-02待审核工作流和 ADMIN-API-06数据注水操作职责分离
- **02 内容审核**:只看 `status=1 待审核` 队列
- **06 数据注水**:只看 `content_boost` 表里已注水的记录
- **11 内容管理**(本模块):**全量帖子**(含已上架、已下架、已注水未注水),核心目的是**反向定位疑似自刷量的创作者** —— 通过外显/真实数据并列返回 + 比值排序筛选发现异常帖子
- **11 内容管理**(本模块):**全量帖子**(含已上架、已下架、已注水未注水),核心目的是**全量浏览、排查与运营调整** —— 通过外显/真实数据并列返回 + 比值排序筛选发现异常帖子,并支持调整帖子收费可见性
---
@ -29,6 +29,19 @@
| 3 | rejected | 审核拒绝 |
| 4 | removed | 已下架 |
## 内容可见性模型
> 后台内容管理统一按 `visibility + requiredTierLevel` 表达帖子是否收费:
| visibility | DB值 | requiredTierLevel | 说明 |
|------|------|------|------|
| free | 1 | null | 免费公开,所有用户可见 |
| subscriber | 2 | 1~4 | 订阅可见,具体所需档位由 `requiredTierLevel` 决定 |
| ppv | 3 | null | 单条付费解锁,仅 PPV 系统使用 |
> `requiredTierLevel` 映射关系:`1=junior(初级)`、`2=basic(基础)`、`3=senior(高级)`、`4=supreme(至尊)`。
> `POST-A05` 仅支持在 `free``subscriber` 之间切换,不支持把普通帖子直接改为 `ppv`
---
#### POST-A01 帖子列表(全量)
@ -38,17 +51,17 @@
| 接口路径 | GET /admin/api/v1/posts |
| 接口用途 | 运营全量浏览/排查帖子,支持按比值筛选定位疑似注水号 |
| 权限要求 | 超级管理员 / 内容审核员 / 运营专员(只读:客服) |
| 涉及表 | post, user, profile, content_boost, post_tag, tag, category, category_tag, media |
| 涉及表 | post, user, profile, content_boost, post_tag, tag, category, category_tag, media, subscription_tier |
**接口逻辑:**
1. 校验管理员权限permission_key: `content:list`
2. 拼接 WHERE`creatorId / status / visibility / categoryId / tagId / keyword / startDate / endDate / boosted` 过滤
2. 拼接 WHERE`creatorId / status / visibility / requiredTierLevel / categoryId / tagId / keyword / startDate / endDate / boosted` 过滤
3. 关联 `content_boost`LEFT JOIN取注水值外显字段 = 真实值 + boost值`is_active=1` 时叠加)
4. 计算比值列(`like/view`、`comment/view`),用于筛选与排序
- 当 `view_count = 0` 时比值置 0 避免除零
5. 应用 `minViews / minLikes / minComments / likeViewRatioMin / commentViewRatioMin` 数值下限过滤
6. 按 `sortBy` 排序(白名单见下),默认 `published_at desc`
7. 关联 `user + profile` 取创作者信息、`media` 取封面、`post_tag + tag` 取标签
7. 关联 `user + profile` 取创作者信息、`media` 取封面、`post_tag + tag` 取标签;当 `visibility=subscriber` 时,关联 `subscription_tier` 回填档位名称与价格
8. 分页返回
> **性能提示DBA**`view_count / like_count / comment_count` 已有索引,但 `like/view` 比值类筛选在大数据量下需要在 `post` 表上**新增表达式索引**或**预计算列**(建议预计算列 + 触发器或物化),否则 `WHERE (like_count::float/view_count) > 0.5` 会全表扫。
@ -61,7 +74,8 @@
|------|------|------|------|
| creatorId | string | 否 | 按创作者 userId 筛选(最关键,定位疑似自刷号后看 ta 的所有帖子) |
| status | int | 否 | post.status0/1/2/3/4 |
| visibility | string | 否 | free/junior/basic/senior/supreme |
| visibility | string | 否 | 可见性模式:`free/subscriber/ppv` |
| requiredTierLevel | int | 否 | 订阅所需档位1/2/3/4仅在 `visibility=subscriber` 时生效 |
| categoryId | string | 否 | 分类筛选(通过 `category_tag` JOIN `post_tag`|
| tagId | string | 否 | 单标签筛选 |
| keyword | string | 否 | title / body 模糊匹配 |
@ -86,7 +100,11 @@
| list[].contentPreview | string | 正文截断(前 100 字)|
| list[].coverUrl | url | 封面图URL |
| list[].type | string | 类型post/video |
| list[].visibility | string | 可见性档位 |
| list[].visibility | string | 可见性模式:`free/subscriber/ppv` |
| list[].requiredTierLevel | number\|null | 订阅所需档位等级,`visibility=subscriber` 时返回 1~4 |
| list[].requiredTierKey | string\|null | 订阅所需档位 keyjunior/basic/senior/supreme |
| list[].requiredTierName | string\|null | 当前创作者下该订阅档位的展示名称 |
| list[].requiredTierPrice | number\|null | 当前创作者下该订阅档位价格(分) |
| list[].status | string | 状态draft/reviewing/published/rejected/removed |
| list[].publishedAt | timestamp | 发布时间(已上架才有) |
| list[].createdAt | timestamp | 创建时间 |
@ -126,7 +144,7 @@
| 接口路径 | GET /admin/api/v1/posts/:postId |
| 接口用途 | 查看单条帖子完整信息(含媒体、审核历史、注水历史、举报历史) |
| 权限要求 | 同 POST-A01 |
| 涉及表 | post, user, profile, content_boost, post_media, media, post_tag, tag, post_highlight, post_mention, audit_log, report |
| 涉及表 | post, user, profile, content_boost, post_media, media, post_tag, tag, post_highlight, post_mention, audit_log, report, subscription_tier |
**接口逻辑:**
1. 校验权限permission_key: `content:read`
@ -134,7 +152,7 @@
3. 关联 `user + profile` 取创作者
4. 关联 `post_media + media` 取所有媒体(运营侧拿原图签名 URL不走 visibility 锁)
5. 关联 `post_tag + tag` 取标签、`post_highlight` 取视频章节标记、`post_mention` 取被 @ 用户
6. 关联 `content_boost` 取当前注水状态
6. 关联 `content_boost` 取当前注水状态;当 `visibility=subscriber` 时,关联 `subscription_tier` 回填订阅档位名称与价格
7. 关联 `admin_operation_log` 取该 postId 的所有审核/下架/注水操作历史(按时间倒序)
8. 关联 `report` 取该 postId 的举报记录(仅返回数量与最近 5 条摘要)
9. 组装完整响应
@ -162,8 +180,13 @@
| highlights | array | 视频章节标记 `[{timeOffsetSeconds, label}]` |
| mentions | array | @ 用户 `[{userId, nickname, avatar}]` |
| location | object\|null | 地点 `{name, code}` |
| visibility | string | 可见性模式:`free/subscriber/ppv` |
| requiredTierLevel | number\|null | 订阅所需档位等级,`visibility=subscriber` 时返回 |
| requiredTierKey | string\|null | 订阅所需档位 keyjunior/basic/senior/supreme |
| requiredTierName | string\|null | 当前创作者下该订阅档位展示名 |
| requiredTierPrice | number\|null | 当前创作者下该订阅档位价格(分) |
| operationHistory | array | 操作历史(来自 admin_operation_log |
| operationHistory[].action | string | approve/reject/takedown/set_boost/close_boost |
| operationHistory[].action | string | approve/reject/takedown/set_boost/close_boost/update_post_visibility |
| operationHistory[].operatorId | string | 管理员ID |
| operationHistory[].operatorName | string | 管理员昵称 |
| operationHistory[].reason | string | 备注/原因 |
@ -251,12 +274,139 @@
---
#### POST-A05 编辑帖子可见性
| 项目 | 说明 |
|------|------|
| 接口路径 | PATCH /admin/api/v1/posts/:postId/visibility |
| 接口用途 | 运营调整帖子在 `free``subscriber` 之间的可见性,并可切换订阅档位 |
| 权限要求 | 超级管理员 / 运营专员permission_key: `content:visibility:edit`;当前实现建议额外限制为超级管理员) |
| 涉及表 | post, subscription_tier, admin_operation_log |
**接口逻辑:**
1. 校验权限permission_key: `content:visibility:edit`
2. `SELECT ... FOR UPDATE` 查询帖子主记录,校验帖子存在
3. 校验帖子状态仅允许 `draft / reviewing / published`
4. 按目标可见性执行校验:
- `visibility=free`:清空 `required_tier_level`
- `visibility=subscriber``requiredTierLevel` 必填,且必须在 1~4 内
5. 当目标为 `subscriber` 时,查询创作者的 `subscription_tier`
- 若目标档位未启用,返回 422并提示先调用 `POST-A06` 启用/配置订阅档位
- 若目标档位已启用,则更新 `post.visibility=2`、`post.required_tier_level=目标档位`
6. 写入 `admin_operation_log`action`update_post_visibility`,记录 old/new JSON
7. 若帖子当前为 `published`新可见性立即对详情页、主页内容列表、Feed 锁态生效
8. 返回更新后的帖子可见性摘要
**路径参数:**
| 字段 | 类型 | 必选 | 说明 |
|------|------|------|------|
| postId | string | 是 | 帖子ID |
**请求参数Body**
| 字段 | 类型 | 必选 | 说明 |
|------|------|------|------|
| visibility | string | 是 | 目标可见性:`free/subscriber` |
| requiredTierLevel | number | 条件必填 | `visibility=subscriber` 时必填,取值 1/2/3/4 |
| reason | string | 是 | 操作原因2~200 字,写入审计日志 |
**响应数据:**
| 字段 | 类型 | 说明 |
|------|------|------|
| postId | string | 帖子ID |
| status | string | 帖子当前状态 |
| visibility | string | 当前可见性:`free/subscriber` |
| requiredTierLevel | number\|null | 当前订阅档位等级 |
| requiredTierKey | string\|null | 当前订阅档位 key |
| requiredTierName | string\|null | 当前订阅档位展示名 |
| requiredTierPrice | number\|null | 当前订阅档位价格(分) |
| updatedAt | timestamp | 更新时间 |
**校验返回码:**
- 403权限不足
- 404帖子不存在
- 409帖子状态不允许修改仅 draft/reviewing/published 可改)
- 422`visibility` 非法 / `requiredTierLevel` 缺失或非法 / 目标档位未启用 / 不支持切换到 `ppv`
---
#### POST-A06 后台设置创作者订阅档位
| 项目 | 说明 |
|------|------|
| 接口路径 | PUT /admin/api/v1/creators/:creatorId/subscription/tiers |
| 接口用途 | 后台为创作者配置订阅档位,支持强制启用、补齐缺失档位,并服务于内容收费运营 |
| 权限要求 | 超级管理员 / 运营专员permission_key: `creator:subscription:manage`;当前实现建议额外限制为超级管理员) |
| 涉及表 | user, creator_profile, subscription_tier, user_subscription, admin_operation_log |
**接口逻辑:**
1. 校验权限permission_key: `creator:subscription:manage`
2. 校验 `creatorId` 存在且角色为创作者,同时 `creator_profile` 处于有效状态
3. 校验请求中的档位配置:
- 必须包含 `free` 档,且 `enabled=true`、`price=0`
- 付费档位可配置 `junior/basic/senior/supreme`
- 启用的付费档必须从 1 开始连续,不能跳级
- 已启用付费档价格必须 `> 0`
4. 对 `tiers[]` 逐项 upsert 到 `subscription_tier`
- 已存在则更新 `is_active/price/name/description/permissions`
- 不存在则创建(支持补齐旧创作者缺失的 free / supreme 档位)
5. 统计各档位订阅人数(`user_subscription` 有效状态)
6. 写入 `admin_operation_log`action`admin_set_creator_subscription_tiers`
7. 返回最新档位列表
**路径参数:**
| 字段 | 类型 | 必选 | 说明 |
|------|------|------|------|
| creatorId | string | 是 | 创作者 userId |
**请求参数Body**
| 字段 | 类型 | 必选 | 说明 |
|------|------|------|------|
| tiers | array | 是 | 档位配置数组(含 free 与 1~4 个付费档) |
| tiers[].tier | string | 是 | 档位 key`free/junior/basic/senior/supreme` |
| tiers[].enabled | boolean | 是 | 是否启用 |
| tiers[].price | number | 是 | 月价格(分);`free` 固定为 0 |
| tiers[].name | string | 否 | 档位名称,不传则使用默认名称 |
| tiers[].description | string | 否 | 档位说明 |
| tiers[].permissions | string[] | 是 | 权益枚举:`post/video/dm/ppv_discount/live/custom` |
| reason | string | 是 | 操作原因2~200 字,写入审计日志 |
**响应数据:**
| 字段 | 类型 | 说明 |
|------|------|------|
| creatorId | string | 创作者ID |
| tiers | array | 最新档位配置 |
| tiers[].tierId | string | 档位ID |
| tiers[].tierLevel | number | 档位等级0~4 |
| tiers[].tierKey | string | free/junior/basic/senior/supreme |
| tiers[].name | string | 档位名称 |
| tiers[].price | number | 档位价格(分) |
| tiers[].description | string | 档位说明 |
| tiers[].enabled | boolean | 是否启用 |
| tiers[].permissions | string[] | 权益配置 |
| tiers[].subscriberCount | number | 当前订阅人数 |
| updatedAt | timestamp | 最近更新时间 |
**校验返回码:**
- 403权限不足
- 404创作者不存在
- 409目标用户不是创作者 / 创作者资料不可用
- 422免费档未传 / 免费档未启用 / 价格不合法 / 付费档未连续启用 / 权益枚举非法
---
## 涉及表与字段补充说明
| 表 | 本模块用法 |
|---|---|
| `post` | 主表。需补字段:`takedown_reason VARCHAR(200)`、`takedown_by UUID`、`takedown_at TIMESTAMPTZ` |
| `content_boost` | LEFT JOIN 取注水值;`is_active=1` 时外显值叠加 |
| `subscription_tier` | 读取/配置创作者订阅档位;`visibility=subscriber` 时用于回填档位名称与价格 |
| `admin_operation_log` | 写入 takedown 审计POST-A02 详情读取该帖的全部历史 |
| `report` | POST-A02 详情读取该帖举报概要 |
| `notification` | POST-A04 通知创作者 |

View File

@ -3,7 +3,7 @@
> **版本:** v1.0
> **基于文档:** API-运营后台接口文档-产品视角.md
> **拆分日期:** 2026-03-31
> **接口总数:** 73
> **接口总数:** 75
---
@ -62,7 +62,7 @@
| 08 | [平台配置](ADMIN-API-08-平台配置.md) | 12 | CFG-01~12 |
| 09 | [数据统计](ADMIN-API-09-数据统计.md) | 5 | STATS-01~05 |
| 10 | [客服工具](ADMIN-API-10-客服工具.md) | 3 | CS-01~03 |
| 11 | [内容管理](ADMIN-API-11-内容管理.md) | 4 | POST-A01~04 |
| 11 | [内容管理](ADMIN-API-11-内容管理.md) | 6 | POST-A01~06 |
| 12 | [创作者代运营](ADMIN-API-12-创作者代运营.md) | 5 | OPS-01~05 |
---
@ -157,11 +157,13 @@
- CS-02 查看用户消费记录 — `GET /admin/api/v1/cs/transactions/:userId`
- CS-03 手动发放代币 — `POST /admin/api/v1/cs/issue-coins`
### 11 内容管理(4个)
### 11 内容管理(6个)
- POST-A01 帖子列表(全量) — `GET /admin/api/v1/posts`
- POST-A02 帖子详情 — `GET /admin/api/v1/posts/:postId`
- POST-A03 创作者作品列表 — `GET /admin/api/v1/creators/:creatorId/posts`
- POST-A04 强制下架帖子 — `PATCH /admin/api/v1/posts/:postId/takedown`
- POST-A05 编辑帖子可见性 — `PATCH /admin/api/v1/posts/:postId/visibility`
- POST-A06 后台设置创作者订阅档位 — `PUT /admin/api/v1/creators/:creatorId/subscription/tiers`
### 12 创作者代运营5个
- OPS-01 后台直建创作者 — `POST /admin/api/v1/creators`
@ -206,12 +208,15 @@
| 举报处理 | ✅ | ✅ | — | — | ✅ |
| 用户管理 | ✅ | — | — | ✅ | ✅(只读) |
| 封禁/解封 | ✅ | — | — | ✅ | — |
| 创作者代运营(建号/上传/代发) | ✅ | — | — | ✅ | — |
| 提现审核 | ✅ | — | ✅ | — | — |
| 退款处理 | ✅ | — | ✅ | — | ✅ |
| 充值订单 | ✅ | — | ✅ | — | — |
| 数据注水 | ✅ | — | — | ✅ | — |
| 内容管理(浏览/排查) | ✅ | ✅ | — | ✅ | ✅(只读) |
| 强制下架帖子 | ✅ | ✅ | — | — | — |
| 编辑帖子可见性/订阅档位 | ✅ | — | — | ✅ | — |
| 创作者订阅档位管理 | ✅ | — | — | ✅ | — |
| 推荐位 | ✅ | — | — | ✅ | — |
| 平台配置 | ✅ | — | — | — | — |
| 活动/标签/敏感词 | ✅ | — | — | ✅ | — |

View File

@ -188,7 +188,7 @@ M2 基建期Week 1-4 P1 扩展期Week 5-7
| 使用角色 | 超级管理员 |
| 功能描述 | 查看角色列表、创建自定义角色、编辑角色权限、删除角色 |
| 预置角色 | 超级管理员、内容审核员、财务审核员、运营专员、客服(系统内置,不可编辑删除) |
| 权限分配 | 创建/编辑角色时,按模块勾选权限项共22项权限,权限覆盖:后台账号、内容审核、举报处理、用户管理、创作者管理、财务、数据注水、推荐位、平台配置、数据统计、客服 |
| 权限分配 | 创建/编辑角色时,按模块勾选权限项,权限覆盖:后台账号、内容审核、内容管理、举报处理、用户管理、创作者管理、创作者代运营、财务、数据注水、推荐位、平台配置、数据统计、客服 |
| 列表展示 | 角色名称、角色描述、是否系统内置、权限数量、使用该角色的管理员数量 |
| 业务规则 | ①系统内置角色不可编辑/删除 ②角色下仍有管理员时不可删除(需先调整管理员角色) ③角色名称不能重复 ④新建角色至少分配1项权限 |
| 页面级别 | 角色权限控制到页面级别,与原有体系保持一致 |
@ -324,8 +324,8 @@ M2 基建期Week 1-4 P1 扩展期Week 5-7
| 项目 | 说明 |
|------|------|
| 展示信息 | 基本信息 + 订阅档位设置 + 收入明细(订阅/PPV/打赏分项) + 粉丝增长趋势 + 内容列表 |
| 操作入口 | 封禁、查看聊天记录 |
| 展示信息 | 基本信息 + 订阅档位设置(含启用状态/价格/权益) + 收入明细(订阅/PPV/打赏分项) + 粉丝增长趋势 + 内容列表(含当前可见性/订阅档位) |
| 操作入口 | 封禁、查看聊天记录、配置订阅档位、调整内容订阅可见性 |
#### 4.4.7 创作者代运营
@ -333,13 +333,24 @@ M2 基建期Week 1-4 P1 扩展期Week 5-7
|------|------|
| 功能目标 | 让运营团队在无创作者端参与的情况下,直接完成创作者账号搭建、素材准备与内容代发 |
| 使用角色 | 超级管理员、运营专员(首版实际实现先限制为超级管理员) |
| 能力范围 | ①后台直建创作者 ②为指定创作者上传图片/视频素材 ③为指定创作者新建图文/视频动态 |
| 能力范围 | ①后台直建创作者 ②为指定创作者上传图片/视频素材 ③为指定创作者新建图文/视频动态 ④为指定创作者配置订阅档位并调整已发内容收费状态 |
| 使用入口 | 基于现有“创作者列表 / 创作者详情 / 内容管理”扩展,不新增一级导航 |
| 核心流程 | 先选择或创建创作者,再上传归属该创作者的媒体,最后以该创作者身份代发动态 |
| 核心流程 | 先选择或创建创作者,再上传归属该创作者的媒体,之后可选择直接代发动态,或继续为该创作者配置订阅档位并调整内容可见性 |
| 提交模式 | 支持 `draft / reviewing / published` 三种模式;`published` 代表后台直发,直接写发布时间 |
| 关键规则 | ①后台直建创作者不走创作者申请审核链路 ②上传媒体必须绑定 `ownerCreatorId`,确保媒体归属正确 ③视频动态必须传封面图 ④代发内容的作者、统计、展示、审计都归属目标创作者 |
| 关键规则 | ①后台直建创作者不走创作者申请审核链路 ②上传媒体必须绑定 `ownerCreatorId`,确保媒体归属正确 ③视频动态必须传封面图 ④代发内容的作者、统计、展示、审计都归属目标创作者 ⑤内容收费调整只支持 `free/subscriber`,不支持把普通帖子直接改成 PPV |
| 联调约束 | 视频上传联调建议优先使用 `mp4``webm` 是否可用取决于第三方媒体库实际支持 |
#### 4.4.8 内容订阅运营调整
| 项目 | 说明 |
|------|------|
| 功能目标 | 让运营可以直接把创作者内容在免费与订阅可见之间切换,并在必要时为创作者强制启用订阅档位 |
| 使用角色 | 超级管理员、运营专员(首版实际实现先限制为超级管理员) |
| 使用入口 | 内容管理帖子详情页、创作者详情页的内容列表、创作者详情页的订阅档位设置区 |
| 核心能力 | ①`free -> subscriber` ②`subscriber -> free` ③选择订阅档位 `junior/basic/senior/supreme` ④后台直接启用/补齐创作者订阅档位 |
| 关键规则 | ①仅支持普通帖子/视频动态,不支持改成 PPV ②仅 `draft/reviewing/published` 状态允许修改,`rejected/removed` 不允许修改 ③切回 `free` 时自动清空订阅档位 ④切到 `subscriber` 时必须选择具体档位 ⑤若启用更高档位,低档位必须连续启用 ⑥所有操作必须写审计日志 |
| 后置结果 | 已发布内容修改后详情页、创作者主页内容列表、Feed 锁态与订阅引导须立即按新规则生效 |
---
### 4.5 财务管理
@ -980,9 +991,10 @@ P1-Phase1Week 5-6 P1-Phase2Week 6-7
| 举报处理 | 2 | 1 | 举报列表(含处理操作) |
| 用户管理 | 6 | 4 | 用户列表/详情 + 创作者列表/详情 |
| 创作者代运营 | 5 | 0 | 依附创作者列表/详情扩展,支持直建创作者、上传媒体、代发动态 |
| 内容订阅运营 | 2 | 0 | 依附内容管理/创作者详情扩展,支持编辑帖子可见性与后台配置订阅档位 |
| 提现审核 | 4 | 1 | 提现审核列表(含通过/拒绝/确认打款) |
| 退款处理 | 3 | 2 | 退款处理 + 退款记录 |
| **合计** | **32** | **13** | |
| **合计** | **34** | **13** | |
### 9.3 Phase2 核心交付物Week 6-7
@ -1074,7 +1086,7 @@ P1-Phase1Week 5-6 P1-Phase2Week 6-7
| 风险 | 影响 | 缓解措施 |
|------|------|---------|
| P1排期紧张 | 核心范围已扩展到57个接口+34个页面2-3周交付压力大 | 分3个Phase交付Phase1优先保证日常运营并把创作者代运营收敛为“依附现有页面的扩展能力” |
| P1排期紧张 | 核心范围已扩展到59个接口+34个页面2-3周交付压力大 | 分3个Phase交付Phase1优先保证日常运营并把创作者代运营与内容订阅运营收敛为“依附现有页面的扩展能力” |
| 审核员并发冲突 | 多人同时审核导致重复操作 | 乐观锁机制(审核时校验当前状态) |
| 财务操作安全 | 提现/退款涉及真金白银 | 全部需审计日志 + 原子操作 + 二次确认 |
| 数据统计性能 | 聚合查询在数据量大时可能慢 | 后期引入预聚合/缓存机制 |