PZT 技术博客工程化开发课程

本课程以 PZT 双语技术博客为真实项目案例,完整演示如何从需求调研、产品定义、架构设计推进到 M0 基础里程碑落地,并建立可验证、可复盘、可持续迭代的工程流程。

课程不是“照着做一个页面”的教程,而是一套面向真实团队的标准交付方法:每个阶段都有输入、活动、产物、责任人、验收标准和失败处理方式。

1. 项目背景

PZT 是一个中英双语技术博客,目标用户包括:

  • 需要快速理解技术文章并进行有效学习的开发者;
  • 编写、翻译、审核和发布内容的内容团队;
  • 负责账号、权限、数据、安全和部署的运营人员。

产品已确认的方向:

  • 品牌名称为 PZT;
  • 首批内容支持中文和英文;
  • 内容使用自建后台管理;
  • 数据库采用 MySQL;
  • 搜索需要拼写纠错、同义词和搜索建议;
  • Preview 分享链接必须受保护;
  • 邮件一期不做;
  • 需要内容审核人账号和审计身份;
  • UI 设计环节暂时跳过,先完成产品与工程基础;
  • Playground 窄屏使用上下布局,触控拖拽不是一期必需能力;
  • 日间/夜间主题可切换,蓝色系视觉方向作为后续设计约束。

2. 学习目标

完成课程后,学习者应能够:

  1. 把模糊想法拆成用户、场景、问题、需求和可验证假设。
  2. 编写包含范围、用户故事、验收标准、非功能需求和待确认问题的 PRD。
  3. 设计前后端、数据库、认证授权、发布产物、搜索和部署边界。
  4. 使用里程碑、任务依赖和 Definition of Done 推进工程交付。
  5. 为 Java/Spring Boot 后端和 Next.js 前端建立可运行、可测试的 M0 骨架。
  6. 用自动化测试、契约测试、迁移检查、健康检查和审查记录证明交付结果。
  7. 在未完成能力存在时明确标记占位边界,而不是把骨架误报为生产能力。

3. 课程结构

阶段主题核心产物完成标准
0项目启动项目章程、假设清单、角色分工所有人知道为什么做、做什么、不做什么
1需求调研研究记录、用户分层、问题陈述、机会清单每个主要需求都有证据或明确假设
2PRD功能需求、用户故事、验收标准、非功能需求、范围分层开发和测试可以据此拆任务与验收
3架构设计上下文图、容器图、模块边界、数据库模型、API 规则、ADR关键技术决策可解释、可验证、可回滚
4M0 计划WBS、依赖关系、风险清单、里程碑门禁能排出可执行的开发顺序
5M0 落地Monorepo、Spring Boot 骨架、MySQL 迁移、契约、测试本地可启动,健康接口和测试通过
6M0 验收验收报告、缺陷清单、复盘记录、下一里程碑计划交付证据完整,未完成项透明

对应课件:

4. 推荐学习方式

每个阶段按以下循环执行:

flowchart LR
    A[定义问题] --> B[记录假设]
    B --> C[设计方案]
    C --> D[实现最小切片]
    D --> E[自动化验证]
    E --> F[人工评审]
    F --> G[记录决策与风险]
    G --> A

学习者不要跳过“验证”和“记录”步骤。没有验收证据的功能,只能称为实现尝试;没有记录边界的架构,只能称为讨论方案。

5. 统一交付规则

5.1 每项工作必须有四类信息

每个需求、技术任务或缺陷至少记录:

  1. 目标:解决谁的什么问题。
  2. 范围:本次包含和不包含什么。
  3. 证据:用什么测试、截图、日志或文档证明完成。
  4. 风险:什么情况下会失败,失败后如何回滚或降级。

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: