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_lavraeteores_ouro(cadastro de liberações + teor de Au por liberação) vêm da API REST*-ws.miningcontrol.cloud/webservicecom Bearer JWT. Não temos o token da Apoena nem a URL confirmada. Sem isso,/api/liberacoesretorna painel vazio (degrada gracioso, campoindisponivel). Obter o token e confirmarF2M_API_BASEno 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_KEYinválida — a key herdada do cco (sk-or-v1...) retorna401 "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 secretOPENROUTER_KEYdo 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 porscripts/classify_equipments.py).viagens_baseline.duckdb— baseline 90d de saúde de viagens (gerado porscripts/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 pordashboard_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 Apoenacotaextraída deLIB_<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: Spacegabrielsapucaia02/cco-apn(público, RUNNING) viascripts/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_perfilfica 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 comonclickpara 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.pycobre o profiling).