# Spécifications Dashboard Analytics V2

> Phase Post-Launch (Phase 5)
> Pour la roadmap active, voir `../../../Project_Status.md`.

---

## Vision Stratégique

Le dashboard admin doit répondre à 3 questions :
1. **Le produit est-il utilisé ?** (Activation, Rétention)
2. **Le produit a-t-il de la valeur ?** (Engagement, Intent to pay)
3. **Le produit est-il viable ?** (Coûts, Rentabilité)

---

## Tier 1 — Métriques de Survie (Business Critical)

| Métrique | Formule | Cible Bêta | Pourquoi Vital |
|----------|---------|------------|----------------|
| **Activation Rate** | Users actifs / Users inscrits | > 60% | Inscription ≠ usage réel |
| **Rétention J7** | Users actifs J7 / Users J0 | > 40% | Reviennent-ils après 1 semaine ? |
| **Rétention J30** | Users actifs J30 / Users J0 | > 25% | Valeur durable ? |
| **Intent to Pay** | Users "oui" / Users actifs | > 30% | Monétisable ? |

**Définition "User Actif"** : Au moins 1 conversation avec 3+ messages dans les 7 derniers jours.

---

## Tier 2 — Métriques d'Engagement

| Métrique | Formule | Cible Bêta |
|----------|---------|------------|
| **Sessions/User/Semaine** | Total sessions / Users actifs / semaines | > 3 |
| **Messages/Session** | Total messages / Total sessions | > 5 |
| **Durée Session Moyenne** | Temps total / Sessions | > 8 min |
| **Taux Complétion** | Conversations feedback+ / Total | > 70% |

---

## Tier 3 — Métriques Économiques

| Métrique | Formule | Cible Bêta |
|----------|---------|------------|
| **Coût/User/Mois** | Coût Mistral total / Users actifs | < 1€ |
| **Tokens/User/Mois** | Tokens consommés / Users actifs | Baseline |
| **Ratio Input/Output** | Tokens output / Tokens input | ~2-3x |
| **Coût/Conversation** | Coût total / Conversations | < 0.05€ |

---

## Tier 4 — Métriques Produit

| Métrique | Action Si Problème |
|----------|-------------------|
| **Modes les + utilisés** | Focus dev sur populaires |
| **Modes jamais utilisés** | Supprimer ou repositionner |
| **Taux Recherche Web** | Valider feature SearXNG |
| **Taux Feedback Positif** | > 80% sinon problème qualité |
| **Feedback par Modèle** | Identifier modèle décevant |
| **Projets Créés/User** | Valider feature projets |
| **Fichiers Uploadés/User** | Valider feature upload |

---

## Tier 5 — Signaux d'Alerte (Red Flags)

| Signal | Seuil Critique | Signification |
|--------|---------------|---------------|
| Churn J7 > 70% | < 30% reviennent | Produit pas sticky |
| 1 Message/Session | Moyenne < 2 | Déception immédiate |
| 0 Projet Créé | > 50% users sans projet | Feature pas comprise |
| Feedback Négatif > 30% | 👎 > 30% | Qualité IA insuffisante |
| Tokens Large > 80% | Sur-utilisation | Coûts explosent |

---

## Vues Dashboard Admin

### Vue Quotidienne
```
┌─────────────────────────────────────────────────────────┐
│  AUJOURD'HUI                                            │
│  Users actifs: 8/10    Conversations: 23    Messages: 156
│  Tokens: 45K (0.12€)   Feedback: 👍 89% 👎 11%          │
└─────────────────────────────────────────────────────────┘
```

### Vue Hebdomadaire
```
┌─────────────────────────────────────────────────────────┐
│  SEMAINE 3                                              │
│  Nouveaux users: +3     Rétention J7: 45%               │
│  Sessions/user: 4.2     Messages/session: 6.1           │
│  Mode top: Rédacteur    Coût total: 2.34€               │
└─────────────────────────────────────────────────────────┘
```

### Vue Mensuelle
```
┌─────────────────────────────────────────────────────────┐
│  MOIS 1 - BILAN                                         │
│  Users totaux: 25       Actifs (J30): 12 (48%)          │
│  Conversations: 340     Messages: 2,450                 │
│  Coût Mistral: 8.50€    Coût/user actif: 0.71€          │
│  Intent to pay: 7/12 (58%) ✅                           │
│  Top modes: Rédacteur (34%), Assistant (28%), Code (18%)│
└─────────────────────────────────────────────────────────┘
```

---

## Données à Collecter

| Donnée | Table | Existe ? | Action |
|--------|-------|----------|--------|
| Date dernière activité user | User | À vérifier | Ajouter `last_activity_at` |
| Nombre sessions par user | UsageLog | Calculer | Grouper par user + date |
| Durée session | Complex | Optionnel | Via timestamps messages |
| Intent to pay | Hors BDD | Non | Sondage manuel fin bêta |

---

## Requêtes SQL Prioritaires

### Rétention J7
```sql
SELECT
    DATE(u.created_at) as cohort_date,
    COUNT(DISTINCT u.id) as users_total,
    COUNT(DISTINCT CASE
        WHEN ul.created_at BETWEEN u.created_at + INTERVAL 6 DAY
             AND u.created_at + INTERVAL 8 DAY
        THEN u.id
    END) as users_j7
FROM user u
LEFT JOIN usage_log ul ON ul.user_id = u.id
WHERE u.created_at >= NOW() - INTERVAL 30 DAY
GROUP BY cohort_date
ORDER BY cohort_date DESC;
```

### Top Modes
```sql
SELECT
    m.name,
    COUNT(DISTINCT c.id) as conversations,
    COUNT(msg.id) as messages
FROM mode m
LEFT JOIN conversation c ON c.mode_id = m.id
LEFT JOIN message msg ON msg.conversation_id = c.id
WHERE c.created_at >= NOW() - INTERVAL 30 DAY
GROUP BY m.id
ORDER BY messages DESC
LIMIT 10;
```

### Coût par User Actif
```sql
SELECT
    u.id,
    SUM(ul.input_tokens + ul.output_tokens) as total_tokens,
    SUM(ul.cost_euros) as total_cost
FROM user u
JOIN usage_log ul ON ul.user_id = u.id
WHERE ul.created_at >= NOW() - INTERVAL 30 DAY
GROUP BY u.id
HAVING COUNT(DISTINCT DATE(ul.created_at)) >= 3
ORDER BY total_cost DESC;
```

---

## Implémentation Technique

**Technologies** :
- Backend : Symfony + Doctrine (requêtes sur UsageLog, User, Conversation, Message)
- Frontend Admin : EasyAdmin + Chart.js
- Services : `AnalyticsService`, `RetentionService`, `CostService`

**Endpoints à créer** :
| Vue | Endpoint |
|-----|----------|
| Dashboard Home | `/admin/analytics` |
| Rétention | `/admin/analytics/retention` |
| Engagement | `/admin/analytics/engagement` |
| Économie | `/admin/analytics/economy` |
| Produit | `/admin/analytics/product` |
| Users Chauds | `/admin/analytics/hot-users` |

**Commande CLI** :
```bash
php bin/console app:analytics-report --period=month --format=json
```

---

## Sondage Fin de Bêta

```
1. À quelle fréquence utilises-tu LintellO ?
   [ ] Tous les jours / Plusieurs fois/semaine / 1x/semaine / Rarement / J'ai arrêté

2. Quel mode utilises-tu le plus ?
   [Liste déroulante des 17 modes]

3. La recherche web, tu l'utilises ?
   [ ] Souvent / Parfois / Jamais / Je ne savais pas

4. Si LintellO devenait payant (9,90€/mois), tu ferais quoi ?
   [ ] Je paie direct / Je réfléchis / Je pars

5. Qu'est-ce qui te manque pour payer ?
   [Texte libre]

6. Tu recommanderais LintellO à un ami ? (NPS 0-10)
```
