Add SwarmUI settings management and portrait generation enhancements

- Introduced new API endpoints for managing SwarmUI settings, including fetching and saving presets and age rules.
- Updated the portrait generation logic to utilize the new settings structure, allowing for dynamic preset selection based on age.
- Enhanced UI components to support SwarmUI settings, including localization for new strings and improved styling for settings sections.
- Added tests to verify the functionality of new settings endpoints and portrait generation behavior.

This commit lays the groundwork for more flexible and user-friendly portrait generation options.
This commit is contained in:
Leonid Pershin
2026-08-20 06:06:45 +03:00
parent e0b7122f3b
commit 5a400be792
32 changed files with 2178 additions and 184 deletions
+46
View File
@@ -0,0 +1,46 @@
# Фаза 47. Пак romance
## Зависимости
- [Фаза 42](42-talk-circles.md)
- [Фаза 23](23-example-pack.md)
- [Фаза 41](41-opinions.md)
## Зачем
Контентный мод, не скучный образец. Ваниль без романтики. Пак добавляет ориентацию, симпатию,
пару 18+ и романтические темы патчем.
## Задачи
- [ ] `mods/romance/`: `pack.jsonc` `requires: ["core"]`, локали, ориентация как данные,
черты влюбчивый/ревнивый полями, патч тем и при необходимости `Chat`
- [ ] Без пака в create ориентации и романтических состояний нет; ванильный каталог без
романтических тем
- [ ] Симпатия учеников: ±2 года или соседняя параллель
- [ ] Симпатия ученик → учитель можно, видна на обеих карточках; учитель → ученик никогда;
осадить — разговор; пары сотрудник↔ученик нет
- [ ] Пара: оба 18+, взаимно, одна; разрыв — событие, новая не раньше следующего дня
- [ ] Сотрудники между собой — симпатия и пара можно
- [ ] Никаких сексуальных действий и текстов. Детская линия — дразнилки и ярлык
- [ ] Тесты хоста: школа с паком и без; запрет учительской взаимности
- [ ] `example` не трогать
## Тесты, без которых фаза не закрыта
- [ ] `GET /api/catalog` без `romance` не отдаёт романтические темы
- [ ] Create с паком пишет ориентацию; без пака поля нет
- [ ] Двое 16-летних не получают статус пары при любом мнении
- [ ] Учитель не получает романтическое состояние на ученика
- [ ] Первоклассник не получает симпатию к одиннадцатому (возраст)
- [ ] Школа с `example` и без `romance` ведёт себя как ваниль в части тем
## Критерий готовности
- Создать школу с галкой пака, увидеть симпатию на «Связях» и тему пака в логе; снять галку на
новой школе — этого нет
- `dotnet test` проходит
## Стоп
Не секс. Не пара учителя и ученика. Не раздувать `example`. Не смена модов у живой школы.