Files
BauIN/CLAUDE.md
T
ChristophandClaude Opus 5.5 cdd2d5b676 CLAUDE.md und Tech-Stack-Dokumentation ergänzt
- CLAUDE.md: Befehle, harte Vorgaben (alles lokal, keine Kundendaten,
  Rechteprüfung), Entwicklungsgrundsätze und Konventionen; wird versioniert,
  damit alle Entwickler dieselben Regeln haben (aus .gitignore entfernt)
- docs/tech-stack.md: Stack auf Basis der Kollegen-Referenz mit bewussten
  Abweichungen und offenen Punkten
- README an TallStackUI und Wegfall von Redis angepasst

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:35:13 +02:00

62 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KI-BauIN – Hinweise für Claude Code
KI-gestützte Prüfung von Mehrkostenanzeigen (MKA) und Nachträgen im Bahnbau. Stack und
Begründungen: `docs/tech-stack.md`. Einrichtung und Adressen: `README.md`.
## Befehle (immer über Sail, PHP 8.5 im Container)
```bash
./vendor/bin/sail up -d
./vendor/bin/sail artisan test # alle Tests
./vendor/bin/sail artisan test --filter=NameDesTests # einzelner Test
./vendor/bin/sail bin pint # Code-Stil
./vendor/bin/sail bin phpstan analyse # statische Analyse, Stufe 7
./vendor/bin/sail composer require … # Pakete nur im Container installieren
npm run build # Assets (oder npm run dev)
```
Vor jedem Commit: Tests, Pint und PHPStan ohne Fehler. Der gitleaks-Hook (`.githooks`)
wird nicht umgangen.
## Harte Vorgaben
- **Alles lokal.** Keine Skripte, Fonts, Bilder oder APIs von fremden Hosts. Einzige Ausnahme
ist später die KI-API des Kunden. `tests/Feature/NoExternalResourcesTest.php` muss grün bleiben.
- `<x-ts-avatar>` nur mit `text` (Initialen), nie mit `model`, `gravatar` oder Bild-URL –
sonst lädt TallStackUI von ui-avatars.com bzw. gravatar.com.
- `<x-ts-reaction>` nicht verwenden (lädt Emojis von Google).
- **Keine echten Kundendaten** in Code, Tests, Fixtures, Seedern, Commits oder Prompts.
Nur erfundene Beispieldaten (z. B. Projekt „Musterstadt Süd“).
- **Rechte bei jeder geschützten Aktion prüfen** (Policies/Gates, Spatie laravel-permission):
in Controllern und Livewire-Aktionen, bei Downloads, bei Suchtreffern und bevor Inhalte an
ein Sprachmodell gehen. Die Oberfläche auszublenden reicht nicht.
- **Dateien privat speichern** (Disk `local`) und nur über eine Route mit Rechteprüfung ausliefern.
## Entwicklungsgrundsätze
- Eingaben serverseitig validieren.
- Geschäftslogik in Services (`app/Services/…`); Livewire-Komponenten steuern nur Anzeige und
Interaktion.
- Zusammengehörige Datenänderungen in einer Datenbanktransaktion.
- Lang laufende oder wiederholbare Arbeit (Dokumentverarbeitung, Embeddings, KI-Aufrufe) als
Job in der Warteschlange (`database`), mit begrenzten Wiederholungen und nachvollziehbarem Status.
- Tabellen, Formulare und Navigation aus gemeinsamen Layouts und Komponenten aufbauen.
- Jede fachliche Änderung mit Feature-Test.
## Konventionen
- **Livewire 4, klassenbasierte Komponenten:** Klasse in `app/Livewire/…`, View in
`resources/views/livewire/…`.
- **UI: TallStackUI 4 mit Präfix `ts-`** (`<x-ts-button>`, `<x-ts-input>`, `<x-ts-modal>` …).
Kurzdoku je Komponente: `vendor/tallstackui/tallstackui/.ai/components/`. Kein Flux.
Toasts/Dialoge aus Livewire über `TallStackUi\Traits\Interactions` (`$this->toast()->success(…)->send()`).
- **Eigene Blade-Komponenten ohne Präfix**, z. B. `<x-heading>`, `<x-subheading>`, `<x-user-menu>`.
- **Dark Mode** über `tallstackui_darkTheme()` am `<html>`-Element; Speicherschlüssel `dark-theme`.
- **Benennung:** Fachbegriffe deutsch (`Mehrkostenanzeige`, `LvPosition`, `Los`), technische
Begriffe nach Laravel-Konvention englisch (`Controller`, `Policy`, `Job`).
- **Länder DE/AT:** gemeinsamer Kern, länderspezifische Logik hinter Schnittstellen in
`app/Laender/DE` bzw. `app/Laender/AT`. Fachliche Tabellen bekommen `mandant_id` und `land`.
- **Tests:** Pest als Runner, Tests im PHPUnit-Klassenstil (`tests/Feature`, `tests/Unit`).
Tests laufen gegen die Datenbank `testing`, nie gegen `ki_bauin`.
- **Commit-Nachrichten** auf Deutsch.