fastapi-demo/docs/complete-crud-api/TASK_complete-crud-api.md

11 KiB
Raw Permalink Blame History

TASK - 完善 CRUD API 功能任务分解

任务依赖图

graph TB
    subgraph "阶段1: 基础重构"
        T1[T1: UserService 数据库集成]
        T2[T2: ProductService 数据库集成]
    end

    subgraph "阶段2: API 扩展"
        T3[T3: Users POST API]
        T4[T4: Users PUT API]
        T5[T5: Users DELETE API]
        T6[T6: Products POST API]
        T7[T7: Products PUT API]
        T8[T8: Products DELETE API]
    end

    subgraph "阶段3: 质量保证"
        T9[T9: 异常处理优化]
        T10[T10: API 测试验证]
        T11[T11: 文档更新]
    end

    T1 --> T3
    T1 --> T4
    T1 --> T5
    T2 --> T6
    T2 --> T7
    T2 --> T8

    T3 --> T9
    T4 --> T9
    T5 --> T9
    T6 --> T9
    T7 --> T9
    T8 --> T9

    T9 --> T10
    T10 --> T11

原子任务详细定义

T1: UserService 数据库集成

输入契约

  • 前置依赖: 数据库连接正常SQLAlchemy 模型已定义
  • 输入数据: 现有 UserService 类和方法签名
  • 环境依赖: MySQL 数据库SQLAlchemy 配置

输出契约

  • 输出数据: 重构后的 UserService 类
  • 交付物: app/services/user_service.py 更新
  • 验收标准:
    • 移除所有假数据引用
    • 所有方法接受 db: Session 参数
    • 使用 SQLAlchemy ORM 进行数据库操作
    • 包含基础异常处理

实现约束

  • 技术栈: SQLAlchemy ORM, Session 管理
  • 接口规范: 保持现有方法签名,增加 db 参数
  • 质量要求: 异常安全,事务管理

依赖关系

  • 并行任务: T2 (ProductService 数据库集成)
  • 后置任务: T3, T4, T5 (Users API 实现)

T2: ProductService 数据库集成

输入契约

  • 前置依赖: 数据库连接正常SQLAlchemy 模型已定义
  • 输入数据: 现有 ProductService 类和方法签名
  • 环境依赖: MySQL 数据库SQLAlchemy 配置

输出契约

  • 输出数据: 重构后的 ProductService 类
  • 交付物: app/services/product_service.py 更新
  • 验收标准:
    • 移除所有假数据引用
    • 所有方法接受 db: Session 参数
    • 使用 SQLAlchemy ORM 进行数据库操作
    • 包含基础异常处理

实现约束

  • 技术栈: SQLAlchemy ORM, Session 管理
  • 接口规范: 保持现有方法签名,增加 db 参数
  • 质量要求: 异常安全,事务管理

依赖关系

  • 并行任务: T1 (UserService 数据库集成)
  • 后置任务: T6, T7, T8 (Products API 实现)

T3: Users POST API 实现

输入契约

  • 前置依赖: T1 完成UserService 数据库集成就绪
  • 输入数据: UserCreate 模式,数据库 User 模型
  • 环境依赖: FastAPI 路由系统,依赖注入配置

输出契约

  • 输出数据: POST /api/v1/users/ API 端点
  • 交付物: app/api/v1/endpoints/users.py 更新
  • 验收标准:
    • 成功创建用户返回 201 状态码
    • 返回完整用户信息 (UserResponse)
    • 数据持久化到数据库
    • 邮箱和用户名唯一性验证
    • 适当的错误处理 (409, 422)

实现约束

  • 技术栈: FastAPI, 依赖注入, HTTPException
  • 接口规范: 使用 UserCreate 和 UserResponse 模式
  • 质量要求: 输入验证,错误处理,状态码规范

依赖关系

  • 前置任务: T1 (UserService 数据库集成)
  • 后置任务: T9 (异常处理优化)

T4: Users PUT API 实现

输入契约

  • 前置依赖: T1 完成UserService 数据库集成就绪
  • 输入数据: UserUpdate 模式,用户 ID 参数
  • 环境依赖: FastAPI 路由系统,依赖注入配置

输出契约

  • 输出数据: PUT /api/v1/users/{user_id} API 端点
  • 交付物: app/api/v1/endpoints/users.py 更新
  • 验收标准:
    • 成功更新用户返回 200 状态码
    • 支持部分字段更新
    • 数据持久化到数据库
    • 用户不存在返回 404
    • 数据验证失败返回 422

实现约束

  • 技术栈: FastAPI, 依赖注入, HTTPException
  • 接口规范: 使用 UserUpdate 和 UserResponse 模式
  • 质量要求: 部分更新支持,资源存在性检查

依赖关系

  • 前置任务: T1 (UserService 数据库集成)
  • 后置任务: T9 (异常处理优化)

T5: Users DELETE API 实现

输入契约

  • 前置依赖: T1 完成UserService 数据库集成就绪
  • 输入数据: 用户 ID 参数
  • 环境依赖: FastAPI 路由系统,依赖注入配置

输出契约

  • 输出数据: DELETE /api/v1/users/{user_id} API 端点
  • 交付物: app/api/v1/endpoints/users.py 更新
  • 验收标准:
    • 成功删除用户返回 204 状态码
    • 数据从数据库中删除
    • 用户不存在返回 404
    • 无响应体内容

实现约束

  • 技术栈: FastAPI, 依赖注入, HTTPException
  • 接口规范: 标准 RESTful DELETE 语义
  • 质量要求: 资源存在性检查,正确状态码

依赖关系

  • 前置任务: T1 (UserService 数据库集成)
  • 后置任务: T9 (异常处理优化)

T6: Products POST API 实现

输入契约

  • 前置依赖: T2 完成ProductService 数据库集成就绪
  • 输入数据: ProductCreate 模式,数据库 Product 模型
  • 环境依赖: FastAPI 路由系统,依赖注入配置

输出契约

  • 输出数据: POST /api/v1/products/ API 端点
  • 交付物: app/api/v1/endpoints/products.py 更新
  • 验收标准:
    • 成功创建产品返回 201 状态码
    • 返回完整产品信息 (ProductResponse)
    • 数据持久化到数据库
    • 价格和库存数据验证
    • 适当的错误处理

实现约束

  • 技术栈: FastAPI, 依赖注入, HTTPException
  • 接口规范: 使用 ProductCreate 和 ProductResponse 模式
  • 质量要求: 输入验证,业务规则检查

依赖关系

  • 前置任务: T2 (ProductService 数据库集成)
  • 后置任务: T9 (异常处理优化)

T7: Products PUT API 实现

输入契约

  • 前置依赖: T2 完成ProductService 数据库集成就绪
  • 输入数据: ProductUpdate 模式,产品 ID 参数
  • 环境依赖: FastAPI 路由系统,依赖注入配置

输出契约

  • 输出数据: PUT /api/v1/products/{product_id} API 端点
  • 交付物: app/api/v1/endpoints/products.py 更新
  • 验收标准:
    • 成功更新产品返回 200 状态码
    • 支持部分字段更新
    • 数据持久化到数据库
    • 产品不存在返回 404
    • 数据验证失败返回 422

实现约束

  • 技术栈: FastAPI, 依赖注入, HTTPException
  • 接口规范: 使用 ProductUpdate 和 ProductResponse 模式
  • 质量要求: 部分更新支持,资源存在性检查

依赖关系

  • 前置任务: T2 (ProductService 数据库集成)
  • 后置任务: T9 (异常处理优化)

T8: Products DELETE API 实现

输入契约

  • 前置依赖: T2 完成ProductService 数据库集成就绪
  • 输入数据: 产品 ID 参数
  • 环境依赖: FastAPI 路由系统,依赖注入配置

输出契约

  • 输出数据: DELETE /api/v1/products/{product_id} API 端点
  • 交付物: app/api/v1/endpoints/products.py 更新
  • 验收标准:
    • 成功删除产品返回 204 状态码
    • 数据从数据库中删除
    • 产品不存在返回 404
    • 无响应体内容

实现约束

  • 技术栈: FastAPI, 依赖注入, HTTPException
  • 接口规范: 标准 RESTful DELETE 语义
  • 质量要求: 资源存在性检查,正确状态码

依赖关系

  • 前置任务: T2 (ProductService 数据库集成)
  • 后置任务: T9 (异常处理优化)

T9: 异常处理优化

输入契约

  • 前置依赖: T3-T8 完成,所有 API 端点实现就绪
  • 输入数据: 所有 API 端点和服务方法
  • 环境依赖: FastAPI 异常处理机制

输出契约

  • 输出数据: 统一的异常处理机制
  • 交付物:
    • 服务层异常处理优化
    • API 层统一错误响应
  • 验收标准:
    • 数据库约束异常正确映射到 HTTP 状态码
    • 详细错误信息返回
    • 异常日志记录
    • 事务回滚正确实现

实现约束

  • 技术栈: SQLAlchemy 异常FastAPI HTTPException
  • 接口规范: 统一错误响应格式
  • 质量要求: 全面异常覆盖,用户友好错误信息

依赖关系

  • 前置任务: T3, T4, T5, T6, T7, T8 (所有 API 实现)
  • 后置任务: T10 (API 测试验证)

T10: API 测试验证

输入契约

  • 前置依赖: T1-T9 完成,完整 CRUD API 实现
  • 输入数据: 所有 API 端点
  • 环境依赖: 测试数据库,测试客户端

输出契约

  • 输出数据: 完整的 API 测试套件
  • 交付物:
    • 功能测试用例
    • 集成测试验证
    • API 文档验证
  • 验收标准:
    • 所有 CRUD 操作测试通过
    • 错误场景测试通过
    • 数据持久化验证通过
    • API 文档生成正确

实现约束

  • 技术栈: FastAPI TestClient, pytest (可选)
  • 接口规范: RESTful API 测试标准
  • 质量要求: 覆盖主要功能和错误场景

依赖关系

  • 前置任务: T9 (异常处理优化)
  • 后置任务: T11 (文档更新)

T11: 文档更新

输入契约

  • 前置依赖: T10 完成,所有测试验证通过
  • 输入数据: 完整的 API 实现
  • 环境依赖: 文档系统API 自动生成文档

输出契约

  • 输出数据: 更新的项目文档
  • 交付物:
    • README.md 更新
    • API 使用示例
    • 开发指南更新
  • 验收标准:
    • API 文档反映所有新端点
    • 使用示例准确可用
    • 开发环境搭建指南更新
    • 错误处理说明文档

实现约束

  • 技术栈: Markdown, FastAPI 自动文档生成
  • 接口规范: 清晰的文档结构
  • 质量要求: 准确性,完整性,易读性

依赖关系

  • 前置任务: T10 (API 测试验证)
  • 后置任务: 无 (项目完成)

复杂度评估

低复杂度任务 🟢

  • T3, T6: POST API 实现 (标准 CRUD 创建操作)
  • T11: 文档更新 (文档编写)

中等复杂度任务 🟡

  • T1, T2: 服务层数据库集成 (需要重构现有代码)
  • T4, T7: PUT API 实现 (部分更新逻辑)
  • T5, T8: DELETE API 实现 (资源存在性检查)
  • T10: API 测试验证 (需要综合测试)

较高复杂度任务 🟠

  • T9: 异常处理优化 (需要全面的异常映射和处理)

风险评估

技术风险 🔴

  • 数据库事务管理: 确保事务正确提交和回滚
  • 异常处理完整性: 覆盖所有可能的数据库和业务异常

集成风险 🟡

  • 现有 API 兼容性: 确保重构不影响现有 GET API
  • 数据库约束冲突: 处理唯一性约束等数据库级别限制

时间风险 🟢

  • 任务依赖: 明确的依赖关系,可并行执行基础任务
  • 测试验证: 充分的测试时间分配

任务分解完成: 11个原子任务已定义 创建时间: 2025-09-28 预计总工期: 2-3小时 状态: 准备进入审批阶段