# UGC 社区升级 — 开发计划

> 创建日期：2026-03-27
> 最后更新：2026-03-27

---

## 总览

```
P0（最小闭环）
  子女账号独立化 → 作品库+创作流程 → 作品发布+审核 → 作品广场 → 活动联动

P1（社区互动）
  点赞/收藏 → 评论+审核 → 消息通知 → 举报处理

P2（进阶能力）
  关注/粉丝 → 分享海报 → 数据运营后台 → 推荐算法优化
```

---

## P0 — 最小闭环

目标：用户能创作绘本 → 保存到作品库 → 发布到广场 → 审核通过后公开展示 → 从作品库选作品参与活动

### 第一阶段：基础设施（子女账号独立化 + 数据库）

这是所有后续功能的基础，必须先完成。

#### P0-1. 数据库设计与迁移

**改动范围**：Prisma Schema + 迁移脚本

新增表：
```
user_parent_child       — 家长-子女管理关系
user_works              — 用户作品主表
user_work_pages         — 绘本分页内容（图片+文字+配音）
work_tags               — 标签表
work_tag_relations      — 作品-标签关联
content_review_logs     — 审核操作日志
```

修改表：
```
users                   — 新增字段：user_type(adult/child)、parent_control_mode
contest_works           — 新增字段：user_work_id（关联用户作品库）
```

数据迁移：
```
children 表现有数据 → 迁移为独立 User 记录
  - 为每个 child 创建 User（归属 public 租户，user_source='child_migrated'）
  - 创建 user_parent_child 关联记录
  - 现有 contest_registration 中 child_id 关联到新的 User
```

**依赖**：无
**产出**：数据库 Schema 变更 + 迁移脚本 + 验证通过

---

#### P0-2. 子女账号独立化（后端）

**改动范围**：auth 模块 + users 模块 + public 模块

```
后端 API：
├── POST   /api/public/children/create-account   — 家长为子女创建独立账号
├── GET    /api/public/children/accounts          — 家长查看已创建的子女账号列表
├── POST   /api/public/auth/switch-child          — 家长切换到子女身份（签发子女 JWT）
├── POST   /api/public/auth/login                 — 修改：支持子女独立登录
├── GET    /api/public/mine/parent-info           — 子女查看自己的家长信息
└── PUT    /api/public/children/accounts/:id      — 家长修改子女账号信息
```

JWT 改造：
```
现有 JWT payload：{ sub, username, tenantId }
新增字段：{ userType: 'adult'|'child', parentUserId?: number }
子女登录或家长切换后，签发子女身份的 JWT
```

**依赖**：P0-1
**产出**：子女可独立登录、家长可切换子女身份

---

#### P0-3. 子女账号独立化（前端）

**改动范围**：用户端 H5 页面

```
前端改动：
├── /p/login              — 登录页支持子女独立登录
├── /p/mine               — 个人中心增加"切换身份"入口（家长可切换到子女）
├── /p/mine/children      — 改造：从"子女信息管理"变为"子女账号管理"（创建账号/设置密码/管控模式）
├── 全局状态              — authStore 支持当前身份（家长/子女）切换
└── 活动报名流程          — 改造：子女身份下直接报名（不再需要"选择参与者"步骤）
```

**依赖**：P0-2
**产出**：家长可为子女创建账号、切换身份；子女可独立登录

---

### 第二阶段：创作与作品库

#### P0-4. 作品库（后端）

**改动范围**：新增 user-works 模块

```
后端 API：
├── POST   /api/public/works                — 创建作品（AI生成完毕后调用，保存到作品库）
├── GET    /api/public/works                — 我的作品列表（支持状态筛选：draft/published/private等）
├── GET    /api/public/works/:id            — 作品详情（含分页内容）
├── PUT    /api/public/works/:id            — 更新作品信息（标题/标签/可见性）
├── DELETE /api/public/works/:id            — 删除作品（软删除）
├── POST   /api/public/works/:id/publish    — 发布作品（进入审核队列）
├── GET    /api/public/works/:id/pages      — 获取绘本分页数据
└── POST   /api/public/works/:id/pages      — 保存绘本分页数据（AI生成后写入）
```

**依赖**：P0-1
**产出**：作品的 CRUD + 发布接口

---

#### P0-5. AI 创作流程（后端）

**改动范围**：新增 creation 模块，对接同事的 AI 能力

```
后端 API：
├── POST   /api/public/creation/submit      — 提交创作请求（上传画作 + 语音/文字描述）
├── GET    /api/public/creation/:id/status   — 查询生成进度
├── GET    /api/public/creation/:id/result   — 获取生成结果
└── GET    /api/public/creation/history      — 创作历史
```

核心流程：
```
1. 前端上传画作图片到 COS，得到 imageUrl
2. 前端上传语音到 COS（或直接传文字描述）
3. 调用 /creation/submit 提交
4. 后端调用同事的 AI 服务，异步生成
5. 前端轮询 /creation/:id/status 等待生成完成
6. 生成完成后，后端自动创建 UserWork + UserWorkPages
7. 前端获取结果，跳转到作品详情页
```

**依赖**：P0-4 + 同事 AI 接口
**产出**：创作→生成→保存到作品库的完整链路

---

#### P0-6. 创作流程 + 作品库（前端）

**改动范围**：用户端 H5 新增页面

```
新增页面：
├── /p/create                 — 创作入口页
├── /p/create/upload          — Step 1：上传画作（拍照/相册）
├── /p/create/describe        — Step 2：语音/文字描述构思
├── /p/create/generating      — Step 3：生成中（等待页，展示进度）
├── /p/create/result/:id      — Step 4：生成完毕，预览绘本
├── /p/works                  — 我的作品库列表
├── /p/works/:id              — 作品详情（翻页阅读绘本）
└── /p/works/:id/publish      — 发布设置（标题/标签/可见性）
```

**依赖**：P0-5
**产出**：用户可在 H5 上完成创作→预览→保存→发布的全流程

---

### 第三阶段：作品广场与标签

#### P0-7. 标签体系（后端）

**改动范围**：新增 tags 模块

```
后端 API：
├── GET    /api/public/tags              — 获取标签列表（用户端选标签用）
├── GET    /api/public/tags/hot          — 热门标签
├── POST   /api/tags                     — 创建标签（超管端）
├── PUT    /api/tags/:id                 — 编辑标签（超管端）
├── DELETE /api/tags/:id                 — 删除标签（超管端）
└── GET    /api/tags                     — 标签管理列表（超管端）
```

**依赖**：P0-1
**产出**：标签 CRUD + 用户端标签列表

---

#### P0-8. 作品广场（后端）

**改动范围**：public 模块扩展

```
后端 API：
├── GET    /api/public/gallery           — 作品广场列表（已审核通过的公开作品，分页+筛选）
│   参数：page, pageSize, tagId, category, sortBy(latest/hot), keyword
├── GET    /api/public/gallery/:id       — 广场作品详情（含翻页数据，增加浏览量）
└── GET    /api/public/users/:id/works   — 某用户的公开作品列表（个人主页用）
```

**依赖**：P0-4 + P0-7
**产出**：作品广场查询接口

---

#### P0-9. 作品广场 + 标签管理（前端）

**改动范围**：用户端 + 超管端

```
用户端新增/改造页面：
├── /p/（首页改造）        — 从活动大厅改为作品推荐流（瀑布流/卡片网格）
│   ├── 搜索栏
│   ├── 热门标签横滑
│   └── 作品卡片列表（封面+标题+作者+点赞数）
├── /p/gallery/:id          — 广场作品详情页（翻页阅读+作者信息）
├── /p/user/:id             — 用户公开主页（头像/昵称/作品列表）
└── 底部 Tab 改造           — 从现有 3 Tab 改为 5 Tab（首页/创作/活动/消息/我的）

超管端新增页面：
├── 标签管理页              — 标签列表 + 新增/编辑/删除 + 使用统计
```

**依赖**：P0-6 + P0-8
**产出**：用户可浏览作品广场、查看他人作品、搜索和按标签筛选

---

### 第四阶段：内容审核 + 活动联动

#### P0-10. 内容审核（后端）

**改动范围**：新增 content-review 模块

```
后端 API：
├── GET    /api/content-review/works            — 待审核作品队列
├── GET    /api/content-review/works/stats       — 审核统计
├── GET    /api/content-review/works/:id         — 审核详情（含绘本内容预览）
├── POST   /api/content-review/works/:id/approve — 通过
├── POST   /api/content-review/works/:id/reject  — 拒绝（含拒绝原因）
└── GET    /api/content-review/logs              — 审核日志
```

**依赖**：P0-4
**产出**：审核 API 完整链路

---

#### P0-11. 内容审核 + 作品管理（超管端前端）

**改动范围**：超管端新增页面

```
超管端新增页面：
├── 作品审核页              — 统计卡片 + 审核队列列表 + 审核详情 Drawer（绘本翻页预览+通过/拒绝）
├── 作品管理页              — 全平台已发布作品列表 + 筛选 + 下架/置顶
└── 超管端菜单              — 新增"内容管理"一级菜单
```

**依赖**：P0-10
**产出**：超管可审核作品、管理已发布作品

---

#### P0-12. 活动提交联动

**改动范围**：活动报名+提交流程改造

```
后端改动：
├── POST   /api/public/activities/:id/submit-work  — 改造：支持从作品库选择作品
│   新增参数：userWorkId（用户作品ID）
│   逻辑：根据 userWorkId 复制快照到 contest_works
└── contest_works 表          — 新增 user_work_id 字段

前端改动：
├── 活动详情页 提交作品流程    — 改造：弹出作品库选择器，从"我的作品库"选择
├── 作品库选择器组件           — 网格展示可选作品（已发布+私密均可选），确认后提交
```

**依赖**：P0-4 + P0-6 + 现有活动模块
**产出**：用户可从作品库选作品参与活动

---

## P0 任务依赖关系

```
P0-1（数据库）
  ├── P0-2（子女账号后端）→ P0-3（子女账号前端）
  ├── P0-4（作品库后端）→ P0-5（AI创作后端）→ P0-6（创作+作品库前端）
  ├── P0-7（标签后端）
  └── P0-10（审核后端）→ P0-11（审核前端）

P0-6 + P0-7 + P0-8（广场后端）→ P0-9（广场前端）
P0-4 + P0-6 → P0-12（活动联动）
```

可并行的工作：
- P0-2（子女账号）和 P0-4（作品库）可并行开发
- P0-7（标签）和 P0-5（AI创作）可并行
- P0-10（审核后端）在 P0-4 完成后即可开始，与 P0-5/P0-6 并行

---

## P1 — 社区互动

目标：用户可对作品点赞、收藏、评论；有消息通知；可举报不当内容。

#### P1-1. 点赞/收藏（后端+前端）

```
后端 API：
├── POST   /api/public/works/:id/like       — 点赞/取消点赞
├── POST   /api/public/works/:id/favorite   — 收藏/取消收藏
├── GET    /api/public/mine/favorites        — 我的收藏列表

前端改动：
├── 广场作品详情页     — 增加点赞/收藏按钮和计数
├── 作品卡片组件       — 显示点赞数
├── /p/mine/favorites  — 我的收藏页面
```

**依赖**：P0 完成
**数据库**：user_work_likes + user_work_favorites

---

#### P1-2. 评论（后端+前端）

```
后端 API：
├── GET    /api/public/works/:id/comments     — 作品评论列表
├── POST   /api/public/works/:id/comments     — 发表评论（进入审核队列）
├── DELETE /api/public/comments/:id            — 删除自己的评论

超管端 API：
├── GET    /api/content-review/comments        — 评论审核队列
├── GET    /api/content-review/comments/stats  — 评论审核统计
├── POST   /api/content-review/comments/:id/approve — 通过
├── POST   /api/content-review/comments/:id/reject  — 拒绝

前端改动：
├── 作品详情页         — 评论区（预设评语选择 + 简短文字输入）
├── 超管端             — 新增评论审核页面
```

**依赖**：P0 完成
**数据库**：user_work_comments

---

#### P1-3. 消息通知（后端+前端）

```
后端 API：
├── GET    /api/public/notifications           — 通知列表（分类：互动/系统/活动）
├── POST   /api/public/notifications/read      — 标记已读
├── GET    /api/public/notifications/unread-count — 未读数

通知触发场景：
├── 作品被点赞/收藏/评论  → 互动通知
├── 作品审核通过/拒绝      → 系统通知
├── 活动报名审核结果        → 活动通知

前端改动：
├── /p/notifications       — 消息中心页面
├── 底部 Tab "消息"        — 红点未读数
```

**依赖**：P1-1 + P1-2
**数据库**：user_notifications

---

#### P1-4. 举报处理（后端+前端）

```
后端 API：
├── POST   /api/public/reports                 — 提交举报（作品/评论/用户）
├── GET    /api/content-review/reports          — 举报队列（超管端）
├── GET    /api/content-review/reports/stats    — 举报统计
├── POST   /api/content-review/reports/:id/handle — 处理举报

前端改动：
├── 作品详情页/评论      — 举报入口（举报原因选择）
├── 超管端               — 新增举报处理页面
```

**依赖**：P0 完成
**数据库**：user_work_reports

---

## P2 — 进阶能力

#### P2-1. 关注/粉丝体系

```
├── POST   /api/public/users/:id/follow      — 关注/取消关注
├── GET    /api/public/mine/following          — 我的关注列表
├── GET    /api/public/mine/followers          — 我的粉丝列表
├── GET    /api/public/users/:id/followers     — 某人的粉丝列表
├── 首页增加"关注"Tab    — 只看关注人的作品
```

**数据库**：user_follows

---

#### P2-2. 分享

```
├── POST   /api/public/works/:id/share        — 生成分享链接/海报
├── 作品详情页增加分享按钮 — 生成海报图 + 复制链接
├── 支持微信/朋友圈分享
```

**数据库**：user_work_shares

---

#### P2-3. 数据运营后台（超管端）

```
├── 内容数据看板         — 日/周/月发布量、互动量、增长趋势
├── 用户数据看板         — 活跃用户、创作者分层、留存率
├── 推荐配置             — 精选推荐/Banner/专题管理
├── 热门榜单配置         — 配置榜单规则
```

---

#### P2-4. 创作能力增强

```
├── 绘本微调             — 生成后逐页修改文字/重新生成单页插图
├── 创作模板             — 提供主题模板（节日主题/科普主题/童话主题）
├── 多人合创             — 多个孩子协作创作一本绘本
```

---

## 交付时间线建议

| 阶段 | 内容 | 建议周期 |
|------|------|---------|
| P0 第一阶段 | 数据库 + 子女账号独立化 | 1 周 |
| P0 第二阶段 | 作品库 + AI 创作流程 | 1.5 周 |
| P0 第三阶段 | 作品广场 + 标签体系 | 1 周 |
| P0 第四阶段 | 内容审核 + 活动联动 | 1 周 |
| P0 联调测试 | 全链路联调 + Bug 修复 | 0.5 周 |
| **P0 合计** | | **5 周** |
| P1 | 点赞/收藏/评论/通知/举报 | 3 周 |
| P2 | 关注/分享/运营后台/创作增强 | 按需排期 |
