diff --git a/app/(main)/uptime/page.tsx b/app/(main)/uptime/page.tsx index b1a83673..7d7d1206 100644 --- a/app/(main)/uptime/page.tsx +++ b/app/(main)/uptime/page.tsx @@ -44,7 +44,7 @@ import { RefreshCwIcon, PlusIcon, SearchIcon, XIcon, ChevronDownIcon, ChevronRightIcon, TrashIcon, ArrowRightIcon, - CpuIcon, HardDriveIcon, ThermometerIcon, ClockIcon, + CpuIcon, HardDriveIcon, AlertCircleIcon, ServerIcon, PauseIcon, PlayIcon, ArrowUpIcon, ArrowDownIcon, ArrowUpDownIcon, ServerCrashIcon, ChevronUpIcon, DownloadIcon, @@ -142,7 +142,6 @@ function ProbePingRttDetailChart({ const minVal = Math.min(...chartPts) const span = Math.max(1, maxVal - minVal) * 1.08 const y0 = minVal - (span - (maxVal - minVal)) / 2 - const y1 = y0 + span const xAt = (i: number) => pad.l + (chartPts.length <= 1 ? iw / 2 : (i / (chartPts.length - 1)) * iw) const yAt = (v: number) => pad.t + (1 - (v - y0) / span) * ih const lineD = chartPts @@ -812,18 +811,6 @@ function fmtUptime(sec: number): string { return `${m}м` } -function resPctColor(pct: number, warn = 70, crit = 85): string { - if (pct >= crit) return "text-red-600 dark:text-red-400" - if (pct >= warn) return "text-amber-600 dark:text-amber-400" - return "text-emerald-600 dark:text-emerald-400" -} - -function resBarColor(pct: number, warn = 70, crit = 85): string { - if (pct >= crit) return "bg-red-500" - if (pct >= warn) return "bg-amber-500" - return "bg-emerald-500" -} - const BOARD_MAP: Record = { "jump-host": "RB5009UG+S+IN", "exit-node": "RB4011iGS+RM", @@ -855,32 +842,6 @@ const INIT_RESOURCES: ServerResource[] = mockServers.map(s => { } }) -// ── MiniBar ─────────────────────────────────────────────────────────────────── - -function MiniBar({ pct, warn = 70, crit = 85, className }: { - pct: number; warn?: number; crit?: number; className?: string -}) { - return ( -
-
-
- ) -} - -// ── Sort indicator ───────────────────────────────────────────────────────────── - -type ResSortKey = "name" | "cpu" | "ram" | "hdd" | "uptime" | "temp" - -function SortIcon({ k, sortKey, sortAsc }: { k: ResSortKey; sortKey: ResSortKey; sortAsc: boolean }) { - if (sortKey !== k) return - return sortAsc - ? - : -} - // ── ResourcesTab ────────────────────────────────────────────────────────────── type ResTypeFilter = "all" | "jump-host" | "exit-node" | "home-router" @@ -1138,7 +1099,6 @@ function UptimePageContent({ selectedProbeId, allProbesHref }: { selectedProbeId useEffect(() => { if (liveApi) return - // eslint-disable-next-line react-hooks/set-state-in-effect setAllServers(mockServers) setProbes(mockProbesWithSavedStars(INIT_PROBES)) setResources(INIT_RESOURCES) @@ -1329,14 +1289,12 @@ function UptimePageContent({ selectedProbeId, allProbesHref }: { selectedProbeId useEffect(() => { if (!sheetOpen) return if (!newSrcId || !selectableSources.some(s => s.id === newSrcId)) { - // eslint-disable-next-line react-hooks/set-state-in-effect setNewSrcId(selectableSources[0]?.id ?? "") } }, [sheetOpen, newSrcId, selectableSources]) useEffect(() => { if (!sheetOpen || !newSrcId) { - // eslint-disable-next-line react-hooks/set-state-in-effect setSrcInterfaces([]) setNewSrcInterface("") return diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 2f85f736..c5deefc8 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,6 +1,6 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-07: 12.3.78 завершён: snapshot reset смены пары, stale draft/история,14pure+backend HTTP/RBAC,73browser/8context/type/lint/build. Общие main1176(579e816)/context221(a3fcba0) и текущий delta различаются. Следующий12.3.79: строгий runtime body POST /uptime/speed-test (prefix IDs/невалидные enums/duration) до native операции. Внешняя12.5 не выполнена. +Актуальное продолжение 2026-10-07: 12.3.78/78.1 завершены: pair snapshot/history,73browser/8context,14pure+HTTP/RBAC,types/build; uptime lint0warnings. Общие main1176(579e816)/context221(a3fcba0) сохранены отдельно. Следующий12.3.79: строгий runtime body POST /uptime/speed-test до native операции (prefix IDs/enums/duration), команды/права сохранить. Внешняя12.5 не выполнена. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 9960abd9..3db09706 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-07: 12.3.78 завершён: snapshot reset смены пары, stale draft/история,14pure+backend HTTP/RBAC,73browser/8context/type/lint/build. Общие main1176(579e816)/context221(a3fcba0) и текущий delta различаются. Следующий12.3.79: строгий runtime body POST /uptime/speed-test (prefix IDs/невалидные enums/duration) до native операции. Внешняя12.5 не выполнена. +Актуальное продолжение 2026-10-07: 12.3.78/78.1 завершены: pair snapshot/history,73browser/8context,14pure+HTTP/RBAC,types/build; uptime lint0warnings. Общие main1176(579e816)/context221(a3fcba0) сохранены отдельно. Следующий12.3.79: строгий runtime body POST /uptime/speed-test до native операции (prefix IDs/enums/duration), команды/права сохранить. Внешняя12.5 не выполнена. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 75b02518..6621b58e 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -887,3 +887,10 @@ Main1176 на579e816 и backend ownership delta25pure/5browser наa3fcba0 ос 14pure (5новых frontend snapshot+9persistence), HTTP/DI/RBAC speed-probes write, contracts/backend build,73browser uptime/large history,8uptime context, non-incremental TypeScript, targeted lint (0errors,9предыдущих предупреждений uptime) и frontend production build passed. Финальная новая проверка: API save error сохраняет прежние80; успешная смена/возврат пары не показывает их как новый snapshot, history/KPI1run сохранены. Historic2speed PNG восстановлены. Реальное FOR UPDATE/concurrency требует12.5; здесь DI и source review. Этот delta выполнен после общих main579e816/contexta3fcba0; общие результаты не переименованы в проверку нового HEAD. Следующий79: POST command body ещё использует parseInt/enum defaults; проверить строгий DTO до DB/native, сохранив валидные ad-hoc/scheduled сценарии и существующие команды/права. Полный CAS параметров пробы и реальные native timestamps также не объявлены проверенными. Внешняя12.5 отдельно. + + +## 12.3.78.1 — удаление неиспользуемого кода прежней таблицы + +2026-10-07. Из uptime удалены неиспользуемые MiniBar/resBarColor/resPctColor/SortIcon/ResSortKey,2импорта и чистое вычислениеy1,3неактуальных eslint-disable directives. Reference search и предыдущий lint подтверждали отсутствие использования; активные render/API/measurement paths не менялись. Установленные ReUI primitives/hooks/theme не изменены. + +Targeted lint страницы/helpers/tests теперь0errors/0warnings (до этого9warnings), non-incremental TypeScript и production frontend build passed. Для удаления неиспользуемых объявлений не добавлены повторяющие реализацию тесты; функциональный78 delta73browser/8context/14pure+backend HTTP/RBAC сохранён в предыдущем блоке. Следующий79: runtime command body schema до DB/native. Внешняя12.5 не выполнена; полная матрица относится к точным ранее указанным HEAD.