# Pulse CRM - Entity Relationship Diagram ```mermaid erDiagram ORGANIZATIONS ||--o{ USERS : has ORGANIZATIONS ||--o{ CONTACTS : has ORGANIZATIONS ||--o{ COMPANIES : has ORGANIZATIONS ||--o{ PIPELINES : has ORGANIZATIONS ||--o{ DEALS : has ORGANIZATIONS ||--o{ ACTIVITIES : has ORGANIZATIONS ||--o{ AUDIT_LOGS : has USERS ||--o{ CONTACTS : owns USERS ||--o{ COMPANIES : owns USERS ||--o{ DEALS : owns USERS ||--o{ ACTIVITIES : creates USERS ||--o{ REFRESH_TOKENS : has COMPANIES ||--o{ CONTACTS : employs COMPANIES ||--o{ DEALS : has CONTACTS ||--o{ DEALS : associated CONTACTS ||--o{ ACTIVITIES : has PIPELINES ||--o{ DEALS : contains DEALS ||--o{ ACTIVITIES : has ORGANIZATIONS { uuid id PK string name string slug UK jsonb settings string subscription_plan timestamp created_at } USERS { uuid id PK uuid org_id FK string email UK string password_hash string first_name string last_name string role boolean is_active timestamp last_login_at } CONTACTS { uuid id PK uuid org_id FK uuid company_id FK uuid owner_id FK string first_name string last_name string email string phone string status boolean gdpr_consent timestamp deleted_at } COMPANIES { uuid id PK uuid org_id FK uuid owner_id FK string name string industry string website string phone timestamp deleted_at } PIPELINES { uuid id PK uuid org_id FK string name boolean is_default jsonb stages } DEALS { uuid id PK uuid org_id FK uuid pipeline_id FK uuid contact_id FK uuid company_id FK uuid owner_id FK string title decimal value string stage_id string status date expected_close_date } ACTIVITIES { uuid id PK uuid org_id FK uuid user_id FK uuid contact_id FK uuid deal_id FK string type string subject text description timestamp due_date boolean is_completed } AUDIT_LOGS { uuid id PK uuid org_id FK uuid user_id FK string action string entity_type uuid entity_id jsonb changes inet ip_address } REFRESH_TOKENS { uuid id PK uuid user_id FK string token_hash timestamp expires_at } ``` ## Tabellen-Übersicht | Tabelle | Beschreibung | Relationships | |---------|--------------|---------------| | `organizations` | Mandanten (Multi-Tenancy) | Parent für alle Daten | | `users` | Benutzer/Team-Mitglieder | Gehört zu Organization | | `contacts` | Personen/Leads | Gehört zu Organization, optional zu Company | | `companies` | Firmen | Gehört zu Organization | | `pipelines` | Sales Pipelines | Gehört zu Organization | | `deals` | Opportunities | Gehört zu Pipeline, Contact, Company | | `activities` | Notizen, Calls, Tasks | Gehört zu Contact oder Deal | | `audit_logs` | DSGVO Audit Trail | Protokolliert alle Änderungen | | `refresh_tokens` | JWT Refresh Tokens | Gehört zu User | ## Indizes Alle Tabellen haben Indizes auf: - `org_id` - Multi-Tenancy Queries - Foreign Keys - Häufig gefilterte Felder (status, email, etc.) - `deleted_at` - Soft Delete Queries