11.1 项目结构与里程碑
一个就业项目要能展示完整开发能力:需求拆解、数据建模、API、前端、测试、部署和复盘。不要一次性堆功能,要按里程碑持续交付。
学习目标
- 能设计一个适合简历展示的全栈项目结构。
- 能把功能拆成多个可验收里程碑。
- 能为每个里程碑定义交付物和验收标准。
- 能把项目经历转化为面试表达。
推荐项目:学习计划系统
在 Todo 基础上扩展为“学习计划系统”,更贴近学习手册主题,也方便展示复杂度。
| 功能域 | 功能 |
|---|---|
| 计划 | 创建学习计划、设置目标日期、拆分任务 |
| 任务 | 新增、完成、筛选、优先级、截止日期 |
| 统计 | 完成率、逾期数、连续学习天数 |
| 用户 | 登录、个人任务、权限隔离 |
| 管理 | 标签管理、计划模板、基础后台 |
解决方案结构
LearningPlanner/
src/
LearningPlanner.Api/
LearningPlanner.Application/
LearningPlanner.Domain/
LearningPlanner.Infrastructure/
LearningPlanner.Web.Blazor/
LearningPlanner.Web.React/
tests/
LearningPlanner.UnitTests/
LearningPlanner.IntegrationTests/
docs/
architecture.md
api-contract.md
deployment.md
React 和 Blazor 可以二选一作为主前端,另一条路线保留为对比练习,不建议第一版同时做两个完整前端。
里程碑计划
| 里程碑 | 交付物 | 验收标准 |
|---|---|---|
| M1 最小闭环 | 任务 CRUD、数据库迁移、列表页 | 能从前端创建并查看任务 |
| M2 业务规则 | 截止日期、优先级、完成状态 | 边界规则有单元测试 |
| M3 用户与权限 | 登录、当前用户任务隔离 | 用户只能看到自己的数据 |
| M4 统计看板 | 完成率、逾期任务、趋势 | 数据来自后端聚合查询 |
| M5 工程化 | 集成测试、Docker、CI | 提交后自动构建和测试 |
| M6 部署复盘 | 部署说明、架构图、演示脚本 | 能独立演示和讲解项目 |
每个里程碑的完成定义
- 有清晰需求说明和接口契约。
- 后端包含成功路径和失败路径。
- 前端包含加载、空状态、错误和成功状态。
- 数据库迁移可重复执行。
- 至少有一类测试覆盖关键规则。
- README 记录如何运行和验证。
面试讲解结构
- 项目解决什么问题。
- 技术栈为什么这样选。
- 你负责的核心模块是什么。
- 遇到的难点和取舍是什么。
- 如何保证质量和可维护性。
- 如果继续迭代,下一步会优化什么。
重点难点
- 就业项目要展示完整闭环,不要只展示 CRUD。
- 技术点要落到业务案例上,例如并发、权限、错误契约和测试。
- README 和演示脚本同样重要,它们决定别人能否快速理解项目。
- 控制范围比堆功能更重要,第一版要优先稳定交付。
常见误区
| 误区 | 推荐做法 |
|---|---|
| 一开始就做大而全 | 先完成可演示纵向切片 |
| 只展示页面截图 | 同时展示 API、数据库、测试和部署 |
| 简历只写技术名词 | 写清业务结果和你的具体贡献 |
练习
- 为学习计划系统写 6 条用户故事。
- 为 M1 画出前端、API、数据库交互图。
- 写一段 2 分钟项目讲解稿。
延伸阅读
- 需求拆解和用户故事。
- Clean Architecture 项目结构。
- 简历项目复盘方法。