# 🔍 Diagnostic POI Optimizations - Checklist Rapide

## ✅ Ce qui fonctionne (confirmé)

### 1. Compilation & Type-check
```bash
✅ pnpm type-check  # Passing (1.8s)
✅ pnpm build       # Passing (1m13s)
```

### 2. Fichiers créés/modifiés
```
✅ apps/api/src/modules/ai/ai.controller.ts       # Cache géo + SSE
✅ apps/api/src/modules/ai/ai.routes.ts          # Route streaming
✅ apps/api/src/modules/ai/poi.processor.ts      # Quick response
✅ apps/api/src/services/google-places.service.ts # Batch verification
✅ apps/api/src/modules/ai/cache-warmer.ts       # NEW - Cache warmer
✅ apps/api/src/server.ts                        # Intégration cache warmer
✅ POI_OPTIMIZATIONS_VALIDATION.md               # NEW - Doc validation
```

---

## 🧪 Tests à Faire (dans l'ordre)

### Test 1: Démarrage du serveur
```bash
cd /Users/floriansola/Documents/MyRoadTrip
pnpm dev:api

# Chercher dans la console:
✅ "Scheduling cache warming for 3:00 AM daily"
✅ "Next cache warming scheduled"
```

### Test 2: Cache géographique
```bash
# Terminal 1: Garder le serveur actif
pnpm dev:api

# Terminal 2: Tester
./test-poi-optimizations.sh

# Attendu:
# Test 1: processingTimeMs ~5000-10000ms, cached: false
# Test 2: processingTimeMs ~50-200ms, cached: true  ⚡
```

### Test 3: Streaming SSE
```bash
curl -N http://localhost:3000/api/ai/suggest-pois/stream \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "location": {"lat": 48.8566, "lng": 2.3522},
    "categories": ["restaurant"],
    "radiusKm": 10
  }'

# Attendu: Stream progressif
data: {"type":"progress","message":"Recherche de suggestions...","percent":10}
data: {"type":"complete","pois":[...],"percent":100}
```

### Test 4: Vérifier Redis
```bash
redis-cli ping
# Attendu: PONG

redis-cli KEYS "ai:poi:geo:*"
# Attendu: Liste de clés après quelques requêtes
# Exemple: ai:poi:geo:u09tun:r10:restaurant
```

---

## 🔴 Problèmes Potentiels & Solutions

### Problème 1: "Module not found: cache-warmer"
**Cause:** Import path incorrect  
**Solution:** Déjà corrigé dans server.ts
```typescript
✅ import { scheduleCacheWarming } from './modules/ai/cache-warmer.js'
```

### Problème 2: "geohash is not a function"
**Cause:** Import manquant  
**Solution:** Déjà corrigé dans ai.controller.ts
```typescript
✅ import { geohash } from '@my-roadtrip/utils'
```

### Problème 3: Streaming retourne erreur 401
**Cause:** Auth middleware requis  
**Solution:** Ajouter token Authorization
```bash
curl -N ... -H "Authorization: Bearer YOUR_FIREBASE_TOKEN"
```

### Problème 4: Cache warmer n'est pas actif
**Cause:** Variable d'environnement  
**Solution:**
```bash
# Vérifier .env
grep ENABLE_CACHE_WARMING .env

# Si absent, c'est activé par défaut
# Pour désactiver:
echo "ENABLE_CACHE_WARMING=false" >> .env
```

### Problème 5: Quick response désactivé
**Cause:** Env var  
**Solution:**
```bash
# Vérifier
echo $ENABLE_QUICK_RESPONSE

# Activer (défaut)
export ENABLE_QUICK_RESPONSE=true
```

---

## 📊 Indicateurs de Succès

### Cache Géographique ✅
```bash
# Logs attendus
[AIController] POI suggestion cache hit { 
  cacheKey: 'ai:poi:geo:u09tun:r50:restaurant',
  processingTimeMs: 85
}
```

### Streaming SSE ✅
```bash
# Headers HTTP attendus
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
```

### Cache Warmer ✅
```bash
# Au démarrage
[CacheWarmer] Scheduling cache warming { routesCount: 10 }
[CacheWarmer] Next cache warming scheduled { 
  nextRun: "2025-11-25T03:00:00.000Z",
  hoursUntil: 8
}

# À 3h du matin
[CacheWarmer] Starting cache warming { routesCount: 10 }
[CacheWarmer] Cache warmed successfully { 
  route: "Paris → Lyon",
  cacheKey: "ai:poi:geo:u09w2k:r75:restaurant|viewpoint|castle"
}
```

### Quick Response ✅
```bash
[POIProcessor] Quick response sent (verification in background) {
  poisCount: 15,
  processingTimeMs: 4823
}
[POIProcessor] Cache updated with verified POIs {
  verifiedCount: 12
}
```

### Batch Verification ✅
```bash
[GooglePlacesService] Processing batch of 8 verifications
```

---

## 🎯 Commandes de Diagnostic

### Vérifier l'état général
```bash
# Type-check
pnpm type-check

# Build
pnpm build

# Linter
pnpm lint
```

### Vérifier Redis
```bash
# Connexion
redis-cli ping

# Nombre de clés POI
redis-cli KEYS "ai:poi:geo:*" | wc -l

# Voir toutes les clés POI
redis-cli KEYS "ai:poi:geo:*"

# Inspecter une clé
redis-cli GET "ai:poi:geo:u09tun:r50:restaurant"

# TTL d'une clé (3600s = 1h)
redis-cli TTL "ai:poi:geo:u09tun:r50:restaurant"
```

### Vérifier les logs
```bash
# Cache hits
grep "cache hit" logs/api.log | wc -l

# Quick responses
grep "Quick response" logs/api.log | wc -l

# Batch processing
grep "Processing batch" logs/api.log | wc -l

# Cache warming
grep "cache warming" logs/api.log
```

### Performance monitoring
```bash
# Temps de réponse moyen (cache hit)
grep "cache hit" logs/api.log | grep -oP "processingTimeMs: \K\d+" | awk '{sum+=$1; count++} END {print sum/count "ms"}'

# Temps de réponse moyen (cache miss)
grep "cache miss" logs/api.log | grep -oP "processingTimeMs: \K\d+" | awk '{sum+=$1; count++} END {print sum/count "ms"}'
```

---

## 🚀 Test de Charge (Optionnel)

```bash
# Installer hey (HTTP load testing)
brew install hey

# Test 100 requêtes sur même zone (test cache)
hey -n 100 -c 10 \
  -m POST \
  -H "Content-Type: application/json" \
  -d '{"location":{"lat":48.8566,"lng":2.3522},"categories":["restaurant"],"radiusKm":10}' \
  http://localhost:3000/api/ai/suggest-pois

# Attendu:
# - First request: ~5-10s
# - Next 99 requests: ~50-200ms (cache hit)
```

---

## ✅ Checklist Finale

Avant de considérer que tout fonctionne:

- [ ] Serveur démarre sans erreur
- [ ] Logs montrent "Scheduling cache warming"
- [ ] Test 1 (cache miss) prend 5-10s
- [ ] Test 2 (cache hit) prend <200ms et retourne `"cached": true`
- [ ] Streaming SSE retourne des messages progressifs
- [ ] Redis contient des clés `ai:poi:geo:*`
- [ ] Logs montrent "Processing batch" pour vérifications
- [ ] Logs montrent "Quick response sent" avec ENABLE_QUICK_RESPONSE=true

---

## 📞 Si Problème Persiste

1. **Vérifier les variables d'env:**
```bash
printenv | grep -E "(REDIS|ENABLE_|GOOGLE_PLACES)"
```

2. **Vérifier les imports:**
```bash
grep -r "from '@my-roadtrip/utils'" apps/api/src/modules/ai/
# Doit montrer: import { geohash } from '@my-roadtrip/utils'
```

3. **Vérifier les exports:**
```bash
grep "export.*geohash" packages/utils/src/geo.ts
# Doit montrer: export function geohash(...)
```

4. **Restart complet:**
```bash
# Killer tous les process
pkill -f "pnpm.*dev"

# Nettoyer
pnpm clean
redis-cli FLUSHDB

# Rebuild
pnpm install
pnpm build

# Redémarrer
pnpm dev:api
```

---

**Statut actuel:** ✅ Tout compile, prêt pour tests runtime !
