feat(political-benefits): implement political powers and benefits system
All checks were successful
Deploy to production / deploy (push) Successful in 3m3s

- Added new political powers and benefits functionalities, including reputation ticks, tax jurisdiction management, and appointment capabilities.
- Introduced a new job for periodic reputation updates and created necessary database tables for tracking political benefits.
- Enhanced the FalukantController and services to support new endpoints for managing political powers and appointments.
- Updated localization files to reflect new features and improve user experience across multiple languages.
- Modified the UI to display new political powers and benefits, ensuring accurate representation in the PoliticsView.
This commit is contained in:
Torsten Schulz (local)
2026-04-02 16:00:29 +02:00
parent 5d06d97737
commit 56be4b76c0
19 changed files with 1572 additions and 2 deletions

View File

@@ -679,6 +679,8 @@
"discretion": "Discreción",
"maintenance": "Mantenimiento",
"monthlyCost": "Coste mensual",
"politicalFreeSlotsHint": "Los cargos políticos te conceden {count} plaza(s) de relación sin mantenimiento mensual (primero cuentan las relaciones más baratas).",
"politicalFreeMaintenance": "Cargo (gratis)",
"statusFit": "Adecuación social",
"acknowledged": "Reconocido",
"underfunded": "{count} meses con fondos insuficientes",
@@ -1258,6 +1260,7 @@
"title": "Política",
"tabs": {
"current": "Cargo actual",
"powers": "Facultades del cargo",
"upcoming": "Cargos pendientes de (re)elección",
"elections": "Elecciones"
},
@@ -1279,6 +1282,27 @@
"court_immunity": "Inmunidad judicial limitada en asuntos del cargo",
"generic": "Ventaja ({code})"
},
"powers": {
"none": "Tus cargos actuales no conceden facultades adicionales (impuestos, nombramientos, plazas gratuitas).",
"loadError": "No se pudieron cargar las facultades del cargo.",
"freeLoversTitle": "Relaciones (cargo)",
"freeLoversHint": "Tienes {count} plaza(s) de relación concedida(s) políticamente sin mantenimiento mensual (véase Familia → Relaciones).",
"reputationTitle": "Reputación (automática)",
"reputationLine": "{office}: próximo bono en unos {days} día(s) (+{gain} reputación).",
"taxTitle": "Tipos impositivos regionales",
"taxRange": "Rango permitido: del {min} % al {max} %.",
"taxSave": "Guardar",
"taxSaved": "Tipo impositivo guardado.",
"taxError": "No se pudo guardar el tipo impositivo.",
"appointTitle": "Nombramientos",
"appointSlot": "Cargo vacante",
"appointPick": "— elegir cargo —",
"appointSearch": "Buscar jugadores (nombre o usuario)",
"appointSelected": "Seleccionado: {name}",
"appointSubmit": "Nombrar",
"appointSuccess": "Nombramiento realizado.",
"appointError": "El nombramiento ha fallado."
},
"regionLevels": {
"city": "Ciudad",
"county": "Condado",