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 час