# LifeAnalytics RelAI Tools

LifeAnalytics expose uniquement des tools analytiques read-only. Laravel calcule les agrégats, comparaisons et corrélations ; le modèle les interprète. Tous les endpoints utilisent `POST`, exigent `Authorization: Bearer {LIFEANALYTICS_RELAI_TOOL_TOKEN}` et n’acceptent jamais de `user_id`.

Le fichier canonique de déclaration, avec schémas et exemples complets, est [`docs/relai-tools.json`](relai-tools.json).

## Sécurité commune

- L’entrée contient un `context_token` temporaire dont seul le hash SHA-256 est stocké.
- La période demandée doit être incluse dans celle du contexte.
- Les tools sont `isReadOnly: true` et n’exécutent aucun SQL libre.
- Les données absentes restent `null`; elles ne sont pas inventées.
- Une corrélation ou une différence de moyenne ne démontre aucune causalité.

## Déclarations

| Tool | Endpoint | Objet |
|---|---|---|
| `lifeanalytics.period_summary` | `/api/internal/relai/tools/period-summary` | Vue générale, qualité et tendances simples |
| `lifeanalytics.best_worst_days` | `/api/internal/relai/tools/best-worst-days` | Meilleurs et pires jours enrichis |
| `lifeanalytics.activity_impact` | `/api/internal/relai/tools/activity-impact` | Jours avec/sans une activité |
| `lifeanalytics.deepwork_impact` | `/api/internal/relai/tools/deepwork-impact` | Jours avec/sans deepwork |
| `lifeanalytics.sleep_score_relation` | `/api/internal/relai/tools/sleep-score-relation` | Groupes sommeil et score du lendemain |
| `lifeanalytics.phone_score_relation` | `/api/internal/relai/tools/phone-score-relation` | Groupes écran faible/élevé |
| `lifeanalytics.metric_correlations` | `/api/internal/relai/tools/metric-correlations` | Corrélations calculées côté Laravel |
| `lifeanalytics.day_detail` | `/api/internal/relai/tools/day-detail` | Détail complet d’un jour |
| `lifeanalytics.timeline` | `/api/internal/relai/tools/timeline` | Série journalière de métriques choisies |

## Mise à jour dans RelAI

Pour chaque objet de `relai-tools.json` :

1. Remplacer `${LIFEANALYTICS_RELAI_TOOL_TOKEN}` par le secret partagé.
2. Conserver l’application propriétaire `lifeanalytics` et `isReadOnly: true`.
3. Copier `http.method`, `http.url`, `inputSchema`, la description et le timeout souhaité.
4. Désactiver les anciennes déclarations `sleep_analysis`, `phone_analysis`, `activity_comparison`, `goal_progress` et `current_day_status` lorsqu’elles ne sont plus utilisées.

Les propriétés JSON Schema sont toujours de vrais objets et ne sont jamais représentées par un tableau vide.
