From 7835baa4f22d5ff39b95f5cb05aefc9d3ceb67ae Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 05 九月 2026 11:45:35 +0800
Subject: [PATCH] 对齐测试控制台数据与实时状态

---
 src/api/tests.ts |   38 ++++++++++++++++++++++----------------
 1 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/src/api/tests.ts b/src/api/tests.ts
index cb2a05e..eab6799 100644
--- a/src/api/tests.ts
+++ b/src/api/tests.ts
@@ -1,5 +1,6 @@
 import type { ReceptionStatus, TestRecord, TestStatus } from '@/stores/tests'
 import { getAuthToken, request, type ApiResponse } from './request'
+import { formatBusinessTime } from '@/utils/businessTime'
 
 export type TestStatusCode = 'WAITING' | 'RUNNING' | 'PAUSED' | 'COMPLETED'
 export type ReceptionStatusCode = 'NOT_STARTED' | 'RECEIVING' | 'PAUSED' | 'ENDED'
@@ -68,15 +69,15 @@
 export interface TestConfigurationDetail extends TestConfigurationPayload {
   testId: number
   creatorId: number
-  createTime?: string | null
-  updateTime?: string | null
+  createTime?: number | null
+  updateTime?: number | null
   creatorName: string | null
   principalName: string | null
   testTypeName: string | null
   testStatus: TestStatusCode
   receptionStatus: ReceptionStatusCode
-  startedAtUtc?: string | null
-  endedAtUtc?: string | null
+  startedAtUtc?: number | null
+  endedAtUtc?: number | null
   /** 历史兼容字段;新接口不返回测试字段快照,字段从 batteries[].fields 读取。 */
   fieldSnapshots?: Array<{
     snapshotId: number
@@ -121,9 +122,9 @@
   testStatus: TestStatusCode | null
   receptionStatus: ReceptionStatusCode | null
   batteryNo: string | null
-  createTime: string | null
-  startedAtUtc: string | null
-  endedAtUtc: string | null
+  createTime: number | null
+  startedAtUtc: number | null
+  endedAtUtc: number | null
   runtimeAttach?: boolean | null
   remark: string | null
   batteryCount: number | null
@@ -147,8 +148,8 @@
   const receptionStatus = item.receptionStatus ? receptionStatusMap[item.receptionStatus] : '未知'
   return {
     id: item.testId, name: item.testName || '-', type: item.testTypeName || '-', batteryNo: item.batteryNo || '-', batteryGroup: '-',
-    batteryCount: Number(item.batteryCount) || 0, createdAt: item.createTime || '-', startedAt: item.startedAtUtc || '-',
-    endedAt: item.endedAtUtc || '-', purpose: item.testPurpose || '-', owner: item.principalName || '-',
+    batteryCount: Number(item.batteryCount) || 0, createdAt: formatBusinessTime(item.createTime), startedAt: formatBusinessTime(item.startedAtUtc),
+    endedAt: formatBusinessTime(item.endedAtUtc), purpose: item.testPurpose || '-', owner: item.principalName || '-',
     remark: item.remark || '-', status, receptionStatus, editable: item.receptionStatus === 'NOT_STARTED',
   }
 }
@@ -217,7 +218,7 @@
   latestSnapshot: {
     source?: string
     unit?: string
-    observedAt?: string
+    observedAt?: number
     sampleIntervalMs?: number
     measurements?: Array<Record<string, unknown>>
     units?: string[]
@@ -229,7 +230,7 @@
   testId: number
   testStatus: TestStatusCode
   receptionStatus: ReceptionStatusCode
-  updatedAt: string
+  updatedAt: number
   sources: LiveSource[]
   exceptions: Array<Record<string, unknown>>
   testPlan?: BtsTestSnapshot | null
@@ -351,10 +352,12 @@
   stepType?: string
   sequenceId: number
   cabinetSequenceId?: number | null
-  recordedAt: string
-  absoluteTime: string
-  deviceTime?: string
-  serverReceivedAt?: string
+  recordedAt?: number | null
+  absoluteTime?: number | null
+  deviceTime?: number | null
+  collectorDeviceTime?: number | null
+  captureSlot?: number | null
+  serverReceivedAt?: number | null
   voltage: number | string | null
   current: number | string | null
   capacity: number | string | null
@@ -363,6 +366,8 @@
   positivePotential?: number | string | null
   negativePotential?: number | string | null
   extensionMeasurementsJson?: string | Record<string, unknown> | null
+  sourceIdentity?: string
+  sourceRecordId?: string
   deviceId: number
   channelId: number
   adapterId?: number
@@ -434,7 +439,8 @@
         headers: token ? { Authorization: `Bearer ${token}`, Accept: 'text/event-stream' } : { Accept: 'text/event-stream' },
         signal: controller.signal,
       })
-      if (!response.ok || !response.body) throw new Error(response.status === 401 ? '实时流权限不足' : `实时流连接失败(${response.status})`)
+      if (!response.ok || !response.body) throw new Error([401, 403].includes(response.status) ? '实时流权限不足' : `实时流连接失败(${response.status})`)
+      if (!response.headers.get('content-type')?.includes('text/event-stream')) throw new Error('实时流响应格式错误')
       const reader = response.body.getReader()
       const decoder = new TextDecoder()
       let buffer = ''

--
Gitblit v1.7.1