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

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


第六阶段:前端开发

开始时间: 待记录 完成时间: 待记录

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 10:30
第二阶段:编译修复 [完成] 2026-04-13 10:35
第三阶段:核心服务 [完成] 2026-04-13 11:00
第四阶段:接口完善 [完成] 2026-04-13 11:15
第五阶段:后端测试 [完成] 2026-04-13 12:50
第六阶段:前端开发 [待开始] -
第七阶段:部署配置 [待开始] -