refactor: models_api.py vira ponto de entrada sobre admin/api/
A ponte JSON do app tinha 1.395 linhas e 37 comandos de oito assuntos diferentes num arquivo só. Agora models_api.py guarda apenas a referência dos comandos, a tabela de despacho e o main(); cada assunto virou um módulo em admin/api/ (models, project, editing, zoom, subtitles, transcription, voice, review), com a base comum em shared.py. Nada muda para o app: ele continua chamando admin/models_api.py por caminho, e os 37 comandos respondem igual — verificado rodando a ponte de verdade. Duas coisas que a divisão obrigou a arrumar: - A saída passa por `shared.emit` chamada pelo módulo, não pelo nome importado. Isso preserva a propriedade de que trocar `emit` num lugar só captura a saída de todos os comandos — que era acidental quando tudo morava no mesmo arquivo, e vira intencional agora. - `_CANCEL` e o lock eram globais compartilhados. O registro de downloads foi para models.py, junto de quem o usa, com lock próprio: o antigo protegia ao mesmo tempo o dicionário e a escrita em stdout, duas coisas sem relação. Também: admin/test_models_api.py estava fora de `testpaths` e nunca rodava. Movido para code/tests/ e ligado ao gate — 1441 → 1454 testes (ver Engine/docs/05_EXPERIENCIAS.md #24). Lint zerado, 1454 testes passando. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4f5cf94443
commit
6090e229e9
@@ -1255,6 +1255,29 @@ o outro; percentil entrega um punhado útil nos dois casos.
|
||||
|
||||
---
|
||||
|
||||
## 24 — 2026-08-19 — Teste existia, mas estava fora da suíte
|
||||
|
||||
- **Sintoma:** `admin/test_models_api.py` (13 testes) nunca rodava. Não
|
||||
falhava — simplesmente não era coletado, então `models_api.py` figurava
|
||||
como "coberto" sem que uma única asserção fosse executada em nenhum
|
||||
commit.
|
||||
- **Causa raiz:** `testpaths = ["tests"]` no `pyproject.toml`, com o pytest
|
||||
rodando de `code/`. O arquivo morava em `admin/`, fora do alcance. Rodá-lo
|
||||
à mão também falhava (`ModuleNotFoundError: admin`), porque a raiz do
|
||||
repositório não entra no `sys.path` — ou seja, o único jeito de executá-lo
|
||||
exigia saber de antemão que ele existia e como.
|
||||
- **Solução adotada:** movido para `code/tests/test_models_api.py`, com o
|
||||
insert da raiz do repositório no `sys.path` ao lado do import que precisa
|
||||
dele. Passou a rodar no gate: 1441 → 1454 testes.
|
||||
- **Aprendizado:** um teste fora de `testpaths` é pior que teste nenhum — ele
|
||||
dá a sensação de rede sem ser rede. Ao mover ou criar teste fora da pasta
|
||||
padrão, confirme que a contagem total subiu; se não subiu, ele não está
|
||||
rodando. Vale também para o lint: `admin/` ainda não é coberto pelo
|
||||
`run_after_fix.sh`, que roda só dentro de `code/`.
|
||||
- **Estado:** `resolvido`
|
||||
|
||||
---
|
||||
|
||||
## Resumo rápido (índice)
|
||||
|
||||
| # | Data | Problema | Estado |
|
||||
@@ -1280,5 +1303,6 @@ o outro; percentil entrega um punhado útil nos dois casos.
|
||||
| 21 | 2026-08-19 | Teste ainda afirmava o default `zoom scale=1.3` removido do parser (agora vem do `zoom_scale` do usuário) | `resolvido` |
|
||||
| 22 | 2026-08-19 | `VideoPlayer` (AVKit) aborta em runtime no app compilado por `swiftc` — etapa 5 fechava o app; trocado por `AVPlayerLayer` | `resolvido` |
|
||||
| 23 | 2026-08-19 | Dividir `writer.py` em pacote quebrou `@patch('fcpxml.writer.subprocess')` — a suíte protege comportamento, não localização | `resolvido` |
|
||||
| 24 | 2026-08-19 | `admin/test_models_api.py` existia mas estava fora de `testpaths` — 13 testes que nunca rodaram | `resolvido` |
|
||||
|
||||
> Mantenha o índice acima sempre sincronizado com as entradas mais recentes.
|
||||
|
||||
Reference in New Issue
Block a user