Commit graph

245 commits

Author SHA1 Message Date
723196fe64 monitor: Grafana-Healthcheck auf /api/health umstellen
Stabiler als die Root-URL; reduziert False Positives bei kurzzeitigen 5xx auf /.
2026-04-01 09:24:11 +00:00
80b7b0681d monitor: groesszuegigeres Timeout fuer Flugscanner-Agent (Tailscale-KH→DE) 2026-03-31 19:31:39 +00:00
f5c0b5e445 fix(telegram_bot): httpx/httpcore Log-Level auf WARNING (Token nicht mehr in Logs) 2026-03-31 14:30:43 +00:00
1cc27b877f fix(telegram_bot): Forecast ask_with_tools mit tool_handlers; sauberes Task-Shutdown 2026-03-31 13:05:08 +00:00
e08c820f15 hausmeister: LLM in Hintergrund-Task — Polling blockiert nicht mehr (toter Bot)
python-telegram-bot verarbeitet Updates nacheinander, solange der Handler
nicht zurueckkehrt. Die Warteschleife auf ask_with_tools blockierte alle
weiteren Telegram-Updates (kein abbruch, keine Befehle, 'tot').

- Freitext und Sprache: Pipeline in asyncio.create_task ausgelagert
- concurrent_updates(True) zusaetzlich
2026-03-31 13:02:09 +00:00
Auto-Sync
32c6b97a02 Auto-Sync: 2026-03-31 15:00 2026-03-31 15:00:10 +02:00
2cab0af536 hausmeister: schnellere Fortschritts-Meldungen (10s), Folgenachricht bricht LLM ab 2026-03-31 12:58:45 +00:00
3776f4ff71 savetv: Archiv-Tool filtert DE/FR-Produktionslaender wie Web-UI 2026-03-31 12:54:30 +00:00
4aaa206147 savetv: Web-UI API filtert DE/FR-Produktionslaender (Wikidata-Cache) 2026-03-31 12:54:27 +00:00
03f67af781 hausmeister: Forgejo-Fehlerquote-Schwelle (Scanner-Traffic) 2026-03-31 12:54:26 +00:00
Auto-Sync
56959a1219 Auto-Sync: 2026-03-31 14:45 2026-03-31 14:45:09 +02:00
a1fa212da4 fix regex typo: allemagne 2026-03-31 11:24:22 +00:00
218858314d fix: should_exclude_production_country calls load_filminfo_cache 2026-03-31 11:24:16 +00:00
830682945b Add savetv_country_filter: exclude DE/FR production countries from film selection 2026-03-31 11:24:04 +00:00
Auto-Sync
d3097ece29 Auto-Sync: 2026-03-30 15:45 2026-03-30 15:45:09 +02:00
Homelab Cursor
89eca6c388 docs: Save.TV Pipeline Doku + CT 116 RAM/DNS-Fix in homelab.conf 2026-03-28 20:59:25 +01:00
Homelab Cursor
eb47bcb8d1 feat(savetv): Jellyfin-Filter, Archiv-Cache, Stabilitäts-Fixes
- savetv_web.py: Archiv-Cache mit Hintergrund-Refresh (kein Blockieren bei Save.TV-Login)
- savetv_web.py: Flask threaded=True für parallele Requests
- savetv_web.py: Jellyfin-Duplikate-Filter (Checkbox, default: ein)
- tools/savetv.py: Login-Timeout (8s connect, 20s read) + modernerer User-Agent
- savetv_sync.py: Dateien unter 700 MB werden übersprungen (kein SD-Schrott)
- CT 116: www.save.tv statisch in /etc/hosts → kein DNS-GIL-Block mehr
- CT 116: RAM von 512 MB auf 1 GB erhöht (war der Hauptgrund für Einfrieren)
2026-03-28 20:55:12 +01:00
Homelab Cursor
afada512d6 fix(savetv): Wartezeit auf 24h erhöht (Save.TV Werbeschnitt) 2026-03-28 19:43:50 +01:00
Homelab Cursor
8c1e810204 feat(savetv): Pipeline-Dashboard mit 3 Blöcken (Warten/Bereit/NAS)
- /downloads ersetzt durch Pipeline-Dashboard
- /api/pipeline: Status aller Filme (pending/bereit/auf NAS)
- /api/nas_synced: Callback wenn Jellyfin-Sync fertig
- Sync-Script meldet sich nach erfolg zurück ans CT
2026-03-28 19:39:53 +01:00
Homelab Cursor
fad6b145ff fix(savetv): user:pass@ aus URL entfernen (Chrome strippt Credentials) 2026-03-28 19:12:35 +01:00
Homelab Cursor
73332bfc14 fix(savetv): Basic-Auth in Direct-Download-URL einbetten
Credentials (mike:astral66) direkt im href-Link, damit kein Browser-Auth-Dialog erscheint.
SAVETV_DIRECT_USER/PASS als env-ueberschreibbare Konstanten.
2026-03-28 19:05:07 +01:00
Homelab Cursor
ba13fc2659 feat(savetv): direkter Download via Hetzner-IP statt Cloudflare
- SAVETV_DIRECT_BASE / SAVETV_TUNNEL_BASE Konstanten eingefuegt
- Downloads-Seite: gruener Download-Button -> Hetzner :9443 (ohne CF, Basic-Auth mike)
- CF-Fallback-Link pro Zeile -> savetv.orbitalo.net (Cloudflare-Tunnel)
- Infobox mit URL, Auth-Hinweis und CF-Erlaeuterung unterhalb der Dateianzahl
2026-03-28 18:43:08 +01:00
Homelab Cursor
6989b5c07b feat(savetv): Jellyfin-Abgleich im Archiv
- API /api/jellyfin_library: Jellyfin-Filme via Tailscale, 1h Cache
- Archiv-Karten: Badge Jellyfin wenn Titel in Mediathek (normalisierter Vergleich)
- Entfernt: /opt/savetv_extra_routes.py Doppelung (nur noch Repo-Modul)
2026-03-28 17:28:37 +01:00
Homelab Cursor
902441bbbc feat(savetv): add savetv_extra_routes.py to repo — sortable downloads page
Downloads page now has sort buttons (date/name/size) with toggle asc/desc.
Default: newest first. Client-side JS sorting, no page reload needed.
Previously this file was only in /opt/ outside git.
2026-03-28 17:17:46 +01:00
Homelab Cursor
3b6ee14b37 fix(rag): timeout 45s, RRF rank-map bug fix 2026-03-28 16:54:20 +01:00
Homelab Cursor
a3735bf265 fix(rag): RRF fusion, 512-char snippets, 15 candidates — speed+quality 2026-03-28 16:51:06 +01:00
Homelab Cursor
da0d1cd16c feat(rag): Cross-Encoder Reranking via CT123 bge-reranker-v2-m3 2026-03-28 16:37:56 +01:00
Homelab Cursor
7a371944b4 docs: Jellyfin Server Zugangsdaten und API-Key 2026-03-28 13:18:45 +01:00
Homelab Cursor
53b63ee8fe savetv: Hetzner-Speicherindikator im Archiv, Datumssortierung Downloads 2026-03-28 12:59:27 +01:00
Homelab Cursor
2c9f07dbb7 docs: Save.TV Enricher Dokumentation (Enricher, Web-UI, Umbenennung) 2026-03-27 14:54:47 +01:00
Homelab Cursor
9f60a9e292 savetv_web: Neueste Filme zuerst, Aufnahmedatum anzeigen 2026-03-27 14:15:56 +01:00
Homelab Cursor
8751b42724 savetv_enrich: Sleep auf 0.5s reduziert für schnellere Verarbeitung 2026-03-27 13:57:44 +01:00
Homelab Cursor
e204edf2ea savetv_enrich: File-Lock + Debug-Logging + robusterer Cache-Save
- fcntl.flock verhindert parallele Enricher-Instanzen
- Atomarer Cache-Save über tmp-Datei
- Debug-Logs bei leerer/gefilterter Beschreibung
- Sleep auf 2s erhöht für stabilere Ollama-Antworten
2026-03-27 13:49:21 +01:00
cf1a0ccdd1 fix: qwen2.5:14b als Primärmodell, robustes JSON-Parsing
- qwen3 schreibt Reasoning in Content trotz think=false
- qwen2.5 liefert zuverlässig JSON
- Actors-Feld: Strings oder Objekte werden beides akzeptiert
- Prompt explizit auf Deutsch eingeschränkt
2026-03-27 12:39:34 +00:00
caa2883a66 fix: Ollama native API nutzen statt OpenAI-compat für Enricher
Qwen3 via /v1/chat/completions verbraucht max_tokens fürs
Reasoning und liefert leeren Content. Umstellung auf /api/chat
mit think=false löst das Problem.
2026-03-27 12:36:38 +00:00
0b495c3544 feat: Web-UI zeigt KI-Filmbeschreibungen, Darsteller und Regisseur
Die filmCard-Funktion rendert jetzt die angereicherten Daten:
- 3-6 Sätze Beschreibung
- Hauptdarsteller + Regisseur
- Land, Jahr, Genre als Metadaten-Zeile
2026-03-27 12:27:58 +00:00
45b2903fb6 feat: KI-Enricher für Save.TV Filmdatenbank
Nutzt Ollama (qwen3:30b) um Filme im Archiv automatisch
mit Beschreibung, Hauptdarstellern, Land und Genre anzureichern.
Läuft als Cronjob alle 3h, Ergebnis sofort in der Web-UI sichtbar.
2026-03-27 12:25:58 +00:00
Homelab Cursor
8b78cf0854 rag: docnm_search (Boost 5.0) — Dateinamen als Volltext durchsuchbar (#52)
ES-Index: neues Feld docnm_search (custom analyzer mit path_splitter,
__ und _ werden zu Leerzeichen). docnm_kwd bleibt als Keyword.
Hybrid-Suche nutzt jetzt docnm_search mit Boost 5.0 —
Arakawa/Wohnung/Kambodscha etc. finden direkt ueber den Dateinamen
ohne handverdrahtete Subqueries.

Closes #52
2026-03-27 10:41:00 +01:00
Homelab Cursor
70469cfbc5 rag: Fix toter Code — Immobilien-Wide-Check war nach return unreachbar 2026-03-26 19:04:23 +01:00
Homelab Cursor
0a76bee464 rag: Breitensuche fuer Wohnungen/Immobilien/Kambodscha
- _is_wide_recall_query: erkennt jetzt Wohnung+welche/alle, Kambodscha+Wohnung
- _WIDE_SUBQUERIES_IMMOBILIEN: Arakawa-Wohnungen, Mietvertraege, Kaufvertrag, Hard Title etc.
- handle_rag_search waehlt Subquery-Pool je nach Thema (Immo vs. Versicherung)
2026-03-26 19:00:28 +01:00
Homelab Cursor
00283a6268 llm+rag: RAG-Pflicht fuer Wohnung/Immobilie/Kambodscha; generische Forced-Prompts
- _DOC_KW: wohnung, immobilie, condo, kambodscha, takeo, phnom, haus, ...
- Bei Geo/Wohnung: RAG-Query mit Zusatz-Keywords
- Forced-RAG: Finanz-Fokus vs. allgemeine Unterlagen (Gedaechtnis nicht Prioritaet)
- rag.py: Tool-Prompt Wohnungen/Ausland explizit
2026-03-26 18:53:06 +01:00
Homelab Cursor
031b8d6c65 llm: RAG-Unterlagen — STIL-OVERRIDE und Struktur (Kurzfassung + je Dokument)
Globaler Prompt fordert sonst knappe Antworten; bei forciertem rag_search
jetzt explizit ausfuehrlicher. User-Zeile: strukturierte Kosten-Antwort statt
nur Quellen-Hinweis. Markdown ** um Dateiname entfernt (Telegram).
2026-03-26 18:39:14 +01:00
Homelab Cursor
93aabf3fc5 monitor: CT 115/Shop-VMIDs als erwartet gestoppt unabhängig vom Proxmox-Host-Key
Die API setzt _host je nach homelab.conf (z.B. pve-hetzner); (115,pve-ka-1)
griff dann nicht. Erwartete stopped-VMIDs jetzt host-unabhängig bei status stopped.
2026-03-26 18:31:23 +01:00
Homelab Cursor
40d6badfc7 fix(rag+llm): Kfz-Kosten mit Quelle; kein nackter EUR-Betrag
- Forciertes RAG: Prompt verbietet Ein-Zahl-Antwort; Dateiname Pflicht.
- User-Nachtrag [Quelle: ...] bei forced RAG.
- rag: kostet/wie viel in wide recall; Subqueries Ford Transit / Kfz jährlich.
2026-03-26 17:18:32 +01:00
Homelab Cursor
ae6a50d182 fix(rag+llm): 60 wide treffer, Pfad-Dedup, 100k tool payload
(Nachtrag: vorheriger Commit enthielt nur telegram_bot.)
2026-03-26 17:15:48 +01:00
Homelab Cursor
60d0ef671d fix(rag+tg): mehr Treffer, Pfad-Dedup, keine 4k-Abschneidung
- rag: wide bis 60 Treffer, ES 200, 22 Subqueries, Merge mit Dedup
  pro vollem docnm_kwd (Ordner+Datei getrennt).
- llm: forciertes RAG top_k 60, Tool bis 100k Zeichen.
- telegram: lange Antworten in mehrere Nachrichten (RAG-Listen sichtbar).
2026-03-26 17:15:25 +01:00
Homelab Cursor
dcf70b087b fix(rag): breite Mehrfachsuche + mehr Treffer fuer Uebersichten
- wide_recall: bis 16 ES-Runden mit Sparten-/Gesellschafts-Queries, Merge
  nach Dedup-Key, bis 25 distinct Treffer, groessere Snippets.
- Normale Suche: top_k bis 15, ES bis 150.
- Forciertes RAG: top_k 25, Tool-Payload 32k Zeichen.
- Hinweis: 100% Vollstaendigkeit haengt von Index/OCR ab.
2026-03-26 17:12:13 +01:00
Homelab Cursor
a9d1069728 fix(bot): import rag_mode before build_reply_keyboard 2026-03-26 17:05:36 +01:00
Homelab Cursor
44d80d2a9e feat(bot): Schalter Betriebsart Unterlagen (RAG zuerst)
- Neue Tastaturzeile: Unterlagen AUS/AN zeigt Modus und schaltet um.
- document_mode in ask_with_tools: erzwingt lokales Modell und RAG-Pflicht
  wie bei Doc-Keywords (Session wird bei Suche wie bisher bereinigt).
- Optional: doku:/rag: Prefix fuer einmalige Suche ohne Modus.
- Sprache und Hilfetext ergaenzt.
2026-03-26 17:05:06 +01:00
Homelab Cursor
d771a330c7 fix(routing): yearly costs to local RAG, not Sonar
- Remove standalone "kosten" from WEB_TRIGGERS (matched "jährlichen kosten" and sent Perplexity without tools).
- Add LOCAL_OVERRIDES for jahreskosten/jaehrlich/beitragsrechnung phrases.
- Extend forced-RAG keywords and enrich ES query with Beitrag/Beitragsrechnung for cost questions.
- System hint: extract amounts and periods per hit when possible.
2026-03-26 17:01:43 +01:00