📦 Сделал
Аудит-лог стал защищённым от подмены. Каждая запаись теперь несёт хеш от своего содержимого плюс хеш предыдущей строки — классическая hash chain, как в блокчейне, только без блокчейна. Строит цепочку SHA-256: тронул любую старую запись задним числом — хеш перестаёт сходиться, и следующая же проверка это ловит. Отдельный планировщик по расписанию прогоняет верификацию всей цепочки и репортит разрыв. Наивный путь — писать лог в append-only хранилище или тащить внешний реестр; здесь это просто один столбец в Postgres и правило «хеш = f(строка, предыдущий хеш)». Дёшево, проверяемо, никакого лишнего сервиса.
Селф-хост из коробки: на первом старте чистой инсталляции docker-entrypoint сам засевает демо-схему SC-SIM, чтобы человек открыл систему и сразу увидел рабочий пример, а не пустой экран.
Починил таблицы. Убрал скролл-слой на каждой ячейке, из-за которого на macOS/Chrome ячейки моргали и белели при прокрутке — теперь один слой на грид. Поправил показ дат в raw-режиме при «подглядывании» в скрытые столбцы и вернул видимую левую/правую рамку таблицы.
Мелочь для своих: развёл
test и test:isolated в npm-скриптах — изоляция тестов от боевой базы теперь не требует помнить руками, какой прогон куда смотрит.⏱ Сколько ушло
ADR на хеш-цепочку пролежал в ящике почти месяц — родился в начале июля и мариновался, руки не доходили. Сегодня сел — и собрал за вечер: миграция, сам движок цепочки, планировщик проверки, тесты. Иногда так и работает: замысел отлёживается, а сборка идёт за один заход.
Спасибо что читаете. До завтра.
━━ Конец дня 247 ━━