feat: add configurable status mappings for metadata providers
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 6s

Add a status_mappings table to replace hardcoded provider status
normalization. Users can now configure how provider statuses (e.g.
"releasing", "finie") map to target statuses (e.g. "ongoing", "ended")
via the Settings > Integrations page.

- Migration 0038: status_mappings table with pre-seeded mappings
- Migration 0039: re-normalize existing series_metadata.status values
- API: CRUD endpoints for status mappings, DB-based normalize function
- API: new GET /series/provider-statuses endpoint
- Backoffice: StatusMappingsCard component with create target, assign,
  and delete capabilities
- Fix all clippy warnings across the API crate
- Fix missing OpenAPI schema refs (MetadataStats, ProviderCount)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-19 12:44:22 +01:00
parent bfc1c76fe2
commit cfc98819ab
25 changed files with 706 additions and 129 deletions

View File

@@ -445,6 +445,19 @@ const en: Record<TranslationKey, string> = {
"settings.comicvineHelp": "Get your key at",
"settings.freeProviders": "are free and do not require an API key.",
// Settings - Status Mappings
"settings.statusMappings": "Status mappings",
"settings.statusMappingsDesc": "Configure the mapping between provider statuses and database statuses. Multiple provider statuses can map to a single target status.",
"settings.targetStatus": "Target status",
"settings.providerStatuses": "Provider statuses",
"settings.addProviderStatus": "Add a provider status…",
"settings.noMappings": "No mappings configured",
"settings.unmappedSection": "Unmapped",
"settings.addMapping": "Add a mapping",
"settings.selectTargetStatus": "Select a target status",
"settings.newTargetPlaceholder": "New target status (e.g. hiatus)",
"settings.createTargetStatus": "Create status",
// Settings - Language
"settings.language": "Language",
"settings.languageDesc": "Choose the interface language",