fix(netflow): проверять месяц и точные календарные границы

This commit is contained in:
Denozordec committed 2026-10-11 18:27:41 +07:00
1 parent 0c14da190b
commit 555bd31596
13 files changed
+291 -25

No files matched your search

@@ -0,0 +1,71 @@
{
"date": "2026-10-11",
"block": "12.5.149",
"runtime": {
"backend": "ux-month149",
"frontend": "ux-scope148",
"backendHealthy": true
},
"checks": {
"sourcePureBoundsAndInvalidBeforeSqlPassed": true,
"sourceAndCandidateInvalidQueryChecksPassed": true,
"ownedSqlCalendarIntervalsPassed": 5,
"ownedDbRemoved": true,
"eslintPassed": true,
"backendProductionBuildPassed": true,
"compiledBackendOutputsMatched": 984,
"frontendScopedChecksPassed": 6,
"liveMonthApi": [
{
"month": "bad",
"status": 400
},
{
"month": "2026-00",
"status": 400
},
{
"month": "2026-13",
"status": 400
},
{
"month": "0000-01",
"status": 400
},
{
"month": "2026-1",
"status": 400
},
{
"month": "2026-10junk",
"status": 400
},
{
"month": "2026-10",
"status": 200
}
]
},
"sql": {
"date": "2026-10-11",
"name": "mm_accept_149_1791717813194",
"tests": [
{
"module": "traffic-flow-month",
"passed": true,
"output": "ISOLATED_MONTH_SQL_ACCEPTED: 5 exact intervals, outside rows excluded, leap-year rates verified\ntraffic-flow-month.test.ts: exact month bounds and invalid-before-SQL checks passed\n"
}
],
"databaseRemoved": true
},
"bounds": [
"Malformed supplied month now400, no fallback to current or fake zero report; omitted/empty month retains legacy current UTC default",
"Year0000 rejected consistently with UI; full YYYY-MM/month1..12 required, runtime non-string rejected",
"Integer calendar arithmetic fixes Date.UTC years1..99 offset and extended-year string truncation at December9999",
"Explicit Gregorian leap/month lengths compute average rates without Date.parse limitations for year10000",
"Five own SQL fixtures verify years0001/0099,1900 non-leap,2000 leap and9999 December; sibling next-month rows excluded",
"Own fixture DDL only after exact database name/current_database checks; parent owner-checked removal; main DB/legacy SQLite untouched",
"Initial live receipt helper incorrectly called Fetch response.status as a method; corrected harness only, product400/200 verified afterwards",
"Frontend unchanged; no device/password/schema/theme change, no UI/capability expansion for future month selection"
]
}
@@ -0,0 +1,84 @@
{
"date": "2026-10-11",
"block": "12.5.149",
"runtime": {
"backend": "ux-month149",
"frontend": "ux-scope148"
},
"checks": {
"readOnlyFrontendUnchanged": true,
"backendHealthy": true,
"backendProductionBuildPassed": true
},
"cases": [
{
"width": 1440,
"httpStatus": 200,
"api": [
{
"path": "/api/traffic/bound-interfaces",
"status": 200
},
{
"path": "/api/traffic/users",
"status": 200
},
{
"path": "/api/traffic/servers",
"status": 200
},
{
"path": "/api/traffic/servers/1/live",
"status": 200
},
{
"path": "/api/traffic/servers/1/interfaces",
"status": 200
},
{
"path": "/api/traffic/servers/1",
"status": 200
}
],
"pageErrors": [],
"noOverflow": true
},
{
"width": 320,
"httpStatus": 200,
"api": [
{
"path": "/api/traffic/users",
"status": 200
},
{
"path": "/api/traffic/bound-interfaces",
"status": 200
},
{
"path": "/api/traffic/servers",
"status": 200
},
{
"path": "/api/traffic/servers/1/live",
"status": 200
},
{
"path": "/api/traffic/servers/1/interfaces",
"status": 200
},
{
"path": "/api/traffic/servers/1",
"status": 200
}
],
"pageErrors": [],
"noOverflow": true
}
],
"bounds": [
"Read-only initial loading with real current lab catalog; no full NetFlow ingestion or throughput claim",
"Catalog failure and pending loading checked by controlled E2E; numeric live server details/interfaces/SSE enabled only after confirmed catalog ownership",
"Interface filter remains selected on range changes; backend source switch invalidates prior catalog ownership"
]
}