Livestreams et cockpit show

Utilisez l’historique des lives WhatCopilot et le cockpit show : préparer la lineup depuis l’inventaire, projeter prix enchère/floor/cible, générer une timeline de vente, puis comparer plan vs réel après import CSV.

Livestreams couvre deux surfaces : le **tableau d’historique importé** (`/app/livestreams`) et le **cockpit show** (`/app/livestreams/[id]`), hub opérationnel pour préparer et revoir un live Whatnot programmé.

Deux surfaces

Liste historique

  • Chemin : `/app/livestreams`
  • Source : agrégats CSV (`livestream_id`)
  • Classement CA net, commandes, acheteurs
  • Multi-sélection → Analyser avec Orion
  • Ouvrir la prep si un créneau est lié

Cockpit show

  • Chemin : `/app/livestreams/[id-événement]`
  • Source : créneau calendrier + lineup
  • Préparer produits, prix, ordre
  • Sidebar : Préparer vs Bilan
  • Demander à Orion sur le plan

Sections du cockpit

La sidebar de gauche regroupe la page par intention pour savoir à quoi sert chaque bloc.

GroupeSectionIntention
PréparerCréneauQuand et pourquoi ce show a lieu
PréparerLineupCe que vous comptez vendre et à quels prix
PréparerTimelineOrdre suggéré sur la fenêtre du live
BilanRésultatsKPI du live importé après le show
BilanDebriefPlan vs ce qui s’est réellement vendu

Tutoriel : connecter l’inventaire

  1. Stock d’abord

    Alimentez l’Inventaire de la même boutique Whatnot (manuel, depuis SKU vendus, ou CSV stock). Le COGS unitaire débloque les prix projetés.

  2. Ouvrir le cockpit

    Depuis le Calendrier, cliquez l’événement → `/app/livestreams/[id]`. La boutique de l’événement doit correspondre à celle de l’inventaire.

  3. Connecter l’inventaire

    Dans Lineup, cliquez Connecter l’inventaire, cochez les lots du show, puis Ajouter la sélection. Les articles déjà en lineup sont masqués.

  4. Ou produit manuel

    Utilisez Produit manuel pour un lot ponctuel (titre, SKU/catégorie optionnels, quantité, COGS). Les prix se préremplissent.

  5. Ajuster les prix

    Éditez entrée enchère, floor et cible (+10 %) en ligne, puis Sauver. Les rôles (opener / peak / filler / closer / VIP bait) sont aussi modifiables.

Prix projetés

À l’ajout d’un lot, WhatCopilot propose trois niveaux à partir du COGS pour connaître votre floor avant d’ouvrir les enchères :

  • **Floor (rentable)** ≈ `unit_cogs / (1 − 0,10)` — seuil après ~10 % de frais
  • **Cible (+10 %)** = `floor × 1,10` — objectif de marge nette légère
  • **Entrée enchère** ≈ `35 % du floor` (pas min. 1), éventuellement plafonnée au 25e percentile des départs historiques SKU/catégorie
Exemple
  • COGS = 10 € → floor ≈ 11,11 € → cible ≈ 12,22 € → entrée ≈ 4 €
  • Si les enchères passées de ce SKU ouvraient souvent vers 3 €, l’entrée peut être plafonnée plus bas.

Algorithme de suggestion

Générer les suggestions timeline calcule un score explicable par produit × heure dans votre créneau, puis place les lots de façon greedy sur des fenêtres d’environ 20 minutes.

Signaux (historique boutique via imports)

  • Chaleur horaire — quand votre boutique vend le plus
  • Fit SKU / catégorie × heure — quels types convertissent à quelle heure
  • Vélocité — force de CA du SKU
  • Score de marge — net vs COGS si dispo
  • Pression stock — prioriser les quantités basses / critiques
  • Heures des top acheteurs — closers / VIP
  • Nouveauté — SKU peu historiques éloignés d’un peak aveugle

Forme du score

`score(item, heure) = w_hour·chaleur + w_fit·fit + w_margin·marge + w_velocity·vélocité + w_stock·stock + w_buyer·acheteurs + w_novelty·nouveauté − w_risk·risqueSousFloor`

Les poids par défaut privilégient fit + chaleur + marge/vélocité, avec des poids plus faibles pour stock, acheteurs et nouveauté. Chaque placement stocke un `score_breakdown` consultable (UI + Orion).

Règles de placement show

  • Début → openers (lots connus, énergie)
  • Heures de peak → headliners (vélocité / marge)
  • Creux → fillers et tests de nouveauté contrôlés
  • Fin → closers / VIP bait si chevauchement top acheteurs

Résultats et debrief

  1. Importez le Seller Weekly Orders Report après le show (Imports)
  2. Dans Résultats, confirmez le match auto ou liez manuellement le livestream
  3. Relisez les KPI (commandes, acheteurs uniques, durée estimée, CA acheteur / net)
  4. Ouvrez Debrief pour voir les lots prévus vendus, unités, net, et vs floor / cible

Demander à Orion sur le plan

Depuis le cockpit, Demander à Orion ouvre une conversation avec l’id d’événement et la lineup. Orion appelle `suggestLiveLineup` pour lire le même coach pack structuré (insights, scores, prix — pas de CSV brut). Il peut appeler `proposeLiveLineupChanges` avec de vrais `itemId` ; **vous** confirmez Appliquer dans l’UI. Orion n’écrit jamais la lineup. `recompute=true` seulement si vous demandez un refresh des suggestions moteur.

Fonctions du tableau historique

  • Filtre compte ; recherche titre / id
  • Colonnes : live, commandes, acheteurs uniques, durée estimée (tooltip), CA acheteur, CA net
  • Tri défaut : CA net ; multi-sélection → Analyser avec Orion
  • Ouvrir la prep quand le livestream est lié à un événement calendrier

Limites

  • Pas d’API Whatnot temps réel — prep hors ligne ; résultats avec le lag du CSV hebdo
  • Cockpit démo en lecture seule
  • Matching lineup ↔ ventes : SKU d’abord, puis titre produit
  • Durée estimée historique ≠ durée officielle du stream

FAQ

Quelle différence entre `/app/livestreams` et `/app/livestreams/[id]` ?
La liste est l’historique CSV (KPI classés). La page détail est le cockpit d’un événement calendrier : lineup, prix, timeline, puis résultats/debrief une fois lié.
La durée des lives est-elle exacte ?
Sur le tableau historique, la durée est estimée via l’activité commandes du CSV, pas la durée officielle Whatnot. La timeline du cockpit utilise le début/fin du calendrier.
Comment sont calculés entrée enchère, floor et cible ?
À partir du COGS unitaire : floor ≈ COGS / (1 − 10 % de fees), cible = floor × 1,10, entrée ≈ 35 % du floor (plafonnée au p25 des départs enchère historiques si dispo). Les trois restent éditables.
Puis-je utiliser le cockpit en démo ?
Oui, en lecture seule. La démo affiche des lineups seedées ; création / édition / suggestions en écriture sont bloquées.