34 Commits

Author SHA1 Message Date
Leopoldadmin 563127c75a feat: add vehicle edit page, image gallery with upload, print and CSV export 2026-07-19 19:47:39 +02:00
Leopoldadmin 58fcf4a722 feat: add dashboard page with stats, quick actions, recent vehicles, update navigation and login redirect 2026-07-19 19:33:08 +02:00
Leopoldadmin 5ae1e28ef2 feat: add navigation layout with sidebar, header, auth guard, mobile responsive 2026-07-19 17:25:35 +02:00
Leopoldadmin 2242a12094 fix: redirect login to /de/fahrzeuge instead of non-existent /dashboard 2026-07-19 16:49:50 +02:00
Leopoldadmin 4cfe8ad673 fix: add coolify external network to backend+frontend for Traefik routing 2026-07-19 02:21:14 +02:00
Leopoldadmin 3e8cf935bd fix: use network alias erp-db for postgres to avoid coolify-db DNS collision 2026-07-19 02:12:13 +02:00
Leopoldadmin 7a3c40a651 fix: remove duplicate bcrypt line 2026-07-19 00:36:41 +02:00
Leopoldadmin 14349a211d fix: correct bcrypt version spec in requirements.txt 2026-07-19 00:35:15 +02:00
Leopoldadmin 6cedbb1bcb fix: pin bcrypt<5.0 for passlib compatibility 2026-07-18 20:14:36 +02:00
Leopoldadmin 97d497ba4f feat: add seed_admin.py for initial admin user creation 2026-07-18 20:10:47 +02:00
Leopoldadmin b69c5f00aa fix: frontend healthcheck use 127.0.0.1 in docker-compose 2026-07-18 17:34:40 +02:00
Leopoldadmin abbb99fe74 fix: frontend healthcheck use 127.0.0.1 and bind to 0.0.0.0 2026-07-18 17:29:47 +02:00
Leopoldadmin 1a4444e1e8 fix: add missing email-validator dependency 2026-07-18 17:22:27 +02:00
Leopoldadmin 579049395d fix: use expose instead of ports to avoid host port conflicts 2026-07-18 17:18:30 +02:00
Leopoldadmin 265f4c35cb fix: add missing frontend/public directory for standalone build 2026-07-18 17:13:19 +02:00
Leopoldadmin 531ae4cf0b fix: correct libgdk-pixbuf-2.0-0 package name for Debian Trixie 2026-07-18 17:08:20 +02:00
Leopoldadmin 71a2b37c16 fix: use Python 3.12-slim for compatible Debian package names 2026-07-18 17:03:44 +02:00
Leopoldadmin 56a6eb7be5 feat(Phase 7): final audit, handoff documentation, project state update 2026-07-18 16:15:22 +02:00
Leopoldadmin 1620a35d71 feat(T06): deployment config - Dockerfiles, docker-compose, Coolify guide, env example 2026-07-18 15:47:26 +02:00
Leopoldadmin fbb1b39b57 fix: ruff lint + format fixes in tests, ESLint fixes in frontend 2026-07-17 21:28:58 +02:00
Leopoldadmin 341d0c6f38 fix: resolve all ruff and ESLint lint errors
Backend (ruff):
- F821: Add TYPE_CHECKING imports for Vehicle, Contact, File in models
  (file.py, retouch.py, sale.py, vehicle.py)
- E741: Rename ambiguous variable  to /
  (copilot_service.py, price_compare_service.py, openrouter.py)
- F841: Remove unused variable  in sale_service.py

Frontend (ESLint):
- react/no-unescaped-entities: Escape quotes in ContractPreview.tsx
- @next/next/no-img-element: Replace <img> with <Image> from next/image
  (FileGallery.tsx, FileList.tsx, FilePreview.tsx, BeforeAfterSlider.tsx)

Tests: 392 backend passed, 112 frontend passed, next build successful
2026-07-17 21:16:38 +02:00
Leopoldadmin f1d6de0e47 feat(T08): Bildretusche via Flux.1-Pro + Preisvergleich + Retouch UI with before/after slider 2026-07-17 09:31:28 +02:00
Leopoldadmin 5cc9f8e9a9 feat(T07): KI-Copilot with OpenRouter chat, voice input, action system, chat history 2026-07-17 02:28:41 +02:00
Leopoldadmin cb89e3ff1e chore: remove stray file 2026-07-17 01:58:54 +02:00
Leopoldadmin 6603e411e9 feat(T06): Verkaufsmodul + Rechtsdokumente + DATEV-Export + Sales UI 2026-07-17 01:58:34 +02:00
Leopoldadmin a38d340ddc feat(T05): Dateiablage pro Fahrzeug + File UI with thumbnails and gallery 2026-07-17 01:38:48 +02:00
Leopoldadmin 149ac04dc1 feat(T03): OCR-Erfassung via OpenRouter Qwen2.5-VL + OCR UI with drag-and-drop 2026-07-17 00:45:14 +02:00
Leopoldadmin b128ea6b39 feat: T04 fixes - i18n, auth tests, contact/vehicle test cleanup, status updates 2026-07-14 20:16:15 +02:00
Leopoldadmin 2cf433a01c feat(T04): contact management + USt-IdNr. validation + contact UI
- Contact model: company, role (kaeufer/verkaeufer/beide), soft-delete
- ContactPerson model: 1:N relation with CASCADE delete
- USt-IdNr. validation: DE + 10 EU countries
- Contact CRUD: 7 API endpoints with RBAC, search/filter/paginate
- Frontend: ContactList, ContactForm, ContactDetail with EU/Inland toggle
- 73 backend tests (91% coverage), 20 frontend tests
2026-07-14 12:14:21 +02:00
Leopoldadmin 74b5e6afb8 feat(T02): vehicle management + mobile.de push + vehicle UI
- Vehicle model: 25+ fields, 5 vehicle types, soft-delete
- Vehicle CRUD: 7 API endpoints with JWT auth, filter/sort/paginate
- mobile.de: push/update/delete listings, field mapping, retry logic
- MobileDeListing model for sync status tracking
- Frontend: VehicleList, VehicleForm, VehicleDetail, MobileDeStatus
- 73 backend tests (82% coverage), 16 frontend tests
2026-07-14 12:03:19 +02:00
Leopoldadmin d89304845a feat(T01): auth + user management + RBAC + base frontend + i18n
- Backend: FastAPI, JWT auth (HS256), bcrypt, RBAC middleware
- User CRUD (admin-only), soft-delete, pagination
- Pydantic BaseSettings config, async SQLAlchemy 2.0
- 50 backend tests, 88% coverage
- Frontend: Next.js 14 App Router, Tailwind, design tokens
- Login page, auth context, API client with auto-refresh
- i18n: next-intl, DE/EN (31 keys each)
- 6 base UI components (Button, Input, Card, Table, Modal, Toast)
- 12 frontend tests, npm build success
2026-07-14 11:51:32 +02:00
Leopoldadmin 5459a43e2b chore: add .gitignore and .a0 project state files 2026-07-13 09:55:54 +02:00
Leopoldadmin be5a339b32 feat: add UI prototype v8d source files (index.html, app.compiled.js, interactions.js, style.css) 2026-07-13 09:51:03 +02:00
Leopoldadmin afe6d0a168 feat: initial architecture - requirements, architecture.md, task_graph, AGENTS.md, UI prototype v8d 2026-07-13 03:34:35 +02:00