# AI Council Review # Waldseilgarten Herrenberg CRM **Sitzung:** 2026-03-14 **Reviewer:** AI Council (interne Rollen) **Dokument:** TDD v1.0 --- ## 🎭 Rollenverteilung | Rolle | Persönlichkeit | Aufgabe | |-------|----------------|---------| | **🦅 Architekt** | Visionär, großes Bild | Gesamtstruktur, Skalierung | | **🔍 Skeptiker** | Kritisch, Detailorientiert | Schwachstellen finden | | **⚡ Pragmatiker** | Praktisch, erfahren | Umsetzbarkeit prüfen | | **🛡️ Security-Experte** | Paranoid, gründlich | Sicherheitsrisiken | | **💰 Product-Manager** | Nutzerfokus, ROI | Geschäftswert | --- ## 1. Executive Summary **Gesamturteil:** ✅ **GO für Phase 1** mit kleineren Anpassungen Der vorgeschlagene Stack (NestJS + React) ist solide und passt zum Skill-Level der vorhandenen Entwicklung. Die modulare Architektur ermöglicht iteratives Vorgehen. **Kritische Punkte:** - SeaDrive-Integration als Optional markieren (hohe Komplexität) - IMAP-Worker früh testen (potenzielles Risiko) - Google Calendar OAuth gut dokumentieren --- ## 2. Detaillierte Reviews ### 🦅 Architektur-Review **Stärken:** - ✅ Klare Modularität durch NestJS - ✅ API-First Ansatz - ✅ TypeScript durchgehend - ✅ Container-Setup solide **Empfehlungen:** 1. **CQRS für Reports erwägen** - Aktuell: Direkte DB-Queries - Besser: Read-Models für komplexe Reports - Grund: Performance bei großen Datenmengen 2. **Event-Driven Architecture** - Statt: Direkte Service-Aufrufe - Besser: Events für Cross-Cutting Concerns - Beispiel: `ProjectCreatedEvent` → EmailNotification 3. **Caching-Strategie definieren** - Redis für Sessions ✅ - Zusätzlich: Query-Result-Caching - TTL-Strategie dokumentieren **Bewertung:** 8/10 --- ### 🔍 Skeptiker-Review **Probleme identifiziert:** #### 1. **IMAP-Integration unterschätzt?** ``` Problem: IMAP ist komplexer als gedacht - Verschiedene Server-Implementierungen - Connection-Handling bei Timeouts - Sync-Strategie (Delta vs. Full) Empfehlung: - Proof-of-Concept in Woche 1 - Library: imapflow (moderner als node-imap) - Fallback: Manuelle E-Mail-Erfassung ``` #### 2. **SeaDrive = Hohe Komplexität** ``` Problem: SeaDrive/Seafile Integration - FUSE-Filesystem im Container - Rechte-Management komplex - Sync-Konflikte Empfehlung: - Als "Phase 2+" markieren - Alternative: S3-kompatible API - Oder: Seafile REST API direkt nutzen ``` #### 3. **Fehlende Rate-Limiting** ``` Problem: Keine API-Rate-Limits definiert - Login-Endpunkte vulnerable - Upload-Endpunkten ohne Limits Empfehlung: - nestjs-rate-limiter hinzufügen - Spezifische Limits pro Endpoint: - /auth/login: 5/min pro IP - /upload: 10/min pro User ``` #### 4. **Fehlende Input-Validierung Details** ``` Problem: "class-validator" erwähnt, aber keine Details - Welche Decorators? - Custom Validators? Empfehlung: - @IsEmail() für E-Mails - @Length() für Passwörter (min 8) - @Matches() für komplexe Regeln - Sanitization (XSS-Prevention) ``` **Bewertung:** 6/10 (wichtige Details fehlen) --- ### ⚡ Pragmatiker-Review **Umsetzbarkeit:** ✅ Gut **Zeitschätzungen:** | Phase | TDD-Schätzung | Realistisch | Risiko | |-------|---------------|-------------|--------| | Phase 1 | 2-3 Wochen | 3-4 Wochen | Mittel | | Phase 2 | 1 Woche | 1-2 Wochen | Niedrig | | Phase 3 | 1 Woche | 1 Woche | Niedrig | | Phase 4 | 2 Wochen | 3-4 Wochen | Hoch | | Phase 5 | 4-5 Wochen | 6-8 Wochen | Mittel | **Gesamt:** 11 Wochen → **Realistisch: 14-18 Wochen** **Empfehlungen:** 1. **MVP reduzieren** ``` Statt: - Multi-Tenant - SSO - 2FA Zuerst: - Single-Tenant - Lokale Auth - Einfaches Passwort ``` 2. **Feature-Flags nutzen** ```typescript // Statt: Code auskommentieren if (config.features.emailIntegration) { // IMAP-Feature } ``` 3. **Vorhandenen Code nutzen** - Backend ist bereits teilweise implementiert - Frontend existiert bereits - Fokus: Integration & Bugfixing **Bewertung:** 7/10 --- ### 🛡️ Security-Review **Kritisch:** #### 1. **JWT-Secret in .env** ``` Problem: JWT_SECRET in docker-compose.yml sichtbar Risiko: Bei Repo-Leak kompromittiert Empfehlung: - Docker Secrets oder - Environment-Injection bei Deployment - Regelmäßige Rotation (alle 90 Tage) ``` #### 2. **Fehlende SQL-Injection Tests** ``` Problem: TypeORM schützt, aber keine expliziten Tests Empfehlung: - Test-Cases für: - ' OR '1'='1 - UNION SELECT - Time-based Blind SQLi ``` #### 3. **File Upload Security** ``` Problem: Upload-Endpunkte ohne Details Risiken: - MIME-Type spoofing - Path traversal - Malware-Upload Empfehlung: - Magic-Bytes-Check (nicht nur Extension) - ClamAV-Integration - Upload-Verzeichnis außerhalb Webroot - Dateigrößen-Limit (10MB) ``` #### 4. **CORS zu offen?** ```yaml # Aktuell: CORS_ORIGINS: "*" # Besser: CORS_ORIGINS: "https://waldseilgarten-herrenberg.de" ``` #### 5. **Fehlende Audit-Logs** ``` Problem: Wer hat wann was gemacht? Empfehlung: - Audit-Log Tabelle - Loggen: Login, Daten-Änderungen, Löschungen - Unveränderlich speichern ``` **Bewertung:** 5/10 (mehrere kritische Lücken) --- ### 💰 Product-Manager-Review **Geschäftswert:** ✅ Hoch **Nutzer-Jobs:** | Job | Wichtigkeit | Erfüllung im TDD | |-----|-------------|------------------| | Kunden finden | Kritisch | ✅ Gut | | Projekte verfolgen | Kritisch | ✅ Gut | | Dokumente ablegen | Wichtig | ✅ Gut | | E-Mails zuordnen | Wichtig | ⚠️ Komplex | | Termine syncen | Nice-to-have | ⚠️ Optional | **Konkurrenz-Analyse:** - HubSpot: Zu teuer, zu komplex - Pipedrive: Gut, aber nicht self-hosted - **Dieses CRM:** Perfekte Nische **Empfehlungen:** 1. **Onboarding-Flow** ``` Fehlt im TDD: - Erstkonfiguration Wizard - Beispieldaten generieren - Tutorial/Tour ``` 2. **Mobile-First nicht vergessen** ``` TDD erwähnt PWA, aber: - Keine Mobile-Optimierung Details - Touch-Gestures? - Offline-Modus? ``` 3. **Export-Funktion** ``` Kritisch für Kunden: - "Meine Daten gehören mir" - CSV/Excel Export - JSON-Export für Migration ``` **Bewertung:** 7/10 --- ## 3. Konsens-Empfehlungen ### ✅ Beibehalten - NestJS + React Stack - PostgreSQL + Redis - Modulare Architektur - Docker/Podman Setup ### 🔄 Anpassen #### 1. **SeaDrive → Optional** ``` Statt: Pflicht-Feature Besser: Phase 2+ mit Fallback ``` #### 2. **IMAP zuerst testen** ``` Aktion: Proof-of-Concept in Woche 1 Falls zu komplex: Manuelle Erfassung ``` #### 3. **Security Hardening** ``` Muss: - Rate-Limiting - JWT-Secret-Management - File-Upload Security - Audit-Logging ``` #### 4. **Zeitplan realistisch** ``` Statt: 11 Wochen Realistisch: 14-18 Wochen ``` ### ❌ Hinzufügen | Feature | Priorität | Aufwand | |---------|-----------|---------| | Rate-Limiting | Kritisch | Klein | | Audit-Logging | Hoch | Mittel | | Feature-Flags | Hoch | Klein | | Data-Export | Hoch | Klein | | API-Doku (Swagger) | Mittel | Klein | --- ## 4. Final Voting | Rolle | Score | Verdict | |-------|-------|---------| | 🦅 Architekt | 8/10 | ✅ GO | | 🔍 Skeptiker | 6/10 | ⚠️ GO mit Bedenken | | ⚡ Pragmatiker | 7/10 | ✅ GO | | 🛡️ Security | 5/10 | ⚠️ GO nach Hardening | | 💰 Product | 7/10 | ✅ GO | ### **Endergebnis: 6.6/10** → ✅ **GO mit Anpassungen** --- ## 5. Action Items | # | Aufgabe | Verantwortlich | Deadline | |---|---------|----------------|----------| | 1 | Rate-Limiting implementieren | Backend | Phase 1 | | 2 | IMAP Proof-of-Concept | Backend | Woche 1 | | 3 | Security-Checkliste erstellen | Security | Vor Deployment | | 4 | SeaDrive als Optional markieren | PM | Dokumentation | | 5 | Zeitplan anpassen (14-18 Wochen) | PM | Roadmap | | 6 | Feature-Flags Setup | Architekt | Phase 1 | --- ## 6. Follow-Up Review **Termin:** Nach Phase 1 Completion **Ziel:** Validierung der Annahmen, Anpassung für Phasen 2-5 --- **Review abgeschlossen:** 2026-03-14 **Nächster Schritt:** TDD anpassen basierend auf Empfehlungen