diff --git a/.a0proj/project.json b/.a0proj/project.json index 013d488..fcc787e 100644 --- a/.a0proj/project.json +++ b/.a0proj/project.json @@ -1,7 +1,7 @@ { "title": "LeoCRM", "description": "Mini-CRM mit Kontakten, Mail, DMS, Kalender, Tasks und Plugin-System. FastAPI Backend + React/TypeScript Frontend. Deployiert über Coolify auf Hetzner VPS.", - "instructions": "Du arbeitest am LeoCRM-Projekt.\n\n## Projekt-Übersicht\n- **Repo**: /a0/usr/workdir/leocrm-fix (Git: Forgejo Leopoldadmin/leocrm)\n- **Frontend**: React + TypeScript + Vite + Tailwind, in frontend/\n- **Backend**: FastAPI + SQLAlchemy + PostgreSQL (pgvector), in app/\n- **Tests**: frontend/src/__tests__/ (Vitest), tests/ (pytest)\n- **Migrations**: alembic/versions/\n- **Plugins**: app/plugins/builtins/ (Mail, DMS, Tasks, Calendar, etc.)\n- **Plugin-Manifest-Schema**: app/plugins/manifest.py\n\n## Deploy\n### Frontend-only (~20s)\n```bash\nbash /a0/usr/workdir/leocrm-fix/scripts/fast-deploy.sh frontend\n```\nBaut lokal, kopiert dist/ direkt in den laufenden Container. Kein Coolify-Rebuild.\n\n### Full Deploy (~2min, fuer Backend-Aenderungen)\n```bash\nbash /a0/usr/workdir/leocrm-fix/scripts/fast-deploy.sh full\n```\nTriggert Coolify-Rebuild ueber deploy.py.\n\n### Wann was?\n- Nur Frontend (TSX, CSS): frontend\n- Backend (Python, Dockerfile, requirements): full\n\n## Git Workflow\n1. Aenderungen in /a0/usr/workdir/leocrm-fix\n2. git add -A && git commit -m '...' && git push origin main\n3. Dann deploy\n\n## Server & Container\n- Host: 46.225.91.159 (root, SSH Key: /a0/usr/workdir/.ssh/coolify-01-root)\n- Coolify: https://server.media-on.de\n- App UUID: stvabl4vaqru7jclx4ittzr3\n- Container-Name aendert sich bei jedem Coolify-Deploy (Suffix)\n- Frontend-Pfad im Container: /app/frontend/dist\n- Worker-Container: leocrm-worker\n- DB: crm-postgres (pgvector/pgvector:pg16)\n- Redis: crm-redis (redis:7-alpine)\n\n## Zugaenge\n- Web-UI: https://crm.media-on.de/login\n- Forgejo: https://forgejo.media-on.de/Leopoldadmin/leocrm\n- Sensible Credentials siehe leocrm-deploy.promptinclude.md im workdir\n\n## Wichtige Dateien\n- FIX-PLAN-V2.md — Aktueller Fix-Plan\n- architecture.md — Architektur-Dokumentation\n- DEPLOY.md — Deployment-Anleitung\n- COOLIFY_SETUP.md — Coolify-Konfiguration\n- .a0/ — Projekt-Status (current_status.md, next_steps.md, risks.md, worklog.md)\n\n## Regeln\n- Frontend-Style an bestehenden Komponenten orientieren (Mail-Plugin als Referenz)\n- Bei UI-Aenderungen immer Mail-Plugin als Referenz pruefen\n- Tests nicht editieren ausser explizit verlangt\n- Minimal focused changes, bestehenden Style beibehalten\n- Bei destruktiven Aenderungen: User fragen", + "instructions": "Du arbeitest am LeoCRM-Projekt.\n\n## Projekt-Übersicht\n- **Repo**: /a0/usr/workdir/leocrm-fix (Git: Forgejo Leopoldadmin/leocrm)\n- **Frontend**: React + TypeScript + Vite + Tailwind, in frontend/\n- **Backend**: FastAPI + SQLAlchemy + PostgreSQL (pgvector), in app/\n- **Tests**: frontend/src/__tests__/ (Vitest), tests/ (pytest)\n- **Migrations**: alembic/versions/\n- **Plugins**: app/plugins/builtins/ (Mail, DMS, Tasks, Calendar, etc.)\n- **Plugin-Manifest-Schema**: app/plugins/manifest.py\n\n## Deploy\n### Frontend-only (~20s)\n```bash\nbash /a0/usr/workdir/leocrm-fix/scripts/fast-deploy.sh frontend\n```\nBaut lokal, kopiert dist/ direkt in den laufenden Container. Kein Coolify-Rebuild.\n\n### Full Deploy (~2min, fuer Backend-Aenderungen)\n```bash\nbash /a0/usr/workdir/leocrm-fix/scripts/fast-deploy.sh full\n```\nTriggert Coolify-Rebuild ueber deploy.py.\n\n### Wann was?\n- Nur Frontend (TSX, CSS): frontend\n- Backend (Python, Dockerfile, requirements): full\n\n## Git Workflow\n1. Aenderungen in /a0/usr/workdir/leocrm-fix\n2. git add -A && git commit -m '...' && git push origin main\n3. Dann deploy\n\n## Server & Container\n- Host: 46.225.91.159 (root, SSH Key: /a0/usr/workdir/.ssh/coolify-01-root)\n- Coolify: https://server.media-on.de\n- App UUID: dx4pqdziu4uj6x9fxs1u5z0x\n- Container-Name aendert sich bei jedem Coolify-Deploy (Suffix)\n- Frontend-Pfad im Container: /app/frontend/dist\n- Worker: Teil der Docker-Compose-App\n- DB: Teil der Docker-Compose-App\n- Redis: Teil der Docker-Compose-App\n\n## Zugaenge\n- Web-UI: https://crm.media-on.de/login\n- Forgejo: https://forgejo.media-on.de/Leopoldadmin/leocrm\n- Sensible Credentials siehe leocrm-deploy.promptinclude.md im workdir\n\n## Wichtige Dateien\n- FIX-PLAN-V2.md — Aktueller Fix-Plan\n- architecture.md — Architektur-Dokumentation\n- DEPLOY.md — Deployment-Anleitung\n- COOLIFY_SETUP.md — Coolify-Konfiguration\n- .a0/ — Projekt-Status (current_status.md, next_steps.md, risks.md, worklog.md)\n\n## Regeln\n- Frontend-Style an bestehenden Komponenten orientieren (Mail-Plugin als Referenz)\n- Bei UI-Aenderungen immer Mail-Plugin als Referenz pruefen\n- Tests nicht editieren ausser explizit verlangt\n- Minimal focused changes, bestehenden Style beibehalten\n- Bei destruktiven Aenderungen: User fragen", "include_agents_md": true, "color": "#3b82f6", "git_url": "https://forgejo.media-on.de/Leopoldadmin/leocrm.git", diff --git a/.env.example b/.env.example index 5d65db9..02b0143 100644 --- a/.env.example +++ b/.env.example @@ -143,3 +143,7 @@ SEARCH_LLM_MODEL=ollama/deepseek-v4 # === GIT (for initial deployment) === API_GIT_REPO=https://forgejo.media-on.de/Leopoldadmin/leocrm.git API_GIT_BRANCH=main + +# === Admin User (auto-seeded on first start) === +ADMIN_EMAIL=admin@media-on.de +ADMIN_PASSWORD=Admin123! diff --git a/IMPLEMENTATION_PLAN.md b/IMPLEMENTATION_PLAN.md index 938000b..9c8998a 100644 --- a/IMPLEMENTATION_PLAN.md +++ b/IMPLEMENTATION_PLAN.md @@ -1,7 +1,7 @@ # LeoCRM — Implementationsplan: Fehlende Frontend-Features > **Stand:** 26.07.2026 (Audit-korrigiert) | **Backend:** 352 Endpunkte | **Frontend:** 47 Pages, 38 API-Clients -> **Repo:** `/a0/usr/workdir/leocrm-fix` | **Branch:** `main` | **Deploy:** Coolify App `stvabl4vaqru7jclx4ittzr3` +> **Repo:** `/a0/usr/workdir/leocrm-fix` | **Branch:** `main` | **Deploy:** Coolify App `dx4pqdziu4uj6x9fxs1u5z0x` --- diff --git a/SANIERUNGS_FORTSCHRITT.md b/SANIERUNGS_FORTSCHRITT.md index 0a5c7b9..3af2f7f 100644 --- a/SANIERUNGS_FORTSCHRITT.md +++ b/SANIERUNGS_FORTSCHRITT.md @@ -48,8 +48,8 @@ | Ressource | UUID | Typ | |-----------|------|------| -| API (crm.media-on.de) | stvabl4vaqru7jclx4ittzr3 | Application | -| Worker | asxqaq3566to108xordck0ff | Service | +| API (crm.media-on.de) | dx4pqdziu4uj6x9fxs1u5z0x | Application | +| Worker | | Service | | PostgreSQL | (Coolify Service) | Service | | Redis | (Coolify Service) | Service | @@ -69,7 +69,7 @@ |--------|------------| | crm-postgres-data | PostgreSQL-Daten | | crm-redis-data | Redis-Daten | -| stvabl4vaqru7jclx4ittzr3_storage | API + Worker Storage (geteilt) | +| dx4pqdziu4uj6x9fxs1u5z0x_storage | API + Worker Storage (geteilt) | ### Deployment @@ -191,7 +191,7 @@ COOLIFY_API_TOKEN= python scripts/deploy.py --worker-only 3. **Migrationen sind Forward-Only** — keine alten Migrationen verändern 4. **RLS ist fail-closed** — kein Tenant-Kontext = kein Zugriff 5. **crm_api hat keine DDL-Rechte** — Plugin-Migrationen über get_migration_engine() -6. **Worker ist Coolify Service** — UUID asxqaq3566to108xordck0ff +6. **Worker ist Coolify Service** — UUID 7. **Alle DB-Passwörter sind identisch** — siehe .env.docker.example 8. **pgvector/pgvector:pg16** als DB-Image — nicht postgres:16-alpine 9. **Tests müssen mit echten unprivilegierten Rollen laufen** — nicht mit Superuser