diff --git a/backend/data/rss_news.db b/backend/data/rss_news.db index 1b1c390..7929307 100644 Binary files a/backend/data/rss_news.db and b/backend/data/rss_news.db differ diff --git a/docs/PROJECT_PLAN.md b/docs/PROJECT_PLAN.md index c758f5e..3c61216 100644 --- a/docs/PROJECT_PLAN.md +++ b/docs/PROJECT_PLAN.md @@ -13,7 +13,7 @@ Eine modulare News-Pipeline mit klaren Stufen: 2. Inhaltsanalyse und Normalisierung 3. Rewrite/Anreicherung 4. Legal- und Qualitaetschecks -5. WordPress-Publikation (`pending`) +5. WordPress-Publikation (Draft-first, Queue + Retry) 6. Monitoring/Logging ## Grobe Zeitplanung (ohne Fixtermine) @@ -36,12 +36,14 @@ Eine modulare News-Pipeline mit klaren Stufen: - Feed-Import mit Duplikaterkennung - Admin-Login (ein User) - Manuelle Review vor Publish +- Admin-UI fuer Rechtscheck, Bildauswahl, Relevanzbewertung ### Phase 2 - Automation - Job-Queue (asynchron) - Regelbasierte Scheduler - Retry/Dead-Letter-Handling - Robustes Error-Reporting +- WordPress-Publisher (Draft) mit Mapping `article_id -> wp_post_id` ### Phase 3 - Compliance und Skalierung - Source-Whitelisting mit Pflichtfeldern @@ -49,6 +51,28 @@ Eine modulare News-Pipeline mit klaren Stufen: - Qualitaetsmetriken und Audit-Logs - Optional: Passkey/WebAuthn +## Aktueller Stand (Snapshot) +- Backend/API + Admin-UI lauffaehig +- Feed-Ingestion inkl. Originalartikel-Extraktion (Autor, Pressekontakt, Bilder) +- Bildkuration: + - automatische Scoring-Reduktion (u. a. Presseportal `story_big` priorisiert) + - manuelle Auswahl/Ausblendung im UI +- Rechts-/Publish-Gates aktiv: + - `legal_checked` Pflicht + - Hauptbild-Auswahl Pflicht + - Status-Workflow bis `published` +- WordPress-Publishing: + - Queue + Retry + Job-Historie + - Draft-Erstellung/Update erfolgreich getestet +- Exporte: + - JSON/CSV inkl. Datum/Alter/Relevanz + Attribution/Legal-Felder + +## Naechste Iteration (konkret) +1. WordPress `featured_media` Upload aus ausgewaehltem Hauptbild +2. Publish-HTML je Artikel verfeinern (strukturierter Body + konsistenter Quellenblock) +3. Publisher als periodischen Worker (Timer/Cron/Systemd) auf Hetzner betreiben +4. Monitoring/Alerting fuer Queue-Fehler + WP-API Fehlercodes + ## Architekturprinzipien - Idempotente Jobs - Trennung von UI, API, Worker diff --git a/docs/TODO.md b/docs/TODO.md index ad9b549..fee4a67 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,10 +1,10 @@ # ToDo (Ein-Entwickler Setup) ## Jetzt -- [ ] GitHub Project #3 Felder/Views fuer Neustart vereinheitlichen -- [ ] Alte/obsolet gewordene Issues kennzeichnen (z. B. User-Verwaltung) -- [ ] Redirect `news.vanityontour.de -> vanityontour.de` aktiv halten -- [ ] Wiki-Basis fertigstellen und verlinken +- [ ] WordPress Beitragsbild-Upload implementieren (`featured_media` aus ausgewaehltem Hauptbild) +- [ ] WordPress-HTML-Ausgabe pro Artikel weiter verbessern (sauberes Layout, Quellenblock, Shortcodes falls noetig) +- [ ] Publisher Fehlertexte fuer WP-Auth/Media/API in UI klarer darstellen +- [ ] End-to-end Publish Smoke-Test dokumentieren (lokal + Hetzner) ## MVP - [x] Neues Backend-Skelett (`backend/`) aufsetzen (FastAPI) @@ -12,14 +12,18 @@ - [x] Feed-Ingestion Service bauen (ETag/Last-Modified) - [x] Duplikaterkennung ueber `source_url`, `guid`, Hash - [x] Login mit 1 Admin-Account implementieren -- [ ] Artikel-Review-Maske mit Statusworkflow -- [ ] WordPress-Publisher als separaten Service implementieren +- [x] Artikel-Review-Maske mit Statusworkflow +- [x] WordPress-Publisher als separaten Service implementieren (Queue + Retry + Mapping) +- [x] Bildvorschau + manuelle Bildauswahl im Admin-UI +- [x] Automatische Bildreduktion/Scoring fuer Presseportal-Quellen +- [x] Artikel-Datum + Relevanzscore im UI/Export ## Recht/Qualitaet -- [ ] Source-Policy in DB + Admin-UI abbilden -- [ ] Pflichtfelder je Quelle erzwingen (Autor, URL, Lizenz, Hinweise) -- [ ] Auto-Block bei fehlender Lizenzinfo -- [ ] Pro Artikel Attribution-Block generieren +- [x] Source-Policy in DB + Admin-UI abbilden +- [x] Pflichtfelder je Quelle erzwingen (Autor, URL, Lizenz, Hinweise) +- [x] Auto-Block bei fehlender Lizenzinfo +- [x] Pro Artikel Attribution-Block generieren +- [x] Manuelle Rechtsfreigabe als Publish-Gate ## Betrieb - [ ] Systemd-Service(s) fuer API/Worker erstellen @@ -31,3 +35,4 @@ - [ ] Passkey/WebAuthn evaluieren und optional einfuehren - [ ] Migration auf PostgreSQL bewerten - [ ] Teilautomatische Freigabe-Regeln definieren +- [ ] KI-Rewrite mit Prompt-Versionierung + Qualitaetsmetriken wieder aktivieren