feat: rebuild rss-news backend, admin ui, and legal extraction pipeline

This commit is contained in:
Oliver 2026-02-18 09:46:44 +01:00
parent d65c55d315
commit 2c331d683b
No known key found for this signature in database
43 changed files with 3463 additions and 73 deletions

29
docs/wiki/Architektur.md Normal file
View file

@ -0,0 +1,29 @@
# Architektur
## Zielarchitektur
- API: FastAPI
- Worker: Queue-basierte Hintergrundjobs
- DB: SQLite (MVP), spaeter optional PostgreSQL
- Publisher: WordPress REST API
- Frontend/Admin: schlanke Web-UI mit Login
## Pipeline
1. Feed Fetch
2. Parse + Normalize
3. Deduplicate
4. Enrichment (Rewrite/Tags)
5. Legal/Policy Check
6. Publish (pending)
## Datenobjekte (MVP)
- `sources`
- `feeds`
- `articles`
- `article_versions`
- `runs`
- `policy_checks`
## Nichtziele (MVP)
- Multi-User und Rollen
- Vollautomatische Freigabe ohne Review
- Komplexe externe SSO-Integration

20
docs/wiki/Deployment.md Normal file
View file

@ -0,0 +1,20 @@
# Deployment (Hetzner + CloudPanel)
## Umgebung
- Host: Hetzner
- Reverse Proxy: Nginx via CloudPanel
- Ziel-Domain: `news.vanityontour.de`
## Aktueller Zustand
- Domain ist bis zum Go-Live auf `https://vanityontour.de` umgeleitet.
## Zielzustand
- `news.vanityontour.de` zeigt auf neue App (interner Port, z. B. `127.0.0.1:8501`)
- API/Worker laufen als systemd-Services
- TLS bleibt ueber CloudPanel/Nginx
## Mindest-Checks nach Deployment
- `curl -I https://news.vanityontour.de`
- Login erreichbar
- Feed-Import laeuft
- WordPress-Testpublikation (pending) erfolgreich

19
docs/wiki/Home.md Normal file
View file

@ -0,0 +1,19 @@
# Wiki Home
## Zweck
Dieses Wiki dokumentiert Architektur, Betrieb, Sicherheit, Recht und Roadmap des Neuaufbaus von `rss-news`.
## Inhalte
- `Architektur.md`
- `Deployment.md`
- `Security-Auth.md`
- `Recht-Quellen.md`
- `Operations-Runbook.md`
- `Roadmap.md`
- `Project-Board.md`
## Projektsteuerung
- GitHub Project #3: https://github.com/users/OliverGiertz/projects/3/views/1
## Prinzip
Dokumentation wird bei jeder relevanten Aenderung im selben Pull Request aktualisiert.

View file

@ -0,0 +1,23 @@
# Operations Runbook
## Daily Checks
- App erreichbar
- Queue/Worker aktiv
- Letzte Feed-Laeufe erfolgreich
- Keine auffaelligen Fehler im Log
## Incident: Feed-Import faellt aus
1. RSS-Quelle erreichbar?
2. Parser-Fehler im Log?
3. Rate Limits oder Blockaden?
4. Retry-Queue pruefen
## Incident: WordPress Publish faellt aus
1. WP API erreichbar?
2. Credentials gueltig?
3. Payload-Validation/Tag-Fehler?
4. Artikel in `pending` statt `failed` markieren, wenn unklar
## Backups
- SQLite-Dump taeglich
- Konfiguration und `.env` sicher sichern

View file

@ -0,0 +1,28 @@
# Project Board Workflow
## Zentrale Steuerung
- Board: https://github.com/users/OliverGiertz/projects/3/views/1
- Board ist die einzige Quelle fuer Planungsstatus.
## Arbeitsmodus (1 Entwickler)
- Neue Arbeit immer als Issue anlegen
- Issue direkt ins Project aufnehmen
- Status nur im Project pflegen
- PR/Commit auf Issue referenzieren
## Empfohlene Status-Disziplin
- `Todo`: noch nicht begonnen
- `In Progress`: aktiv in Arbeit
- `Done`: umgesetzt und dokumentiert
## Konventionen fuer Issues
- Prefix fuer Klarheit:
- `[MVP]`
- `[Infra]`
- `[Legal]`
- `[Bug]`
- Definition of Done in jedem Issue notieren
## Aktueller Backlog-Hinweis
- Thema Userverwaltung ist fuer MVP obsolet (ein Admin-User).
- Entsprechende Issues als `deferred` oder `closed` kennzeichnen.

View file

@ -0,0 +1,35 @@
# Recht und Quellen
## Grundregeln
- Nur freigegebene Quellen aus Source-Register
- Pflicht-Attribution pro Artikel
- Rechte fuer Bilder separat pruefen
- Kein Autopublish bei unklarer Lizenz
## Bewertungsmodell
- Gruen: Freie Nachnutzung klar erlaubt
- Gelb: Nutzung mit Einschraenkungen/Einzelfallpruefung
- Rot: Ohne Zusatzlizenz nicht geeignet
## Aktuelle Referenzen
- Reuters/Thomson Reuters Terms: https://www.thomsonreuters.com/en/terms-of-use
- Presseportal Nutzungsbedingungen: https://www.presseportal.de/nutzungsbedingungen
- tagesschau RSS-Hinweise: https://www.tagesschau.de/infoservices/rssfeeds
- Datenlizenz Deutschland BY 2.0: https://www.govdata.de/dl-de/by-2-0
- GovData Lizenzen: https://data.gov.de/informationen/lizenzen
- EU Legal Notice (CC BY 4.0): https://commission.europa.eu/legal-notice_en
## Review-Checkliste je Quelle
1. Sind Bearbeitung und Veroeffentlichung erlaubt?
2. Ist kommerzielle Nutzung erlaubt?
3. Gibt es gesonderte Bildrechte?
4. Ist die Quellenangabe vorgeschrieben?
5. Gibt es Archivierungs- oder Weitergabebeschraenkungen?
## Operativer Schutz
- Source-Register als Pflicht vor Feed-Aktivierung
- Auto-Block bei fehlenden Lizenzdaten
- Quartalsweiser Terms-Recheck
## Hinweis
Keine Rechtsberatung. Finale Freigabe kritischer Quellen bei Bedarf juristisch validieren.

19
docs/wiki/Roadmap.md Normal file
View file

@ -0,0 +1,19 @@
# Roadmap
## Jetzt
- Doku und Projektstruktur bereinigen
- Redirect aktiv
- Backlog auf Neustart ausrichten
## Naechster Schritt
- FastAPI-MVP implementieren
- Login + Feed-Ingestion + Review + WordPress pending
## Danach
- Worker/Queue
- Source-Policy Enforcement
- Monitoring/Reporting
- Optional Passkey
## Steuerung
Alle Arbeitsitems liegen im GitHub Project #3.

View file

@ -0,0 +1,16 @@
# Security und Auth
## Mindestanforderungen
- Zugriff auf die WebApp nur mit Login
- Ein aktiver Admin-User (kein Rollenmodell im MVP)
- Passwort nicht im Repo, nur als Secret auf Server
## Empfohlene Umsetzung
- Session-basierte Auth (HTTP-only Cookies)
- Passwort gehasht (Argon2 oder bcrypt)
- Rate Limiting auf Login-Endpunkt
- CSRF-Schutz fuer Form-Aktionen
## Spaeter (optional)
- Passkey/WebAuthn als zusaetzlicher Login-Faktor
- IP-Allowlist fuer Admin-Zugang