1. Сборка и стабилизация релиза 2.8.0

— В smeta_admin_backend выпущены версии 2.8.0-rc.1–rc.5, в smeta_admin_frontend, smeta-user-backend и smeta_user_frontend — rc.1–rc.2.

— В release/2.8.0 влиты ветки задач №10, №13, №22, №23, №39, №40, №41, №48, №49, №51, №54, №55, №56, №58, №61, №63, №64, №65, №66, №67, №68, №69, №72, №73, №78, №81, №82, №84, №89, №91, №92, d148, d188 и devops-ветки.

— После мёржей починены тесты: SmetaServiceKoefAllTest, AgentClientBestEffortErrorTest, SmetaControllerTest.export_returnsXlsx, useNav.test.js переписан под vue-router, было 8 падений.

2. Привязка ФСНБ к реестру ФРСН (задачи №13 и №14)

— smeta_admin_backend: добавлен устойчивый ключ fsnb ↔ запись реестра ФРСН; детектор ФСНБ при неоднозначности со стороны реестра больше не молчит.

— smeta_admin_frontend: реализована привязка загрузки ФСНБ к записи реестра ФРСН и обновлена документация.

3. Автоподбор пары НР/СП (задача №22)

— smeta-agent-claude: добавлен резолвер src/agents/nrsp_pick.py; построчный конвейер и chat-путь записи работы подбирают пару НР/СП; описание пары внесено в схему, промпт и клиент; добавлен eval-харнесс src/eval/nrsp_check.py.

— smeta-user-backend: SetRascenkaRequest принимает selected_nr_sp_origin (D-2, AC-15).

— smeta_user_frontend и smeta_admin_frontend: документация описывает состояние S1 «подобрано автоматически» и смысловой автоподбор НР/СП ассистентом.

4. Контракт объекта и обработка ошибок объекта (задачи №77 и №78)

— smeta-agent-claude: objects_create требует nazvanie и adres; промпт W1.1 п.2 запрашивает адрес вместе с названием; карта fields из 400 доходит до модели; в CLAUDE.md зафиксирован контракт объекта.

— smeta_user_frontend: страница объекта объясняет 403/404/5xx вместо пустого экрана; сохранён AC-78 при мёрже — reject тела-не-объекта без обёртки normalizeError; описаны заглушки недоступного объекта и уведомление при удалении, текст 404 выровнен с кодом — «удалён в другой вкладке».

5. Безопасность и инфраструктура

— smeta_admin_backend: выполнены ротации секретов S29/S11 и проверка отпечатков БД по задачам №48/№79: полный замер app_user показал 0/51 совпадений, 18 учёток shot* ротированы индивидуально, 3/32 учётки app_user ротированы частично.

— В релиз включены CORS allowlist, security headers, JWT env binding/issuer, защита от автоанимации, secrets, metrics, admin user files, default server, internal API auth, systemd unit drift.

— smeta-agent-claude: влита ветка devops-agent-build-once.

Проект | Добавлено строк | Удалено строк | Коммитов

smeta_admin_backend | 874 | 27 | 32

smeta_admin_frontend | 73 | 8 | 21

smeta-user-backend | 469 | 10 | 30

smeta_user_frontend | 383 | 52 | 21

smeta-agent-claude | 1303 | 25 | 12