17 KiB
慧愈科技官网|需求审查与开发计划 V1.1
审查对象:
慧愈科技官网后台功能需求设计_V1.0.md审查日期:2026-08-10 目标:在不改变现有设计方向的前提下,补齐可开发、可上线、可回滚、可交接所需的产品与工程约束。
架构更新:一期已按单服务器、Vue/Nuxt、SQLite 和本地素材方案精简,实际开发以
一期架构决策与精简开发计划_V1.2.md为准;本文保留完整风险审查记录。
1. 审查结论
V1.0 的产品方向、信息架构和前后台视觉目标基本正确,可以作为需求底稿;但目前不建议直接进入完整功能开发。
主要原因不是缺少页面,而是以下生产级闭环尚未定义完整:
- 草稿、审核稿和线上版本如何隔离;
- 谁可以审核、是否允许审核自己的内容;
- 一页式首页与文章/课程详情页的 URL 体系;
- 素材如何存储、生成衍生图、校验引用和回收;
- 预览、定时发布、缓存刷新和失败重试如何实现;
- 数据库、对象存储、部署、备份、回滚和监控如何验收。
这些问题需要在开发前完成补充,否则后期会集中返工数据库、权限和发布流程。
2. 做得正确、可以保留的部分
- 官网定位明确:官方信息源,而不是复杂交易或课程学习平台。
- 后台定位正确:固定模块的专用 CMS,不做通用低代码搭建器。
- 核心数据强调单一来源,适合长期维护和 SEO。
- 前台组件和后台预览组件复用,方向正确。
- 草稿、审核、发布、版本和操作日志意识完整。
- 素材引用保护、富文本安全和后端权限校验已经被列为要求。
- 一期明确排除了支付、CRM、多租户、学习系统等高复杂度能力。
- 前台动效克制、文字保留在 HTML、SSR/SSG 友好等要求合理。
3. 开工前必须修正的问题
P0-1:项目边界和前台路由没有闭合
文档名称以“官网后台”为主,但内容实际包含前台官网、后台 CMS、API、素材服务、SEO 和发布系统。必须明确一期交付物是一个完整系统,而不只是后台页面。
建议一期前台路由:
/
/luhui
/products
/products/:slug
/news
/news/:slug
/statements
/statements/:slug
/media
/team
/privacy
/terms
首页锚点可继续使用 /#about、/#luhui 等,但文章、课程和声明必须拥有独立、稳定、可分享、可收录的 URL。
P0-2:发布状态模型不完整
目前的 status 字段无法同时表达编辑状态、审核状态和线上状态,也没有定时发布、发布失败、下线原因等信息。
建议拆分:
workflow_status: draft | in_review | rejected | approved
publication_status: unpublished | scheduled | published | offline | failed
published_revision_id
scheduled_at
published_at
offline_at
reviewer_id
review_comment
线上页面始终读取 published_revision_id,编辑草稿不能直接污染线上内容。
P0-3:审核权限需要职责分离
三种角色还不足以形成安全规则,至少补充:
- 内容管理员不能审核或发布自己提交的敏感内容;
- 审核员只能审核被授权模块;
- 发布、下线、恢复版本、修改权限属于独立权限点;
- 超级管理员操作同样记录日志;
- 首个超级管理员通过部署初始化,不开放前台注册。
必须形成“角色 × 模块 × 动作”的权限矩阵,并由 API 强制校验。
P0-4:版本管理被错误地放在 P1
文档前面要求所有关键内容保留历史版本,后面却把版本管理列为 P1。版本数据结构会影响所有核心表,不能后补。
调整建议:
- 版本快照、发布版本指针、恢复为草稿:P0;
- 可视化字段级差异对比:P1。
P0-5:实时预览需要定义安全边界
预览不能直接访问未发布 API,也不能复用管理员长期登录凭证。
建议:
- 前台与后台使用同一套展示组件;
- 后台生成短时、一次性或可撤销的预览令牌;
- 预览页面强制
noindex、禁止缓存并校验访问范围; - PC、平板、手机预览是视口切换,不复制三套页面。
P0-6:素材模型和存储方案不完整
Media.url 和 reference_count 不足以支持生产使用。需要补充:
- 原文件与 WebP/AVIF/缩略图等衍生文件;
- 对象存储 key,不把完整 URL 当作唯一标识;
- MIME 嗅探、扩展名白名单、文件头校验、大小与像素限制;
- SHA-256 去重;
- 图片宽高、焦点、版权来源、授权状态和 ALT;
media_reference关联表,引用次数由关系计算;- 上传失败重试、孤儿文件清理和删除回收站;
- 对象存储和 CDN 的备份及缓存刷新策略。
P0-7:登录错误提示存在账号枚举风险
“账号不存在”和“密码错误”分别提示会泄露账号是否存在。生产环境应对外统一提示“账号、密码或验证码错误”,详细原因仅写入安全日志。
同时补充:
- 密码使用 Argon2id 或 bcrypt;
- 管理端采用安全 Cookie 会话或明确的 Token 存储策略;
- Cookie 设置
HttpOnly、Secure、SameSite; - 登录、验证码和找回密码接口限流;
- 连续失败采用指数退避或短时锁定;
- 管理员密码重置令牌短时有效且仅能使用一次;
- 二期可加入 TOTP 双因素认证。
P0-8:部署、备份、回滚和监控缺失
文档只描述了业务功能,没有生产交付闭环。上线前必须定义:
- 开发、测试、预发布、生产环境隔离;
- 数据库迁移、上线前备份和迁移回滚方案;
- PostgreSQL 定时备份与恢复演练;
- 对象存储版本或跨区域备份策略;
- 前端、API、后台的健康检查;
- 结构化日志、错误告警、接口耗时和发布失败告警;
- 部署版本号、制品留存和一键回滚上一稳定版本;
- 密钥只通过环境变量或密钥服务注入,不进入代码仓库。
4. 建议在一期同时补齐的问题
P1-1:SEO 需要稳定 URL、slug 与重定向
- Product、Article、TeamMember 增加唯一
slug; - slug 修改时自动保留 301 重定向;
- 预览和后台页面禁止索引;
- Sitemap、Canonical、Open Graph、robots 和基础 JSON-LD 应属于上线 P0,而不是上线后再补;
Keywords可以保留兼容字段,但不应作为核心 SEO 工作量。
P1-2:文章扩展字段没有进入数据模型
官方声明的编号、附件、盖章文件,以及媒体报道的媒体名称、原文 URL、媒体 Logo 等没有体现在 Article 模型中。
建议采用统一文章主表 + 类型扩展字段,或明确的 JSON schema;不能只写在页面需求中。
P1-3:首页模块缺少正式数据模型
至少需要:
Page
PageSection
PageRevision
Publication
Redirect
PageSection 保存模块类型、排序、显隐和结构化配置。模块配置必须按类型校验,不能存储不受约束的任意 JSON。
P1-4:定时发布需要幂等和失败处理
必须明确:
- 同一版本重复触发不会重复发布;
- 发布任务具有唯一业务键;
- 失败后按策略重试;
- 超过阈值进入人工处理;
- 服务器统一保存 UTC,后台按 Asia/Shanghai 展示;
- 发布成功后再刷新页面缓存和 CDN。
P1-5:富文本需要内容规范
建议选择受控块编辑器,而不是允许任意 HTML。定义允许的标题层级、图片、视频、表格、引用、按钮和 FAQ 块;服务端二次清洗,外链默认补充安全属性。
P1-6:法律和隐私页面缺失
至少加入隐私政策、服务条款、版权说明和备案信息页面。如果“联系我们”要收集姓名、电话或微信,需要补充用户同意、数据保存期限、查看权限和删除机制。
P1-7:前台性能指标需要可验收
将“首屏重点优化”改成明确目标:
- LCP ≤ 2.5s;
- INP ≤ 200ms;
- CLS ≤ 0.1;
- 首屏主图按设备输出合适尺寸;
- 动效支持
prefers-reduced-motion; - 常见桌面和移动浏览器无横向滚动。
P1-8:操作日志需要防止记录敏感数据
日志中的修改前后内容应过滤密码、Token、验证码和隐私字段;日志应追加写、限制修改、定义保存期限,并提供按操作人、模块、时间和对象检索。
5. 一期范围重排
一期上线必须完成(P0)
- 前台官网:首页、人物、课程/产品、文章/声明、团队、官方渠道和法律页面;
- 后台登录、账号、RBAC 权限矩阵;
- 公司、品牌、卢慧老师、课程产品、内容、团队和官方渠道管理;
- 首页固定模块管理;
- 素材上传、衍生图、引用保护和授权字段;
- 草稿、提交审核、退回、审批、发布、下线;
- 核心实体版本快照和恢复为草稿;
- 安全预览;
- 基础 SEO、Sitemap、Canonical、robots、JSON-LD;
- 操作日志;
- 数据库迁移、备份恢复、监控告警和部署回滚。
一期可简化
- 仪表盘只保留待办、最近更新和快捷入口;
- 不做复杂 PV/UV 报表,接入成熟统计平台;
- 版本对比先显示两个版本的完整内容,字段级差异后补;
- 素材标签和筛选做基础版;
- 首页模块只支持固定模块排序、显隐和内容编辑;
- 后台只保证桌面端 1366px 及以上,平板可浏览但不作为主要编辑设备。
延后到二期(P1/P2)
- 后台全局搜索;
- 复杂访问分析;
- AI 内容质量检查和外部信息监测;
- 双因素认证;
- 字段级版本差异;
- 批量复杂排版和更多自动化运营能力。
6. 推荐技术基线
在团队没有既定技术栈的前提下,建议采用较稳健、易交接的组合:
前台官网:Nuxt + TypeScript(SSR/混合渲染)
管理后台:Vue + TypeScript
后端 API:FastAPI
数据库:PostgreSQL
对象存储:S3 兼容存储 + CDN
异步任务:按定时发布和图片处理量选择 PostgreSQL 任务表或 Redis 队列
反向代理:Nginx 或云平台托管入口
选择理由:前台可服务 SEO,后台与前台共用 Vue 生态,FastAPI 接口边界清晰,PostgreSQL 适合版本快照与结构化内容,对象存储适合图片和附件。
建议采用单仓库分应用组织:
apps/
├── web/ # 前台官网
├── admin/ # 管理后台
└── api/ # 后端 API
packages/
├── ui/ # 品牌基础组件与设计令牌
├── contracts/ # API 契约和共享类型
└── config/ # 共享工程配置
docs/
infra/
不要强行让前台与后台复用所有页面组件;应复用设计令牌、内容 schema 和前台预览组件,避免把后台表单逻辑耦合进前台。
7. 分阶段开发计划
以下按“2 名全职开发 + 兼职设计/测试/内容负责人”估算。实际排期需要在技术栈、部署环境和内容量确认后锁定。
阶段 0:需求冻结与内容核验(3—5 个工作日)
交付物:
- 一期页面与路由清单;
- 权限矩阵;
- 状态机与发布流程图;
- 字段字典和内容 schema;
- 真实公司、人物、课程、渠道与法律信息清单;
- 域名、服务器、对象存储、CDN 和备案决策记录。
开工闸门:P0 问题全部有明确结论。
阶段 1:工程与部署基础(5—7 个工作日)
任务:
- 建立 monorepo、代码规范、提交规范和环境配置;
- 建立前台、后台、API 和数据库项目;
- 配置迁移、种子数据、CI 构建和测试;
- 建立开发、测试、预发布环境;
- 接入结构化日志、健康检查和基础错误监控;
- 完成自动备份与恢复脚本初版。
验收:全新环境可按文档一键启动,迁移可升级和回退,密钥不进入仓库。
阶段 2:认证、权限与发布内核(8—12 个工作日)
任务:
- 管理员、角色、权限矩阵和登录限流;
- 草稿、审核、退回、批准、发布、下线状态机;
- Revision、Publication、审计日志;
- 短时预览令牌;
- 定时发布任务、幂等、重试和失败告警。
验收:内容管理员不能绕过审核发布;审核员不能越权;恢复版本只生成草稿;重复发布不会产生错误状态。
阶段 3:素材中心与核心内容模型(10—15 个工作日)
任务:
- 素材上传、校验、对象存储、缩略图/WebP/AVIF;
- 素材授权、ALT、标签和引用关系;
- 公司、品牌、官方渠道;
- 卢慧老师、经历、成果、课程关联与权威链接;
- 课程产品、文章、声明、媒体报道和团队成员;
- 首页 PageSection 固定模块配置。
验收:全部核心对象具备创建、编辑、审核、版本、发布、下线和引用保护。
阶段 4:管理后台(10—15 个工作日)
任务:
- 登录、仪表盘;
- 首页三栏编辑与响应式预览;
- 人物、公司品牌、课程、内容、团队和渠道管理;
- 素材选择器;
- 审核中心、历史版本、日志与网站设置;
- 表单校验、自动保存、未保存离开提醒和错误恢复。
验收:运营人员不改代码即可完成一次“编辑—审核—预览—发布—下线—恢复”闭环。
阶段 5:官网前台与动效(10—15 个工作日)
任务:
- 建立品牌设计令牌和响应式布局;
- 完成沉浸式首页各模块;
- 完成人物、课程、内容、声明、团队和法律详情页;
- 完成导航锚点、滚动章节激活和浏览器返回;
- 完成视差、淡入、遮罩揭示、数字递增和降级动效;
- 实现图片响应式加载、懒加载和无障碍结构。
验收:与设计参考图同视口对比后通过视觉 QA;桌面、平板、手机无横向滚动,主要交互可用。
阶段 6:SEO、发布联动与内容迁移(6—9 个工作日)
任务:
- Sitemap、robots、Canonical、OG 和 JSON-LD;
- slug 和 301 重定向;
- 发布后缓存/CDN 刷新;
- 预览 noindex 与禁止缓存;
- 导入已核验的人物、品牌、课程、团队和官方渠道内容;
- 检查所有图片 ALT、链接、二维码和联系方式。
验收:搜索引擎可直接读取正文,结构化数据通过验证,未发布内容不可被公开访问。
阶段 7:系统测试与安全验收(8—12 个工作日)
任务:
- API 单元测试、权限测试和发布状态机测试;
- 前后台核心流程端到端测试;
- XSS、CSRF、越权、上传、限流和会话测试;
- 性能、Core Web Vitals、浏览器兼容和无障碍检查;
- 备份恢复、迁移回滚和应用版本回滚演练;
- 运营使用手册、部署手册和故障处理手册。
验收:P0 用例全部通过,无高危安全问题,恢复演练成功。
阶段 8:生产发布与观察(3—5 个工作日)
任务:
- 上线前数据库和素材备份;
- 灰度或维护窗口发布;
- 域名、HTTPS、CDN、备案和搜索引擎配置;
- 发布后冒烟测试;
- 观察错误率、接口耗时、任务队列和页面性能;
- 准备并验证回滚路径。
验收:连续观察期内无阻断问题,监控和告警有效,运营账号与权限完成交接。
8. 工期与人员判断
粗略工作量:60—90 人日,不含大量内容撰写、原始图片重制、备案等待和外部账号申请。
- 2 名有经验的全职开发,设计/测试/内容兼职配合:约 9—12 周;
- 1 名全栈开发独立完成:约 14—18 周;
- 如果一期继续保留后台全局搜索、复杂统计、字段级版本对比等能力,工期需要继续增加。
人员职责建议:
| 角色 | 主要职责 |
|---|---|
| 产品/内容负责人 | 需求决策、事实核验、文案、素材授权、验收签字 |
| 前端开发 | 官网、后台、动效、响应式、可访问性和视觉 QA |
| 后端开发 | 数据模型、权限、发布、素材、SEO、日志和部署接口 |
| 测试/交付 | 测试用例、安全回归、部署与恢复演练、交接文档 |
9. 阶段 0 需要确认的决策
- 一期是否同时交付前台官网和后台 CMS;建议:是。
- 课程和品牌动态是否需要独立详情页;建议:是。
- “联系我们”只展示官方渠道,还是收集访客信息;建议一期只展示渠道,避免引入隐私数据管理。
- 是否要求内容管理员与审核员职责分离;建议:是。
- 前台部署采用自有服务器还是云平台;需要结合预算和运维能力确认。
- 图片、视频和 PDF 使用哪家对象存储与 CDN。
- 是否已有域名、ICP备案主体、公安备案、隐私政策和服务条款。
- 技术栈是否接受 Vue/Nuxt + FastAPI + PostgreSQL。
- 一期真实内容由谁提供、谁核验、谁最终签字。
10. 开发启动建议
先用 3—5 个工作日完成阶段 0,不立即搭大量页面。阶段 0 通过后,再并行启动“工程基础”“品牌设计令牌”和“内容核验”。这能把数据库、权限、发布和素材这些高返工风险提前消化掉。