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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f1bda604cb
commit
cdd2d5b676
@@ -0,0 +1,61 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user