fix(traffic): сохранять точность объёмов и обозначать бинарные единицы

This commit is contained in:
Denozordec committed 2026-10-12 21:59:50 +07:00
1 parent 2358ecef60
commit 2b3d583e3b
29 files changed
+1452 -39

No files matched your search

@@ -0,0 +1,26 @@
{
"date": "2026-10-12",
"block": "12.5.180",
"version": "1.0.0-test.volume180",
"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.013485109433531761,
"txTotalGiB": 0.001898050308227539,
"currentState": "current"
},
{
"sourceId": "2",
"volumeUnit": "GiB",
"rxTotalGiB": 0.0021370751783251762,
"txTotalGiB": 0.0023917602375149727,
"currentState": "current"
}
],
"newRouterOSCommands": 0,
"passwordChanges": 0,
"messages": 0
}
@@ -0,0 +1,39 @@
{
"date": "2026-10-12",
"method": "Read-only current source reproduction: positive measured deltas are rounded before aggregation; binary quantity carries decimal label",
"cases": [
{
"bytes": 1024,
"actualGiB": 9.5367431640625e-7,
"apiTotal": 0,
"display": "0.0 ГБ",
"observed": true
},
{
"bytes": 1048576,
"actualGiB": 0.0009765625,
"apiTotal": 0,
"display": "0.0 ГБ",
"observed": true
},
{
"bytes": 1073741824,
"actualGiB": 1,
"apiTotal": 1,
"display": "1.0 ГБ",
"observed": true
},
{
"bytes": 1000000000,
"actualGiB": 0.9313225746154785,
"apiTotal": 0.9,
"display": "0.9 ГБ",
"observed": true
}
],
"merged100MiB": {
"apiTotal": 0,
"actualGiB": 0.09765625
},
"fixed": false
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,46 @@
{
"date": "2026-10-12",
"block": "12.5.180",
"runtime": {
"backend": "ux-volume180",
"frontend": "ux-volume180"
},
"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,10 @@
{
"date": "2026-10-12",
"block": "12.5.180",
"newFrontend": "ux-volume180",
"oldBackend": "ux-live179",
"readerAccepted": true,
"serverCount": 2,
"pageErrors": 0,
"bound": "Additive observed DTO reader compatibility; legacy numeric-only paths verified separately as unknown"
}
@@ -0,0 +1,25 @@
{
"date": "2026-10-12",
"block": "12.5.180",
"secretEnvCopied": false,
"rollbackTags": {
"MMAPP_IMAGE_TAG": "ux-live179",
"BACKEND_IMAGE_TAG": "ux-live179"
},
"services": {
"backend": {
"image": "mmapp-test/backend:ux-volume180",
"imageId": "sha256:225a7a5613eb3cdc15f1b7d4e8f54c4c0dc6c4395c74769eaed9ca9296a6cca1",
"state": "running",
"health": "healthy",
"matchedVerifiedImage": true
},
"frontend": {
"image": "mmapp-test/frontend:ux-volume180",
"imageId": "sha256:93b132c1ab859c5511275e14e95a74325909002cf28ae6cb053d3e362f0ae391",
"state": "running",
"health": null,
"matchedVerifiedImage": true
}
}
}
@@ -0,0 +1,10 @@
{
"date": "2026-10-12",
"block": "12.5.180",
"matched": {
"backend": 452,
"frontend": 522
},
"different": [],
"missing": []
}
@@ -0,0 +1,30 @@
{
"date": "2026-10-12",
"block": "12.5.180",
"passed": true,
"profiles": [
{
"date": "2026-10-12",
"block": "12.5.180",
"database": "mm_accept_166_1791816469068",
"scope": "ephemeral role and precreated owned database; no copied production credentials",
"tests": [
{
"command": "npm --prefix backend run test:traffic-rate",
"passed": true,
"durationMs": 31474,
"ownedTrafficSqlCases": 9,
"ownedHistorySqlCases": 14,
"ownedLiveSqlCases": 10,
"ownedVolumeSqlCases": 6,
"postgresUnavailableSkip": false
}
],
"scopedRoleVerified": true,
"passed": true,
"databaseRemoved": true,
"roleRemoved": true,
"testContainerRemoved": true
}
]
}