homelab-brain/fuenfvoracht/STATE.md
root 82eaa1e4bc feat(redax-wp): Multi-Publish, Dashboard-Verbesserungen, ESP32-Serie Teil 2
Redax-WP (Redakteur):
- WordPressMirrorClient: Multi-Publish an mehrere WP-Instanzen
- Target-Toggles im Dashboard (Checkbox, server-side rendering)
- WP-Admin Direktzugang via socat-Proxy (bypass Cloudflare WAF)
- Drag & Drop im Redaktionsplan
- Artikel-Karten mit Titel + SEO-Snippet sichtbar
- Entwürfe ohne Datum in separater Sektion
- DB-Cleanup-Job (Sonntag 03:00 Uhr)
- openrouter.py: sync generate() Wrapper
- mirror_posts Tabelle in DB

ESP32-Serie (Arakava News):
- Teil 1 veröffentlicht (Post 1209)
- Teil 2 als WP-Entwurf erstellt (Post 1340)
- Animiertes Hydraulikschema (SVG, 4 Betriebsmodi) in Teil 2 eingebaut
- Hardware liegt in DE, Einbau ab April nach Kambodscha-Rückkehr

Doku:
- STATE.md Redax-WP vollständig aktualisiert
- STATE.md Arakava-News: Serie-Status + Hardware-Timeline

Made-with: Cursor
2026-02-28 19:25:43 +07:00

7.2 KiB
Raw Blame History

STATE: FünfVorAcht

Stand: 27.02.2026


Projektübersicht

Zweck: KI-gestützter Telegram-Kanal-Poster für die tägliche Reihe "Fünf vor Acht" Posting-Zeit: 19:55 Uhr (Europe/Berlin) — pro Artikel individuell konfigurierbar Kanal: Privater Kanal (-1001285446620) Status: Abgeschlossen — 28.02.2026


Aktiver Zustand

Container-Landschaft

CT Dienst Status Tailscale
112 FünfVorAcht (Bot + Dashboard) Läuft 100.73.171.62

Architektur

Stack (CT 112 auf pve-hetzner)

  • Sprache: Python 3.11
  • Bot-Framework: python-telegram-bot
  • KI: OpenRouter API (GPT-4o-mini, konfigurierbar)
  • Scheduler: APScheduler (jede Minute für Posting, alle 5 Min für Notify-Check)
  • DB: SQLite mit WAL-Modus
  • Dashboard: Flask + Tailwind CSS (self-hosted, kein CDN)
  • Deployment: Docker Compose (2 Container: bot + web)
  • Logging: JSON-Lines nach /logs/fuenfvoracht.log

Workflow

Redakteur gibt Quelle/Thema ein
        ↓
KI generiert Artikel (OpenRouter)
        ↓
Redigieren im Dashboard + Telegram-Vorschau
        ↓
Einplanen: Datum + 15-Min-Zeitslot
        ↓
Status → approved (direkt, kein Review nötig)
Info-Nachricht an Redakteure: "Artikel eingeplant für XX:XX"
        ↓
APScheduler postet automatisch zum Zeitslot
        ↓
Bestätigung + Markenzeichen automatisch angehängt

Pfade & Konfiguration

Was Pfad
App-Verzeichnis /opt/fuenfvoracht/
Docker Compose /opt/fuenfvoracht/docker-compose.yml
Datenbank /opt/fuenfvoracht/data/fuenfvoracht.db
Logs (JSON) /opt/fuenfvoracht/logs/fuenfvoracht.log
Prompts In SQLite DB (Tabelle: prompts)
Tailwind CSS Im Docker-Image gebaut (/app/static/tailwind.min.css)

Datenbank-Schema

Tabellen

Tabelle Zweck
articles Artikel-Queue mit date + post_time als Unique-Key
article_versions Alle Versionen bei Neu-Generierung
post_history Posting-Log mit Channel-Message-IDs
prompts KI-Prompt-Bibliothek (editierbar)
sources_favorites Gespeicherte Quellen-Favoriten
tags Themen-Kategorien
article_tags Artikel ↔ Tags (n:m)
channels Kanal-Konfiguration (Zeit, Timezone)
locations Aufenthaltsorte mit Reminder-Zeiten
settings Schlüssel-Wert-Paare (z.B. user_location_id)
reviewers Redakteure (chat_id, name, active)

Article-Status-Lifecycle

draft → approved → posted
      ↘ skipped

Hinweis: Review-Schritt (sent_to_bot → approve/reject) wurde am 27.02.2026 entfernt. Einplanen setzt direkt auf approved, Info-Nachricht statt Review-Buttons.

Zeitslot-System

  • UNIQUE(date, post_time) — Konflikte technisch ausgeschlossen
  • post_time im 15-Minuten-Raster (06:00, 06:15, … 23:45)
  • notify_at — UTC-Timestamp wann der Review-Bot benachrichtigt
  • scheduled_at — wann der Artikel eingeplant wurde

Telegram-Setup

Was Wert
Review-Bot Token 8799990587:AAEoQuohGdoJ2WudoOHs_j5Ns3iwft6OlFc
Review-Bot Name @Diendemleben_bot
Kanal-ID -1001285446620
Redakteur 1 Chat-ID 674951792
Redakteur 2 Chat-ID 1329146910

Dashboard-Features

  • Studio: Artikel generieren, redigieren, Telegram-Vorschau in Echtzeit
  • Einplan-Panel: Datum + 15-Min-Zeitslot + Bot-Benachrichtigungszeit
  • Redaktionsplan: Nächste 7 Tage, mehrere Slots pro Tag, Umplanen + Löschen direkt im Board
  • Monatskalender: Status-Dots pro Tag
  • Prompt-Editor: Bearbeiten + Test mit Telegram-Preview
  • History: Alle Posts der letzten 30 Tage
  • Quellen-Favoriten: Häufig genutzte Quellen
  • Redakteure-Verwaltung: Hinzufügen/Entfernen per Chat-ID
  • Aufenthaltsort-Schalter: Reminder-Zeiten automatisch auf MEZ umgerechnet
  • Anleitung (/hilfe): 6 Aufgabenbereiche mit Klickpfaden

Bot-Features

Feature Details
/start Übersicht & Befehle (alle Redakteure)
/heute Alle Slots des heutigen Tages
/queue Nächste 3 Tage mit Slots
/skip Hauptslot heute überspringen
Inline-Review Legacy (noch im Code, nicht mehr aktiv genutzt)
Morgen-Briefing 10:00 MEZ: Tagesplan + Ausblick 3 Tage
Nachmittags-Reminder 18:00 MEZ: Warnung wenn kein Artikel eingeplant
Fehler-Alarm Sofort bei Posting-Fehler: Ursache + Dashboard-Link
Willkommensnachricht Automatisch bei neuem Redakteur

Markenzeichen (automatisch)

Wird unter jeden Beitrag angehängt (Duplikat-Schutz aktiv):

Wir schützen die Zukunft unserer Kinder und das Leben❤

Pax et Lux Terranaut01 https://t.me/DieneDemLeben

Unterstützt die Menschen, die für Uns einstehen❗

Logging

Strukturiertes JSON-Logging nach /logs/fuenfvoracht.log:

{"ts": "2026-02-26T14:46:19Z", "level": "INFO", "event": "article_posted", "date": "2026-02-26", "post_time": "19:55", ...}

Events: article_generated, article_saved, article_scheduled, article_sent_to_bot, article_approved, article_posted, article_skipped, posting_failed, reviewer_added, reviewer_removed, slot_conflict, bot_started, morning_briefing_sent


Routing

  • Dashboard: https://fuenfvoracht.orbitalo.net (Cloudflare Tunnel)
  • Lokal: http://100.73.171.62:8080
  • Login: Holgerhh / ddlhh
  • Kein öffentlicher Zugriff außer via Cloudflare Tunnel

Changelog

27.02.2026 — Review-Schritt entfernt

  • Einplanen setzt direkt auf approved — kein scheduledsent_to_bot → Review mehr
  • Info-Nachricht statt Review-Buttons: Redakteure bekommen nur Hinweis "Artikel eingeplant für XX:XX"
  • Save-Endpoint Bug gefixt: Artikel mit anderer post_time wurde nicht gefunden
  • Bot job_check_notify: Setzt direkt auf approved statt sent_to_bot
  • Nachmittags-Reminder: Nur noch wenn gar kein Artikel eingeplant
  • Dashboard: Button "Einplanen" statt "Einplanen & zum Bot senden", Notify-Dropdown entfernt
  • Docker-Images neu gebaut (Source ist ins Image gebaut, nicht gemountet)

26.02.2026 — Board-Interaktivität

  • Redaktionsplan komplett überarbeitet: Mehrere Artikel pro Tag sichtbar (vorher: einer pro Tag)
  • 🔄 Umplanen: Inline-Panel direkt unter dem Artikel — Datum + Uhrzeit mit Live-Slot-Prüfung, 15-Minuten-Raster
  • 🗑️ Löschen: Sicherheitsabfrage + sofortige Entfernung aus DB
  • ✏️ Bearbeiten: Klick auf Artikel-Text öffnet Artikel im Studio (war schon vorhanden)
  • Bei posted-Artikeln sind Aktions-Buttons ausgeblendet

24.26.02.2026 — Vollständiger Aufbau

  • Initiales System, Multi-Reviewer, Branding, Logging, Scheduling, Morgen-Briefing, Fehler-Alarm, Reviewer-Verwaltung, Anleitung, Tailwind self-hosted, Performance-Fix

Offene Punkte / Nice-to-have (nicht blockierend)

  • Redakteure-Verwaltung UI in settings.html (API vorhanden)
  • Kanal-ID in Settings-UI editierbar (API vorhanden)
  • Media-Einbettung im Editor (Video/Link Drag & Drop)
  • Letzter-Post Zeitstempel im Dashboard anzeigen

Abnahme

28.02.2026 — Projekt abgeschlossen.

  • Logs der letzten 48h: Keine Fehler
  • 2 erfolgreiche Posts (26.02. + 27.02.)
  • Bot, Web, Scheduler laufen stabil