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