Spaces:
Sleeping
Sleeping
| <html lang="pt-BR"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>ConfereAI Admin | Fine-Tuning</title> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@700;900&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="style.css"> | |
| </head> | |
| <body> | |
| <div class="aurora-mesh"></div> | |
| <nav> | |
| <div class="logo"> | |
| <a href="index.html" class="logo"> | |
| <span>Confere<span class="vibrance">AI</span> Admin</span> | |
| </a> | |
| </div> | |
| <div class="nav-links"> | |
| <a href="index.html">Voltar ao App</a> | |
| </div> | |
| </nav> | |
| <main class="dashboard-container"> | |
| <!-- Login Section --> | |
| <section id="login-section" class="admin-login-container"> | |
| <div class="admin-card"> | |
| <h2 style="font-family: 'Outfit'; font-size: 2rem; margin-bottom: 1rem; text-align: center;">Acesso Restrito</h2> | |
| <p style="color: var(--text-secondary); margin-bottom: 2rem; text-align: center;">Insira a senha de administrador para gerenciar o aprendizado do motor neural.</p> | |
| <form id="login-form"> | |
| <div class="form-group"> | |
| <label for="admin-password">Senha do Administrador</label> | |
| <input type="password" id="admin-password" placeholder="••••••••" required> | |
| </div> | |
| <button type="submit" class="btn-secondary" style="width: 100%; margin-top: 1rem;">Entrar no Painel</button> | |
| </form> | |
| <div id="login-error" class="status-text hidden" style="color: var(--danger); text-align: center;">Senha incorreta.</div> | |
| </div> | |
| </section> | |
| <!-- Dashboard Section --> | |
| <section id="dashboard-section" class="hidden"> | |
| <div class="glass-card admin-panel"> | |
| <h2 class="section-title-admin">Treinar Modelo</h2> | |
| <p class="section-desc-admin">Faça upload de um arquivo .zip ou .rar contendo pastas 'real' e 'fake' com áudios (.mp3, .wav, .flac).</p> | |
| <div id="drop-zone" class="drop-zone admin-drop"> | |
| <div class="upload-icon"> | |
| <svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> | |
| <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path> | |
| <polyline points="17 8 12 3 7 8"></polyline> | |
| <line x1="12" y1="3" x2="12" y2="15"></line> | |
| </svg> | |
| </div> | |
| <h3 style="margin-bottom: 10px;">Arraste o arquivo ou clique</h3> | |
| <p style="color: var(--text-secondary); font-size: 0.9rem;">Limite: 100MB recomendados por lote</p> | |
| <input type="file" id="file-input" class="hidden" accept=".zip,.rar"> | |
| </div> | |
| <div id="selected-file-info" class="hidden" style="margin-bottom: 1.5rem; color: var(--success); font-weight: 500;"> | |
| Arquivo selecionado: <span id="filename-display"></span> | |
| </div> | |
| <button id="btn-upload-train" class="btn-secondary" style="width: 100%;" disabled>Iniciar Upload e Treinamento</button> | |
| <!-- Training Progress --> | |
| <div id="training-progress-container" class="hidden" style="margin-top: 2rem; text-align: left;"> | |
| <h4 style="color: var(--cyan); margin-bottom: 0.5rem;">Status do Treinamento</h4> | |
| <div class="progress-bar-container"> | |
| <div id="training-progress-bar" class="progress-bar"></div> | |
| </div> | |
| <div id="training-status-text" class="status-text">Preparando ambiente...</div> | |
| </div> | |
| </div> | |
| </section> | |
| </main> | |
| <script src="js/admin.js"></script> | |
| </body> | |
| </html> | |