fix(api): передавать происхождение метрик оптимизатора OSPF
This commit is contained in:
1 parent
255f272fab
commit
7077844655
13 files changed
+96
-9
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import { z } from "zod"
|
||||
import {ospfOptimizerObservedSchema} from "@mmapp/contracts"
|
||||
import { vxlanServersSchema } from "@/lib/vxlan-response"
|
||||
const counter = z.number().int().nonnegative()
|
||||
const base = z.object({ id: z.string().trim().min(1), serverId: z.number().int().positive(), serverName: z.string(), serverSite: z.string(), serverCountry: z.string().default("UN") })
|
||||
@@ -20,5 +21,5 @@ export const ospfOptimizeSchema = z.object({
|
||||
serverId: z.number().int().positive(), serverName: z.string(), pingWeight: z.number().int().min(0).max(100),
|
||||
optimizedCount: z.number().int().nonnegative(),
|
||||
applied: z.array(z.object({ interface: z.string().min(1), from: z.number().int().min(1).max(65535), to: z.number().int().min(1).max(65535) })),
|
||||
interfaces: z.array(z.object({ id: z.string().trim().min(1), interface: z.string(), currentCost: z.number().int().min(1).max(65535), optimalCost: z.number().int().min(1).max(65535), score: z.number().finite(), pingMs: z.number().finite().nonnegative(), dlMbps: z.number().finite().nonnegative(), ulMbps: z.number().finite().nonnegative() })),
|
||||
interfaces: z.array(z.object({ observed: ospfOptimizerObservedSchema.optional(), id: z.string().trim().min(1), interface: z.string(), currentCost: z.number().int().min(1).max(65535), optimalCost: z.number().int().min(1).max(65535), score: z.number().finite(), pingMs: z.number().finite().nonnegative(), dlMbps: z.number().finite().nonnegative(), ulMbps: z.number().finite().nonnegative() })),
|
||||
}).refine(data => data.optimizedCount === data.applied.length && new Set(data.interfaces.map(row => row.id)).size === data.interfaces.length && new Set(data.applied.map(row => row.interface)).size === data.applied.length && data.applied.every(row => data.interfaces.some(iface => iface.interface === row.interface && iface.currentCost === row.from && iface.optimalCost === row.to)))
|
||||
Reference in new issue
Block a user