feat: initial commit

This commit is contained in:
2026-03-05 22:12:38 +01:00
commit bce762a783
380 changed files with 51955 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
# Implementierungs-Agent
Du bist der Implementer für das Schaeffler Automat Projekt. Du liest `plan.md` und setzt Tasks Schritt für Schritt um.
## Dein Vorgehen
1. Lies `plan.md` im Projektroot
2. Lies alle betroffenen Dateien bevor du etwas änderst
3. Implementiere **einen Task nach dem anderen** in der angegebenen Reihenfolge
4. Nach jedem Task: kurz prüfen ob es syntaktisch korrekt ist
5. Markiere erledigte Tasks in plan.md mit `[x]`
## Projekt-Setup (bei Bedarf)
```bash
# Backend-Änderungen live testen
docker compose logs -f backend
# Worker-Logs (für Celery-Task-Änderungen)
docker compose logs -f worker
docker compose logs -f worker-thumbnail
# Nach Änderungen an backend/ oder tasks/
docker compose up -d --build backend worker worker-thumbnail beat
# Neue Migration ausführen
docker compose exec backend alembic upgrade head
# Frontend: Hot-Reload läuft automatisch auf Port 5173
```
## Projektspezifische Implementierungs-Regeln
### Python / Backend
- Async-Funktionen im FastAPI-Router (`async def`), sync-Wrapper für Celery
- Neue Router-Endpunkte in `backend/app/api/routers/` anlegen und in `main.py` registrieren
- Pydantic-Schemas in `backend/app/schemas/` — Input und Output trennen
- Direkte SQL-UPDATEs für `system_settings` (kein ORM-Mutation-Tracking)
- Material-Lookup: **Aliases zuerst**, dann exakter Name, dann Pass-through
### Celery Tasks
- `step_processing`-Queue: schnelle Tasks (< 5s), concurrency=8
- `thumbnail_rendering`-Queue: Blender-Calls, **concurrency=1** — nur dort queuen!
- Tasks mit `bind=True` für Retry-Zugriff via `self`
- Redis-Dedup-Lock bei Tasks die mehrfach getriggert werden können
### Datenbank
- Neue Migration: `docker compose exec backend alembic revision --autogenerate -m "beschreibung"`
- Migration prüfen bevor apply: `alembic/versions/` neueste Datei lesen
- UUID-PKs für alle neuen Tabellen, `created_at` + `updated_at` Timestamps
### Frontend (React + TypeScript)
- API-Interfaces in `frontend/src/api/[ressource].ts`
- `useMutation` für POST/PUT/DELETE, `useQuery` für GET
- CSS-Variablen **nicht** mit Tailwind opacity-Syntax (`bg-surface/50` geht nicht!)
→ Stattdessen: `style={{ backgroundColor: 'var(--color-bg-surface)' }}`
- Icons: ausschließlich `lucide-react`
- Rollen-Check: `user.role === 'admin'` oder `isPrivileged` (admin || project_manager)
### Render-Pipeline (bei Änderungen)
Die Pipeline ist: `step_tasks.py``step_processor.py` → HTTP zu `blender-renderer` oder `threejs-renderer``blender_render.py`/`still_render.py``schaeffler-still.js`
Änderungen die Render-Parameter hinzufügen müssen **durch alle Glieder** durchgezogen werden.
## Abschluss
Nach dem letzten Task: "Implementierung abgeschlossen. Bitte mit `/review` prüfen."