# Planer2 — Feature-Verwaltung Verwaltet Features meiner Projekte als Cards und definiert damit die „Wahrheit" je Projekt. Rein manuelle Pflege: Sidebar links = Projekte, Hauptbereich = Feature-Cards. - `make dev` — Entwicklung: Backend auf 8200, Frontend auf http://localhost:5274 - `make build && make web` — Produktion: http://localhost:8200 - `make test` — Backend-Tests ## Karten prüfen Das ⌾-Icon in der Sidebar prüft alle Karten des aktiven Projekts gegen den Stil-Katalog. Fehlerhafte Karten öffnen sich rot markiert und zeigen unter jeder Stelle einen Vorschlag mit ✓/✕; ✓ schreibt ihn in die Datei, die übrigen Vorschläge bleiben stehen. Unter dem Icon steht der Fortschritt, rechts läuft ein Panel mit Problemliste. Zwei Stufen je Prüfstelle. Was sich zählen lässt, zählt `struktur.py` — Wortzahl, Satzzeichen am Zeilenende, Füllwörter, Klammern, Badge-Wert. Was es wegstreichen kann, geht als fertiger Vorschlag durch, ganz ohne Anfrage. Der Rest hängt als Auftrag „Gemessen, bitte neu schreiben" am Ausschnitt für das Modell. Das Modell darf diese Klasse nicht selbst melden — sonst erfindet es Regeln, die im Katalog nicht stehen. Höchstens ein gemessener Befund je Zeile: zwei Vorschläge für dieselbe Zeile wären nicht unabhängig anwendbar. Eine Anfrage je Prüfstelle, nicht je Karte: ``` Karte ──┬── Kartenebene titel · badge · ziel · regeln 1 Anfrage ├── Funktion 1 titel · ziel · regeln · testen 1 Anfrage └── Funktion 2 … 1 Anfrage ``` Ein Vorschlag ersetzt seine Stelle eins zu eins. Was das bewirkt, sagt der Prüfer nicht — es ergibt sich aus dem Vergleich: ``` eine Zeile schreibt die Stelle um mehrere Zeilen ersetzen die Stelle durch alle davon; steht die alte wieder vorn, kommt nur etwas dazu leer streicht die Stelle ``` So muss das Modell keine Aktion auswählen. Es schreibt nur hin, was dort stehen soll. Ohne umsetzbaren Vorschlag wird ein Problem verworfen statt leer angezeigt. Vorschläge werden einzeln und in beliebiger Reihenfolge angenommen. Jeder muss darum für sich allein anwendbar sein und selbst dem Katalog genügen. Jede Anfrage bekommt nur ihren Ausschnitt der Karte und nur den Katalogteil, der für sie gilt. Die Herkunft eines Problems stammt aus dem Code, nicht aus der Modellantwort. Der Katalog liegt in `backend/stil/` — eine Datei je Feld, alphabetisch zusammengesetzt (`allgemein` landet dadurch vorn). Das Präfix entscheidet, wer sie zu sehen bekommt: ``` allgemein.md beide Prüfer feature-*.md nur die Kartenebene: titel, badge, ziel, regeln funktion-*.md nur die Funktionen: titel, ziel, regeln, testen ``` Eine neue Datei wird ohne Codeänderung mitgelesen. Ist der Ordner leer, bricht die Prüfung ab statt ohne Vorgaben zu prüfen. Zugang über `.env` (Vorlage: `.env.example`) — `MINIMAX_API_KEY`, `MINIMAX_MODELL`, `MINIMAX_URL`, dazu `PRUEFUNG_PARALLEL` (gleichzeitig laufende Anfragen, Standard 10). Fehlt einer der Zugangswerte, bricht die Prüfung mit sichtbarer Meldung ab; es wird nie still auf ein anderes Modell ausgewichen. Ergebnisse liegen nur im Serverspeicher und überleben keinen Neustart. ## Datenablage Markdown-Dateien unter `daten//.md` — Projekt = Ordner, die Datei ist die Wahrheit. Der Editor bearbeitet immer den rohen Text; geparst wird nur für die Anzeige. Format (Marker allein auf einer Zeile; `` ist wiederholbar; ``, `` und `` nach einer Funktion gehören zu ihr — `ziel`/`regeln` vor der ersten Funktion gehören zur Karte; regeln/testen: je eine `- `-Zeile pro Eintrag; ``-Blöcke aus dem Alt-Format werden zu Zeilen zusammengeführt; Trennzeilen aus `---` sind Optik): ```markdown Login kern Kurzer Satz, was das Ziel ist. Anmeldung mit E-Mail - Passwort nie loggen - Formular öffnen - Daten eingeben Abmeldung ``` Der Kompaktmodus zeigt Ziel und Funktionstitel, der Vollmodus alles — umgeschaltet per mittlerer Maustaste auf die Karte oder das Augen-Icon. Bearbeitet wird nur im Vollmodus: Klick auf den Text, Verlassen speichert, Escape verwirft; Anlegen und Entfernen laufen über das Kontextmenü (Rechtsklick) mit Bestätigung im Modal. Jedes Speichern setzt die Datei neu zusammen, Titeländerungen benennen sie passend um. Text vor dem ersten Marker, Inhalt unbekannter Marker und verwaiste regeln/testen-Blöcke (auch Alt-Marker `flow`) werden nicht angezeigt, aber beim Speichern erhalten. Hinweis: Sektionen werden im Frontend als Markdown gerendert (`marked`, ohne Sanitizing) — die Daten sind lokal und selbst geschrieben.