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
+36
View File
@@ -0,0 +1,36 @@
# Фаза 43. Шёпот и учитель
## Зависимости
- [Фаза 42](42-talk-circles.md)
## Зачем
На уроке можно шептаться — ценой учёбы. Учитель иногда слышит. После урока учитель сам
говорит с учениками.
## Задачи
- [ ] Тема с тегом шёпота может стартовать кружок на уроке в кабинете класса
- [ ] У участников на время шёпота режется рост навыка урока (доля в `BehaviorDef`)
- [ ] Учитель в том же кабинете: шанс оборвать (данные + черты); не 100 %
- [ ] Пойманный шёпот → выговор (кружок учитель + ученики, тема дисциплины), мнения как у
строгого разговора
- [ ] После урока учитель может взять 2–4 учеников (вопрос / похвала / выговор) по весу цели
- [ ] Лог: «шептались», «учитель оборвал»
## Тесты, без которых фаза не закрыта
- [ ] Шёпот на уроке даёт меньше прироста предмета, чем тихий урок без кружка
- [ ] При фиксированном сиде не каждый шёпот с учителем в кабинете обрывается
- [ ] Без учителя в узле шёпот не обрывается этим правилом
- [ ] Обычный не-шёпотный `Chat` на уроке не стартует
## Критерий готовности
- На математике двое шепчутся, иногда учитель обрывает, в логе это видно
- `dotnet test` проходит
## Стоп
Не драка. Не политика речи в UI. Не протокол.