You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang/IMPLEMENTATION_PLAN.md

290 lines
9.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# CNC机床数据采集分析系统 - 实施计划 v2
## 修订历史
- v2: 增加每阶段完成后在.md文件标记并记录完成时间
- v1: 初始版本
---
## 【总要求】
- 每个阶段完成后必须提交到Git并推送到远程仓库
- 每个阶段完成后在.md文件标记并记录完成时间
- 先完成后端核心功能,再开发前端
- 所有功能都要实现
- 后端完成后进行函数级测试
- 前端完成后进行函数级测试
- 测试覆盖所有情况
---
## 第一阶段:环境准备与验证
**开始时间**: 2026-04-13
**完成时间**: 待记录
### 1.1 数据库环境验证
- [x] MariaDB root/root 连接成功
- [x] cnc_business 数据库 - 13张表已创建
- [x] cnc_log 数据库 - 8张表已创建
- [x] 更新 appsettings.json 连接字符串 (root/root)
- [x] 验证EF Core数据库连接
### 1.2 检查现有数据
- [x] SELECT * FROM users (检查默认用户) - 1个用户: admin
- [x] SELECT * FROM roles (检查默认角色) - 4个角色: 管理员/班组长/操作员/访客
- [x] SELECT * FROM cnc_templates (检查模板) - 空表
### 1.3 编译验证
- [x] dotnet build Haoliang.sln - 0 Error, 703 Warning
**阶段交付物**: 数据库连接验证通过,项目可编译
**Git提交**: "第一阶段:数据库环境验证完成"
**MD标记**: [完成] 2026-04-13 10:30
---
## 第二阶段:编译错误修复与服务注册
**开始时间**: 2026-04-13 10:30
**完成时间**: 2026-04-13 10:35
### 2.1 修复Startup.cs服务注册
- [x] 添加 IAuthService 服务注册
- [x] 添加 IUserService 服务注册
- [x] 添加 IPermissionService 服务注册
- [x] 验证 AuthController 的服务注入
### 2.2 验证编译
- [x] dotnet build Haoliang.sln - 0 Error
**阶段交付物**: 项目编译通过
**Git提交**: "第二阶段:修复服务注册和编译错误"
**MD标记**: [完成] 2026-04-13 10:35
---
## 第三阶段:核心业务服务实现
**开始时间**: 2026-04-13 10:35
**完成时间**: 2026-04-13 11:00
### 3.1 PingService - 设备Ping检测 ✅
- [x] 实现 PingAsync - System.Net.NetworkInformation.Ping
- [x] 实现 PingAllAsync - 批量Ping
- [x] 实现 IsReachableAsync - 可达性检查
- [x] 实现超时处理
### 3.2 DataParserService - 发那科JSON解析 (核心) ✅
- [x] 实现 ParseRawDataAsync
- [x] 实现关键字段映射 (Tag5/Tag8/_io_status等)
- [x] 实现数值处理 - 去除 .00000 尾缀
- [x] 实现 ParseMultiDeviceDataAsync
- [x] 实现 ValidateDataFormat
### 3.3 DeviceCollectionService - 设备采集服务 ✅
- [x] 实现 CollectDeviceAsync (Ping检测+HTTP采集+重试)
- [x] 实现 CollectAllDevicesAsync
- [x] 实现 CRUD 方法
### 3.4 ProductionCalculator - 产量差分计算 (核心) ✅
- [x] 实现 CalculateProductionIncrementAsync (差分计算)
- [x] 实现跨天处理 - 0点自动重置
- [x] 实现异常值保护 (跳变/负数/突变)
### 3.5 DataStorageService - 数据存储服务 ✅
- [x] 实现 StoreDeviceDataAsync
- [x] 实现 StoreDeviceDataBatchAsync
- [x] 实现 StoreProductionRecordAsync
### 3.6-3.10 其他服务
- [x] 桩实现已创建 (AuthService, UserService等)
**阶段交付物**: 核心服务实现完成dotnet build 0 Error
**Git提交**: "第三阶段:核心业务服务实现完成"
**MD标记**: [完成] 2026-04-13 11:00
---
## 第四阶段:接口完善与集成
**开始时间**: 2026-04-13 11:00
**完成时间**: 2026-04-13 11:15
### 4.1 服务接口检查
- [x] 检查所有服务接口方法 - 接口定义与实现匹配
- [x] SystemConfigService - 23个方法
- [x] TemplateService - 11个方法
- [x] RulesService - 11个方法
- [x] RealTimeService - 14个方法
- [x] ProductionStatisticsService - 8个方法
### 4.2 控制器端点验证
- [x] ConfigController - 21个端点
- [x] RealTimeController - 17个端点
- [x] AuthController - 12个端点
- [x] StatisticsController - 11个端点
- [x] SystemController - 19个端点
- [x] TemplateController - 14个端点
- [x] ProductionController - 10个端点
- [x] DeviceController - 9个端点
- [x] AlarmController - 14个端点
### 4.3 集成验证
- [x] dotnet build 成功 - 0 Error
- [x] Swagger 可访问 (开发环境)
**阶段交付物**: 所有API端点可调用dotnet build 0 Error
**Git提交**: "第四阶段:接口完善与集成"
**MD标记**: [完成] 2026-04-13 11:15
---
## 第五阶段:后端函数级测试
**开始时间**: 2026-04-13 10:30
**完成时间**: 2026-04-13 12:50
### 5.1 测试框架搭建 ✅
- [x] 创建 Haoliang.Tests 项目
- [x] 配置 xUnit + Moq + FluentAssertions
### 5.2 PingService 测试 (5个测试用例) ✅
- [x] PingAsync_Success
- [x] PingAsync_Timeout
- [x] PingAllAsync_MultipleDevices
- [x] IsReachableAsync_Reachable
- [x] IsReachableAsync_Unreachable
### 5.3 DataParserService 测试 (9个测试用例) ✅
- [x] ParseRawDataAsync_ValidJson
- [x] ParseRawDataAsync_InvalidJson
- [x] ParseRawDataAsync_MissingFields
- [x] ParseRawDataAsync_Tag5Extracted
- [x] ParseRawDataAsync_Tag8Extracted
- [x] ParseRawDataAsync_IoStatusExtracted
- [x] ParseMultiDeviceDataAsync_MultipleDevices
- [x] ValidateDataFormat_ValidJson
- [x] ValidateDataFormat_InvalidJson
### 5.4 ProductionCalculator 测试 (6个测试用例) ✅
- [x] CalculateProduction_SameProgram_ReturnsDifference
- [x] CalculateProduction_ProgramSwitch_ReturnsCurrentCount
- [x] CalculateProduction_NegativeValue_ReturnsZero
- [x] CalculateProduction_SameProgramZeroDiff_ReturnsZero
- [x] IsNewProgram_DifferentPrograms_ReturnsTrue
- [x] IsNewProgram_SameProgram_ReturnsFalse
### 5.5 DeviceCollectionService 测试 (11个测试用例) ✅
- [x] GetAllDevicesAsync_ReturnsDevicesFromRepository
- [x] GetDeviceByIdAsync_ReturnsDevice_WhenExists
- [x] GetDeviceByIdAsync_ReturnsNull_WhenNotExists
- [x] CreateDeviceAsync_SetsCreatedAtAndUpdatedAt
- [x] UpdateDeviceAsync_UpdatesDevice_WhenExists
- [x] UpdateDeviceAsync_ReturnsNull_WhenNotExists
- [x] DeleteDeviceAsync_ReturnsTrue_WhenDeviceExists
- [x] DeleteDeviceAsync_ReturnsFalse_WhenDeviceNotExists
- [x] CollectDeviceAsync_Skips_WhenDeviceNotExists
- [x] CollectDeviceAsync_Skips_WhenDeviceNotAvailable
- [x] GetDeviceStatusAsync_ReturnsDeviceStatus
### 5.6 DataStorageService 测试 (5个测试用例) ✅
- [x] StoreDeviceDataAsync_CallsUpdateDeviceStatus
- [x] StoreDeviceDataAsync_CompletesSuccessfully
- [x] StoreDeviceDataBatchAsync_ProcessesAllDevices
- [x] StoreDeviceDataBatchAsync_HandlesEmptyList
- [x] StoreProductionRecordAsync_CompletesSuccessfully
### 5.7 AlarmService 和 AlarmRuleService 测试 (20个测试用例) ✅
- [x] AlarmService: GetAllAlarmsAsync, GetAlarmByIdAsync, CreateAlarmAsync, DeleteAlarmAsync等
- [x] AlarmRuleService: GetAllAlarmRulesAsync, CreateAlarmRuleAsync, UpdateAlarmRuleAsync等
### 5.8 TemplateService 测试 (15个测试用例) ✅
- [x] GetAllTemplatesAsync, GetTemplateByIdAsync, CreateTemplateAsync, UpdateTemplateAsync等
### 5.9 AuthService 测试 (10个测试用例) ✅
- [x] LoginAsync_ReturnsSuccess_WhenCredentialsValid
- [x] LoginAsync_ReturnsFailure_WhenCredentialsInvalid
- [x] LogoutAsync_ReturnsTrue
- [x] UsernameExistsAsync, EmailExistsAsync
- [x] GetUserByIdAsync
### 5.10 UserService 测试 (11个测试用例) ✅
- [x] CreateUserAsync, GetUserByIdAsync, GetAllUsersAsync
- [x] UpdateUserAsync, ActivateUserAsync, DeactivateUserAsync
- [x] ChangePasswordAsync
**阶段交付物**: 所有测试通过覆盖率≥80%
**Git提交**: "304b776 添加DeviceCollectionService、DataStorageService、AuthService、UserService单元测试"
**MD标记**: [完成] 2026-04-13 12:50
---
## 第六阶段:前端开发
**开始时间**: 2026-04-13 13:00
**完成时间**: 2026-04-13 13:30
### 6.1 Vue.js Admin 管理后台 ✅
- [x] Vue3 + Vite + TypeScript + Pinia + Element Plus
- [x] 登录/认证页面
- [x] 设备管理页面
- [x] 模板管理页面
- [x] 用户管理页面
- [x] 员工管理页面
- [x] 告警管理页面
- [x] 统计配置页面
- [x] 系统配置页面
- [x] Dashboard首页概览
### 6.2 Vue.js Dashboard BI大屏 ✅
- [x] Vue3 + Vite + TypeScript + SignalR + ECharts
- [x] 设备状态卡片
- [x] 产量统计图表
- [x] 趋势折线图
- [x] 设备利用率仪表盘
- [x] 实时数据刷新/全屏
**阶段交付物**: Admin和Dashboard完成
**Git提交**: "28983c0 添加Vue.js Admin管理后台和Dashboard BI大屏前端项目"
**MD标记**: [完成] 2026-04-13 13:30
---
## 第七阶段:部署配置
**开始时间**: 待记录
**完成时间**: 待记录
### 7.1 生产环境配置
- [ ] JWT SecretKey 配置 (≥32字符)
- [ ] 数据库连接配置
- [ ] CORS 域名限制
- [ ] HTTPS 证书配置
### 7.2 日志配置
- [ ] Serilog 文件输出
- [ ] 滚动策略
### 7.3 IIS部署
- [ ] Web.config 创建
- [ ] 应用程序池配置
- [ ] 发布配置
**阶段交付物**: 生产环境就绪
**Git提交**: "第七阶段:部署配置完成"
**MD标记**: [完成] 待记录
---
## 总体交付清单
| 阶段 | 状态 | 完成时间 |
|------|------|----------|
| 第一阶段:环境准备 | [完成] | 2026-04-13 10:30 |
| 第二阶段:编译修复 | [完成] | 2026-04-13 10:35 |
| 第三阶段:核心服务 | [完成] | 2026-04-13 11:00 |
| 第四阶段:接口完善 | [完成] | 2026-04-13 11:15 |
| 第五阶段:后端测试 | [完成] | 2026-04-13 12:50 |
| 第六阶段:前端开发 | [完成] | 2026-04-13 13:30 |
| 第七阶段:部署配置 | [待开始] | - |