Files
planer2/README.md
2026-07-27 11:29:57 +02:00

111 lines
4.8 KiB
Markdown

# 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/<projekt>/<feature>.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; `<!-- funktion -->` ist wiederholbar; `<!-- ziel -->`,
`<!-- regeln -->` und `<!-- testen -->` nach einer Funktion gehören zu ihr — `ziel`/`regeln`
vor der ersten Funktion gehören zur Karte; regeln/testen: je eine `- `-Zeile pro Eintrag;
`<!-- regel -->`-Blöcke aus dem Alt-Format werden zu Zeilen zusammengeführt;
Trennzeilen aus `---` sind Optik):
```markdown
<!-- titel -->
Login
<!-- art -->
kern
<!-- ziel -->
Kurzer Satz, was das Ziel ist.
<!-- funktion -->
Anmeldung mit E-Mail
<!-- regeln -->
- Passwort nie loggen
<!-- testen -->
- Formular öffnen
- Daten eingeben
<!-- funktion -->
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.