Commit graph

86 Commits

Autor SHA1 Nachricht Datum
Claude Dev
d031fb28d6 feat: Info-Button mit Tooltip (Typ, Sprache, Ausrichtung) in Quellenverwaltung
- DB-Migration: language und bias Spalten zur sources-Tabelle hinzugefuegt
- Alle 254 Quellen mit Metadaten befuellt (Sprache, politische Ausrichtung)
- SourceResponse-Modell um language/bias Felder erweitert
- Info-Icon (i) mit Hover-Tooltip nach source-group-name eingefuegt
- Tooltip zeigt Typ, Sprache und Ausrichtung der jeweiligen Quelle

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:28:57 +01:00
Claude Dev
a2fd01e177 fix: Telegram-Kanaele zeigen echten Namen statt _single_ID in Quellenverwaltung
Telegram-Quellen haben kein domain-Feld, daher wurde der interne
Gruppierungsschluessel _single_<id> als Anzeigename verwendet.
Jetzt wird bei _single_-Prefix auf den tatsaechlichen Kanalnamen zurueckgegriffen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 10:19:34 +01:00
Claude Dev
5018dddad5 fix: Lagen im Netzwerk-Modal sortiert — Live alphabetisch, dann Analyse alphabetisch
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 00:42:56 +01:00
Claude Dev
432147de4b fix: Checkbox-Layout im Netzwerkanalyse-Modal korrigiert
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 00:41:32 +01:00
Claude Dev
d9fbb955dc fix: Sidebar-Layout — Netzwerkanalyse-Button neben Neue Lage, Deep-Research statt Analysen & Briefings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 00:38:05 +01:00
Claude Dev
9a35973d00 feat: Netzwerkanalyse-Feature (Wissensgraph)
Neues Feature zur Visualisierung von Entitäten und Beziehungen
aus ausgewählten Lagen als interaktiver d3.js-Netzwerkgraph.

- Haiku extrahiert Entitäten (Person, Organisation, Ort, Ereignis, Militär)
- Opus analysiert Beziehungen und korrigiert Haiku-Fehler
- 6 neue DB-Tabellen (network_analyses, _entities, _relations, etc.)
- REST-API: CRUD + Generierung + Export (JSON/CSV)
- d3.js Force-Directed Graph mit Zoom, Filter, Suche, Export
- WebSocket-Events für Live-Progress während Generierung
- Sidebar-Integration mit Netzwerkanalysen-Sektion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 00:34:26 +01:00
Claude Dev
d86dae1e86 fix: Alle Highlight-Selektoren auf korrekte DOM-Elemente gemappt 2026-03-15 23:54:33 +01:00
Claude Dev
13ae36cfcf fix: Quellen-Highlight auf Quellen-verwalten-Button statt Uebersicht-Kachel 2026-03-15 23:41:28 +01:00
Claude Dev
50281b4986 fix: Highlight-Keywords praeziser, korrekte DOM-Selektoren fuer Quellen/Faktencheck/Karte 2026-03-15 23:39:39 +01:00
Claude Dev
711b8b625b fix: Highlight nur bei API-Antworten, nicht bei Begruessung 2026-03-15 23:37:20 +01:00
Claude Dev
a7741b5985 feat: Chat-Highlight scrollt zum Element, roter prominenter Pulse-Effekt 2026-03-15 23:35:58 +01:00
Claude Dev
7d127688d1 feat: UI-Highlight bei Chat-Antworten, Barrierefreiheits-Doku im Assistenten 2026-03-15 23:31:09 +01:00
Claude Dev
c010843ca7 fix: Chat-Widget JS-Syntaxfehler behoben (mehrzeiliger String) 2026-03-15 23:18:41 +01:00
Claude Dev
767d45de9b fix: Chat-Begruessung und Prompt angepasst, keine Limitationen auflisten, Support-Verweis 2026-03-15 23:15:25 +01:00
Claude Dev
cf517336c9 fix: Tooltip-Text erbt UI-Schriftart statt Serif
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:07:31 +01:00
Claude Dev
a825dfd156 fix: Info-Icon bei Art der Lage entfernt (Hint-Text reicht)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:06:17 +01:00
Claude Dev
ac02413c59 fix: Redundante form-hints entfernt wo Info-Icon Tooltip existiert
Internationale Quellen, Telegram, Aufbewahrung: Doppelte Info-Texte entfernt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:04:53 +01:00
Claude Dev
8f5f73dbd6 fix: Tooltip-Zeilenumbrüche bei Mehrzustands-Erklärungen
Internationale Quellen, Sichtbarkeit, Faktencheck: Jeder Zustand beginnt in eigener Zeile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:54:48 +01:00
Claude Dev
e013bcf48e feat: Checkbox-Filter fuer Karten-Legende - Marker pro Kategorie ein-/ausblendbar 2026-03-15 20:52:16 +01:00
Claude Dev
2093ef3c67 fix: Tooltip-Text größer (12.5px statt 11px)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:50:44 +01:00
Claude Dev
b1b92510f3 fix: Info-Icon Schrift von Caps auf normale Serif-Schrift
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:48:31 +01:00
Claude Dev
7d06a9a690 ui: Info-Icons mit Hover-Tooltips an 6 Stellen
- CSS-only Tooltip-System (.info-icon mit data-tooltip Attribut)
- Modal: Art der Lage, Internationale Quellen, Telegram, Sichtbarkeit, Aufbewahrung
- Dashboard: Faktencheck-Kachel (erklärt Status-Kategorien)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:44:59 +01:00
Claude Dev
b2ee57b15d ui: Wording-Überarbeitung — Live-Monitoring / Analyse statt Ad-hoc / Recherche
Sidebar: "Live-Monitoring" und "Analysen & Briefings" statt "Aktive Lagen" / "Aktive Recherchen"
Modal: Verständliche Beschreibungen statt technischer Begriffe (RSS-Feeds, WebSearch, Deep Research)
Badge: "Live" / "Analyse" statt "Breaking" / "Recherche"
Button: "+ Neue Lage" statt "+ Neue Lage / Recherche"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:28:25 +01:00
Claude Dev
19da099583 feat: Kontextabhängige Karten-Kategorien
4 feste Farbstufen (primary/secondary/tertiary/mentioned) mit
variablen Labels pro Lage, die von Haiku generiert werden.

- DB: category_labels Spalte in incidents, alte Kategorien migriert
  (target->primary, response/retaliation->secondary, actor->tertiary)
- Geoparsing: generate_category_labels() + neuer Prompt mit neuen Keys
- QC: Kategorieprüfung auf neue Keys umgestellt
- Orchestrator: Tuple-Rückgabe + Labels in DB speichern
- API: category_labels im Locations- und Lagebild-Response
- Frontend: Dynamische Legende aus API-Labels mit Fallback-Defaults
- Migrationsskript für bestehende Lagen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 15:04:02 +01:00
Claude Dev
5fd65657c5 fix: Karten-Container füllt jetzt die volle Kachel-Höhe aus
- CSS: min-height:0 und height:100% für Flex-Container
- JS: Höhe wird immer explizit aus der Gridstack-Kachel berechnet,
  nicht nur als Fallback unter 50px

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:47:52 +01:00
Claude Dev
9591784ee4 fix: Karten-Höhe auf gs-h=8 zurückgesetzt (war auf 4 gefallen)
HTML-Attribut wieder an den DEFAULT_LAYOUT in layout.js angeglichen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:45:34 +01:00
Claude Dev
a9f22108da fix: Chat-Overlay Breite auf 85vw
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:35:46 +01:00
Claude Dev
cc5da6723f fix: Chat-Overlay Breite auf 70% der Fenstergröße
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:34:12 +01:00
Claude Dev
cd027c0bec fix: Chat-Vollbild als zentriertes großes Overlay statt echtem Fullscreen
700px breit, 80vh hoch, zentriert, mit Rand und abgerundeten Ecken.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:31:31 +01:00
Claude Dev
4a0577d3f4 feat: Vollbild-Modus für Chat-Assistent
Neuer Button zwischen Reload und Schließen. Toggled zwischen
normalem Fenster und Vollbild. Icon wechselt zwischen Expand/Collapse.
Schließen und Reset beenden Vollbild automatisch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:29:05 +01:00
Claude Dev
ed1b87437a fix: Chat-Button höher positioniert um Gridstack-Resize-Handle nicht zu verdecken
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:26:56 +01:00
Claude Dev
7503f63b0d feat: Neuer-Chat-Button im Chat-Header
Reload-Button (kreisförmiger Pfeil) neben dem Schließen-Button.
Wird erst sichtbar nach der ersten Nachricht. Setzt Konversation
zurück, leert den Verlauf und zeigt die Begrüßung erneut.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:49:06 +01:00
Claude Dev
1c9777e533 fix: Quellenübersicht-Stats in eigene Zeile unter den Header verschoben
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:18:06 +01:00
Claude Dev
996ee71622 feat: Artikel- und Quellen-Anzahl im zugeklappten Quellenübersicht-Header anzeigen
Zeigt "X Artikel aus Y Quellen" direkt im Header der Quellenübersicht-Kachel,
sodass die Info auch ohne Aufklappen sichtbar ist.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:55:15 +01:00
Claude Dev
7de1f0b66c Revert "Fortschrittsbalken: stetiger Creep statt fixer Sprünge"
This reverts commit ff7322e143.
2026-03-13 23:16:38 +01:00
Claude Dev
9931cc2ed3 Revert "Fortschrittsbalken: globaler Creep statt Phasen-Deckel"
This reverts commit 6ce24e80bb.
2026-03-13 23:16:38 +01:00
Claude Dev
6ce24e80bb Fortschrittsbalken: globaler Creep statt Phasen-Deckel
Phasen haben nur noch Mindest-Floors (queued 2%, recherche 12%,
analyse 35%, faktencheck 65%), keinen Deckel mehr. Der Balken
kriecht global asymptotisch Richtung 95% (0.5% des Restwegs pro
500ms), sodass er nie stehenbleibt. Phasenwechsel geben sichtbare
Boosts nach oben, complete snappt auf 100%.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 23:14:22 +01:00
Claude Dev
ff7322e143 Fortschrittsbalken: stetiger Creep statt fixer Sprünge
Balken kriecht jetzt asymptotisch innerhalb jeder Phase
(queued 2-10%, recherche 12-30%, analyse 33-60%, faktencheck 65-92%)
statt bei Phasenwechsel hart zu springen. 3% des Restwegs pro
500ms-Tick sorgt für gleichmäßige Bewegung unabhängig von der
Phasendauer.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:51:51 +01:00
Claude Dev
f9ebd7b289 Faktencheck: Ursprungsquellen bei fehlender URL anzeigen statt blind herabstufen 2026-03-13 19:54:18 +01:00
Claude Dev
2792e916c2 Telegram-Kategorie-Checkboxen: Nutzer koennen bei Lage-Erstellung einzelne Telegram-Quellkategorien auswaehlen 2026-03-13 19:08:36 +01:00
Claude Dev
bb3711a471 Fix: app.js wiederherstellen und Telegram-Patches korrekt anwenden 2026-03-13 13:19:34 +01:00
Claude Dev
01cad9dac5 Telegram-Kanaele als Quelle: Parser, Pipeline, UI-Checkbox, Validate-Endpoint
- Neuer source_type telegram_channel in models.py (Source + Incident)
- DB-Migration: include_telegram Spalte fuer incidents
- feeds/telegram_parser.py: Telethon-basierter Parser (analog RSS)
- Orchestrator: Telegram-Pipeline parallel zu RSS + WebSearch
- sources.py: POST /api/sources/telegram/validate Endpoint
- incidents.py: include_telegram in Create/Update/Response
- dashboard.html: Telegram-Checkbox + Filter-Option
- app.js: FormData, EditModal, SourceStats, TypeLabels
- config.py: TELEGRAM_API_ID, API_HASH, SESSION_PATH
- requirements.txt: telethon hinzugefuegt
2026-03-13 13:10:24 +01:00
claude-dev
c3680c3673 Add image attachments to feedback form (JPEG/PNG)
- File input in feedback modal (max 3 images, 5 MB each)
- Frontend validation for file count and size
- Backend: multipart/form-data with UploadFile, MIME attachments
- Images attached to feedback email as base64-encoded attachments
- Only JPEG and PNG allowed (validated server-side)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 13:35:47 +01:00
claude-dev
22f817c42c Reset tile scroll positions when switching incidents
Reset scrollTop on summary-content and factcheck-list containers
so scroll position from previous incident is not preserved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:19:53 +01:00
claude-dev
ca3ff1520d Clear old content immediately when switching incidents
Prevents brief flash of previous incident content (Lagebild,
Faktencheck, Quellen, Timeline, title) while new data loads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:18:55 +01:00
claude-dev
25029c2b6a Fix missing quotes in getElementById call
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:14:10 +01:00
claude-dev
1172899dbc Fix scroll-to-factcheck: use scroll event lock during rendering
The double-rAF callbacks from resizeTileToContent fire after the
initial scrollTop=0 reset. Add a scroll event listener that forces
scrollTop=0 during the entire rendering phase, then remove it after
3 animation frames (covering all double-rAF resize callbacks).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:12:50 +01:00
claude-dev
ee6cbee6f2 Fix scroll-to-factcheck: disable GridStack animation during incident switch
Remove grid-stack-animate class before rendering to prevent CSS
transitions from causing browser scroll-follow to repositioned tiles.
Re-enable animation after content is loaded and scroll is reset.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:10:28 +01:00
claude-dev
d31ec2a9a8 fix: overflow:hidden VOR Display-Wechsel und GridStack-Init setzen
Der Scroll zum Faktencheck wurde durch den display:none->flex Wechsel
und/oder GridStack-Init ausgeloest. overflow:hidden wird jetzt ganz
am Anfang von selectIncident gesetzt, BEVOR das incident-view
sichtbar wird. Erst 500ms nach Abschluss aller Render-Operationen
wird overflow wiederhergestellt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:02:56 +01:00
claude-dev
163c0c1e8b fix: Scroll-Lock per Event-Listener statt overflow:hidden
Scroll-Event-Listener setzt scrollTop=0 bei jedem Scroll-Versuch
waehrend 500ms nach dem Laden. Verhindert zuverlaessig, dass
GridStack, Leaflet oder Fokus-Aenderungen den View verschieben.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 10:58:54 +01:00