PZT 技术博客工程化开发课程
本课程以 PZT 双语技术博客为真实项目案例,完整演示如何从需求调研、产品定义、架构设计推进到 M0 基础里程碑落地,并建立可验证、可复盘、可持续迭代的工程流程。
课程不是“照着做一个页面”的教程,而是一套面向真实团队的标准交付方法:每个阶段都有输入、活动、产物、责任人、验收标准和失败处理方式。
1. 项目背景
PZT 是一个中英双语技术博客,目标用户包括:
- 需要快速理解技术文章并进行有效学习的开发者;
- 编写、翻译、审核和发布内容的内容团队;
- 负责账号、权限、数据、安全和部署的运营人员。
产品已确认的方向:
- 品牌名称为 PZT;
- 首批内容支持中文和英文;
- 内容使用自建后台管理;
- 数据库采用 MySQL;
- 搜索需要拼写纠错、同义词和搜索建议;
- Preview 分享链接必须受保护;
- 邮件一期不做;
- 需要内容审核人账号和审计身份;
- UI 设计环节暂时跳过,先完成产品与工程基础;
- Playground 窄屏使用上下布局,触控拖拽不是一期必需能力;
- 日间/夜间主题可切换,蓝色系视觉方向作为后续设计约束。
2. 学习目标
完成课程后,学习者应能够:
- 把模糊想法拆成用户、场景、问题、需求和可验证假设。
- 编写包含范围、用户故事、验收标准、非功能需求和待确认问题的 PRD。
- 设计前后端、数据库、认证授权、发布产物、搜索和部署边界。
- 使用里程碑、任务依赖和 Definition of Done 推进工程交付。
- 为 Java/Spring Boot 后端和 Next.js 前端建立可运行、可测试的 M0 骨架。
- 用自动化测试、契约测试、迁移检查、健康检查和审查记录证明交付结果。
- 在未完成能力存在时明确标记占位边界,而不是把骨架误报为生产能力。
3. 课程结构
| 阶段 | 主题 | 核心产物 | 完成标准 |
|---|---|---|---|
| 0 | 项目启动 | 项目章程、假设清单、角色分工 | 所有人知道为什么做、做什么、不做什么 |
| 1 | 需求调研 | 研究记录、用户分层、问题陈述、机会清单 | 每个主要需求都有证据或明确假设 |
| 2 | PRD | 功能需求、用户故事、验收标准、非功能需求、范围分层 | 开发和测试可以据此拆任务与验收 |
| 3 | 架构设计 | 上下文图、容器图、模块边界、数据库模型、API 规则、ADR | 关键技术决策可解释、可验证、可回滚 |
| 4 | M0 计划 | WBS、依赖关系、风险清单、里程碑门禁 | 能排出可执行的开发顺序 |
| 5 | M0 落地 | Monorepo、Spring Boot 骨架、MySQL 迁移、契约、测试 | 本地可启动,健康接口和测试通过 |
| 6 | M0 验收 | 验收报告、缺陷清单、复盘记录、下一里程碑计划 | 交付证据完整,未完成项透明 |
对应课件:
- 01-需求调研与产品发现
- 02-PRD 与验收标准
- 03-前后端架构与数据库设计
- 04-M0 计划与落地
- 05-M0 验证、评审与交付
- 06-M1 内容后台、Preview 与发布准备
- 07-M2-5 Release Artifact 与发布验收
- 08-M3-1 基础搜索与内容发现
- 09-M3-2 同义词检索与验收
- 10-M3-3 拼写纠错、建议词与验收
- 11-M3-4 搜索分析、质量评估与运营后台
- 12-M3-5 数据保留、删除与隐私护栏
- 13-M4-1 生产级保留清理作业
- 14-M4-2 一次性 Retention Worker 与部署边界
- 15-M5 生产部署基线与验收
4. 推荐学习方式
每个阶段按以下循环执行:
flowchart LR
A[定义问题] --> B[记录假设]
B --> C[设计方案]
C --> D[实现最小切片]
D --> E[自动化验证]
E --> F[人工评审]
F --> G[记录决策与风险]
G --> A
学习者不要跳过“验证”和“记录”步骤。没有验收证据的功能,只能称为实现尝试;没有记录边界的架构,只能称为讨论方案。
5. 统一交付规则
5.1 每项工作必须有四类信息
每个需求、技术任务或缺陷至少记录:
- 目标:解决谁的什么问题。
- 范围:本次包含和不包含什么。
- 证据:用什么测试、截图、日志或文档证明完成。
- 风险:什么情况下会失败,失败后如何回滚或降级。
5.2 Definition of Ready
任务只有满足以下条件才进入开发:
- 目标和用户场景明确;
- 依赖项已列出;
- 接口、数据或页面边界已经确定;
- 验收标准可执行;
- 未决问题不会阻断本任务,或已经指定决策人和截止时间。
5.3 Definition of Done
任务完成必须同时满足:
- 源代码和配置已提交到正确模块;
- 单元测试或集成测试已补齐;
- 失败路径和权限边界已验证;
- 文档与实际行为一致;
- 日志、错误码、关联 ID 或审计要求没有遗漏;
- 本地验证命令可重复执行;
- 已知限制和后续工作已登记。
6. 当前仓库映射
pzt-blog/
├─ apps/
│ ├─ public-web/ # Next.js 公共阅读站点,M1 使用本地发布产物
│ └─ api/ # Spring Boot 模块化单体,M0 后端基础
├─ docs/
│ ├─ api-contract.md # API 边界
│ ├─ release-artifact-v1.md
│ └─ course/ # 本课程
├─ infra/backend/ # MySQL、Redis、OpenSearch 本地依赖
└─ README.md
当前 apps/public-web 属于 M1 公共阅读切片;本课程的主要实施对象是 M0 基础工程。M0 不等于完整产品上线。
7. M0 课程最终产物
完成 M0 后,仓库应具备:
- 可安装和构建的前后端目录;
- Spring Boot 运行入口;
GET /api/v1/health和GET /api/v1/version;- API 版本、错误响应和
X-Correlation-ID规则; - MySQL 8+ 的 Flyway 初始迁移;
- 内容、审核、Preview、发布、审计的 API 占位边界;
- 公共阅读路径不直接访问 MySQL 的架构约束;
- 本地 MySQL/Redis/OpenSearch 基础设施说明;
- 后端集成测试和迁移契约测试;
- M0 验收报告和下一里程碑清单。
M0 明确不交付:
- 完整自建后台页面;
- 真正的 Preview 签发、兑换、撤销和访问审计;
- 真正的 Release Artifact 构建和对象存储发布;
- OpenSearch 搜索、拼写纠错、同义词和建议词;
- 邮件 Provider 和发送策略;
- 生产 OIDC 配置、真实 RBAC 和合规上线认证。
8. 课程总验收
课程完成时,学习者应提交:
- 一份需求调研报告;
- 一份 PRD;
- 一份架构设计文档和至少三条 ADR;
- 一份 M0 WBS 和风险清单;
- 可运行的 M0 代码;
- 自动化测试输出;
- M0 验收报告;
- 下一里程碑的明确目标、依赖和风险。
模板位于 templates: