|
|
@@ -0,0 +1,55 @@
|
|
|
+# 工单关联标记口径统一:待验收步骤
|
|
|
+
|
|
|
+对应 [后端执行票 —— 工单关联标记口径统一(设备维度 vs 时间线)](../issues/21-21-vs.md)。本文件提供下一步验收命令,**本轮未执行编译、测试或真实环境复验**;当前仅完成源码实施与静态检查。
|
|
|
+
|
|
|
+后端实施提交:[`894402a`](http://192.168.110.30:3000/shaoy/pipe-ner-server/commit/894402a6d495be28265014b316742fac355b311a),已推送 `origin/master`。维护者裁定:报警与工单一对一,重复关联明确失败。
|
|
|
+
|
|
|
+## 编译与契约测试
|
|
|
+
|
|
|
+在 `E:\pipe-ner-server` 根目录执行(需用户明确要求运行验证):
|
|
|
+
|
|
|
+```powershell
|
|
|
+mvn -o -pl pipe-network-service/zksy-admin -am '-Dtest=Cockpit*Test,BusinessCockpit*Test' '-Dsurefire.failIfNoSpecifiedTests=false' test
|
|
|
+```
|
|
|
+
|
|
|
+必须记录提交版本、BUILD SUCCESS、实际测试数、Failures/Errors/Skipped。新增 `CockpitWorkOrderAssociationContractTest` 含 7 个测试方法,贯穿控制器、服务及真实适配器,覆盖三入口正关联一致、报警单号别名与 SQL 条件、未关联 false/null、同设备工单不串联、未知工单、重复关联正反序均失败,以及真实数据库异常转换;既有适配器测试已补共享反查的数据桩。若离线依赖不齐,记录缺失依赖后按环境实际情况处理,不把未执行视为通过。
|
|
|
+
|
|
|
+## 部署后真实复验
|
|
|
+
|
|
|
+确认运行实例已加载本票提交,记录实例启动时间/版本。历史联调环境为 `http://192.168.110.96:8301`,本轮没有确认其当前运行状态;以下命令须在部署后执行:
|
|
|
+
|
|
|
+```powershell
|
|
|
+$base = 'http://192.168.110.96:8301/api/cockpit/v1'
|
|
|
+$orderCode = 'WO202610101511303516'
|
|
|
+$alarmCode = 'cd57be42bd18d02f7d3390fb98539b93'
|
|
|
+$deviceCode = '21119740'
|
|
|
+$deviceResponse = Invoke-RestMethod "$base/equipments/$deviceCode/work-orders" -TimeoutSec 60
|
|
|
+$alarmResponse = Invoke-RestMethod "$base/events/ALARM/$alarmCode/work-orders" -TimeoutSec 60
|
|
|
+$timelineResponse = Invoke-RestMethod "$base/work-orders/$orderCode/timeline" -TimeoutSec 60
|
|
|
+$deviceOrders = @($deviceResponse.data.workOrders | Where-Object workOrderCode -EQ $orderCode)
|
|
|
+$alarmOrders = @($alarmResponse.data.workOrders | Where-Object workOrderCode -EQ $orderCode)
|
|
|
+if ($deviceOrders.Count -ne 1 -or $alarmOrders.Count -ne 1) {
|
|
|
+ throw '目标工单在设备/报警端点中缺失或重复,不能判定一致性通过'
|
|
|
+}
|
|
|
+$orders = @($deviceOrders[0], $alarmOrders[0], $timelineResponse.data.workOrder)
|
|
|
+$expectedAssociation = $deviceOrders[0].eventAssociation
|
|
|
+foreach ($order in $orders) {
|
|
|
+ if ($null -eq $order -or $order.workOrderCode -ne $orderCode -or
|
|
|
+ $order.associatedWithCurrentEvent -ne $true -or
|
|
|
+ $null -eq $order.eventAssociation -or
|
|
|
+ $order.eventAssociation.eventSource -ne 'ALARM' -or
|
|
|
+ $order.eventAssociation.eventCode -ne $alarmCode -or
|
|
|
+ $order.eventAssociation.associatedAt -ne $expectedAssociation.associatedAt) {
|
|
|
+ throw '三端点关联标记或关联信息不一致'
|
|
|
+ }
|
|
|
+}
|
|
|
+$orders | Select-Object workOrderCode, associatedWithCurrentEvent, eventAssociation | ConvertTo-Json -Depth 5
|
|
|
+```
|
|
|
+
|
|
|
+若样本已被外部系统删除或解除关联,先说明真实数据变化,不能改用 mock 冒充该工单的部署验收。未关联工单须另选真实无报警引用样本:设备与时间线均显式 false/null,报警维度不返回该工单。
|
|
|
+
|
|
|
+维护者已裁定**一对一,重复关联报错**。如有现成真实重复关联样本,其设备工单、两个 ALARM 查询和时间线均应 HTTP 500 + `SERVER_ERROR`,不得返回成功的首条关联。若无此真实样本,先以新增契约测试覆盖;不要为复验修改真实关联数据。
|
|
|
+
|
|
|
+## 收口
|
|
|
+
|
|
|
+编译、测试、目标真实样本复验与提交推送均有真实证据后,写回执行票正文和 resolution comment,关闭并调用 `deck_issue_report`,最后在所属 map 的 Decisions so far 追加票名链接与一句结论。任何一项缺证据则保留开放,明确下一步。
|