Cco / docs /PENDENCIAS.md
Gabriel Sapucaia
Deploy CCO Apoena (réplica do cco)
4ce2557 verified
|
Raw
History Blame Contribute Delete
3.39 kB
# Pendências — CCO Apoena
Estado: réplica funcional (todos os endpoints respondem 200, dados reais jan–jun/2026).
Itens abaixo são melhorias/decisões que ficaram para uma próxima rodada.
## Dados / cadastros
- **API REST de cadastros (F2M_BEARER_TOKEN)** — as tabelas `liberacoes_lavra` e
`teores_ouro` (cadastro de liberações + teor de Au por liberação) vêm da API REST
`*-ws.miningcontrol.cloud/webservice` com Bearer JWT. Não temos o token da Apoena nem
a URL confirmada. Sem isso, `/api/liberacoes` retorna painel vazio (degrada gracioso,
campo `indisponivel`). **Obter o token e confirmar `F2M_API_BASE`** no tenant Apoena.
Obs: o teor de Au já vem na base 7 (`pivot_qualidade.AU`) — o cadastro REST acrescenta
o cruzamento liberação×bancada×validade.
## LLM (OpenRouter)
- **`OPENROUTER_KEY` inválida** — a key herdada do cco (`sk-or-v1...`) retorna
`401 "User not found"` (revogada/conta inexistente). Afeta `/api/analise` (análise
textual) e o chat LLM — **degrada gracioso** (fallback heurístico cobre, o painel
ainda gera o snapshot). Para reativar a análise por LLM: gerar uma key nova em
openrouter.ai e atualizar o secret `OPENROUTER_KEY` do Space (e o `.env.local`).
## Artefatos calibrados (gerados a partir do DB Apoena)
- `dashboard_apn/equipment_categories.json` — classificação produção/marginal/infra
(gerado por `scripts/classify_equipments.py`).
- `viagens_baseline.duckdb` — baseline 90d de saúde de viagens
(gerado por `scripts/build_viagens_baseline.py`). Sem ele, `/api/viagens_saude` = "indisponível".
- `dashboard_apn/thresholds_calibrados.json` — percentis de fila/viagens/ciclo p/ recomendações
(gerado por `dashboard_apn/calibrar_thresholds.py`). Há fallbacks embutidos enquanto ausente.
- `cycle_benchmarks.json` — regressão cota×dmt×ciclo. O de Almas (`50.8-0.111*cota+1.017*dmt`)
**não vale** para Apoena. Recalibrar. Atenção: em Apoena `cota` extraída de `LIB_<NNNN>`
é id de liberação, não cota métrica — a regressão precisa de outra variável ou recalibração.
## Não portados (decisão de escopo)
- ~~**Deploy HF**~~ — feito: Space `gabrielsapucaia02/cco-apn` (público, RUNNING) via
`scripts/deploy_hf.py`. Writer autossuficiente (DB embutido + poll F2M).
- **GPS / câmeras**: removidos por escopo (Sorteio de Pesagem depende de GPS — removido junto).
- **`seed_equipamento_perfil.py`**: as listas nominais (cemitério/quadrantes/reincidentes) são
conhecimento manual de Almas. `equipamento_perfil` fica vazio → enriquecimento de relatórios
apenas não adiciona tags (sem quebrar). Repovoar com radiografia da Apoena se desejado.
- **Tests** (`tests/`): suíte do cco não portada (fixtures dependem de schema/dados Almas).
## Limpezas opcionais
- `dashboard_apn/static/index.html`: as views ocultas (Mapa, Viagens, Câmeras, Pesagem) ainda
têm DOM morto com `onclick` para funções removidas. São inalcançáveis (sem aba) e protegidas
por type-guards — não chamam endpoints mortos. Remover num passo de limpeza se quiser.
- `dashboard_apn/recomendacoes_*.py`: alguns comentários/docstrings ilustrativos ainda citam
nomes de equipamento de Almas ('EH 087'). Não afeta execução.
- `scout_apoena.py` (raiz): probe inicial de descoberta das bases. Pode ser removido
(`scripts/validate_schema.py` cobre o profiling).