library-picturebook-activity/docs/design/public/ugc-development-plan.md
aid 418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理SOP体系建立,docs目录重组
- 统一用户管理:跨租户全局视角,合并用户管理+公众用户
- 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作)
- 菜单精简:移除评委管理/评审规则/通知管理
- Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一

二、UGC绘本创作社区P0
- 数据库:10张新表(user_works/user_work_pages/work_tags等)
- 子女账号独立化:Child升级为独立User,家长切换+独立登录
- 用户作品库:CRUD+发布审核,8个API
- AI创作流程:提交→生成→保存到作品库,4个API
- 作品广场:首页改造为推荐流,标签+搜索+排序
- 内容审核(超管端):作品审核+作品管理+标签管理
- 活动联动:WorkSelector作品选择器
- 布局改造:底部5Tab(发现/创作/活动/作品库/我的)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:25 +08:00

469 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-5AI创作后端→ 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-5AI创作可并行
- 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 | 关注/分享/运营后台/创作增强 | 按需排期 |