165 lines
8.8 KiB
Markdown
165 lines
8.8 KiB
Markdown
# Projektstatus
|
|
|
|
## Aktueller Umfang
|
|
|
|
Etappe 1 bis Etappe 5 sind abgeschlossen. Architektur, Gesamtdatenmodell,
|
|
Anmeldung, Rollen, persistente Inhaltsbearbeitung, Sendungsplanung,
|
|
Live-Steuerung, Präsentationsausgabe und lokaler Betriebsweg sind dokumentiert.
|
|
Etappe 6 wurde nicht begonnen.
|
|
|
|
## Umgesetzter Stand Etappe 1
|
|
|
|
- SvelteKit-/TypeScript-Monolith mit Node-Adapter
|
|
- konfigurierbare lokale SQLite- und Uploadpfade
|
|
- wiederholbare Migrationen und realistischer Seed
|
|
- persistentes Light-/Dark-/System-Theme
|
|
- responsive Navigation und gekennzeichnete Vorschauen für Fundus,
|
|
Sendungsbau und Live-Modus
|
|
- kompakte Desktop-Arbeitsansicht mit fester Seitenleiste, Fundusliste und
|
|
zweigeteiltem Sendungsbau; auf schmalen Ansichten Umschaltung statt Engpass
|
|
- Healthcheck, Produktionsstart und frühes Cloudron-Paket
|
|
- getrennte Unit-/Integrations- und Browser-Testdaten
|
|
|
|
Die Vorschauen lesen echte Daten aus SQLite. Suche und mobile Pane-Umschaltung
|
|
funktionieren lokal; redaktionelle Schreiboperationen bleiben bewusst den
|
|
späteren Etappen vorbehalten.
|
|
|
|
Die abschließende Oberflächenüberarbeitung von Etappe 1 reduziert große
|
|
Seitenköpfe und verschachtelte Karten, bündelt den Schreibschutzhinweis
|
|
aufklappbar und hält Entwicklungsinformationen aus der Arbeitsoberfläche heraus.
|
|
Eingang und Archiv zeigen kurze Leerzustände, die Verwaltung trennt
|
|
Abschnittskategorien, Formate und Themen kompakt.
|
|
|
|
Die abschließende responsive Prüfung verdichtet Seitenleiste, Navigation und
|
|
Funduszeilen weiter. Mobile Funduskarten sind intern einspaltig; lange Titel,
|
|
Beschreibungen und Metadaten bleiben ohne feste Kartenhöhe sichtbar. Suche und
|
|
Statusfilter sind gleich hoch, und die Filtergruppe wird nur als Ganzes
|
|
umgebrochen.
|
|
|
|
## Noch nicht umgesetzt
|
|
|
|
Archivabschluss, Freigaben, RSS und API. Diese späteren Bereiche dürfen nicht
|
|
als bereits implementiert verstanden werden.
|
|
|
|
## Umgesetzter Stand Etappe 2
|
|
|
|
- einmalige Erstadmin-Einrichtung mit externem Betreiber-Token
|
|
- Login und POST-Logout mit widerrufbaren Datenbanksitzungen
|
|
- Rollen Barkeeper und Thekencrew mit serverseitiger Prüfung
|
|
- Einladungen und Passwortreset über befristete, einmalige Links
|
|
- Kontensperrung mit sofortigem Entzug bestehender Sitzungen
|
|
- zeitfensterbasiertes Login-Rate-Limit ohne dauerhafte Kontensperre
|
|
- lokale Mail-Outbox als Vorgabe und explizit konfigurierbarer SMTP-Versand
|
|
- responsive Authentifizierungs- und Kontenverwaltungsoberflächen
|
|
|
|
## Umgesetzter Stand Etappe 3
|
|
|
|
- persistente Piece-Neuanlage aus leerem Entwurf oder drei redaktionellen Vorlagen
|
|
- Schnellaufnahme von Gedanken und HTTP-/HTTPS-Links im Eingang
|
|
- vollständiger Editor für Quellen, Dauer in Minuten, Status und getrennte
|
|
Einleitung, Recherche, Moderation, Überleitung und Präsentation
|
|
- serverseitig bereinigte Markdown-Vorschau
|
|
- unabhängige Themen, Formate und Abschnittskategorien mit Barkeeper-Verwaltung
|
|
- serverseitige Suche und Filter nach Status, Format, Thema und Abschnitt
|
|
- Autospeichern mit sichtbarem Zustand und Warten vor interner Navigation
|
|
- optimistische Revisionen verhindern unbemerktes Überschreiben
|
|
- Duplizieren einschließlich Quellen, Taxonomie und Bildern
|
|
- Archivieren und Wiederherstellen in den vorherigen Arbeitsstatus
|
|
- private Rasterbilder mit Größen-/Signaturprüfung und geschützter Auslieferung
|
|
- erweiterter Seed mit Eingangs-, Archiv-, Markdown- und Recherchebeispielen
|
|
- standardmäßig ausgeblendete gesendete Pieces mit verlinkter, aufklappbarer
|
|
Verwendungshistorie; gesendet bedeutet erledigt in abgeschlossener Sendung
|
|
- standardmäßig ausgeblendete Pieces, die in mindestens einer noch nicht
|
|
abgeschlossenen Sendung eingeplant sind, mit unabhängigem Sofortfilter
|
|
- der eigenständige Piece-Editor ist als redaktionelles Arbeitsblatt aufgebaut:
|
|
Titel, Fundstück, private Recherche und die getrennt gespeicherten
|
|
Sendungstexte stehen im Schreibfluss; Quellen, Einordnung, Präsentation und
|
|
Bilder begleiten ihn als Desktop-Kontextleiste oder mobile Werkzeuge
|
|
- Markdown-Felder wechseln einzeln zwischen Lesen und Bearbeiten, sodass mehrere
|
|
Textbereiche gleichzeitig offen bleiben; Autosave, Konfliktschutz und
|
|
sichtbare Speicherfehler verwenden unverändert die Piece-Revision
|
|
- die Schnellaufnahme „Aufnehmen und öffnen“ leitet nach erfolgreicher Anlage
|
|
direkt zum neuen Piece weiter, statt den SvelteKit-Redirect als
|
|
Validierungsfehler abzufangen
|
|
|
|
## Umgesetzter Stand Etappe 4
|
|
|
|
- Sendungsübersicht mit leerem Start, Standardablauf und Spieleabend-Vorlage
|
|
- frei benennbare, kategorisierte und sortierbare Abschnitte einschließlich
|
|
eigenständiger Spieleblöcke
|
|
- Einplanung ausschließlich sendefertiger Pieces als unabhängige Text- und
|
|
Dauerkopien; Mehrfachverwendung desselben Originals ist möglich
|
|
- showweite Reservebank, die nicht in Abschnitts- oder Gesamtdauer einfließt
|
|
- explizite Abschnittsdauer ersetzt die Piece-Summe statt sie zu addieren
|
|
- Bearbeiten, Entfernen sowie Verschieben innerhalb und zwischen Abschnitten
|
|
- zugänglicher Stift-Dialog für alle sendungsspezifischen Felder und Aktionen,
|
|
auf Desktop zweispaltig und auf kleinen Bildschirmen einspaltig scrollbar
|
|
- explizites Aktualisieren eines Verwendungssnapshots aus dem Original für
|
|
Titel, Dauer und Redaktionstexte bei erhaltenen Notizen und Live-Daten
|
|
- Duplizieren einer konkreten Einplanung direkt hinter dem Ausgangselement mit
|
|
erhaltenen Anpassungen, aber zurückgesetztem Live-Zustand
|
|
- Piece-Dauern werden im Editor in Minuten eingegeben und intern weiterhin als
|
|
ganze Sekunden gespeichert
|
|
- Drag-and-drop über eindeutige Griffe, auch direkt aus gefilterten Quellen,
|
|
mit positionsgenauer Einfügevorschau, transparentem Original und
|
|
gleichwertigen Klick-, Touch- und Tastaturaktionen
|
|
- Planungsmutationen ohne Dokumentreload mit lokalem Speicherzustand und
|
|
animierter Neusortierung der betroffenen Elemente
|
|
- unabhängige Sofortfilter für verwendete sowie in der aktuellen Sendung schon
|
|
eingeplante Originale einschließlich Reservebank
|
|
- kopierbare Twitch-Titel und Ankündigungstexte
|
|
- showweite optimistische Revision schützt Metadaten, Reihenfolge und Inhalte
|
|
vor unbemerktem parallelem Überschreiben
|
|
- realistischer Seed mit Standardablauf und eigenständigem Spieleabend
|
|
|
|
## Umgesetzter Stand Etappe 5
|
|
|
|
- fokussierte Moderationsansicht mit Prompter-Schrift, Einleitung, Moderation,
|
|
Überleitung und standardmäßig geschlossener privater Recherche
|
|
- ausblendbare Zeit- und Ablaufanzeige sowie persistente lokale Leseposition
|
|
- aktuelles und nächstes Piece samt Abschnitt und geplantem Zeitbedarf
|
|
- persistenter Live-Stand mit tatsächlichen Laufintervallen, Erledigen,
|
|
Überspringen, Zurück und Wiederaufnahme
|
|
- idempotente Live-Befehle verhindern doppelte Wirkung bei Wiederholung
|
|
- serverseitig geschützte Umsortierung offener Pieces und Reserveeinfügung
|
|
- explizite Präsentationsaktion; normale Live-Navigation verändert die Ausgabe
|
|
nicht
|
|
- getrennte, tokenisierte heinzlive-Ausgabe mit Polling, Verbindungsanzeige,
|
|
Präsentationstext, Quellen und erlaubten Bildern
|
|
- wählbare Text-, Linkkarten- und Videodarstellung aus genau einer vorhandenen
|
|
Piece-Quelle mit manuell korrigierbaren, persistenten Metadaten
|
|
- ausdrückliches serverseitiges Neuladen von Linkmetadaten über Metascraper mit
|
|
DNS-, Redirect-, Zeit-, Größen- und Privatnetzschutz
|
|
- validierte YouTube- und TikTok-IDs, offizielle Player-Iframes ohne Autoplay
|
|
sowie Linkkarten-Fallback für nicht unterstützte Videoquellen
|
|
- unveränderliche Präsentationssnapshots je Einplanung und explizite
|
|
Aktualisierung aus dem Fundus
|
|
- isolierte Präsentationstestansicht ohne Änderung des Live-Stands sowie
|
|
tokengebundene, serverseitig geschützte Proxys für externe Vorschaubilder
|
|
- Ausgabe-HTML, JSON und Medienzugriff enthalten keine Recherche,
|
|
Moderationsnotizen, eigenen Notizen, Kontodaten oder internen Dateipfade
|
|
|
|
## Bekannte offene Betriebsprüfung
|
|
|
|
Eine echte Cloudron-Installation samt Backup/Restore, Reverse-Proxy-Verhalten
|
|
und read-only Laufzeit konnte ohne bereitgestellten Cloudron-Server nicht
|
|
durchgeführt werden. Auch der lokale Container-Smoke-Test blieb offen, weil
|
|
auf der Prüfmaschine kein Docker-Daemon lief. Manifestkernfelder und
|
|
Startskript-Syntax wurden lokal geprüft.
|
|
|
|
Eine reale OBS-Browserquelle stand nicht zur Verfügung. Die tokenisierte
|
|
Präsentationsausgabe wurde stattdessen in einem anonymen zweiten Chromium-
|
|
Browserkontext einschließlich Bild, JSON-Filterung, Polling und sichtbarem
|
|
Verbindungsabbruch geprüft.
|
|
|
|
Die automatisierten Playerprüfungen fingen YouTube- und TikTok-Requests lokal
|
|
ab. URL-Erkennung, Iframe-Wechsel, Zeitmarkenübergabe und mobile Ausgabe sind
|
|
damit geprüft, nicht jedoch die reale Wiedergabe oder Verfügbarkeit der Anbieter.
|
|
|
|
## Verifizierte Umgebung
|
|
|
|
- Node.js 22.23.1, npm 10.9.8
|
|
- SvelteKit 3.1.0, Svelte 5.57.2, Vite 8.3.5
|
|
- SQLite-Treiber `better-sqlite3` 13.0.3
|
|
- Playwright 1.64.1 mit Chromium 156.0.8078.4 (Fallback-Build für Ubuntu 24.04)
|