Skip to content

完整项目示例:任务管理系统

1. 项目概述

本项目旨在通过一个简单的“任务管理系统” (Todo Management System) 来端到端地演示 SOLO 工作模式的完整流程。系统将允许用户创建、查询、更新和删除任务。

项目代码仓库: https://github.com/your-org/todo-management-system-example (这是一个示例链接,指向具体的实现代码)

2. 四阶段实践

a. PRODUCT 阶段

  • 目标: 定义项目的核心功能和需求。
  • 产出:
    • 用户故事 1: 作为一个用户,我希望能创建一个新任务,包含标题和描述。
    • 用户故事 2: 作为一个用户,我希望能查看所有任务列表。
    • 用户故事 3: 作为一个用户,我希望能查询单个任务的详情。
    • 用户故事 4: 作为一个用户,我希望能更新一个任务的状态(例如,从未开始 -> 进行中 -> 已完成)。
    • 用户故事 5: 作为一个用户,我希望能删除一个任务。
  • 文档: PROJECT_REQUIREMENTS.md

b. ARCHITECT 阶段

  • 目标: 将需求转化为详细的 API 设计。
  • 产出: openapi.yaml 文件。
  • 设计决策:
    • 资源: 将“任务”抽象为 /tasks 资源。
    • 数据模型:
      • Task 对象包含 id, title, description, status, createdAt, updatedAt
      • status 是一个枚举类型: TODO, IN_PROGRESS, DONE
    • API 端点:
      • POST /tasks: 创建新任务。
      • GET /tasks: 获取任务列表。
      • GET /tasks/{id}: 获取单个任务。
      • PUT /tasks/{id}: 更新任务(可用于更新标题、描述、状态)。
      • DELETE /tasks/{id}: 删除任务。
  • 文档: openapi.yaml (位于项目根目录)

c. ENGINEER 阶段

  • 目标: 基于 OpenAPI 契约,通过 TDD 实现所有 API。
  • 技术栈: Java Spring Boot
  • 实践步骤:
    1. 代码生成:
      bash
      openapi-generator-cli generate -i openapi.yaml -g spring -o . --api-package com.example.todo.api --model-package com.example.todo.model
      这会生成 TasksApi 接口和 Task 等模型类。
    2. TDD 实现:
      • 测试创建任务: 编写 TasksApiControllerTest,测试 POST /tasks。先写失败的测试,断言状态码 201 和返回的 Task 对象。
      • 实现创建任务: 创建 TasksApiController 实现 TasksApi 接口,编写最简单的代码使测试通过。
      • 重构: 将业务逻辑抽离到 TaskService
      • ... 对每个端点重复“红-绿-重构”循环。
  • 代码结构:
    • src/main/java/com/example/todo/api: Controller 层
    • src/main/java/com/example/todo/service: Service 层
    • src/main/java/com/example/todo/repository: Repository 层
    • src/test/java/com/example/todo/api: API 集成测试

d. QA 阶段

  • 目标: 保证产品质量,验证实现与契约的一致性。
  • 实践步骤:
    1. 契约测试:
      • 使用 schemathesis 在 CI 流程中运行契约测试。
      bash
      # 启动应用
      java -jar target/todo-app.jar &
      # 运行契约测试
      st run --checks all --show-errors-tracebacks openapi.yaml --base-url http://localhost:8080
    2. 端到端测试:
      • 使用 Postman/Newman 或其他测试框架,编写覆盖核心用户场景的测试脚本。例如,创建一个任务,然后更新它,最后删除它,并验证每一步的结果。
    3. 性能测试: (可选)
      • 使用 JMeter 或 Gatling 对 GET /tasks 接口进行简单的负载测试。

3. 总结

这个完整的项目示例展示了 SOLO 模式如何将一个想法,通过结构化、可预测的流程,转化为一个高质量、文档齐全、易于维护的软件产品。每个阶段的产出物都为下一阶段提供了坚实的基础,确保了最终交付的成功。

SOLO Development Guide