235 lines
8.7 KiB
Markdown
235 lines
8.7 KiB
Markdown
# Implementation Plan: 随工水印相机 2.0.1 客户端
|
||
|
||
## Overview
|
||
|
||
基于现有的 WinForms + .NET 8 客户端项目,实现主页界面、工作记录管理、月报表功能,所有导出操作在客户端本地执行。
|
||
|
||
## Tasks
|
||
|
||
- [x] 1. 项目基础设施搭建
|
||
- [x] 1.1 创建 Models 层数据模型
|
||
- 创建 WorkRecordDto、MonthlyReportDto、StatisticsDto、ExportProgress、AppConfig 等模型类
|
||
- 创建 API 响应包装类 ApiResponse<T>、PagedResult<T>
|
||
- _Requirements: 2.5, 7.3_
|
||
- [x] 1.2 创建 Services 层接口定义
|
||
- 定义 IApiService、IExportService、IImageService、IConfigService、ILogService 接口
|
||
- _Requirements: 6.3, 6.4, 10.3, 11.2, 12.2, 12.3_
|
||
- [x] 1.3 实现 ConfigService 配置服务
|
||
- 实现配置文件的读取和保存(JSON 格式)
|
||
- 实现登录凭证的加密存储
|
||
- _Requirements: 10.1, 12.1, 12.2_
|
||
- [x] 1.4 编写 ConfigService 属性测试
|
||
- **Property 12: 配置持久化**
|
||
- **Validates: Requirements 12.2**
|
||
- [x] 1.5 实现 LogService 日志服务
|
||
- 实现日志记录(Info、Error、Warn)
|
||
- 实现日志文件按日期分割
|
||
- 实现日志导出功能
|
||
- _Requirements: 12.3, 12.4_
|
||
- [x] 1.6 编写 LogService 属性测试
|
||
- **Property 13: 日志记录**
|
||
- **Validates: Requirements 12.3**
|
||
|
||
- [x] 2. API 通信服务实现
|
||
- [x] 2.1 实现 ApiService 基础功能
|
||
- 实现 HttpClient 封装,支持 Token 认证
|
||
- 实现请求重试机制(最多 3 次)
|
||
- 实现 Token 自动刷新逻辑
|
||
- _Requirements: 10.3, 10.4, 11.2_
|
||
- [x] 2.2 编写 ApiService 属性测试
|
||
- **Property 10: Token 自动刷新**
|
||
- **Property 11: 请求重试机制**
|
||
- **Validates: Requirements 10.3, 11.2**
|
||
- [x] 2.3 实现 ApiService 业务接口
|
||
- 实现登录接口 LoginAsync
|
||
- 实现统计接口 GetStatisticsAsync
|
||
- 实现工作记录 CRUD 接口
|
||
- 实现月报表查询接口
|
||
- 实现月份图片列表接口
|
||
- _Requirements: 1.2, 2.2, 4.7, 5.2, 7.2, 9.1_
|
||
|
||
- [x] 3. Checkpoint - 基础服务完成
|
||
- 确保所有测试通过,如有问题请询问用户
|
||
|
||
- [x] 4. 图片服务实现
|
||
- [x] 4.1 实现 ImageService 下载功能
|
||
- 实现单图下载 DownloadImageAsync
|
||
- 实现批量并发下载 DownloadImagesAsync(使用 SemaphoreSlim 控制并发)
|
||
- _Requirements: 6.4, 9.2_
|
||
- [x] 4.2 编写 ImageService 并发下载属性测试
|
||
- **Property 7: 并发下载控制**
|
||
- **Validates: Requirements 6.4**
|
||
- [x] 4.3 实现 ImageService 图片处理功能
|
||
- 实现图片压缩 CompressImage(使用 SixLabors.ImageSharp)
|
||
- 实现图片缩放 ResizeImage
|
||
- _Requirements: 6.7_
|
||
|
||
- [x] 5. 导出服务实现
|
||
- [x] 5.1 实现 ExportService 工作记录导出
|
||
- 实现分页获取数据逻辑
|
||
- 实现图片下载和临时存储
|
||
- 实现 Excel 生成(使用 EPPlus)
|
||
- 实现图片嵌入 Excel(水平排列,100x60 像素)
|
||
- 实现进度回调和取消支持
|
||
- _Requirements: 6.1, 6.2, 6.3, 6.5, 6.6, 6.7, 6.8, 6.9_
|
||
- [x] 5.2 编写 ExportService 属性测试
|
||
- **Property 5: 导出数据完整性**
|
||
- **Property 6: 分页数据获取**
|
||
- **Property 8: Excel 图片布局**
|
||
- **Validates: Requirements 6.1, 6.2, 6.3, 6.6, 6.7**
|
||
- [x] 5.3 实现 ExportService 月报表导出
|
||
- 实现月报表 Excel 生成
|
||
- _Requirements: 8.1, 8.2_
|
||
- [x] 5.4 实现 ExportService 照片 ZIP 下载
|
||
- 实现按目录结构下载图片
|
||
- 实现 ZIP 打包(使用 System.IO.Compression)
|
||
- 实现进度回调和取消支持
|
||
- _Requirements: 9.1, 9.2, 9.3, 9.4, 9.5, 9.6_
|
||
- [x] 5.5 编写 ExportService ZIP 目录结构属性测试
|
||
- **Property 9: ZIP 目录结构**
|
||
- **Validates: Requirements 9.2, 9.3**
|
||
|
||
- [x] 6. Checkpoint - 服务层完成
|
||
- 确保所有测试通过,如有问题请询问用户
|
||
|
||
- [x] 7. 主页界面实现
|
||
- [x] 7.1 创建 MainForm 主页窗体
|
||
- 设计统计信息面板布局
|
||
- 设计功能入口按钮布局
|
||
- _Requirements: 1.1_
|
||
- [x] 7.2 实现 MainForm 功能逻辑
|
||
- 实现统计数据加载和显示
|
||
- 实现导航到工作记录、月报表、数据迁移界面
|
||
- 实现错误处理和重试
|
||
- _Requirements: 1.2, 1.3, 1.4, 1.5, 1.6_
|
||
|
||
- [x] 8. 图片查看器实现
|
||
- [x] 8.1 创建 ImageViewerForm 图片查看器窗体
|
||
- 设计图片显示区域
|
||
- 设计导航按钮(上一张、下一张)
|
||
- _Requirements: 3.3_
|
||
- [x] 8.2 实现 ImageViewerForm 功能逻辑
|
||
- 实现图片加载和显示
|
||
- 实现图片轮播切换(左右箭头、循环)
|
||
- 实现图片缩放(鼠标滚轮)
|
||
- 实现图片拖拽移动
|
||
- _Requirements: 3.4, 3.5, 3.6_
|
||
- [x] 8.3 编写图片轮播索引属性测试
|
||
- **Property 2: 图片轮播索引边界**
|
||
- **Validates: Requirements 3.6**
|
||
|
||
- [x] 9. 工作记录管理界面实现
|
||
- [x] 9.1 创建 WorkRecordForm 工作记录窗体
|
||
- 设计查询条件面板
|
||
- 设计数据列表(DataGridView)
|
||
- 设计工具栏按钮
|
||
- 设计分页控件
|
||
- _Requirements: 2.1, 2.4_
|
||
- [x] 9.2 实现 WorkRecordForm 查询功能
|
||
- 实现查询条件绑定
|
||
- 实现查询和重置
|
||
- 实现分页加载
|
||
- _Requirements: 2.2, 2.3, 2.4_
|
||
- [x] 9.3 实现 WorkRecordForm 列表显示
|
||
- 实现数据绑定和显示
|
||
- 实现多图缩略图显示(最多 3 张 + 徽章)
|
||
- 实现多选功能
|
||
- _Requirements: 2.5, 3.1, 3.2_
|
||
- [x] 9.4 编写图片显示数量属性测试
|
||
- **Property 1: 图片显示数量限制**
|
||
- **Validates: Requirements 3.1, 3.2**
|
||
- [x] 9.5 实现 WorkRecordForm 导出功能
|
||
- 实现导出全部
|
||
- 实现导出所选
|
||
- 实现进度显示和取消
|
||
- _Requirements: 6.1, 6.2, 6.8, 6.9, 6.10_
|
||
|
||
- [x] 10. 工作记录编辑功能实现
|
||
- [x] 10.1 创建 WorkRecordEditForm 编辑弹窗
|
||
- 设计表单布局(所有可编辑字段)
|
||
- 设计图片上传区域
|
||
- _Requirements: 4.3_
|
||
- [x] 10.2 实现 WorkRecordEditForm 图片上传功能
|
||
- 实现拖拽上传
|
||
- 实现点击选择多文件
|
||
- 实现图片预览
|
||
- 实现图片删除
|
||
- 实现数量限制(最多 15 张,单张 10MB)
|
||
- _Requirements: 4.4, 4.5, 4.6_
|
||
- [x] 10.3 编写图片上传数量属性测试
|
||
- **Property 3: 图片上传数量限制**
|
||
- **Property 4: 图片删除后列表更新**
|
||
- **Validates: Requirements 4.5, 4.6**
|
||
- [x] 10.4 实现 WorkRecordEditForm 表单提交
|
||
- 实现新增记录
|
||
- 实现编辑记录
|
||
- 实现表单验证
|
||
- 实现错误处理
|
||
- _Requirements: 4.1, 4.2, 4.7, 4.8_
|
||
- [x] 10.5 实现 WorkRecordForm 删除功能
|
||
- 实现删除确认对话框
|
||
- 实现删除 API 调用
|
||
- 实现错误处理
|
||
- _Requirements: 5.1, 5.2, 5.3_
|
||
|
||
- [x] 11. Checkpoint - 工作记录功能完成
|
||
- 确保所有测试通过,如有问题请询问用户
|
||
|
||
- [x] 12. 月报表界面实现
|
||
- [x] 12.1 创建 MonthReportForm 月报表窗体
|
||
- 设计查询条件面板(人员名称、月份)
|
||
- 设计数据列表
|
||
- 设计工具栏按钮
|
||
- _Requirements: 7.1_
|
||
- [x] 12.2 实现 MonthReportForm 查询功能
|
||
- 实现查询和重置
|
||
- 实现数据显示
|
||
- _Requirements: 7.2, 7.3_
|
||
- [x] 12.3 实现 MonthReportForm 导出功能
|
||
- 实现 Excel 导出
|
||
- 实现照片 ZIP 下载
|
||
- 实现进度显示和取消
|
||
- _Requirements: 8.1, 8.2, 8.3, 9.1, 9.5, 9.6, 9.7_
|
||
|
||
- [x] 13. 通用功能实现
|
||
- [x] 13.1 实现登录状态管理
|
||
- 实现记住登录功能
|
||
- 实现自动登录
|
||
- 实现登录失效提示
|
||
- _Requirements: 10.1, 10.2, 10.4_
|
||
- [x] 13.2 实现网络异常处理
|
||
- 实现网络断开检测和提示
|
||
- 实现断点续传支持
|
||
- _Requirements: 11.1, 11.3_
|
||
- [x] 13.3 创建 SettingsForm 设置界面
|
||
- 设计设置项布局
|
||
- 实现设置保存
|
||
- _Requirements: 12.1, 12.2_
|
||
|
||
- [x] 14. 后端 API 支持
|
||
- [x] 14.1 实现统计接口
|
||
- 创建 /api/workrecord/statistics 接口
|
||
- 返回本月记录数、图片数、人员数、今日新增、总量、待迁移数
|
||
- _Requirements: 1.2_
|
||
- [x] 14.2 实现月份图片列表接口
|
||
- 创建 /api/workrecord/monthImages 接口
|
||
- 返回指定月份的所有图片 URL 及相关信息
|
||
- _Requirements: 9.1_
|
||
|
||
- [x] 15. Final Checkpoint - 全部功能完成
|
||
- 确保所有测试通过
|
||
- 进行集成测试
|
||
- 如有问题请询问用户
|
||
|
||
## Notes
|
||
|
||
- All tasks are required for complete implementation
|
||
- Each task references specific requirements for traceability
|
||
- Checkpoints ensure incremental validation
|
||
- Property tests validate universal correctness properties
|
||
- Unit tests validate specific examples and edge cases
|
||
- 使用 C# / .NET 8 开发
|
||
- 使用 EPPlus 生成 Excel
|
||
- 使用 SixLabors.ImageSharp 处理图片
|
||
- 使用 System.IO.Compression 打包 ZIP
|