feat(backend): Lokalisierung der weiteren Pipeline-Bereiche
- incidents.enhance_description: ENHANCE_PROMPT_RESEARCH/ADHOC nun pro
Sprache (DE/EN), Auswahl via _enhance_template(type, org_lang_iso).
- pipeline_tracker.get_pipeline_steps(lang_iso) liefert die Schritt-
Definition lokalisiert. /api/incidents/{id}/pipeline reicht Org-Sprache
durch.
- chat._build_prompt(output_language): SYSTEM_PROMPT laesst sich per
format() in Org-Sprache rendern (nur Output-Anweisung). Chat-Router
zieht Sprache aus Org-Setting.
- report_generator: FC_STATUS_LABELS_DE/EN + _fc_labels(lang_iso).
PDF-Template bleibt vorerst deutsch (Phase 9).
Bewusst draussen (Phase 4): entity_extractor (Backend-intern, keine UI),
source_suggester (Admin in Verwaltung), geoparsing (liefert bereits
englische Ortsnamen).
Phase 4 von 8 (eng_demo / Org-Sprache).
Dieser Commit ist enthalten in:
@@ -25,7 +25,7 @@ TEMPLATE_DIR = Path(__file__).parent / "report_templates"
|
||||
LOGO_PATH = Path(__file__).parent / "static" / "favicon.svg"
|
||||
|
||||
|
||||
FC_STATUS_LABELS = {
|
||||
FC_STATUS_LABELS_DE = {
|
||||
# 1:1 vom Monitor-Frontend (components.js) — konsistent zum UI.
|
||||
"confirmed": "Bestätigt",
|
||||
"unconfirmed": "Unbestätigt",
|
||||
@@ -34,9 +34,29 @@ FC_STATUS_LABELS = {
|
||||
"established": "Gesichert",
|
||||
"disputed": "Umstritten",
|
||||
"unverified": "Ungeprüft",
|
||||
"false": "Falsch", # Legacy-Fallback
|
||||
"false": "Falsch",
|
||||
}
|
||||
|
||||
FC_STATUS_LABELS_EN = {
|
||||
"confirmed": "Confirmed",
|
||||
"unconfirmed": "Unconfirmed",
|
||||
"contradicted": "Contradicted",
|
||||
"developing": "Developing",
|
||||
"established": "Established",
|
||||
"disputed": "Disputed",
|
||||
"unverified": "Unverified",
|
||||
"false": "False",
|
||||
}
|
||||
|
||||
|
||||
def _fc_labels(lang_iso: str = "de") -> dict:
|
||||
"""Liefert FC-Status-Labels in der gewuenschten Sprache."""
|
||||
return FC_STATUS_LABELS_EN if lang_iso == "en" else FC_STATUS_LABELS_DE
|
||||
|
||||
|
||||
# Backward-compatible alias (Default DE) -- veraltet, nutze _fc_labels(lang)
|
||||
FC_STATUS_LABELS = FC_STATUS_LABELS_DE
|
||||
|
||||
|
||||
def _get_logo_base64() -> str:
|
||||
"""Logo als Base64 für HTML-Embedding."""
|
||||
@@ -70,12 +90,14 @@ def _prepare_source_stats(articles: list) -> list:
|
||||
return stats
|
||||
|
||||
|
||||
def _prepare_fact_checks(fact_checks: list) -> list:
|
||||
def _prepare_fact_checks(fact_checks: list, lang_iso: str = "de") -> list:
|
||||
"""Faktenchecks mit Label aufbereiten."""
|
||||
labels = _fc_labels(lang_iso)
|
||||
fallback = "Unknown" if lang_iso == "en" else "Unbekannt"
|
||||
result = []
|
||||
for fc in fact_checks:
|
||||
fc_copy = dict(fc)
|
||||
fc_copy["status_label"] = FC_STATUS_LABELS.get(fc.get("status", ""), fc.get("status", "Unbekannt"))
|
||||
fc_copy["status_label"] = labels.get(fc.get("status", ""), fc.get("status", fallback))
|
||||
result.append(fc_copy)
|
||||
return result
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren