diff --git a/Haoliang.Api/appsettings.json b/Haoliang.Api/appsettings.json index 2306efb..13c55ad 100644 --- a/Haoliang.Api/appsettings.json +++ b/Haoliang.Api/appsettings.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { - "CNCBusinessDB": "server=localhost;database=cnc_business;user=root;password=;", - "CNCLLogDB": "server=localhost;database=cnc_log;user=root;password=;" + "CNCBusinessDB": "server=localhost;database=cnc_business;user=root;password=root;", + "CNCLLogDB": "server=localhost;database=cnc_log;user=root;password=root;" }, "Logging": { "LogLevel": { diff --git a/IMPLEMENTATION_PLAN.md b/IMPLEMENTATION_PLAN.md new file mode 100644 index 0000000..0f249c0 --- /dev/null +++ b/IMPLEMENTATION_PLAN.md @@ -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 | +| 第二阶段:编译修复 | [待完成] | - | +| 第三阶段:核心服务 | [待完成] | - | +| 第四阶段:接口完善 | [待完成] | - | +| 第五阶段:后端测试 | [待完成] | - | +| 第六阶段:前端开发 | [待完成] | - | +| 第七阶段:部署配置 | [待完成] | - | diff --git a/appsettings.json b/appsettings.json index 1c2ee02..e851f9e 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,8 +1,8 @@ { "ConnectionStrings": { - "DefaultConnection": "server=localhost;database=cnc_business;user=cnc_user;password=your_password;port=3306", - "BusinessDbConnection": "server=localhost;database=cnc_business;user=cnc_user;password=your_password;port=3306", - "LogDbConnection": "server=localhost;database=cnc_log;user=cnc_user;password=your_password;port=3306" + "DefaultConnection": "server=localhost;database=cnc_business;user=root;password=root;port=3306", + "BusinessDbConnection": "server=localhost;database=cnc_business;user=root;password=root;port=3306", + "LogDbConnection": "server=localhost;database=cnc_log;user=root;password=root;port=3306" }, "Logging": { "LogLevel": {