fix(ui): защищать оптимизацию OSPF и подтверждение результата
This commit is contained in:
1 parent
4254904c3a
commit
baa43b7ad4
8 files changed
+193
-42
No files matched your search
@@ -15,3 +15,10 @@ export const ospfCatalogSchema = z.object({
|
||||
})
|
||||
export const ospfServersSchema = vxlanServersSchema
|
||||
export type OspfCatalog = z.infer<typeof ospfCatalogSchema>
|
||||
|
||||
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() })),
|
||||
}).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