// Testing Ads — données complètes
// Chaque vidéo a tout ce qu'il faut pour peupler kanban + détail + live + fiche.

// Influenceuses (réutilisable pour Annuaire)
window.TA_INFLUENCERS = {
  'sophie.glm':  { handle: '@sophie.glm',  name: 'Sophie M.',    abonnes: '24,3K', er: '3,1%', videos: 4, ca: '1 240€', code: 'SOPHIE20', tier: 'micro', status: 'Active' },
  'camille.b':   { handle: '@camille.b',   name: 'Camille B.',   abonnes: '12,8K', er: '4,2%', videos: 2, ca: '480€',   code: 'CAMI15',   tier: 'micro', status: 'Active' },
  'lina.style':  { handle: '@lina.style',  name: 'Lina K.',      abonnes: '38,1K', er: '2,4%', videos: 6, ca: '2 100€', code: 'LINA10',   tier: 'mid',   status: 'Active' },
  'nour.daily':  { handle: '@nour.daily',  name: 'Nour A.',      abonnes: '8,9K',  er: '5,6%', videos: 1, ca: '210€',   code: 'NOUR20',   tier: 'nano',  status: 'Active' },
  'manon.lou':   { handle: '@manon.lou',   name: 'Manon L.',     abonnes: '16,7K', er: '3,8%', videos: 3, ca: '890€',   code: 'MANON12',  tier: 'micro', status: 'Active' },
  'emma.paris':  { handle: '@emma.paris',  name: 'Emma R.',      abonnes: '22,4K', er: '2,9%', videos: 2, ca: '620€',   code: 'EMMA15',   tier: 'micro', status: 'Active' },
  'jade.bcn':    { handle: '@jade.bcn',    name: 'Jade T.',      abonnes: '14,1K', er: '3,3%', videos: 5, ca: '1 480€', code: 'JADE10',   tier: 'micro', status: 'Active' },
  'ines.bx':     { handle: '@inès.bx',     name: 'Inès F.',      abonnes: '9,7K',  er: '4,7%', videos: 1, ca: '180€',   code: 'INES20',   tier: 'nano',  status: 'Active' },
  'chloe.smile': { handle: '@chloe.smile', name: 'Chloé V.',     abonnes: '11,2K', er: '4,1%', videos: 3, ca: '720€',   code: 'CHLOE10',  tier: 'micro', status: 'Active' },
  'lea.mtp':     { handle: '@léa.mtp',     name: 'Léa B.',       abonnes: '18,9K', er: '3,5%', videos: 2, ca: '540€',   code: 'LEA15',    tier: 'micro', status: 'Active' },
};

// Vidéos en pipeline — chaque ligne = 1 carte
window.TA_VIDEOS_INITIAL = [
  { id: 'v1',  inf: 'lea.mtp',     status: 'source',  receivedHours: 0.2, dur: '1:55', thumbSeed: 7 },
  { id: 'v2',  inf: 'chloe.smile', status: 'kit',     receivedHours: 0.8, dur: '1:17', thumbSeed: 12, kitProgress: 0.7 },
  { id: 'v3',  inf: 'jade.bcn',    status: 'kit',     receivedHours: 1.4, dur: '1:30', thumbSeed: 4,  kitProgress: 0.3 },
  { id: 'v4',  inf: 'camille.b',   status: 'toEdit',  receivedHours: 26,  dur: '0:58', thumbSeed: 2 },
  { id: 'v5',  inf: 'lina.style',  status: 'toEdit',  receivedHours: 70,  dur: '2:11', thumbSeed: 5 },
  { id: 'v6',  inf: 'nour.daily',  status: 'toEdit',  receivedHours: 132, dur: '1:23', thumbSeed: 9 }, // > 4j → stale
  { id: 'v7',  inf: 'manon.lou',   status: 'editing', receivedHours: 50,  dur: '0:46', thumbSeed: 3, takenBy: 'Katlyn', takenHoursAgo: 4 },
  { id: 'v8',  inf: 'emma.paris',  status: 'edited',  receivedHours: 38,  dur: '1:08', thumbSeed: 6, finalFile: 'katlyn-EMMA15-v2.mp4', finalSize: '54Mo' },
  { id: 'v9',  inf: 'jade.bcn',    status: 'testing', receivedHours: 96,  dur: '1:30', thumbSeed: 10, metaCampaign: '6543271', daysLive: 2, kpi: { ctr: '2.4%', cpa: '18€', roas: '2.1', spend: '36€', impressions: '1,5K', signal: 'scale' } },
  { id: 'v10', inf: 'ines.bx',     status: 'testing', receivedHours: 168, dur: '0:52', thumbSeed: 1,  metaCampaign: '6543289', daysLive: 3, kpi: { ctr: '1.1%', cpa: '32€', roas: '0.7', spend: '96€', impressions: '2,1K', signal: 'kill' } },
  // archive (verdict)
  { id: 'va1', inf: 'sophie.glm',  status: 'scaled',  receivedHours: 240, dur: '1:42', thumbSeed: 8, metaCampaign: '6543198', daysLive: 5, kpi: { ctr: '3.2%', cpa: '12€', roas: '3.4', spend: '180€', impressions: '8,3K' } },
  { id: 'va2', inf: 'camille.b',   status: 'killed',  receivedHours: 260, dur: '0:48', thumbSeed: 11, metaCampaign: '6543099', kpi: { ctr: '0.8%', cpa: '48€' }, killReason: 'Perf trop faible' },
];

// Brief par vidéo (pour le détail)
window.TA_BRIEF_FOR = (videoId) => ({
  duree_cible: '15-25s',
  mentions_obligatoires: ['code promo', 'argent 925', 'plaqué or 18k'],
  mentions_a_eviter: ['gratuit', 'soldes', 'liquidation'],
  angle: "Bijou subtil qu'on porte tous les jours — preuve d'usage sur 3 mois.",
  contract: '#' + (420 + parseInt(videoId.slice(1)) || 421),
});

// Hooks générés (transcription auto)
window.TA_HOOKS_FOR = (videoId) => ([
  { tc: '0:03', text: "« Le bijou que je ne quitte plus depuis 3 mois… »", score: 0.92 },
  { tc: '0:18', text: "« Les filles, j'ai trouvé mon collier signature. »", score: 0.81 },
  { tc: '0:41', text: "« Argent 925, doré or rose, et ça vit sous la douche. »", score: 0.74 },
]);

// Transcription (pour le détail)
window.TA_TRANSCRIPT_FOR = (videoId) => ([
  { tc: '0:03', text: "Le bijou que je ne quitte plus depuis 3 mois — pour vous donner une idée." },
  { tc: '0:11', text: "Au début je pensais que ça noircirait à la douche mais non, rien." },
  { tc: '0:18', text: "Les filles, j'ai trouvé mon collier signature." },
  { tc: '0:26', text: "Et le code vous donne 20% sur tout le site." },
  { tc: '0:35', text: "Je l'ai aussi en bracelet et en boucles d'oreilles assorties." },
  { tc: '0:41', text: "Argent 925, doré or rose 18 carats, ça vit sous la douche." },
  { tc: '0:50', text: "Voilà ! Lien et code en bio, je vous embrasse." },
]);

// Audiences sauvegardées Meta (pour le push flow)
window.TA_META_AUDIENCES = [
  { id: 'aud-1', name: 'FR · Femmes 22-38 · bijoux & mode', size: '1,8M', isDefault: true },
  { id: 'aud-2', name: 'FR · Lookalike acheteuses 1%',      size: '650K' },
  { id: 'aud-3', name: 'FR · Engagées Insta 90j',           size: '180K' },
  { id: 'aud-4', name: 'BE/CH/LU · Femmes 22-38',           size: '420K' },
];

// Statut → métadonnées d'affichage
window.TA_STATUS_META = {
  source:   { emoji: '📥', label: 'Source reçue', short: 'Reçue',     variant: 'gray', who: 'auto',    description: 'Vidéo brute reçue de l\'influenceuse, en attente d\'extraction du kit.' },
  kit:      { emoji: '⚙️', label: 'Kit en prép.', short: 'Kit prép',  variant: 'gray', who: 'auto',    description: 'Transcription + extraction de hooks en cours.' },
  toEdit:   { emoji: '✂️', label: 'À monter',     short: 'À monter',  variant: 'yel',  who: 'Katlyn',  description: 'Kit prêt — montage attendu.' },
  editing:  { emoji: '🎬', label: 'En montage',   short: 'Montage',   variant: 'blu',  who: 'Katlyn',  description: 'Montage en cours dans CapCut.' },
  edited:   { emoji: '✅', label: 'Montée',       short: 'Montée',    variant: 'grn',  who: 'Katlyn',  description: 'Créa finale déposée, prête à pousser en testing.' },
  testing:  { emoji: '📡', label: 'En testing',   short: 'Testing',   variant: 'prp',  who: 'Benjamin', description: 'Live sur Meta Ads, en évaluation.' },
  scaled:   { emoji: '🚀', label: 'Scalée',       short: 'Scalée',    variant: 'grn',  who: '—',       description: 'Verdict positif — campagne montée en budget.' },
  killed:   { emoji: '❌', label: 'Killée',       short: 'Killée',    variant: 'red',  who: '—',       description: 'Verdict négatif — campagne arrêtée.' },
};

// Ordre du pipeline (pour stale & transitions)
window.TA_PIPELINE_ORDER = ['source', 'kit', 'toEdit', 'editing', 'edited', 'testing', 'scaled', 'killed'];

// Helpers d'affichage
window.TA_FORMAT = {
  age(hours) {
    if (hours < 1) return 'à l\'instant';
    if (hours < 24) return `il y a ${Math.round(hours)}h`;
    const d = Math.round(hours / 24);
    return `il y a ${d}j`;
  },
  ageShort(hours) {
    if (hours < 24) return `${Math.round(hours)}h`;
    return `${Math.round(hours / 24)}j`;
  },
  isStale(v, thresholdDays = 4) {
    // Stale = dans un statut en attente humaine depuis > seuil
    const human = ['toEdit', 'editing', 'edited'].includes(v.status);
    if (!human) return false;
    return v.receivedHours > thresholdDays * 24;
  },
};

// Raisons de kill
window.TA_KILL_REASONS = [
  { id: 'perf', label: 'Perf trop faible (CTR/CPA)' },
  { id: 'brief', label: 'Hors brief / angle non vendu' },
  { id: 'tech', label: 'Problème technique (son, qualité)' },
  { id: 'comments', label: 'Commentaires négatifs / brand safety' },
  { id: 'duplicate', label: 'Doublon avec autre créa' },
  { id: 'other', label: 'Autre' },
];
