Implementation Plan: Supplier Management
Overview
本实现计划将供应商管理功能分解为可执行的编码任务,按照数据库迁移 → 后端模型 → API → 前端的顺序实现。
Tasks
[x] 1. 数据库迁移脚本
[x] 2. 后端 Supplier 模型和 API
- 2.1 创建 Supplier 模型
backend/app/models/supplier.py
- 定义 Supplier 类,包含 id, name, created_at, updated_at
- 添加 to_dict() 方法
- 在
__init__.py 中注册模型
- Requirements: 3.1, 3.6
- 2.2 创建 Supplier 路由
backend/app/routes/supplier.py
- GET /api/suppliers - 获取所有供应商
- GET /api/suppliers/:id - 获取单个供应商
- POST /api/suppliers - 创建供应商(验证名称唯一性)
- PUT /api/suppliers/:id - 更新供应商(验证名称唯一性)
- DELETE /api/suppliers/:id - 删除供应商
- 在
__init__.py 中注册蓝图
- Requirements: 3.2, 3.3, 3.4
- [ ]* 2.3 编写 Supplier 单元测试
backend/tests/test_supplier.py
- 测试 CRUD 操作
- 测试名称唯一性约束
- Requirements: 3.2, 3.3, 3.4
- [ ]* 2.4 编写供应商名称唯一性属性测试
- Property 3: Supplier Name Uniqueness
- Validates: Requirements 3.2, 3.3, 3.6
[x] 3. 更新 Person 模型和 API
[x] 4. 更新 Item 模型和 API
- 4.1 更新 Item 模型
- 添加 supplier_id 外键字段
- 添加 supplier 关系
- 更新 to_dict() 返回 supplier_name(无供应商时为空字符串)
- 添加唯一约束验证
- Requirements: 2.1, 2.2, 2.3, 4.1, 4.2
- 4.2 更新 Item 路由
- POST /api/items - 支持 supplier_id,验证名称唯一性
- PUT /api/items/:id - 支持 supplier_id,验证名称唯一性
- Requirements: 2.1, 2.2, 4.1
- [ ]* 4.3 编写物品名称唯一性属性测试
- Property 2: Item Name Uniqueness
- Validates: Requirements 2.1, 2.2, 2.3
- [ ]* 4.4 编写空供应商显示属性测试
- Property 4: Empty Supplier Name Display
- Validates: Requirements 4.2, 6.4, 7.3, 8.2
[x] 5. Checkpoint - 确保所有测试通过
- 运行所有后端测试
- 确保迁移脚本正确执行
- 如有问题请询问用户
[x] 6. 更新 WorkRecord 模型和 API
[x] 7. 更新导出服务
- 7.1 更新 ExportService 明细表
- 修改 DETAIL_HEADERS 为 ['人员', '日期', '供应商', '物品', '单价', '数量', '总价']
- 更新 _create_detail_sheet() 添加供应商列
- Requirements: 6.1, 6.4
- 7.2 更新 ExportService 月度汇总表
- 修改 _create_monthly_summary_sheet() 按人员+供应商分组
- Headers: ['人员', '供应商', '总金额']
- Requirements: 6.2
- [ ]* 7.3 编写导出服务单元测试
- 测试明细表包含供应商列
- 测试月度汇总按人员+供应商分组
- 测试无供应商时显示空字符串
- Requirements: 6.1, 6.2, 6.3, 6.4
[x] 8. 更新仪表盘 API
[x] 9. Checkpoint - 确保后端功能完整
- 运行所有后端测试
- 验证 API 响应格式正确
- 如有问题请询问用户
[x] 10. 前端 Supplier 管理页面
[x] 11. 前端 Item 管理页面更新
[x] 12. 前端 WorkRecord 管理页面更新
[x] 13. 前端 Dashboard 更新
[x] 14. Final Checkpoint - 完整功能验证
- 确保所有测试通过
- 验证前后端集成正常
- 如有问题请询问用户
Notes
- 任务标记
* 为可选测试任务,可跳过以加快 MVP 开发
- 每个任务引用具体的需求编号以便追溯
- Checkpoint 任务用于阶段性验证
- 属性测试验证核心正确性属性