diff --git a/components/data-grids/certificate-expanded-detail.tsx b/components/data-grids/certificate-expanded-detail.tsx index a251d525..899e9257 100644 --- a/components/data-grids/certificate-expanded-detail.tsx +++ b/components/data-grids/certificate-expanded-detail.tsx @@ -1,16 +1,9 @@ "use client" import type { CertificateDto } from "@mmapp/contracts/certificates" -import { cn } from "@/lib/utils" -function daysLeftBar(days: number, total = 365): number { - if (days <= 0) return 0 - return Math.min(100, Math.round((days / total) * 100)) -} function CertificateExpandedDetail({ cert }: { cert: CertificateDto }) { - const pct = daysLeftBar(cert.daysLeft) - return (
@@ -39,23 +32,8 @@ function CertificateExpandedDetail({ cert }: { cert: CertificateDto }) { {cert.trusted ? "Да (доверенный)" : "Нет (не доверенный)"}

-
-
-
-
-
) } -export { CertificateExpandedDetail, daysLeftBar } +export { CertificateExpandedDetail } diff --git a/components/data-grids/certificates-data-grid.tsx b/components/data-grids/certificates-data-grid.tsx index e996ef81..5246d443 100644 --- a/components/data-grids/certificates-data-grid.tsx +++ b/components/data-grids/certificates-data-grid.tsx @@ -20,7 +20,6 @@ import { import { DataGridSortHeader } from "@/components/data-grids/shared/data-grid-sort-header" import { CertificateExpandedDetail, - daysLeftBar, } from "@/components/data-grids/certificate-expanded-detail" import { EmptyState } from "@/components/empty-state" import { @@ -65,7 +64,6 @@ function daysLeftColor(days: number): string { } function CertDaysCell({ cert }: { cert: CertificateDto }) { - const pct = daysLeftBar(cert.daysLeft) return ( <>
@@ -74,19 +72,6 @@ function CertDaysCell({ cert }: { cert: CertificateDto }) { {cert.validUntil}
-
-
-
) } diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 1c50999f..ac283b80 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -36,6 +36,13 @@ +## Блок 11А.16.1 — достоверное отображение срока сертификата (2026-10-01) + +- Удалены декоративные шкалы из таблицы и раскрытых деталей сертификата: они делили оставшиеся дни на выдуманный общий срок 365 дней. Сертификаты могут иметь другую продолжительность, поэтому процент не был достоверным. +- Дата окончания и текст оставшихся дней в таблице сохранены. Удалён неиспользуемый daysLeftBar; API, операции и ReUI vendor не изменены. +- TypeScript, профильный ESLint и diff check прошли. Это небольшой подготовительный блок, а не приёмка сертификатов; legacy неизвестные значения исправляются при подключении observed state. +- Следующий шаг остаётся 11А.17: миграция страницы, таблицы и деталей на новый state reader, nullable поля, частичные ошибки и свежесть. На начало блока использовано 98% пятичасовой квоты; большую миграцию не начинали. + ## Блок 11А.16 — изоляция setup ошибок устройств (2026-10-01) - В обоих новых state каталогах создание клиента/reader перенесено внутрь защищённого чтения устройства. Setup исключение одного клиента становится его error/partial, остальные строки остаются доступны; общий каталог не срывается.