Files
Leonid Pershin 81fd3f6181 Split SwarmUI portraits into a model catalog and layered prompts.
Picker is Swarm intersect config, preset style/shot inherit model defaults, and living saves lift the old preset shape.
2026-08-20 14:08:11 +03:00

46 lines
3.5 KiB
Markdown

# Фаза 60. Модели портретов
## Зависимости
Нет. Портреты и `swarmui.json` уже живут вне среза.
## Зачем
Пикер показывает только модели из нашего каталога, которые есть в Swarm. Дефолты генерации
на модели; пресет даёт стиль и тип кадра и может переопределить дефолты под спойлером.
Промпт собирается слоями.
## Задачи
- [x] `swarmui.json`: каталог `models` на все четыре модели из текущего Swarm; пресеты ссылаются
на модель, `style` вместо бывшего base `positive`, `shotType` на виде кадра
- [x] Пикер = Swarm ∩ каталог; Swarm офлайн — id из каталога. Чего нет в конфиге, с пикера нет
- [x] Сборка промпта: модель → стиль → кадр → свой промпт → пустая поза → внешность (кто, возраст,
тело) → одежда. Custom **не** заменяет тип кадра. Negative: модель + доп. пресета
- [x] UI диалога пресетов (создание школы): стиль и кадр сверху; дефолты модели видны; оверрайды
пресета под `<details>`. Строки через `t(...)`
- [x] Живой сейв поднимается в `NormalizeAfterLoad`. HTTP `GET`/`PUT /api/settings/swarmui` и
`portraitSettings` — новая форма. Сокет не бампить. [`protocol.md`](../../protocol.md) тем же
коммитом
## Тесты, без которых фаза не закрыта
- [x] Лифт старого пресета: `positive``style`, kind `positive``shotType`, модель в `models`
- [x] Resolve без оверрайда берёт steps/cfg с модели; с оверрайдом — с пресета
- [x] Пикер: пересечение Swarm ∩ каталог; офлайн — каталог; лишняя модель Swarm отброшена
- [x] Промпт: порядок слоёв; custom держит тип кадра и `promptExtra`; пустая поза не попадает в текст
- [x] `GET /api/settings/swarmui` отдаёт `models`; create копирует их в сейв
- [x] Диалог: поле стиля, спойлер оверрайдов, в селекте модели нет id вне каталога при живом Swarm
## Критерий готовности
- В диалоге создания школы в пикере только модели из `swarmui.json`, которые ответил Swarm
- Смена модели подставляет её дефолты; пресет может перебить их под спойлером
- «Показать промпт» на карточке: стиль, затем кадр, затем тело и одежда; свой промпт после кадра
- Старая школа открывается и генерирует без ручного правок сейва
## Стоп
Не бампить сокет. Не зеркалить все параметры Swarm. Не возвращать кнопку настроек в меню.
Не перегенерировать PNG. Не писать позу в UI.