fix(traffic): сохранять историю и показывать достоверную свежесть

This commit is contained in:
Denozordec committed 2026-10-12 20:23:07 +07:00
1 parent ebe62ae2ef
commit 1275dd7b9b
48 files changed
+1899 -187

No files matched your search

+9
View File
@@ -341,6 +341,15 @@ export const uptimeSettings = pgTable("uptime_settings", {
updatedAt: ts("updated_at").notNull().defaultNow(),
})
export const trafficCollectionState = pgTable("traffic_collection_state", {
serverId: intPkRef().primaryKey().references(() => servers.id, { onDelete: "cascade" }),
serverUpdatedAt: ts("server_updated_at").notNull(),
lastAttemptAt: ts("last_attempt_at").notNull(),
lastSucceededAt: ts("last_succeeded_at"),
status: text("status").notNull(),
error: text("error"),
})
export const uptimeProbes = pgTable("uptime_probes", {
id: text("id").primaryKey(),
srcServerId: bigint("src_server_id", { mode: "number" }).notNull()
+5 -3
View File
@@ -12,8 +12,10 @@ assert.equal(encodeTrafficFlags(true, true), 3)
assert.equal(encodeTrafficFlags(false, false), 0)
assert.equal(trafficFlagRunning(1), true)
assert.equal(trafficFlagDisabled(1), false)
assert.deepEqual(decodeTrafficSampleFlags(1), { running: true, disabled: false })
assert.deepEqual(decodeTrafficSampleFlags(0), { running: false, disabled: false })
assert.deepEqual(decodeTrafficSampleFlags(undefined), { running: false, disabled: false })
assert.deepEqual(decodeTrafficSampleFlags(1), { running: true, disabled: false, countersKnown: false })
assert.deepEqual(decodeTrafficSampleFlags(0), { running: false, disabled: false, countersKnown: false })
assert.deepEqual(decodeTrafficSampleFlags(undefined), { running: false, disabled: false, countersKnown: false })
assert.equal(encodeTrafficFlags(true,false,true),5)
assert.deepEqual(decodeTrafficSampleFlags(5), {running:true,disabled:false,countersKnown:true})
console.log("traffic-flags.test.ts: ok")
+5 -1
View File
@@ -1,8 +1,10 @@
export const TRAFFIC_FLAG_RUNNING = 1
export const TRAFFIC_FLAG_DISABLED = 2
export const TRAFFIC_FLAG_COUNTERS_KNOWN = 4
export function encodeTrafficFlags(running: boolean, disabled: boolean): number {
export function encodeTrafficFlags(running: boolean, disabled: boolean, countersKnown = false): number {
return (running ? TRAFFIC_FLAG_RUNNING : 0) | (disabled ? TRAFFIC_FLAG_DISABLED : 0)
| (countersKnown ? TRAFFIC_FLAG_COUNTERS_KNOWN : 0)
}
export function trafficFlagRunning(flags: number | null | undefined): boolean {
@@ -16,9 +18,11 @@ export function trafficFlagDisabled(flags: number | null | undefined): boolean {
export function decodeTrafficSampleFlags(flags: number | null | undefined): {
running: boolean
disabled: boolean
countersKnown: boolean
} {
return {
running: trafficFlagRunning(flags),
disabled: trafficFlagDisabled(flags),
countersKnown: ((Number(flags) || 0) & TRAFFIC_FLAG_COUNTERS_KNOWN) !== 0,
}
}