rss-news/backend/.env.example
Oliver G a233012887
feat(pipeline): redaktionelle Freigabe vor der Veroeffentlichung
Die Pipeline liess GPT Artikel umschreiben und legte sie direkt als
geplanten WordPress-Beitrag an - ohne dass ein Mensch sie gesehen hat.
Der KI-Hinweis auf dem Blog sagt aber redaktionelle Pruefung zu, und
genau daran haengt die Ausnahme in Art. 50 Abs. 4 KI-VO.

Neuer Status `pending_review` zwischen Rewrite und Publish: Die Pipeline
endet beim Rewrite, ohne WordPress-Beitrag und ohne Publish-Slot. Erst
die Freigabe im Portal stempelt Pruefer und Systemzeit, reserviert den
Slot und legt den Beitrag an.

- Migration: editorial_review_at/_by/_note, Status-CHECK erweitert
- Spalten-Migration laeuft nach den Tabellen-Neubauten erneut, sonst
  verwirft der aeltere no_image-Rebuild die frisch angelegten Spalten
- Jeder Weg nach `approved` stempelt (Button, Statuswechsel, API)
- Jeder maschinelle Rewrite loescht einen alten Stempel
- Telegram: Info mit Portal-Link statt Draft-Meldung, kein Freigabe-Button
- Altbestand bleibt unberuehrt und veroeffentlicht weiter
- EDITORIAL_REVIEW_REQUIRED=false stellt den alten Ablauf wieder her
- 14 neue Tests, docs/KI-VO.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 10:35:49 +02:00

59 lines
3.3 KiB
Text

# ─── App ────────────────────────────────────────────────────────────────────
APP_ENV=development
APP_NAME=rss-news-backend
APP_SECRET_KEY=replace-with-a-long-random-secret
APP_DB_PATH=backend/data/rss_news.db
APP_ADMIN_USERNAME=admin
APP_ADMIN_PASSWORD=change-me
SESSION_COOKIE_NAME=rss_news_session
SESSION_MAX_AGE_SECONDS=28800
# ─── WordPress ──────────────────────────────────────────────────────────────
WP_BASE_URL=https://your-site.tld
WP_USERNAME=your-wp-username
WP_PASSWORD=your-wp-app-password
# Status für neue Beiträge: draft | future | publish
WORDPRESS_DEFAULT_STATUS=draft
# ─── OpenAI ─────────────────────────────────────────────────────────────────
OPENAI_API_KEY=sk-...
# gpt-4o-mini empfohlen (Kosten/Qualität)
OPENAI_MODEL=gpt-4o-mini
# ─── Telegram Bot ────────────────────────────────────────────────────────────
# Bot-Token von @BotFather
TELEGRAM_BOT_TOKEN=123456789:ABC...
# Chat-ID deines persönlichen Chats oder einer Gruppe
TELEGRAM_CHAT_ID=123456789
# Zufälliger Secret-Token zur Webhook-Absicherung (mindestens 20 Zeichen)
TELEGRAM_WEBHOOK_SECRET=replace-with-random-secret-min-20-chars
# ─── N8N API-Key ─────────────────────────────────────────────────────────────
# Wird von N8N im Header X-API-Key mitgeschickt
N8N_API_KEY=replace-with-strong-random-key
# ─── Pipeline-Einstellungen ──────────────────────────────────────────────────
# Relevanz-Score >= dieser Wert: automatisch verarbeiten (0-100)
PIPELINE_RELEVANCE_AUTO=80
# Relevanz-Score >= dieser Wert, aber < AUTO: Telegram-Warnung senden
PIPELINE_RELEVANCE_WARN=60
# Maximale Veröffentlichungen pro Tag innerhalb des Fensters unten
PIPELINE_MAX_DRAFTS_PER_DAY=4
# Bevorzugte Veröffentlichungszeiten (Stunden, kommagetrennt, Europe/Berlin)
PIPELINE_PUBLISH_HOURS=9,12,15,18
# Frühester/spätester Slot sowie Mindestabstand für zusätzliche Slots
PIPELINE_PUBLISH_START_HOUR=9
PIPELINE_PUBLISH_END_HOUR=19
PIPELINE_PUBLISH_MIN_GAP_HOURS=3
# ─── Redaktionelle Freigabe (Art. 50 Abs. 4 KI-VO) ───────────────────────────
# true: Die Pipeline stoppt nach dem Rewrite. Der Artikel wartet im Portal auf
# die Freigabe durch einen Menschen; erst danach entstehen WordPress-
# Beitrag und Veröffentlichungs-Slot.
# false: alter, vollautomatischer Ablauf (dann trägt der KI-Hinweis auf dem Blog
# die Aussage "redaktionell geprüft" zu Unrecht).
EDITORIAL_REVIEW_REQUIRED=true
# Basis-URL des Portals für die Deep-Links in den Telegram-Meldungen
PORTAL_BASE_URL=https://news.vanityontour.de