# 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_` é 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).