1. Модуль ВОР (Виды Объёмов Работ) — сквозной запуск

— В smeta-user-backend поднят CRUD-контроллер ВОР (фаза 1), пользовательские файлы и квоты (фаза 2), AgentVorController (фаза 4), AgentObjectController (фаза 8), GET /api/me/files/{id}/download с RFC 5987 (фаза 10)

— Agent API расширен на smeta/fsnb/splitforma/characteristics/koef (фаза 11), Postgres FTS для CatalogService.search (фаза 12), sbornikName + razdelName в RabotaFull (фаза 13)

— Bulk-эндпоинты: POST /api/agent/vor/{id}/raboty/bulk (фаза 24) и /api/agent/smeta/razdel/{id}/raboty/bulk (фаза 25)

— В smeta_user_frontend — UI ВОР (v2.3.19), UI «Мои файлы» (v2.3.20), split-view + загрузка файлов в чате (v2.3.26)

— Версионирование: 2.3.19 → 2.3.51 на user-backend; ключевые сервисы: VorService.java (+349), FileService.java (+243), AgentClient.java (+204)

2. Стриминговый чат с агентом

— Бэкенд: SSE-прокси /api/chat/sessions/{id}/stream (фаза 20), фикс утечки коннекта (phase 20 v2), пробрасывание SSE-headers через Spring (фаза 21), удаление Connection: keep-alive (фаза 23), фикс HTTP/2 INTERNAL_ERROR (v2.3.47), JwtFilter on async-dispatch (v2.3.48)

— ChatStreamService.java — крупнейшее изменение в backend (+424 строк); таймауты повышены до 180с

— Фронт: ChatWorkspaceView.vue (+728), ChatComposer.vue (+437) — streaming-bubble, эскалирующий прогресс, resume сессии по vor_id, восстановление контекста чата по tool_calls

— Бридж-учёт: agent_usage пишется из usage агента, токены отображаются в QuotaBadge (фаза 15)

— UX-полировка: переименование сессий (PUT /api/chat/sessions/{id}), скрытие сайдбара, ресайз панелей, кнопка «Скачать» в MyFilesView, фикс scroll-to-bottom

3. Миграция админки и пользовательского фронта на Vue Router 4

— smeta_admin_frontend v2.3.31: Vue Router 4 (фаза 1), v2.3.33: параметризованные ФСНБ-маршруты с deep-link (фаза 2)

— smeta_user_frontend v2.3.32: Vue Router 4

— router.js (+158), useNav.js (+165-167), App.vue (+115)

— Попутно фикс: 401 в админке корректно сбрасывает на форму логина

4. AgentConfig + админ-биллинг

— smeta_admin_backend v2.3.23: фаза 5 (биллинг агента), v2.3.24: AgentConfig (модель/итерации/токены) из админки

— AgentConfigController.java (+131), AgentUsageAdminController.java (+116), AgentConfig.java (+75), AgentUsage.java (+57)

— Фронт: AgentConfigView.vue (+167), AgentUsageView.vue (+166), страница «Расход API» (v2.3.23)

5. Прочее (BFE/тех. долг)

— @JsonAlias для snake_case полей DTO агента (v2.3.37, v2.3.38), исправление @GeneratedValue на UserFile.id, RFC 5987 для скачивания файлов

— В smeta_user_frontend: pending-slot мутация через реактивный прокси Vue 3, фикс ESC для picker’ов, переименование «Выбираемые материалы» → «Неучтённые материалы» (#5)

— Авто-генерация блог-постов Softlancer (5 ежедневных сессий 04.05-08.05, тема: разработка ПО с помощью ИИ)

Сводная статистика (без dist/ и lock-файлов):

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

smeta_admin_backend | 714 | 32 | 24

smeta_admin_frontend | 809 | 193 | 24

smeta-user-backend | 6590 | 340 | 52

smeta_user_frontend | 3436 | 603 | 47

Итого | 11549 | 1168 | 147

Оценка трудозатрат:

Задача | ~Часы

ВОР backend (фазы 1-13, 24-25) | 28

ВОР frontend (UI ВОР, файлы, split-view) | 12

Стриминговый чат backend (SSE, JWT, таймауты) | 14

Стриминговый чат frontend (workspace, resume) | 12

Vue Router 4 миграция (admin + user) | 6

AgentConfig + биллинг (back + front) | 7

Постгрес FTS, JsonAlias, мелкие фиксы | 5

UX-полировка чата и сметы | 4

Авто-блог Softlancer (5 сессий) | 1

Итого | ~89 час