feat: criada a guia Trilhas com processamento em lote e progresso

- criada a guia Trilhas com processamento em lote e progresso por música
- simplificada a guia Trilhas para ocultar a configuração interna dos modelos

Resumo:
- 12 arquivos alterados
- 1 novos
- 11 modificados
- 0 removidos

 11 files changed, 173 insertions(+), 41 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/cep-plugin/styles.css
  - code/engine/analisar_trilhas.py
  - code/engine/carregar_plano_de_edicao.py
  - code/engine/executar_scanner.py
  - code/engine/persistencia/__init__.py
  - code/engine/persistencia/repositorio_de_trilhas.py
  - code/engine/testes/test_carregar_plano_de_edicao.py
  - code/engine/testes/test_executar_scanner.py
  - code/engine/testes/test_repositorio_de_trilhas.py
This commit is contained in:
João Henrique
2026-09-10 13:59:25 -04:00
parent b1272a5e6e
commit 4c04365934
12 changed files with 236 additions and 41 deletions
+2 -7
View File
@@ -301,16 +301,11 @@
<section class="card">
<div class="card-head"><h2>Pasta de trilhas musicais</h2><span class="card-kicker">Catálogo local</span></div>
<div class="file-field">
<input type="text" id="trilhasPasta" spellcheck="false" autocomplete="off" placeholder="Selecione uma pasta de músicas">
<input type="text" id="trilhasPasta" spellcheck="false" autocomplete="off" placeholder="Selecione uma pasta de músicas" oninput="trilhasAtualizarEstado()">
<button type="button" class="button button-ghost" onclick="trilhasSelecionarPasta()">Selecionar…</button>
</div>
<p class="field-help" id="trilhasPastaStatus">O caminho será salvo no banco para reutilizar esta pasta depois.</p>
<label class="field-label" for="trilhasModelos">Pasta dos modelos Essentia</label>
<div class="file-field">
<input type="text" id="trilhasModelos" spellcheck="false" autocomplete="off" placeholder="Opcional: pasta com os modelos .pb e .json">
<button type="button" class="button button-ghost" onclick="trilhasSelecionarModelos()">Selecionar…</button>
</div>
<p class="field-help">Sem os modelos, serão salvos apenas os descritores técnicos. Com eles, gênero e humor também serão classificados pelo áudio.</p>
<p class="field-help">A análise usa os modelos Essentia instalados internamente pela aplicação. Você não precisa localizar nem selecionar essa pasta.</p>
<button class="button button-primary" id="btnTrilhasAnalisar" onclick="trilhasAnalisar()" type="button" disabled>Analisar trilhas</button>
</section>
<section class="card" id="trilhasProgressoCard" hidden>