fix(uptime): показывать реальные наблюдения и пропуски RTT на дашборде
This commit is contained in:
1 parent
8f65d1620d
commit
9d3129372b
18 files changed
+169
-203
No files matched your search
@@ -0,0 +1,6 @@
|
||||
import assert from "node:assert/strict"
|
||||
import {buildUptimeProbeObservations} from "./uptime-probe-observations.js"
|
||||
assert.deepEqual(buildUptimeProbeObservations([]),{samples:[]})
|
||||
const good={sampledAt:"2026-10-03T00:00:00Z",rttMs:0,lossPct:0,status:"up" as const},failed={sampledAt:"2026-10-03T00:01:00Z",rttMs:null,lossPct:100,status:"down" as const}
|
||||
assert.deepEqual(buildUptimeProbeObservations([failed,good]),{samples:[{sampledAt:good.sampledAt,rtt:0,loss:0,status:"up"},{sampledAt:failed.sampledAt,rtt:null,loss:100,status:"down"}]});assert.equal(good.rttMs,0)
|
||||
console.log("uptime probe observations tests ok")
|
||||
@@ -0,0 +1,4 @@
|
||||
import type {UptimeProbeSampleRow} from "../db/schema.js"
|
||||
type Sample=Pick<UptimeProbeSampleRow,"sampledAt"|"rttMs"|"lossPct"|"status">
|
||||
/** Additive metadata; no samples means no proof of loss or failure. */
|
||||
export function buildUptimeProbeObservations(rows:readonly Sample[]){return {samples:rows.map(row=>({sampledAt:row.sampledAt,rtt:row.rttMs,loss:row.lossPct,status:row.status})).sort((a,b)=>Date.parse(a.sampledAt)-Date.parse(b.sampledAt))}}
|
||||
Reference in new issue
Block a user