111 lines
4.8 KiB
Markdown
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.
|