Automatisches Einlesen, Umschreiben & Vorbereiten von RSS-Artikeln zur Veröffentlichung
Find a file
OliverGiertz f710141828 fix(scheduler): prevent duplicate slot assignment from concurrent pipeline runs
Two bugs caused multiple articles to land on the same publish slot:

1. main.py: asyncio.create_task() returned immediately, allowing a second
   pipeline trigger (N8N + Telegram /run or two N8N calls) to start a
   second concurrent run. Added asyncio.Lock (_pipeline_lock) so any
   second trigger while the pipeline is running is rejected immediately.

2. scheduler.py: reserve_publish_slot() read the list of occupied slots
   and wrote the new slot in two separate DB connections. Concurrent threads
   could both see the same "free" slot before either committed its write.
   Fixed by wrapping the entire read-find-write cycle in a threading.Lock
   (_slot_lock) and a single DB connection, so the slot check and the
   slot assignment are atomic.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 05:03:13 +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 fix(scheduler): prevent duplicate slot assignment from concurrent pipeline runs 2026-05-08 05:03:13 +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 chore: gitignore CLAUDE.md instead of CLAUDE_CONTEXT.md 2026-04-20 06:24:34 +00: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.