Repository navigation
AlertTools 1.2.0 release candidate - #20
BaruqueRodrigues wants to merge 5 commits into
Conversation
|
Olá, @BaruqueRodrigues. Obrigado pelo trabalho nesta refatoração. Sempre que possível, trabalharmos com PRs menores, com responsabilidades bem definidas. Isso facilita a revisão, permite identificar regressões com mais precisão e simplifica bastante o rollback quando alguma alteração apresenta problemas. Neste PR estamos reunindo mudanças de arquitetura, nova API pública, compatibilidade com funções legadas, acesso ao banco, paralelismo, testes, CI, documentação e política de migração. São alterações importantes, mas que poderiam ser introduzidas e validadas progressivamente. Quando tudo chega no mesmo PR, fica mais difícil distinguir uma melhoria interna de uma mudança de comportamento que afeta outros componentes. Revisei o PR em relação ao A direção da refatoração faz sentido. Separar leitura, processamento e persistência é uma evolução importante para o pacote. Minha preocupação está em garantir que essa evolução não altere contratos existentes sem a devida validação e que a nova API seja consistente para qualquer consumidor, não apenas para o AlertaDengueAnalise. Alguns pontos de atenção: 1. Compatibilidade com a API legadaEste é o principal bloqueador de migração que identifiquei. No No PR, esses argumentos passam a ser obrigatórios. O problema é que o ale <- pipe_infodengue(
cidades,
cid10 = cid10,
nowcasting = now_mode,
finalday = report_end_date,
narule = "arima",
iniSE = 201001,
dataini = "sinpri",
completetail = 0
)
restab <- tabela_historico(
ale,
iniSE = report_epiweek - window_weeks
)Com a versão proposta, a execução falha inicialmente na validação de O consumidor também possui um mecanismo de recuperação que executa os municípios individualmente quando o processamento estadual falha. Porém, esse caminho utiliza os mesmos argumentos e também seria afetado. Concordo com a exigência de conexões e datas explícitas na nova API. É uma decisão correta para melhorar o controle das dependências. Entretanto, precisamos preservar a compatibilidade dos wrappers legados enquanto existirem consumidores que dependem desses contratos. O próprio O Minha sugestão é manter o contrato legado durante a transição e validar a migração dos consumidores antes de remover ou alterar esse comportamento. 2. Parâmetros de ZikaO comportamento dos parâmetros de Zika também merece atenção. Na implementação atual, existe um fallback que utiliza os parâmetros de dengue quando o CID10 não corresponde a dengue ou chikungunya. No PR, o fetch_alert_parameters(
conn = datasource,
geocodes = cities,
disease = cid10
)A nova consulta procura especificamente os parâmetros de Se não houver parâmetros cadastrados para todos os municípios solicitados, a execução será interrompida. Considero mais correto que a nova API trabalhe com parâmetros específicos de cada doença. Entretanto, precisamos verificar a disponibilidade desses dados e decidir como será feita a transição do comportamento anterior. Sugiro incluir testes para Zika, cobrindo municípios com e sem parâmetros específicos, e confirmar qual comportamento deve ser mantido nas funções legadas. 3. Padronização dos geocódigos e identificação das doençasAqui identifiquei dois pontos relacionados. O primeiro é a nomenclatura utilizada pela nova API. Atualmente, No clima, o mesmo identificador é chamado de Como estamos definindo uma nova API, considero importante padronizar essa nomenclatura. Minha sugestão é utilizar Isso deixa o contrato mais claro e mantém a mesma referência utilizada no banco de dados e nos demais componentes do InfoDengue. O segundo ponto está na unidade de processamento.
Entretanto, cities <- unique(parameters$municipio_geocodigo)Dentro de Se houver parâmetros de dengue e chikungunya para o mesmo município, o pipeline encontrará duas linhas de parâmetros e falhará. Também existe o risco de processar conjuntamente séries de doenças diferentes quando apenas uma linha de parâmetros estiver disponível. Precisamos definir se a API permitirá múltiplas doenças na mesma execução. Se permitir, a unidade de processamento deverá considerar a combinação Se cada chamada aceitar apenas uma doença, isso precisa ser uma restrição explícita, validada antes do cálculo. O importante é que todas as validações, relacionamentos e restrições respeitem as chaves reais dos dados, sem depender de nomes textuais dos municípios. 4. Paralelismo e desempenhoA refatoração introduz Entretanto, esse mesmo valor também é encaminhado ao nowcasting e ao INLA. Com Isso pode gerar até 64 threads solicitadas nesses dois níveis, além do consumo de memória de cada processo. O AlertTools deve ser independente da arquitetura de execução do Pelo contrário, a nova estrutura deveria permitir utilização eficiente em diferentes ambientes, inclusive em execuções estaduais, nacionais e em outros projetos. Minha sugestão é separar os controles de concorrência, por exemplo: municipality_workers = 4
inla_threads = 1Esses valores são apenas ilustrativos. Precisamos definir padrões seguros e verificar os melhores resultados por meio de benchmarks. Também seria importante avaliar o overhead de criação dos processos, compartilhamento ou cópia de dados, uso de memória e tempo total de execução. O ideal é permitir que cada consumidor ajuste a concorrência conforme os recursos disponíveis, sem que o próprio AlertTools crie paralelismo aninhado excessivo. No caso do 5. Política de depreciaçãoO Entretanto, a implementação utiliza: lifecycle::deprecate_warn(
"1.1.0",
...
)O guia de migração também informa que a depreciação começou na versão Precisamos alinhar a documentação e a implementação com a política aprovada. Como estamos preparando a versão 6. Compatibilidade de
|
esloch
left a comment
There was a problem hiding this comment.
A few points need attention before merging.
Resultado
Prepara a release candidata 1.2.0 com a refatoração das fases 0–7: baseline reproduzível, camada DBI explícita, núcleo em memória, API snake_case, wrappers de compatibilidade, documentação, CI e gate de migração dos consumidores.
Validação local
Compatibilidade e rollout
O branch será usado como revisão fixa nos PRs de migração dos consumidores antes da release principal.