feat: Intelligente Telegram-Kanal-Selektion und verbesserte Quellenzuordnung

- Researcher: Claude-basierte Vorauswahl relevanter Telegram-Kanäle per Haiku
- FactChecker: Verbesserte Quellen-Zuordnung mit Relevanz-Scoring (Top 5)
- FactChecker: URLs werden nicht mehr doppelt zugeordnet, sources_count wird aktualisiert
- TelegramParser: Kanal-Filterung per channel_ids statt categories
- TelegramParser: Lockereres Keyword-Matching (1 Match reicht, da vorselektiert)
- Models: telegram_categories Feld entfernt (durch KI-Selektion ersetzt)
- Main: Chat-Router eingebunden unter /api/chat

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Claude Dev
2026-03-15 18:01:32 +01:00
Ursprung 19da099583
Commit 0019d74aea
5 geänderte Dateien mit 140 neuen und 38 gelöschten Zeilen

Datei anzeigen

@@ -53,7 +53,6 @@ class IncidentCreate(BaseModel):
retention_days: int = Field(default=0, ge=0, le=999)
international_sources: bool = True
include_telegram: bool = False
telegram_categories: Optional[list[str]] = None
visibility: str = Field(default="public", pattern="^(public|private)$")
@@ -67,7 +66,6 @@ class IncidentUpdate(BaseModel):
retention_days: Optional[int] = Field(default=None, ge=0, le=999)
international_sources: Optional[bool] = None
include_telegram: Optional[bool] = None
telegram_categories: Optional[list[str]] = None
visibility: Optional[str] = Field(default=None, pattern="^(public|private)$")
@@ -85,7 +83,6 @@ class IncidentResponse(BaseModel):
sources_json: Optional[str] = None
international_sources: bool = True
include_telegram: bool = False
telegram_categories: Optional[list[str]] = None
created_by: int
created_by_username: str = ""
created_at: str