|
|
|
|
@ -0,0 +1,285 @@
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 第二阶段:编译错误修复与服务注册
|
|
|
|
|
|
|
|
|
|
**开始时间**: 待记录
|
|
|
|
|
**完成时间**: 待记录
|
|
|
|
|
|
|
|
|
|
### 2.1 修复Startup.cs服务注册
|
|
|
|
|
- [ ] 添加 IAuthService 服务注册
|
|
|
|
|
- [ ] 添加 IUserService 服务注册
|
|
|
|
|
- [ ] 添加 IPermissionService 服务注册
|
|
|
|
|
- [ ] 添加 IAuthService 接口实现(StubServices)
|
|
|
|
|
|
|
|
|
|
### 2.2 修复接口方法缺失
|
|
|
|
|
- [ ] 在IServices.cs添加 IUserService.ChangePasswordAsync
|
|
|
|
|
- [ ] 验证 AuthController 的服务注入
|
|
|
|
|
|
|
|
|
|
### 2.3 验证编译
|
|
|
|
|
- [ ] dotnet build Haoliang.sln (0 Error)
|
|
|
|
|
|
|
|
|
|
**阶段交付物**: 项目编译通过
|
|
|
|
|
**Git提交**: "第二阶段:修复服务注册和编译错误"
|
|
|
|
|
**MD标记**: [完成] 待记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 第三阶段:核心业务服务实现
|
|
|
|
|
|
|
|
|
|
**开始时间**: 待记录
|
|
|
|
|
**完成时间**: 待记录
|
|
|
|
|
|
|
|
|
|
### 3.1 PingService - 设备Ping检测
|
|
|
|
|
- [ ] 实现 PingAsync
|
|
|
|
|
- [ ] 实现 PingAllAsync
|
|
|
|
|
- [ ] 实现 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 DeviceStateMachine - 设备状态机
|
|
|
|
|
- [ ] 实现状态转换规则
|
|
|
|
|
- [ ] 实现 GetCurrentState/TransitionTo
|
|
|
|
|
- [ ] 单元测试覆盖
|
|
|
|
|
|
|
|
|
|
### 3.7 BackgroundTaskService - 后台任务调度
|
|
|
|
|
- [ ] 实现定时采集任务
|
|
|
|
|
- [ ] 实现0点跨天重置任务
|
|
|
|
|
- [ ] 单元测试覆盖
|
|
|
|
|
|
|
|
|
|
### 3.8 AuthService - 认证服务
|
|
|
|
|
- [ ] 实现 LoginAsync - JWT生成
|
|
|
|
|
- [ ] 实现 LogoutAsync/RefreshTokenAsync
|
|
|
|
|
- [ ] 单元测试覆盖
|
|
|
|
|
|
|
|
|
|
### 3.9 UserService - 用户服务
|
|
|
|
|
- [ ] 实现 CreateUserAsync - BCrypt加密
|
|
|
|
|
- [ ] 实现 CRUD 方法
|
|
|
|
|
- [ ] 单元测试覆盖
|
|
|
|
|
|
|
|
|
|
### 3.10 JwtMiddleware - JWT认证中间件
|
|
|
|
|
- [ ] 实现Token验证
|
|
|
|
|
- [ ] 单元测试覆盖
|
|
|
|
|
|
|
|
|
|
**阶段交付物**: 所有核心服务实现完成
|
|
|
|
|
**Git提交**: "第三阶段:核心业务服务实现完成"
|
|
|
|
|
**MD标记**: [完成] 待记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 第四阶段:接口完善与集成
|
|
|
|
|
|
|
|
|
|
**开始时间**: 待记录
|
|
|
|
|
**完成时间**: 待记录
|
|
|
|
|
|
|
|
|
|
### 4.1 服务接口检查
|
|
|
|
|
- [ ] 检查所有服务接口方法
|
|
|
|
|
|
|
|
|
|
### 4.2 控制器端点验证
|
|
|
|
|
- [ ] ConfigController - 21个端点
|
|
|
|
|
- [ ] RealTimeController - 17个端点
|
|
|
|
|
- [ ] AuthController - 12个端点
|
|
|
|
|
- [ ] StatisticsController - 11个端点
|
|
|
|
|
- [ ] SystemController - 19个端点
|
|
|
|
|
- [ ] TemplateController - 14个端点
|
|
|
|
|
- [ ] ProductionController - 10个端点
|
|
|
|
|
- [ ] DeviceController - 9个端点
|
|
|
|
|
- [ ] AlarmController - 14个端点
|
|
|
|
|
|
|
|
|
|
### 4.3 集成验证
|
|
|
|
|
- [ ] dotnet build 成功
|
|
|
|
|
- [ ] Swagger 可访问
|
|
|
|
|
|
|
|
|
|
**阶段交付物**: 所有API端点可调用
|
|
|
|
|
**Git提交**: "第四阶段:接口完善与集成"
|
|
|
|
|
**MD标记**: [完成] 待记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 第五阶段:后端函数级测试
|
|
|
|
|
|
|
|
|
|
**开始时间**: 待记录
|
|
|
|
|
**完成时间**: 待记录
|
|
|
|
|
|
|
|
|
|
### 5.1 测试框架搭建
|
|
|
|
|
- [ ] 创建 Haoliang.Tests 项目
|
|
|
|
|
- [ ] 配置 xUnit + Moq + FluentAssertions
|
|
|
|
|
|
|
|
|
|
### 5.2 PingService 测试 (5个测试用例)
|
|
|
|
|
- [ ] PingAsync_Success
|
|
|
|
|
- [ ] PingAsync_Timeout
|
|
|
|
|
- [ ] PingAllAsync_MultipleDevices
|
|
|
|
|
- [ ] IsReachableAsync_Reachable
|
|
|
|
|
- [ ] IsReachableAsync_Unreachable
|
|
|
|
|
|
|
|
|
|
### 5.3 DataParserService 测试 (10个测试用例)
|
|
|
|
|
- [ ] ParseRawDataAsync_ValidJson
|
|
|
|
|
- [ ] ParseRawDataAsync_InvalidJson
|
|
|
|
|
- [ ] ParseRawDataAsync_MissingFields
|
|
|
|
|
- [ ] ParseRawDataAsync_Tag5Extracted
|
|
|
|
|
- [ ] ParseRawDataAsync_Tag8Extracted
|
|
|
|
|
- [ ] ParseRawDataAsync_IoStatusExtracted
|
|
|
|
|
- [ ] ParseMultiDeviceDataAsync_MultipleDevices
|
|
|
|
|
- [ ] ValidateDataFormat_ValidJson
|
|
|
|
|
- [ ] ValidateDataFormat_InvalidJson
|
|
|
|
|
- [ ] ParseRawDataAsync_RemovesDecimalSuffix
|
|
|
|
|
|
|
|
|
|
### 5.4 ProductionCalculator 测试 (10个测试用例)
|
|
|
|
|
- [ ] CalculateProductionIncrement_SameProgram
|
|
|
|
|
- [ ] CalculateProductionIncrement_ProgramSwitch
|
|
|
|
|
- [ ] CalculateProductionIncrement_ReturnToHistory
|
|
|
|
|
- [ ] CalculateProductionIncrement_NegativeValue
|
|
|
|
|
- [ ] CalculateProductionIncrement_JumpValue
|
|
|
|
|
- [ ] CrossDayReset_NewDay
|
|
|
|
|
- [ ] ValidateProductionValue_AbnormalJump
|
|
|
|
|
- [ ] ValidateProductionValue_NormalValue
|
|
|
|
|
- [ ] ResetDeviceProductionState_ClearsHistory
|
|
|
|
|
- [ ] CalculateProductionIncrement_ZeroDiff
|
|
|
|
|
|
|
|
|
|
### 5.5 DeviceCollectionService 测试 (8个测试用例)
|
|
|
|
|
### 5.6 DataStorageService 测试 (6个测试用例)
|
|
|
|
|
### 5.7 AuthService 测试 (8个测试用例)
|
|
|
|
|
### 5.8 集成测试 (5个测试用例)
|
|
|
|
|
|
|
|
|
|
**阶段交付物**: 所有测试通过,覆盖率≥80%
|
|
|
|
|
**Git提交**: "第五阶段:后端函数级测试完成"
|
|
|
|
|
**MD标记**: [完成] 待记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 第六阶段:前端开发
|
|
|
|
|
|
|
|
|
|
**开始时间**: 待记录
|
|
|
|
|
**完成时间**: 待记录
|
|
|
|
|
|
|
|
|
|
### 6.1 Vue.js Admin 管理后台
|
|
|
|
|
- [ ] Vue3 + Vite + TypeScript + Pinia + Element Plus
|
|
|
|
|
- [ ] 登录/认证页面
|
|
|
|
|
- [ ] 设备管理页面
|
|
|
|
|
- [ ] 模板管理页面
|
|
|
|
|
- [ ] 用户管理页面
|
|
|
|
|
- [ ] 员工管理页面
|
|
|
|
|
- [ ] 告警管理页面
|
|
|
|
|
- [ ] 统计配置页面
|
|
|
|
|
- [ ] 系统配置页面
|
|
|
|
|
- [ ] Vitest 函数级测试
|
|
|
|
|
|
|
|
|
|
### 6.2 Vue.js Dashboard BI大屏
|
|
|
|
|
- [ ] Vue3 + Vite + TypeScript + SignalR + ECharts
|
|
|
|
|
- [ ] 设备状态卡片
|
|
|
|
|
- [ ] 产量统计图表
|
|
|
|
|
- [ ] 趋势折线图
|
|
|
|
|
- [ ] 设备利用率饼图
|
|
|
|
|
- [ ] 实时数据刷新/筛选/全屏
|
|
|
|
|
- [ ] Vitest 函数级测试
|
|
|
|
|
|
|
|
|
|
**阶段交付物**: Admin和Dashboard完成
|
|
|
|
|
**Git提交**: "第六阶段:前端开发完成"
|
|
|
|
|
**MD标记**: [完成] 待记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 第七阶段:部署配置
|
|
|
|
|
|
|
|
|
|
**开始时间**: 待记录
|
|
|
|
|
**完成时间**: 待记录
|
|
|
|
|
|
|
|
|
|
### 7.1 生产环境配置
|
|
|
|
|
- [ ] JWT SecretKey 配置 (≥32字符)
|
|
|
|
|
- [ ] 数据库连接配置
|
|
|
|
|
- [ ] CORS 域名限制
|
|
|
|
|
- [ ] HTTPS 证书配置
|
|
|
|
|
|
|
|
|
|
### 7.2 日志配置
|
|
|
|
|
- [ ] Serilog 文件输出
|
|
|
|
|
- [ ] 滚动策略
|
|
|
|
|
|
|
|
|
|
### 7.3 IIS部署
|
|
|
|
|
- [ ] Web.config 创建
|
|
|
|
|
- [ ] 应用程序池配置
|
|
|
|
|
- [ ] 发布配置
|
|
|
|
|
|
|
|
|
|
**阶段交付物**: 生产环境就绪
|
|
|
|
|
**Git提交**: "第七阶段:部署配置完成"
|
|
|
|
|
**MD标记**: [完成] 待记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 总体交付清单
|
|
|
|
|
|
|
|
|
|
| 阶段 | 状态 | 完成时间 |
|
|
|
|
|
|------|------|----------|
|
|
|
|
|
| 第一阶段:环境准备 | [完成] | 2026-04-13 |
|
|
|
|
|
| 第二阶段:编译修复 | [待完成] | - |
|
|
|
|
|
| 第三阶段:核心服务 | [待完成] | - |
|
|
|
|
|
| 第四阶段:接口完善 | [待完成] | - |
|
|
|
|
|
| 第五阶段:后端测试 | [待完成] | - |
|
|
|
|
|
| 第六阶段:前端开发 | [待完成] | - |
|
|
|
|
|
| 第七阶段:部署配置 | [待完成] | - |
|