<%- include('../partials/head', { title, bodyClass: 'app-page admin-page' }) %>
<%- include('../partials/app-header') %>

<main class="app-main">
  <%- include('../partials/admin-nav') %>
  <section class="page-title">
    <p class="eyebrow">Administration</p>
    <h1>Pilotage TopStats</h1>
    <p>Vue rapide des utilisateurs, matchs synchronisés et logs de données.</p>
  </section>

  <section class="metric-grid">
    <article class="metric-card"><span><%= stats.users %></span><p>Usuarios</p></article>
    <article class="metric-card"><span><%= stats.matches %></span><p>Matchs cache</p></article>
    <article class="metric-card"><span><%= stats.competitions %></span><p>Compétitions actives</p></article>
    <article class="metric-card"><span><%= stats.neoReviewRequired %></span><p>Pronos à vérifier</p></article>
  </section>

  <section class="section-head">
    <div>
      <h2>Finance propriétaires</h2>
      <p>Brut encaissé, frais, commissions, coûts IA/API et bénéfice net à partager à 50/50.</p>
    </div>
    <a class="btn btn-soft btn-small" href="/admin/settings">Régler les coûts</a>
  </section>

  <section class="admin-finance-grid">
    <article class="admin-finance-card is-primary">
      <span>Mois en cours</span>
      <strong><%= formatEuroCents(finance.currentMonth.netProfitCents || 0) %></strong>
      <p>Bénéfice net estimé</p>
      <small>Part par propriétaire : <%= formatEuroCents(finance.currentMonth.ownerShareCents || 0) %></small>
    </article>
    <article class="admin-finance-card">
      <span>Revenu brut</span>
      <strong><%= formatEuroCents(finance.currentMonth.grossRevenueCents || 0) %></strong>
      <p><%= finance.currentMonth.transactions || 0 %> paiement<%= Number(finance.currentMonth.transactions || 0) > 1 ? 's' : '' %> enregistré<%= Number(finance.currentMonth.transactions || 0) > 1 ? 's' : '' %></p>
    </article>
    <article class="admin-finance-card">
      <span>Net après Stripe</span>
      <strong><%= formatEuroCents(finance.currentMonth.netAfterStripeCents || 0) %></strong>
      <p>Frais Stripe : <%= formatEuroCents(finance.currentMonth.stripeFeesCents || 0) %></p>
    </article>
    <article class="admin-finance-card">
      <span>Coûts variables</span>
      <strong><%= formatEuroCents((finance.currentMonth.affiliateCommissionCents || 0) + (finance.currentMonth.aiCostCents || 0) + (finance.currentMonth.apiCostCents || 0)) %></strong>
      <p>Affiliés <%= formatEuroCents(finance.currentMonth.affiliateCommissionCents || 0) %> · IA/API <%= formatEuroCents((finance.currentMonth.aiCostCents || 0) + (finance.currentMonth.apiCostCents || 0)) %></p>
    </article>
  </section>

  <section class="admin-finance-breakdown glass-panel">
    <div>
      <p class="eyebrow">Total estimé</p>
      <h2><%= formatEuroCents(finance.allTime.netProfitCents || 0) %> net</h2>
      <p>Part 50/50 : <strong><%= formatEuroCents(finance.allTime.ownerShareCents || 0) %></strong> par propriétaire.</p>
    </div>
    <dl>
      <div><dt>Brut total</dt><dd><%= formatEuroCents(finance.allTime.grossRevenueCents || 0) %></dd></div>
      <div><dt>Frais Stripe</dt><dd><%= formatEuroCents(finance.allTime.stripeFeesCents || 0) %></dd></div>
      <div><dt>Commissions affiliés</dt><dd><%= formatEuroCents(finance.allTime.affiliateCommissionCents || 0) %></dd></div>
      <div><dt>Coûts IA</dt><dd><%= formatEuroCents(finance.allTime.aiCostCents || 0) %></dd></div>
      <div><dt>Coûts API</dt><dd><%= formatEuroCents(finance.allTime.apiCostCents || 0) %></dd></div>
    </dl>
    <small>Frais Stripe estimés : <%= finance.assumptions.stripeFeePercent %>% + <%= formatEuroCents(finance.assumptions.stripeFixedFeeCents || 0) %> par paiement. Coûts API mensuels configurés : <%= formatEuroCents(finance.assumptions.monthlyApiCostCents || 0) %>.</small>
  </section>

  <section class="section-head">
    <div>
      <h2>Coût IA</h2>
      <p>Suivi estimé pour protéger la marge des abonnements.</p>
    </div>
  </section>
  <section class="metric-grid">
    <article class="metric-card"><span><%= ((aiUsage.todayCents || 0) / 100).toFixed(2) %>€</span><p>Hoy</p></article>
    <article class="metric-card"><span><%= ((aiUsage.sevenDaysCents || 0) / 100).toFixed(2) %>€</span><p>7 derniers jours</p></article>
  </section>
  <div class="table-card">
    <table>
      <thead><tr><th>Usuario</th><th>Coût 7j</th><th>Appels</th><th>Budget</th><th>Mode</th></tr></thead>
      <tbody>
        <% if (!aiUsage.topUsers.length) { %>
          <tr><td colspan="5">No hay consumo IA guardado por ahora.</td></tr>
        <% } %>
        <% aiUsage.topUsers.forEach((row) => { %>
          <tr>
            <td><%= row.name %><% if (row.email) { %><br><small><%= row.email %></small><% } %></td>
            <td><%= (row.spent_cents / 100).toFixed(2) %>€</td>
            <td><%= row.calls %></td>
            <td><%= row.budget_cents === null ? 'Système' : `${(row.budget_cents / 100).toFixed(2)}€` %></td>
            <td><%= row.budget_mode || 'normal' %></td>
          </tr>
        <% }) %>
      </tbody>
    </table>
  </div>

  <% if (stats.neoReviewRequired) { %>
    <section class="glass-panel admin-alert-panel">
      <div>
        <p class="eyebrow">Contrôle manuel</p>
        <h2><%= stats.neoReviewRequired %> prono<%= stats.neoReviewRequired > 1 ? 's' : '' %> TopStats à vérifier</h2>
        <p>Un résultat n’a pas pu être validé automatiquement après le match. Ouvrez l’historique complet pour contrôler le marché et corriger si nécessaire.</p>
      </div>
      <a class="btn btn-soft btn-small" href="/historique-neo">Voir l’historique TopStats</a>
    </section>
  <% } %>

  <section class="admin-actions">
    <form method="post" action="/admin/sync">
      <button class="btn btn-primary" type="submit">Synchroniser les matchs du jour</button>
    </form>
    <form method="post" action="/admin/daily-analysis/regenerate">
      <button class="btn btn-soft" type="submit">Régénérer l’analyse du jour</button>
    </form>
    <p>À utiliser après minuit, après un changement de configuration, ou si la landing affiche une analyse obsolète.</p>
  </section>

  <section class="section-head">
    <div>
      <h2>Matchs synchronisés</h2>
      <p>Derniers matchs présents dans le cache MySQL.</p>
    </div>
  </section>
  <div class="card-stack">
    <% matches.forEach((match) => { %>
      <%- include('../partials/match-card', { match }) %>
    <% }) %>
  </div>

  <section class="section-head">
    <div>
      <h2>Logs récents</h2>
      <p>Errores y sincronizaciones de datos.</p>
    </div>
  </section>
  <div class="table-card">
    <table>
      <thead><tr><th>Niveau</th><th>Message</th><th>Date</th></tr></thead>
      <tbody>
        <% if (!logs.length) { %>
          <tr><td colspan="3">No hay logs de datos por ahora.</td></tr>
        <% } %>
        <% logs.forEach((log) => { %>
          <tr><td><%= log.level %></td><td><%= log.message %></td><td><%= formatDate(log.created_at) %></td></tr>
        <% }) %>
      </tbody>
    </table>
  </div>
</main>

<%- include('../partials/bottom-nav') %>
<%- include('../partials/footer') %>
