Дерево истории, удаление версий, мультизагрузка, редактирование с референсом и областью, подсказки промптов

This commit is contained in:
2026-08-26 19:17:36 +07:00
parent 27a2ac304c
commit f91aa94336
5 changed files with 1619 additions and 190 deletions

View File

@@ -28,6 +28,28 @@ Codex CLI) и увеличивает разрешение через домаш
`GET /api/jobs/:id/status` каждые 3 секунды; страницу можно закрыть —
готовая версия появится в истории.
- **Дерево истории**: вместо плоской ленты версии показаны деревом — каждая
исходная фотография образует группу со своей веткой (исходник → правки →
апскейлы), потомки выстраиваются по `parentId` с отступами, а сироты
(версии, чей родитель уже удалён или оттеснён лимитом) показываются как
отдельные корни. Ветку можно свернуть, под каждой edit-версией виден её
промпт (обрезка до двух строк, полный текст — в подсказке).
- **Удаление версий**: на узле (при наведении) есть кнопка «Удалить» —
версия удаляется вместе со всеми потомками и их файлами
(`DELETE /api/history/:id`, каскадно по `parentId`).
- **Мультизагрузка**: в поле «Фотография» можно выбрать сразу несколько
файлов — каждый становится отдельной исходной версией (своей группой),
импорт идёт последовательно с прогрессом «Загрузка N из M…».
- **Редактирование с референсом и областью**: перед правкой можно задать
референс — файл или версию из истории. На превью референса рисуется
прямоугольник области; сервер передаёт Codex обе картинки (повторяемый
флаг `-i`) и кладёт координаты области в промпт. Если область не выбрана,
референс всё равно передаётся как ориентир по сюжету и ракурсу.
- **Подсказки промптов**: кнопка «💡 Предложить промпт» — мгновенные
варианты из истории (`GET /api/suggest-prompts`), а «Спросить Codex» —
асинхронный джоб `POST /api/suggest` (тот же механизм опроса статуса, что
и у редактирования).
## Требования
- Node.js 20 или новее
@@ -79,6 +101,11 @@ npm start
`GET /api/me`, `POST /api/logout`. Вход в систему — `POST /api/login`
с JSON-телом `{"username": "...", "password": "..."}`.
Остальные эндпоинты (все требуют авторизации): `GET /api/history`,
`POST /api/history/import`, `DELETE /api/history/:id`,
`GET /api/suggest-prompts`, `POST /api/suggest`, `POST /api/preview`,
`POST /api/edit`, `POST /api/upscale`, `GET /api/jobs/:id/status`.
## Логирование
Все действия сервера пишутся в стандартный вывод контейнера — смотрите их в