Automatisches Einlesen, Umschreiben & Vorbereiten von RSS-Artikeln zur Veröffentlichung
Find a file
OliverGiertz 8676ace102 feat(pipeline): article age filter, image URL validation, schedule UI, retry button
1. Article age filter (ingestion.py + config.py):
   - New setting pipeline_max_article_age_days=7 (0 = no limit)
   - Skip RSS entries older than N days before expensive extract_article()
   - Prevents old articles from Google Alerts re-entering pipeline

2. Image URL pre-validation (ingestion.py):
   - HEAD request probe for each primary image candidate during ingestion
   - Falls back to next-best candidate if primary returns 4xx
   - Network errors treated as OK to avoid false negatives on flaky servers

3. Stale WP draft cleanup (pipeline.py):
   - Quality gate rejections now delete any pre-existing WP draft (wp_post_id)
   - Prevents orphaned drafts when re-running articles that previously had drafts

4. Schedule overview UI (scheduler.py + admin_ui.py + admin_schedule.html):
   - New /admin/schedule page showing calendar grid of all booked slots
   - Distinguishes Pipeline-DB slots from WordPress-only slots
   - Link added to dashboard navigation

5. Retry for failed articles (admin_ui.py + admin_dashboard.html):
   - New POST /admin/articles/{id}/retry endpoint: resets to 'new', releases slot
   - '🔄 Wiederholen' button shown in dashboard for all 'close' (error) articles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 08:44:28 +00:00
.dedupe Image Dublettenprüfung 2025-08-18 07:36:48 +02:00
.github fix(deploy): correct service name and app path for Hetzner 2026-03-21 09:43:55 +00:00
backend feat(pipeline): article age filter, image URL validation, schedule UI, retry button 2026-04-10 08:44:28 +00:00
data Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
docs fix(rewrite): make image upload non-fatal and add rewrite tracing logs 2026-03-26 07:45:55 +00:00
internal Grundfunktionen optimiert 2025-08-16 11:13:10 +02:00
logs Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
pages Bump version to v1.6.3 2025-08-18 10:33:27 +02:00
scripts feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
static Bump version to v1.6.3 2025-08-18 10:33:27 +02:00
tools Image Dublettenprüfung 2025-08-18 07:37:32 +02:00
utils Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
.env.example Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
.gitignore Update .gitignore 2025-08-17 18:01:33 +02:00
__version__.py Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
AGENTS.md Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
app.py Bump version to v1.7.1 2025-08-28 11:18:30 +02:00
CHANGELOG.md feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
LICENCE Release 1.1.0 2025-07-04 09:48:03 +02:00
main.py Wordpress API Anbindung imprementiert 2025-08-16 13:01:10 +02:00
pytest.ini feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
README.md feat: rebuild rss-news backend, admin ui, and legal extraction pipeline 2026-02-18 09:52:36 +01:00
requirements.txt Update requirements.txt 2025-08-17 17:58:18 +02:00
test_checklist.md 🔖 Release v1.5.0 2025-07-08 10:48:12 +02:00
versioning.py Bump version to v1.6.2 2025-08-16 13:39:10 +02:00

rss-news (Rebuild)

rss-news wird als bestehendes Repository weitergefuehrt und schrittweise zu einer robusten, rechtssicheren News-Pipeline neu aufgebaut.

Aktueller Stand:

  • Alte Streamlit-App wird nicht produktiv genutzt.
  • news.vanityontour.de wird bis zum Go-Live der neuen App auf https://vanityontour.de umgeleitet.
  • Planung, Doku und Wiki werden als Grundlage fuer den Neuaufbau gepflegt.

Ziele

  • RSS-gestuetzte Artikelverarbeitung mit klaren Quellregeln
  • Rechtssichere Nutzung (Quellen, Attribution, Lizenzinformationen)
  • Zuverlaessige Automatisierung auf Hetzner
  • Publikation nach WordPress (IONOS aktuell, spaeter offen)
  • Zugriff nur nach Login (zunaechst User/Password)

Architektur-Richtung (MVP)

  • Backend: Python + FastAPI
  • Jobs: Queue-Worker (z. B. Redis + RQ/Celery)
  • Daten: SQLite fuer MVP, spaeter optional PostgreSQL
  • Auth: Session-Login mit einem Admin-User
  • Publishing: WordPress REST API (Status zunaechst pending)

Details: docs/PROJECT_PLAN.md

Projektsteuerung

  • GitHub Project: https://github.com/users/OliverGiertz/projects/3/views/1
  • Dieses Board ist die zentrale Steuerung fuer ToDos, Bugs, Verbesserungen.
  • Wiki-Struktur liegt unter docs/wiki/.

Dokumentation

  • Projektplan: docs/PROJECT_PLAN.md
  • ToDo-Liste: docs/TODO.md
  • Quell- und Lizenzpolicy: docs/SOURCE_POLICY.md
  • Wiki Home: docs/wiki/Home.md

Lokale Entwicklung (Legacy-Code)

Der vorhandene Legacy-Stand kann weiterhin lokal gestartet werden:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py

Hinweis: Diese App ist funktional historisch und wird durch die neue Architektur ersetzt.

Deployment-Zielbild

  • Betrieb auf Hetzner
  • Reverse Proxy via CloudPanel/Nginx
  • Produktive Domain: news.vanityontour.de
  • Bis zur Fertigstellung: Redirect auf https://vanityontour.de

Sicherheit

  • Keine Secrets im Repository
  • .env lokal/auf Server, nie committen
  • Auth-Pflicht fuer die neue WebApp
  • spaeter optional: Passkeys/WebAuthn

Rechtlicher Hinweis

Dieses Projekt verarbeitet nur Quellen mit dokumentierter Nutzungsgrundlage. Vor produktiver Nutzung ist eine finale rechtliche Pruefung der ausgewaehlten Feeds notwendig.