Add portrait settings support to school creation and update related API and UI components. Enhance error handling for invalid presets and ensure proper cloning of settings. Update tests to validate new functionality.
ci / server (push) Failing after 3m40s
ci / client (push) Failing after 14s

This commit is contained in:
Leonid Pershin
2026-08-20 08:17:58 +03:00
parent db95de0ddf
commit 9d96108516
20 changed files with 293 additions and 40 deletions
+6 -2
View File
@@ -6,6 +6,7 @@ internal sealed class PortraitService(
SchoolStore store,
SwarmUiClient swarm,
SwarmUiSettingsStore settingsStore,
GameLoopService loop,
GameCommandQueue commands,
ILogger<PortraitService> logger)
{
@@ -74,7 +75,7 @@ internal sealed class PortraitService(
return PortraitPromptBuildResult.UnknownSchool;
}
var profile = settingsStore.Resolve(outcome.Card.Age, kind);
var profile = ConfigFor(schoolId).Resolve(outcome.Card.Age, kind);
var (positive, negative) = PortraitPromptBuilder.Build(outcome.Card, profile, kind, resolved);
return PortraitPromptBuildResult.Succeeded(
kind,
@@ -122,7 +123,7 @@ internal sealed class PortraitService(
return PortraitGenerationResult.UnknownSchool;
}
var profile = settingsStore.Resolve(outcome.Card.Age, kind);
var profile = ConfigFor(schoolId).Resolve(outcome.Card.Age, kind);
var (positive, negative) = PortraitPromptBuilder.Build(outcome.Card, profile, kind, promptExtra);
try
@@ -155,6 +156,9 @@ internal sealed class PortraitService(
}
}
private SwarmUiConfigFile ConfigFor(int schoolId) =>
loop.PortraitSettingsOf(schoolId) ?? settingsStore.Current;
private async Task<PersonCardResult> LookupPersonAsync(
int schoolId,
string personId,