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, остальные строки остаются доступны; общий каталог не срывается.