177 lines
9.6 KiB
Markdown
177 lines
9.6 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
|
||
- Fundus-Originale und sendungsspezifische Verwendungen nutzen denselben
|
||
großzügigen Dialograhmen mit den Bereichen „Sendungstext“, „Recherche &
|
||
Quellen“ und „Präsentation“; der jeweilige Speicherkontext ist sichtbar und
|
||
Original sowie Verwendung bleiben getrennte Revisionsgrenzen
|
||
- Titel, Einleitung, Moderationsstichpunkte und Überleitung sind ohne
|
||
vorgeschaltete Lese-/Bearbeitungsschalter direkt beschreibbar; eine kleine
|
||
Markdown-Leiste ergänzt Formatierung ohne Änderung des Speicherformats
|
||
- Recherche, Quellen, verwendungseigene Notizen und Material sind in einem
|
||
Bereich gebündelt; öffentliche Texte, Darstellungswahl und tatsächliche
|
||
Vorschau stehen gemeinsam im Präsentationsbereich
|
||
- der Dialog bleibt innerhalb der Desktop-Fensterhöhe, hält Kopf,
|
||
Bereichsnavigation und Aktionen sichtbar und nutzt mobil die volle
|
||
Bildschirmfläche; Bereichswechsel hängen Eingaben nicht aus und merken die
|
||
jeweilige Scrollposition
|
||
- die Schnellaufnahme akzeptiert Gedanke oder URL, bleibt nach dem Ablegen im
|
||
Eingang und öffnet die Ausarbeitung erst über eine bewusste Aktion
|
||
|
||
Für diese gezielte Überarbeitung wurden `npm run check` sowie kurze
|
||
Chromium-Sichtkontrollen des Original- und Verwendungseditors bei 1440 × 1000
|
||
und 390 × 844 Pixeln ausgeführt. Dabei waren Dialoggrenzen, feste Bedienbereiche,
|
||
alle drei Arbeitsbereiche und horizontaler Überlauf unauffällig. Die vollständige
|
||
Unit-, E2E- und Build-Matrix ist gemäß Auftrag noch offen.
|
||
|
||
## 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)
|