From 3834c40aa89425ea4aefcfd8e7703fcba3609c51 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Mon, 7 Sep 2026 11:45:22 +0700 Subject: [PATCH] =?UTF-8?q?fix(traffic):=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D1=83=20tsc?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D1=87=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20IPFIX-=D1=84=D0=B8=D0=BA=D1=81=D1=82=D1=83?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Тесты не должны попадать в Docker tsc; ingest принимает ParsedFlowInput и нормализует поля. Co-authored-by: Cursor --- backend/src/services/traffic-flow-engine.ts | 6 +++--- backend/src/services/traffic-flow-ingest.ts | 6 +++--- backend/src/services/traffic-flow-parse.ts | 4 +++- backend/tsconfig.json | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/backend/src/services/traffic-flow-engine.ts b/backend/src/services/traffic-flow-engine.ts index e7f83a7..65df9e9 100644 --- a/backend/src/services/traffic-flow-engine.ts +++ b/backend/src/services/traffic-flow-engine.ts @@ -1,5 +1,5 @@ import type Database from "better-sqlite3" -import { normalizeParsedFlow, parseFlowPacket, protoName, type ParsedFlow } from "./traffic-flow-parse.js" +import { normalizeParsedFlow, parseFlowPacket, protoName, type ParsedFlow, type ParsedFlowInput } from "./traffic-flow-parse.js" import { classifyFlowPlaneLite } from "./traffic-flow-planes.js" import { pickServerIdForExporter, type OverlayPeerRef } from "./traffic-flow-map-exporter.js" import { applicationName } from "./traffic-flow-apps.js" @@ -232,7 +232,7 @@ export function getEngineStats(): EngineStats { } } -export function queueParsedFlows(serverId: number, flows: ParsedFlow[]): void { +export function queueParsedFlows(serverId: number, flows: ParsedFlowInput[]): void { const bucketAt = minuteBucketIso() const ripeMisses: string[] = [] for (const raw of flows) { @@ -714,7 +714,7 @@ export function onEngineTick(): void { flushPending() } -export function ingestParsedFlowsForServerForTests(serverId: number, flows: ParsedFlow[]): void { +export function ingestParsedFlowsForServerForTests(serverId: number, flows: ParsedFlowInput[]): void { queueParsedFlows(serverId, flows) rollFlowRings() } diff --git a/backend/src/services/traffic-flow-ingest.ts b/backend/src/services/traffic-flow-ingest.ts index fdb1e5f..905453b 100644 --- a/backend/src/services/traffic-flow-ingest.ts +++ b/backend/src/services/traffic-flow-ingest.ts @@ -6,7 +6,7 @@ import { beginSqliteExclusiveOp, db, endSqliteExclusiveOp, sqliteDatabase } from import { env } from "../config.js" import { flowBuckets, servers } from "../db/schema.js" import type { FlowPurgeDto, FlowStatsDto, FlowTalkerDto } from "@mmapp/contracts/traffic-flow" -import { protoName, type ParsedFlow } from "./traffic-flow-parse.js" +import { protoName, type ParsedFlowInput } from "./traffic-flow-parse.js" import type { CollectorHeartbeat, ExporterMapPayload, MainToWorker, WorkerToMain } from "./traffic-flow-collector-ipc.js" import { attachEngineSqlite, @@ -404,7 +404,7 @@ export function listFlowTalkers(minutes = 5): FlowStatsDto { } } -export function ingestParsedFlowsForTests(exporterIp: string, flows: ParsedFlow[]) { +export function ingestParsedFlowsForTests(exporterIp: string, flows: ParsedFlowInput[]) { applyExporterCtxFromDb() const serverId = resolveServerId(exporterIp) if (serverId == null) return @@ -413,7 +413,7 @@ export function ingestParsedFlowsForTests(exporterIp: string, flows: ParsedFlow[ flushPending() } -export function ingestParsedFlowsForServerForTests(serverId: number, flows: ParsedFlow[]) { +export function ingestParsedFlowsForServerForTests(serverId: number, flows: ParsedFlowInput[]) { engineIngestForServer(serverId, flows) } diff --git a/backend/src/services/traffic-flow-parse.ts b/backend/src/services/traffic-flow-parse.ts index f2a9462..b281b8b 100644 --- a/backend/src/services/traffic-flow-parse.ts +++ b/backend/src/services/traffic-flow-parse.ts @@ -15,6 +15,8 @@ export interface ParsedFlow { natDst: string } +export type ParsedFlowInput = Partial & Pick + export function emptyParsedFlow(): ParsedFlow { return { src: "", @@ -34,7 +36,7 @@ export function emptyParsedFlow(): ParsedFlow { } } -export function normalizeParsedFlow(flow: Partial & Pick): ParsedFlow { +export function normalizeParsedFlow(flow: ParsedFlowInput): ParsedFlow { return { ...emptyParsedFlow(), ...flow, diff --git a/backend/tsconfig.json b/backend/tsconfig.json index dabe2fc..ad44a8f 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -15,5 +15,5 @@ "sourceMap": true }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist", "src/**/*.test.ts"] }