fix(traffic): сохранять историю отключённых интерфейсов

This commit is contained in:
Denozordec committed 2026-10-12 23:00:23 +07:00
1 parent c69d99ba80
commit a40b26c3c5
16 files changed
+1763 -14

No files matched your search

@@ -0,0 +1,26 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"version": "1.0.0-test.history184",
"passed": true,
"method": "Read-only actual application volume API; no new native RouterOS commands; exact edge values covered separately by owned SQL",
"cases": [
{
"sourceId": "1",
"volumeUnit": "GiB",
"rxTotalGiB": 0.013438726775348186,
"txTotalGiB": 0.0019880058243870735,
"currentState": "current"
},
{
"sourceId": "2",
"volumeUnit": "GiB",
"rxTotalGiB": 0.0022225677967071533,
"txTotalGiB": 0.002511531114578247,
"currentState": "current"
}
],
"newRouterOSCommands": 0,
"passwordChanges": 0,
"messages": 0
}
@@ -0,0 +1,235 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"kind": "Read-only reproduction; defect is open, not accepted",
"sourceSha256": "f18772f98921c044db7ad2ba1167a5691a1c67cb42ca2fc7073381ce2da28f43",
"runtimeWrites": 0,
"routerCommands": 0,
"cases": [
{
"state": "inactive",
"inputs": [
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 1024,
"txBytes": 1024,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 2048,
"txBytes": 2048,
"rxBps": 0,
"txBps": 0,
"running": false,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
}
],
"aggregateBytes": 0,
"detailBytes": 2048,
"aggregateHasKnownHistory": true,
"omittedKnownBytes": 2048
},
{
"state": "disabled",
"inputs": [
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 1024,
"txBytes": 1024,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 2048,
"txBytes": 2048,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": true,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
}
],
"aggregateBytes": 0,
"detailBytes": 2048,
"aggregateHasKnownHistory": true,
"omittedKnownBytes": 2048
},
{
"state": "active",
"inputs": [
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 1024,
"txBytes": 1024,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 2048,
"txBytes": 2048,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
}
],
"aggregateBytes": 2048,
"detailBytes": 2048,
"aggregateHasKnownHistory": true,
"omittedKnownBytes": 0
}
]
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,46 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"runtime": {
"backend": "ux-history184",
"frontend": "ux-warning183"
},
"apis": [
{
"path": "/api/traffic/servers",
"status": 200
},
{
"path": "/api/traffic/users",
"status": 200
},
{
"path": "/api/traffic/bound-interfaces",
"status": 200
}
],
"cases": [
{
"width": 1440,
"trafficServers200": true,
"attemptProvenanceVisible": true,
"actualLiveSample": true,
"backendReceiptLabel": true,
"pageErrors": 0,
"noOverflow": true
},
{
"width": 320,
"trafficServers200": true,
"attemptProvenanceVisible": true,
"actualLiveSample": true,
"backendReceiptLabel": true,
"pageErrors": 0,
"noOverflow": true
}
],
"bounds": [
"Read-only smoke; error/stale/legacy branches proven by owned SQL and UI fixtures",
"No manual production scheduler/config/password/message writes"
]
}
@@ -0,0 +1,235 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"kind": "Read-only fixed formulas; SQL acceptance required",
"sourceSha256": "b5d93f8d6118bb7a3bd442e624719da4a049878e4424447a7c9d5f7a72da0029",
"runtimeWrites": 0,
"routerCommands": 0,
"cases": [
{
"state": "inactive",
"inputs": [
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 1024,
"txBytes": 1024,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 2048,
"txBytes": 2048,
"rxBps": 0,
"txBps": 0,
"running": false,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
}
],
"aggregateBytes": 2048,
"detailBytes": 2048,
"aggregateHasKnownHistory": true,
"omittedKnownBytes": 0
},
{
"state": "disabled",
"inputs": [
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 1024,
"txBytes": 1024,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 2048,
"txBytes": 2048,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": true,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
}
],
"aggregateBytes": 2048,
"detailBytes": 2048,
"aggregateHasKnownHistory": true,
"omittedKnownBytes": 0
},
{
"state": "active",
"inputs": [
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 1024,
"txBytes": 1024,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether1",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 2048,
"txBytes": 2048,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:00:30.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
},
{
"interfaceName": "ether2",
"sampledAt": "2026-10-12T12:01:00.000Z",
"rxBytes": 0,
"txBytes": 0,
"rxBps": 0,
"txBps": 0,
"running": true,
"disabled": false,
"countersKnown": true
}
],
"aggregateBytes": 2048,
"detailBytes": 2048,
"aggregateHasKnownHistory": true,
"omittedKnownBytes": 0
}
]
}
@@ -0,0 +1,25 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"secretEnvCopied": false,
"rollbackTags": {
"MMAPP_IMAGE_TAG": "ux-warning183",
"BACKEND_IMAGE_TAG": "ux-warning183"
},
"services": {
"backend": {
"image": "mmapp-test/backend:ux-history184",
"imageId": "sha256:c418eb2464ab3e306e12a6774296955c51da6ca14fab3844a6616598f232908d",
"state": "running",
"health": "healthy",
"matchedVerifiedImage": true
},
"frontend": {
"image": "mmapp-test/frontend:ux-warning183",
"imageId": "sha256:4cf0549a212bfdc75c0107f3725686a9a9746a46ed6493ac73f608a0a335a586",
"state": "running",
"health": null,
"matchedVerifiedImage": true
}
}
}
@@ -0,0 +1,10 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"matched": {
"backend": 455,
"frontend": 524
},
"different": [],
"missing": []
}
@@ -0,0 +1,31 @@
{
"date": "2026-10-12",
"block": "12.5.184",
"passed": true,
"profiles": [
{
"date": "2026-10-12",
"block": "12.5.184",
"database": "mm_accept_166_1791820617652",
"scope": "ephemeral role and precreated owned database; no copied production credentials",
"tests": [
{
"command": "npm --prefix backend run test:traffic-rate",
"passed": true,
"durationMs": 36245,
"ownedTrafficSqlCases": 9,
"ownedHistorySqlCases": 14,
"ownedLiveSqlCases": 10,
"ownedVolumeSqlCases": 8,
"ownedStatusSqlCases": 14,
"postgresUnavailableSkip": false
}
],
"scopedRoleVerified": true,
"passed": true,
"databaseRemoved": true,
"roleRemoved": true,
"testContainerRemoved": true
}
]
}