---
page: products
sous-page: stats
route: /products/stats
statut: en-souffrance
version: 0.1
transverse-liées: [a-debattre (D1), conventions, i18n, design-system]
date: 2026-06-03
---

# CdC — `products/stats`

> 🟠 **EN SOUFFRANCE** — la **source de la donnée de performance** est parquée (`_transverse/a-debattre.md` **D1**). Concerne ici **deux perfs** : organique (pages produits) **et** Shopping (flux). Structure cible spécifiée, **rien ne se branche** tant que D1 n'est pas tranché.

## 1. Objectif *(cible)*

Donner la **performance des produits** sur les deux canaux et la faire reboucler : repérer les produits qui sous-performent (organique ou Shopping) et les envoyer en optimisation.

## 2. Périmètre

- **Dans (cible)** : perf **organique** par page produit (impressions, clics, position, CTR) ; perf **Shopping** (impressions, clics, coût, ROAS) ; tendances ; comparaisons.
- **Hors** : la **source** → **D1, en souffrance**.

## 3. User stories *(cible)*

- Je vois la perf **organique et Shopping** par produit.
- Je repère les produits qui **décrochent** → optimisation.

## 4. Fonctionnalités *(cible, gelées sur D1)*

- F1 — **Sélecteur de site global**.
- F2 — **Perf organique** par produit *(source = D1)*.
- F3 — **Perf Shopping** par produit *(source = D1 / Merchant–Ads)*.
- F4 — **Décrochage** → alimente `online`/`planning`.

## 5. UI / écrans *(cible)*

- Table produits + colonnes organique/Shopping + mini-charts. **Tant que D1 non tranché** : état « **perf en souffrance** ».

## 6. Données & actions *(cible)*

- **Affiché** : perf par produit (2 canaux). **Actions** : filtrer, comparer, envoyer en optimisation.

## 7. Modèle de données *(esquisse générique, en attente de D1)*

```
product_perf(id, product_id, channel, source, metric, value, captured_at)
   channel ∈ { organic, shopping }   -- source/metric dépendent de D1
```

## 8. API Hono *(cible)*

- `GET /sites/:siteId/products/stats` *(gelé sur D1)*
- `GET /sites/:siteId/products/stats/:productId`

## 9. Capacités requises *(cible)*

Ingestion d'une **source de perf** (D1, 2 canaux) · agrégation par produit · détection de décrochage.

## 10. Tools / capacités MCP *(cible)*

- `product_stats` (read) *(gelé sur D1)*

## 11. i18n

- UI localisée.

## 12. Qualité

- **Indexation** : noindex. A11y `data-tables`. Le reste dépend de D1.

## 13. Critères d'acceptation

- [ ] *(Bloqué)* — à définir une fois **D1 tranché**.
- [ ] L'écran affiche un état clair « en souffrance » tant que D1 non résolu.

## 14. Dépendances & risques · questions ouvertes

- **Bloqué par** : `_transverse/a-debattre.md` **D1**.
- **Impacte** : `products/online`, `products/planning`, `products/overview`.
