library-picturebook-activity/docs/project/05-development-plan.md
En 7bc8c10d9a feat: 系统品牌更名为"智创未来"及相关配置调整
- 前后端所有"乐绘世界"统一更名为"智创未来"
- 生产环境乐读派API地址更新为公网地址
- 公众端登录页调整用户名/密码字段显示逻辑
- 同步更新文档、测试用例、主题样式中的品牌名称

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 19:30:26 +08:00

17 KiB
Raw Blame History

开发计划

1. 总体时间线

  • 项目启动2026-03-24
  • 目标上线2026-04-14
  • 总工期3 周15 个工作日)
  • 开发方式Claude 辅助全栈开发

2. 一期开发计划(三周冲刺)

第一周03-24 ~ 03-28地基改造

日期 任务 产出 状态
D1 (03-24) 需求梳理、设计文档沉淀、UI 主题改造 设计文档、UI 新主题 已完成
D2 (03-25) 数据库改造users/tenants/registrations/contests 表变更,新建 children 表Prisma Schema 同步 数据库迁移脚本 已完成
D3 (03-26) 后端:公众注册/登录 API、子女 CRUD API 公众端 Auth + Children API 已完成
D4 (03-27) 后端:公众端活动列表/详情 API、报名 API、我的报名/作品 API Public Activities + Registration API 已完成
D5 (03-28) 前端公众端基础框架、路由、布局H5 响应式)、注册/登录页、活动大厅、个人中心 公众端框架 + 核心页面 已完成

第二周03-31 ~ 04-04核心业务流程

日期 任务 产出 状态
D6-10 前端:活动详情页(含报名弹窗)、子女管理页、我的报名页、我的作品页 公众端全部页面 已完成

第三周04-07 ~ 04-11管理端适配 + 联调

日期 任务 产出 状态
D11-12 管理端:活动创建增加可见范围、租户类型字段、报名记录展示参与者类型和子女信息 管理端改造 已完成
D13 广东省图初始化:创建租户(gdlib)、管理员(admin/admin@gdlib)、权限、菜单 初始化数据 已完成
D14 超管端菜单重构 + 公众用户管理 + 评委端修复 各端功能完善 已完成
D15 (04-11) Bug 修复、UI 微调、部署上线 生产环境上线

缓冲时间04-12 ~ 04-14 留作紧急修复和优化。


3. 已完成工作详细记录

3.1 系统改名与 UI 改造D1

文案替换:

  • "比赛/赛事" → "活动"(前后端 46 个文件 + 数据库)
  • "个人赛/团队赛" → "个人参与/团队参与"25 个文件 + 数据库)
  • "赛果" → "成果"25 个文件 + 数据库菜单/权限)
  • 系统名称 → "智创未来"
  • Logo 替换为 LeSingle 品牌标志

UI 主题全面改造6 个核心文件):

  • 主色调:#0958d9 蓝 → #6366F1 Creative Indigo
  • 强调色:#EC4899 玫瑰粉
  • 字体:系统默认 → NunitoGoogle Fonts
  • 圆角6-8px → 10-16px
  • 阴影:灰色 → 靛蓝色调
  • 页面背景:#f5f7fa#F8F7FC 暖紫
  • 侧边栏:纯白 → 暖白渐变
  • 全局组件覆盖:按钮、卡片、表格、标签、输入框、模态框等

3.2 数据库改造D2

Prisma Schema 变更:

变更 默认值
tenants +tenant_type 'other'
users +phone(unique), wx_openid(unique), wx_unionid, user_source, city, birthday user_source='admin_created'
t_contest +visibility 'designated'
t_contest_registration +participant_type, child_id participant_type='self'
children 新建表 -

初始化数据:

  • 公众租户code=public, tenantId=8, type=platform
  • 公众用户角色code=public_user, 4 个权限
  • 广东省图租户code=gdlib, tenantId=9, type=library
  • 广东省图管理员admin/admin@gdlib, 21 个权限, 角色 tenant_admin
  • 超级租户类型更新:platform
  • 学校端类型更新:school

3.3 公众端后端 APID3-D4

新增模块 backend/src/public/

文件 说明
public.module.ts 模块定义
public.controller.ts 16 个 API 端点
public.service.ts 完整业务逻辑
dto/register.dto.ts 注册/登录 DTO
dto/child.dto.ts 子女 CRUD DTO
dto/registration.dto.ts 活动报名 DTO

API 端点清单16 个):

方法 路径 认证 说明
POST /api/public/auth/register 公开 公众注册(自动登录)
POST /api/public/auth/login 公开 公众登录
GET /api/public/mine/profile 需登录 个人信息+子女
PUT /api/public/mine/profile 需登录 更新个人信息
GET /api/public/mine/children 需登录 子女列表
POST /api/public/mine/children 需登录 添加子女
GET /api/public/mine/children/:id 需登录 子女详情
PUT /api/public/mine/children/:id 需登录 编辑子女
DELETE /api/public/mine/children/:id 需登录 删除子女(软删除)
POST /api/public/activities/:id/register 需登录 报名活动(选择参与者)
GET /api/public/mine/registrations 需登录 我的报名列表
GET /api/public/mine/works 需登录 我的作品列表
GET /api/public/activities 公开 公开活动列表
GET /api/public/activities/:id 公开 活动详情
GET /api/public/users 需登录 公众用户列表(超管用)
GET /api/public/users/:id 需登录 公众用户详情(超管用)

架构决策: 创建 public 系统租户code=public承载公众用户避免修改现有认证链路JWT token 格式完全兼容。

3.4 公众端前端 H5D5-D10

新增文件:

文件 路由 说明
layouts/PublicLayout.vue /p 公众端布局(顶部导航+底部TabBar+响应式)
views/public/Login.vue /p/login 登录/注册合一页面
views/public/Activities.vue /p/activities 活动大厅(卡片网格+搜索+分页)
views/public/ActivityDetail.vue /p/activities/:id 活动详情(报名弹窗+选择参与者)
views/public/mine/Index.vue /p/mine 个人中心
views/public/mine/Registrations.vue /p/mine/registrations 我的报名列表
views/public/mine/Works.vue /p/mine/works 我的作品网格
views/public/mine/Children.vue /p/mine/children 子女管理CRUD
api/public.ts - 公众端 API 封装

路由守卫: /p/ 前缀路由直接放行,不走管理端认证逻辑。

3.5 管理端适配D11-D12

活动创建页Create.vue

  • 新增"可见范围"字段:公开 / 指定机构 / 仅内部
  • 后端 DTO 同步新增 Visibility 枚举

租户管理页tenants/Index.vue

  • 新增"租户类型"下拉选择和表格列
  • 类型标签:图书馆(紫)/幼儿园(绿)/学校(蓝)/社会机构(橙)/其他

报名记录页registrations/Records.vue

  • 个人参与和团队参与表格新增"参与方式"列
  • 显示"本人参与"(蓝色标签) 或 "代子女报名"(绿色标签)+子女姓名
  • 后端查询 include child 关联数据

机构管理端菜单清理(广东省图 gdlib

  • 移除不应有的平台级菜单:菜单管理、数据字典、系统配置、权限管理、租户管理
  • 保留:用户管理、角色管理、日志记录

3.6 超管端菜单重构D14

菜单结构从 2 个一级 → 4 个一级:

重构前 重构后
活动管理8 项) 活动管理8 项,不变)
系统管理8 项混杂) 拆分为 ↓
└ 租户管理 机构管理 → 机构列表(改名)
└ 用户管理 + 角色管理 用户中心 → 公众用户(🆕) + 平台用户 + 角色管理
└ 菜单/权限/字典/配置/日志 系统设置 → 5 个配置类功能

新增公众用户管理页面(system/public-users/Index.vue

  • 自注册用户列表(搜索、分页)
  • 用户信息列:头像+昵称+用户名
  • 统计列:子女数、报名次数
  • 详情抽屉:基本信息 + 子女列表 + 近期报名记录

3.7 评委端修复D14

问题: 评委端前后端代码完整但数据库菜单缺失,导致评委登录后看不到任何功能。

修复内容:

项目 改动
数据库菜单 创建"我的评审"一级菜单 + "评审任务""预设评语"子菜单,分配给评委租户
权限 添加 review:score 权限并分配给评委角色
路由 新增评审详情路由 activities/review/:idReviewDetail.vue
Bug 修复 "活动活动" → "我的评审"6 个文件,原"赛事活动"批量替换导致的 bug
登录页 开发模式快捷入口增加"评委端"标签

评委端最终菜单:

评委端 (/judge/login, admin/admin@judge)
└── 我的评审
    ├── 评审任务(活动列表+进度 → 进入评审工作台)
    └── 预设评语(评语模板管理+跨活动同步)

3.8 登录页改造D14

  • 快捷切换标签:从旧的 5 个学校端 → 新的 3 个(平台超管/广东省图/评委端)
  • 副标题:显示当前机构名 + "管理端登录"
  • 移除租户编码手动输入框
  • 新增"参与活动?前往公众端"链接

4. 当前各端状态总览

入口 账号 功能状态
公众端 /p/activities 自主注册 活动浏览、注册登录、子女管理、报名、个人中心
广东省图管理端 /gdlib/login admin/admin@gdlib 活动管理 8 个功能 + 系统管理 3 个功能
超管端 /super/login admin/admin@super 活动管理 + 机构管理 + 用户中心(含公众用户) + 系统设置
评委端 /judge/login admin/admin@judge 评审任务 + 预设评语 + 评审工作台

5. 二期功能规划

功能 预估工期 负责人 依赖
手机号+验证码登录 3天 同事 腾讯云短信服务开通、签名模板审批
微信扫码登录Web 3天 同事 微信开放平台网站应用审批
微信授权登录H5 2天 同事 微信公众号认证、授权域名配置
一号多身份切换 5天 Claude user_identities 表、身份切换 UI
多机构联合举办 3天 Claude contest_co_organizers 表、权限配置
超管运营仪表盘 3天 Claude 活动/用户/报名统计图表

6. 外部依赖清单

一期需要(上线前)

依赖项 状态 说明
域名和 HTTPS 待确认 H5 页面需要 HTTPS
服务器部署环境 待确认 生产环境服务器配置
广东省图活动信息 待获取 活动名称、时间、规则、封面等
广东省图 Logo 待获取 用于活动页面展示主办方标识

二期需要

依赖项 状态 说明
腾讯云短信服务 待开通 短信签名、验证码模板审批约3-5天
微信开放平台账号 待注册 需要企业资质网站应用审批约7天
微信公众号 待确认 H5 微信授权登录需要认证服务号

7. 技术风险

风险 等级 应对措施
公众端性能(全国用户) 活动列表接口加缓存、分页控制
少儿信息安全 子女姓名等敏感信息在数据库层面加密存储
文件上传(作品)并发 使用现有腾讯云 COS 直传方案

8. 验收标准

一期上线验收清单

  • 公众用户可以通过 H5 页面注册账号
  • 公众用户可以浏览公开活动列表和详情
  • 家长可以添加/管理子女信息
  • 用户可以为自己或子女报名活动
  • 用户可以在提交阶段上传作品
  • 个人中心可以查看所有报名和作品记录
  • 广东省图管理员可以创建"公开"可见范围的活动
  • 广东省图管理员可以查看报名记录并区分参与者类型
  • H5 页面在手机浏览器和微信内置浏览器中正常显示(待真机测试)
  • 全流程走通:注册 → 浏览 → 报名 → 提交 → 审核 → 成果发布(待联调)
  • 超管端可以查看公众注册用户和子女信息
  • 评委端可以看到评审任务和预设评语功能
  • 定向推送活动按城市/年龄过滤
  • 超管端活动监管只读(无创建/编辑/删除按钮)
  • 年龄校验在报名时生效

9. Day 1 完整工作记录2026-03-24

9.1 完成的设计工作

项目 说明
需求分析 广东省图项目需求、用户角色、参与者模型(家长-子女)、一号多身份方案
系统架构 多端架构(公众端/机构端/评委端/超管端、公众租户方案、路由设计、API 设计
数据库设计 5 张表变更 + 1 张新表children含完整字段定义和 ER 关系
功能模块设计 9 个功能模块的详细交互设计
各端定位分析 超管端监管视角 vs 机构端操作视角、评委端工作流、公众端参与流程
术语对照 比赛→活动、个人赛→个人参与、赛果→成果
测试方案 188 条测试用例覆盖数据库/后端/前端/全链路

9.2 完成的开发工作

类别 工作量 说明
UI 主题改造 6 个核心文件 Nunito 字体、Creative Indigo 主色、全组件圆角化
文案替换 71 个文件 + 数据库 比赛→活动、个人赛→个人参与、赛果→成果
数据库改造 5 张表 + 1 张新表 Prisma Schema 同步、迁移执行
后端 API 20 个端点 公众端完整 CRUD + 作品提交 + 公众用户管理
前端公众端 H5 9 个页面/组件 登录注册、活动大厅、详情、个人中心、子女管理、报名、作品
管理端适配 6 个页面修改 可见范围、租户类型、报名参与方式、主办机构列
超管端重构 菜单+页面+权限 4 级菜单重组、公众用户管理页、活动监管只读化
评委端修复 菜单+权限+路由 创建菜单、补齐权限、修复路由死循环
定向推送 全链路 数据库字段 + DTO + Service + 创建表单 + 公众端过滤 + 报名年龄校验
登录页改造 1 个文件重写 管理端登录页+公众端登录页双向跳转
机构管理页重写 1 个文件重写 去租户化、精简表格、搜索筛选、隐藏系统租户
初始化脚本 1 个脚本 广东省图租户初始化(权限/角色/菜单/管理员)

9.3 测试执行结果

层级 测试项 通过 Bug 数
数据库 23 23 0
后端 API 37 37 4已修复
前端自动化 33 33 1已修复
合计 93 93 5全部已修复

9.4 发现并修复的 Bug

编号 严重度 问题 修复文件
BUG-01 致命 创建活动时 visibility/targetCities/ageMin/ageMax 未写入数据库 contests.service.ts
BUG-02 致命 Visibility 枚举缺少 targeted 值 create-contest.dto.ts
BUG-03 @Public() 接口无法获取登录用户 JWT 信息 jwt-auth.guard.ts
BUG-04 报名 targeted 活动查询条件硬编码 public public.service.ts
BUG-05 超管端显示创建/编辑/删除按钮 contests/Index.vue

9.5 产出文件清单

文档9 个):

  • docs/guangdong-library-project/ 目录下 01-09 共 9 个文档

后端新增文件7 个):

  • backend/src/public/ 模块module + controller + service + 3 个 DTO
  • backend/scripts/init-guangdong-library.ts

前端新增文件11 个):

  • frontend/src/layouts/PublicLayout.vue
  • frontend/src/views/public/ 下 7 个页面
  • frontend/src/views/system/public-users/Index.vue
  • frontend/src/api/public.ts

修改文件(约 30 个):

  • Prisma Schema、全局样式、主题、App.vue、路由、菜单映射
  • 6 个管理端页面(活动列表/报名/作品/评审/成果/通知)
  • 登录页、机构管理页
  • JWT Guard、Contest Service/DTO

9.6 待完成工作Day 2 起)

优先级 工作 说明
P0 作品提交文件上传对接 COS 当前作品提交表单已有,需对接腾讯云 COS 文件上传
P0 全链路联调测试 4 条端到端流程走通
P0 真机 H5 测试 微信内置浏览器兼容性
P1 个人信息编辑完善 补充手机号字段
P1 成果查看详情 活动成果发布后公众端展示评审结果
P1 子女删除保护提示 有报名记录时给出警告
P2 手机号+验证码登录 同事负责
P2 微信扫码登录 同事负责
P2 超管运营仪表盘 统计图表