haoliang
|
9e3a759646
|
修复仪表盘采集服务状态判断:增加心跳超时检测
原来只检查心跳表最后一条记录的status字段是否为running,
没有判断心跳是否已过期(服务停止后旧心跳数据仍在)。
现在增加90秒超时判断(3个心跳间隔),超时则显示已停止。
|
4 days ago |
haoliang
|
6e5b296dd4
|
增加Windows Service原生支持,支持双模式运行和服务安装卸载
- 新增 CncCollectorService : ServiceBase,支持 OnStart/OnStop/OnPause/OnContinue/OnShutdown
- 新增 ProjectInstaller,支持 InstallUtil.exe 安装/卸载
- Program.cs 重构为双模式:控制台模式(--console) + 服务模式(SCM) + 安装(--install) + 卸载(--uninstall)
- csproj 添加 System.ServiceProcess 和 System.Configuration.Install 引用
- install.ps1 升级为 v2.0,支持 installutil/nssm/sc 三种安装方式,配置失败自动重启策略
- uninstall.ps1 升级为 v2.0,三级降级卸载(程序内置→InstallUtil→sc.exe),交互式清理安装目录
|
4 days ago |
haoliang
|
cb3a6071bd
|
修复管理后台4个Bug + 改进Ping逻辑
Bug1(告警中心分页不工作): AlertPage.vue添加watch监听page.page和page.pageSize变化触发loadData
Bug2(仪表盘按钮报错): DashboardPage.vue为刷新配置/停止采集/启动采集添加ElMessage成功提示,导入ElMessage
Bug3(设备详情页数据不对): MachineService四个方法从返回空数据改为查询实际数据
- GetStatus: 从Machine entity的last_*字段获取实时状态
- GetTodayProduction: 从cnc_daily_production或cnc_production_segment查今日产量
- GetProductionTrend: 从cnc_daily_production或segment查7天趋势
- GetCollectRecords: 从cnc_collect_record查最近20条采集记录
- IMachineRepository新增4个方法声明,MachineRepository实现SQL查询
Bug4(产量报表员工筛选不正确):
- DailyProductionRepository.GetList添加WorkerId过滤(通过cnc_worker_machine关联表)
- ProductionController.GetSummary扩展参数接受startDate/endDate/machineId/workerId
- IProductionService/ProductionService.GetSummary签名同步更新
Ping逻辑改进: CollectWorker从Ping采集URL主机改为Ping每台机床IP地址
- 新增PingAllMachines()并行Ping所有机床IP,逐台更新在线状态
- 新增PingHost()执行单次ICMP Ping(超时2秒)
- 移除旧的PingAddress()(Ping URL主机)和UpdateMachineOnlineStatus()(批量更新)
|
4 days ago |
haoliang
|
c2c4d15453
|
修复端到端测试发现的3个Bug
Bug1(中): 采集服务失败时记录实际HTTP状态码
- CollectWorker新增httpStatusCode变量,捕获响应状态码
- CollectRecordWriter.WriteBatch新增statusCode参数,失败时写入实际状态码(如500)
- ParseAndSave传入statusCode参数
Bug2(低): 模拟器Stop→Start端口冲突
- SimulatorServer.Start()复用已有HttpListener,不再重复创建
- 仅在_listener为null或未监听时才创建新HttpListener
Bug3(低): 新增手动触发日终汇总API
- CollectorApiServer新增 POST /api/collector/daily-summary 端点
- CollectorEngine新增 RunDailySummary(date) 公开方法
- DashboardController新增 POST /api/admin/collector/daily-summary 转发
|
4 days ago |
haoliang
|
4b8657553b
|
新增端到端联动测试方案文档
覆盖模拟器+采集服务+管理后台+数据库全链路,129个测试点
|
4 days ago |
haoliang
|
592ebfbe08
|
修复采集服务启动后仪表盘状态不刷新的问题
根因:CollectorEngine.Start()不立即写心跳,仪表盘读心跳表仍显示stopped
修复:Start()中_isRunning=true后立即WriteHeartbeat('running')
附带:ForwardToCollector连接失败时返回错误码(code=50001)而非成功
|
4 days ago |
haoliang
|
f1fad812aa
|
测试规范补充维度23:操作按钮闭环验证,新增反模式第17条
|
4 days ago |
haoliang
|
ed0ea7f632
|
修复采集服务状态判断:用心跳status字段替代时间推断
|
4 days ago |
haoliang
|
772bc0b257
|
测试规范补充维度22:可点击链接跳转验证,新增反模式第16条
|
4 days ago |
haoliang
|
b09b653bac
|
测试规范补充维度21:表格布局铺满,新增反模式第15条
|
4 days ago |
haoliang
|
d6bbab7744
|
修复工人产量排行表格未铺满卡片宽度:工人姓名列改为弹性宽度
|
4 days ago |
haoliang
|
7354ae1641
|
修复仪表盘6个数据问题+补充测试规范图表维度
1. 最新告警:修复createdAt映射(snake_case→PascalCase),补齐alertType/machineName/title/isResolved字段
2. 机床状态分布:从原始group-by改为返回{online,offline,disabled}结构
3. 产量趋势:Controller包装为{items:[]}格式
4. 机床排行:补齐rank/program/status字段
5. 工人排行:补齐rank/machineCount/totalQuantity字段
6. 测试规范:新增维度3.1图表验证,扩展仪表盘速查表维度覆盖(1,2,3,3.1,5,6,9,12,17,20),新增反模式第14条
|
4 days ago |
haoliang
|
0acc2c7ced
|
精简测试规范:删除所有解释性内容(为什么/怎么做/历史复盘),只保留要求,503行→146行
|
4 days ago |
haoliang
|
ac08ca6cd1
|
测试规范新增:20维度强制测试总表、页面类型适用性速查、反模式补充3条
|
4 days ago |
haoliang
|
1cf21a7245
|
补充冒烟测试:表格全列验证、分页、日期筛选、程序名筛选、API对账、下拉框字段映射、修正提交闭环
|
4 days ago |
haoliang
|
1edcda9be5
|
新增测试规范文档、冒烟测试脚本、AGENTS.md铁律第5/6条
|
4 days ago |
haoliang
|
3c40cbb4ab
|
feat(铁律): 在 AGENTS.md 增加第5条测试与验证,指向 docs/06-测试规范.md
|
4 days ago |
haoliang
|
de5e636fdc
|
修复产量报表:下拉框字段映射、汇总卡片数值、表格运行时间/切削时间
|
4 days ago |
haoliang
|
cf9f0575a8
|
添加产量报表修正弹窗HTML模板,修正按钮调用doAdjust函数,Playwright 37项测试全部通过
|
4 days ago |
haoliang
|
3094ede8a4
|
修复产量报表日期显示错误:value-format从yyyy-MM-dd改为YYYY-MM-DD(Element Plus/dayjs格式),日期格式化改用本地时间避免时区问题
|
4 days ago |
haoliang
|
667e215322
|
修复产量报表字段映射:添加前端兼容字段(date/quantity/runTime/cuttingTime/dataStatus),产量列直接显示数值
|
4 days ago |
haoliang
|
ee0b5da1c1
|
产量报表改为混合查询:已汇总用daily_production,未汇总从segment实时计算;默认日期改为今天;参数名统一为startDate/endDate
|
4 days ago |
haoliang
|
9a667e5a62
|
添加采集服务控制API:启动、停止、刷新配置,转发到CncCollector 5800端口
|
4 days ago |
haoliang
|
28641a7ab1
|
修复采集服务状态不显示:serviceId与心跳查询不匹配,API返回字段与前端不匹配
|
4 days ago |
haoliang
|
1c1698f9dd
|
仪表盘查询优化:已汇总日期用daily_production,未汇总日期实时计算segment,车间产量/机床排行/工人排行/产量趋势均采用混合查询
|
4 days ago |
haoliang
|
c836393d3f
|
仪表盘和产量报表全部改为从实时表查询:今日总产量、切削时间、车间产量、机床排行、工人排行、产量趋势均直接查cnc_production_segment;产量报表默认日期改为今天
|
4 days ago |
haoliang
|
6ac639ecb7
|
采集成功率保留2位小数(Math.Round)
|
4 days ago |
haoliang
|
45cb84c08d
|
修复采集成功率计算bug、添加IIS localhost绑定和Vite proxy配置
- DashboardRepository: 采集成功率改用 log_collect_raw 的成功/失败比率计算(修复-800%的bug)
- Web.config: 添加 runAllManagedModulesForAllRequests=true 使API路由生效
- Vite: 添加/api代理到IIS后端(127.0.0.1),前端显示真实数据
- 测试脚本: 阶段6指定原端口重启避免URL不同步,添加仪表盘API验证
|
4 days ago |
haoliang
|
36cb666af3
|
模拟器增加事件历史/异常日志/完整汇总导出功能,添加15分钟采集测试脚本
- DeviceState: 新增EventRecord类和RecordEvent方法,记录程序切换/清零/断电/开机事件
- LogRecorder: 新增ErrorRecord类和RecordError方法,记录异常状态
- SimulatorServer: 新增/admin/api/event-history、/admin/api/full-summary、/admin/api/error-log三个API端点
- SimulatorServer: 异常分支(http500/timeout/empty/malformed)自动记录异常日志
- 新增15分钟Playwright采集测试脚本(6个异常阶段+数据对比验证+自动报告生成)
|
4 days ago |
haoliang
|
cb504215b9
|
添加前端诊断和手动验证测试脚本
|
5 days ago |
haoliang
|
0e932b4fad
|
更新测试报告:加入16个Playwright浏览器UI测试结果(116个测试全部通过)
|
5 days ago |
haoliang
|
5f47164532
|
添加Playwright浏览器UI测试(16个测试,3个模块批量删除+启用停用)并补充mock API端点
|
5 days ago |
haoliang
|
3315e1dec9
|
添加采集服务完整测试报告(79个单元测试+21个Playwright E2E测试,100%通过)
|
5 days ago |
haoliang
|
c983c4af5c
|
完整Playwright E2E测试:5套件21个测试全部通过(2.8分钟)
套件1: 管理API控制测试(7个)- 认证/启停/刷新/路由
套件2: 采集数据全链路验证(6个)- 原始JSON/结构化记录/机床状态/地址状态/字段映射/计数递增
套件3: 产量分段跟踪验证(3个)- 段自动创建/零件数更新/停止时结账
套件4: 异常处理与恢复验证(3个)- 不可达容错/恢复采集/失败日志
套件5: 心跳上报验证(2个)- running心跳/stopped心跳
关键技术决策:
- 使用mysql2直连数据库验证数据落库(log_collect_raw/cnc_collect_record等7张表)
- 轮询等待重试完成(3次重试×30秒=90秒)避免固定等待
- stop→改URL→start 强制重建worker(refresh不更新已存在worker的URL)
- 模拟器网关API动态启动模拟端口,DB URL动态更新
|
5 days ago |
haoliang
|
5826e701fc
|
新增单元测试+Playwright实际测试(79个单元测试+11个E2E测试全部通过)
- 新增CollectRecordWriterTests(11个用例)和CollectorApiServerTests(11个用例)
- 修复Worker状态缺少url字段,修复Playwright配置全局API Key问题
- CncCollector共79个单元测试全部通过
- Playwright E2E测试实际执行:启动模拟器+采集服务,11个测试全部通过
- 测试覆盖:API认证、启停控制、状态查询、刷新配置、工作线程管理
|
5 days ago |
haoliang
|
83ee87fa45
|
新增Playwright端到端测试脚本(采集服务管理API+数据流程验证)
|
5 days ago |
haoliang
|
b76f1acc55
|
新增三模块批量删除API+采集地址启用停用+安装测试脚本
|
5 days ago |
haoliang
|
bfb9c5a014
|
新增CncCollector.Tests单元测试项目(58个测试全部通过)
|
5 days ago |
haoliang
|
6fd1d616ac
|
新增CncCollector采集服务(配置加载+JSON解析+字段映射+HTTP采集+产量跟踪+日终汇总+心跳+管理API)
|
5 days ago |
haoliang
|
9890daf9aa
|
模拟器改为手动启动+从数据库读取机床+零件统计+设备增减
|
6 days ago |
haoliang
|
3fb5074ccf
|
新增CncSimulator模拟采集服务(设备状态机+8种场景+FANUC 19 Tag+管理界面+网络异常模拟)
|
6 days ago |
haoliang
|
1fd32b3082
|
新增模拟采集服务设计文档(设备状态机+场景剧本+FANUC模板+管理界面+网络异常模拟)
|
6 days ago |
haoliang
|
af8994617f
|
新增采集服务设计文档(双循环模型+字段映射+产量分段+日汇总+配置热更新+管理API)
|
6 days ago |
haoliang
|
ce53e343cf
|
品牌编辑页面字段映射表格改为自适应宽度
|
6 days ago |
haoliang
|
6c3ca47fb7
|
采集地址:穿梭框显示全部同品牌机床、删除按钮禁用、后端Delete抛异常、数据库允许NULL
|
7 days ago |
haoliang
|
f015afe301
|
采集地址穿梭框改为显示同品牌全部机床,可从其他地址转移机床
|
7 days ago |
haoliang
|
74b611d6e1
|
采集地址关联机床改为穿梭框:后端DTO加MachineIds+SetCollectAddress,前端el-transfer替换checkbox
|
7 days ago |
haoliang
|
2a5568ecfc
|
可用机床列表改为获取全部机床(不限在线状态),修复available-machines返回空的问题
|
7 days ago |
haoliang
|
3166ee94a5
|
弹窗加宽900px,穿梭框左侧过滤已绑定其他工人的机床,改为按需加载
|
7 days ago |
haoliang
|
f865de2a9a
|
修复员工机床绑定保存失败:DTO增加MachineIds字段,Service Create/Update增加绑定逻辑
|
7 days ago |