# Email System - Fejl & Forbedringsforslag

## 🔴 Kritiske Fejl

### 1. Type Errors i Backend (router.py)
**Problem:** `execute_query(fetchone=True)` returnerer måske `None`, men koden antager altid dict
**Lokation:** Line 253-255 i mark-processed endpoint
**Løsning:** ✅ RETTET - Tilføjet `.get()` fallbacks

### 2. Manglende Error Handling i Frontend
**Problem:** `getElementById()` kan returnere `null`, men koden tjekker ikke
**Lokation:** Multiple steder i emails.html
**Løsning:** ✅ RETTET - Tilføjet null-checks

### 3. Race Condition ved Email Loading
**Problem:** Flere samtidige kald til `loadEmails()` kan ske hvis bruger skifter filter hurtigt
**Løsning:** ✅ RETTET - Tilføjet `isLoadingEmails` flag

## ⚠️ Mindre Fejl

### 4. Manglende Loading State
**Problem:** Ingen visuelt feedback mens emails loader
**Løsning:** ✅ RETTET - Tilføjet spinner

### 5. Duplicate Function Names
**Problem:** `delete_email` er defineret 2 gange i router.py
**Løsning:** Skal rettes - én til soft delete, én til hard delete (omdøb en af dem)

### 6. Missing `classify_email` Method
**Problem:** `EmailProcessorService` har ikke `classify_email()` metode men router kalder den
**Løsning:** Skal tilføjes eller erstattes med `simple_classifier.classify()`

## 💡 Forbedringsforslag

### 1. Bulk Operations - Mangler Confirmation
**Problem:** Ingen bekræftelse før bulk actions
**Forslag:**
```javascript
if (!confirm(`Genbehandle ${selectedEmails.size} emails?`)) return;
```

### 2. Better Attachment Error Messages
**Problem:** Kun generisk fejl når attachment download fejler
**Forslag:** ✅ RETTET - Tilføjet detaljeret fejlbesked

### 3. Email Search - Ikke Implementeret
**Problem:** Search query parameter sendes, men backend håndterer den ikke
**Forslag:** Tilføj `WHERE (subject ILIKE %s OR sender_email ILIKE %s)` i SQL

### 4. Auto-Refresh Kan Afbryde Bruger
**Problem:** Hvis bruger læser en email kan auto-refresh resette visningen
**Forslag:** Pause auto-refresh når email detail er åben

### 5. Manglende Pagination
**Problem:** Limit 100 emails, ingen pagination
**Forslag:** Tilføj infinite scroll eller "Load More" knap

### 6. Status Filter Improvement
**Problem:** `currentFilter === 'active'` viser kun status=new, men burde også vise 'error', 'flagged'
**Forslag:**
```javascript
if (currentFilter === 'active') {
    url += '&status=new,error,flagged';  // Backend skal understøtte comma-separated
}
```

### 7. Email Preview Cut-off
**Problem:** Preview er altid 80 chars, uanset skærmstørrelse
**Forslag:** Dynamisk længde baseret på viewport width

### 8. Keyboard Navigation Improvements
**Problem:** Kun j/k virker, ikke Tab/Shift+Tab
**Forslag:** Tilføj standard fokus-navigation

### 9. Bulk Select - Mangler "Select All"
**Problem:** Skal manuelt checke hver email
**Forslag:** Tilføj "Vælg alle" checkbox i header

### 10. Processed Emails - Kan Ikke Se Dem
**Problem:** Når email flyttes til "Processed" folder, forsvinder den fra visningen
**Forslag:** 
- Tilføj "Processed" tab/filter knap
- Eller vis en bekræftelse "Email flyttet til Processed - Klik her for at se den"

## 🎯 Performance Optimering

### 11. N+1 Query Problem
**Problem:** Henter vendor/customer navne for hver email separat
**Løsning:** SQL query bruger allerede LEFT JOIN - OK ✅

### 12. Missing Indexes
**Anbefaling:** Tilføj indexes:
```sql
CREATE INDEX idx_email_messages_status ON email_messages(status);
CREATE INDEX idx_email_messages_folder ON email_messages(folder);
CREATE INDEX idx_email_messages_classification ON email_messages(classification);
CREATE INDEX idx_email_messages_received_date ON email_messages(received_date DESC);
```

### 13. Large Body Text
**Problem:** Henter fuld body_text og body_html for alle emails i listen
**Forslag:** Brug `LEFT(body_text, 200)` i list query

## 🔒 Sikkerhed

### 14. XSS Protection
**Status:** ✅ Bruger `escapeHtml()` function - godt!

### 15. CSRF Protection
**Status:** ⚠️ POST/DELETE endpoints mangler CSRF tokens (hvis FastAPI ikke har default)

### 16. File Upload Validation
**Problem:** Når email attachments downloades og re-uploades
**Forslag:** Verificer MIME type og fil størrelse

## 📋 Prioriteret Action Plan

### Umiddelbart (Kritisk):
1. ✅ Fix type errors i mark-processed endpoint
2. ✅ Fix missing null-checks i frontend
3. ✅ Add loading state og race condition fix
4. ⏳ Rename duplicate `delete_email` function
5. ⏳ Fix missing `classify_email` method

### Kort Sigt (Denne Uge):
6. Add confirmation til bulk operations
7. Implementer search functionality i backend
8. Add "Select All" checkbox
9. Add "Processed" filter tab
10. Add database indexes

### Mellem Sigt (Næste Sprint):
11. Implement pagination
12. Add auto-refresh pause when email open
13. Improve keyboard navigation
14. Add CSRF protection

### Lang Sigt (Nice to Have):
15. Toast notifications i stedet for alerts
16. Drag-and-drop for email organization
17. Email templates/quick replies
18. Advanced search (date ranges, multiple filters)

## 🧪 Test Cases Mangler

1. Bulk operations med store datasets (>100 emails)
2. Concurrent access (2 users ser samme email)
3. Attachment download timeout handling
4. Email med manglende/korrupt data
5. Unicode/emoji i email subjects
6. Very long email subjects (>500 chars)
7. Emails uden sender navn

## 📊 Metrics & Monitoring

**Anbefaling:** Tilføj:
- Email processing time metrics
- Classification accuracy tracking
- Failed attachment download counter
- User action analytics (hvilke features bruges mest?)

---

**Samlet Vurdering:** 
- System fungerer grundlæggende ✅
- Flere kritiske fejl er nu rettet ✅
- God arkitektur med separation mellem router/service layers ✅
- Mangler polish og error handling på edge cases ⚠️
- Performance er acceptabel for <1000 emails ✅

**Anbefalet næste skridt:** Implementer de 5 umiddelbare fixes og test grundigt før deploy.
