"""Orquestração: lê os dois arquivos exportados do Sigsistem e devolve as ocorrências já com as ações e o histórico completo de acompanhamentos aninhados. Não toca no banco — o upsert acontece na view (`NaoConformidadeImportacaoViewSet.create`, em `portal_api/views.py`), mesma separação de responsabilidade de `portal_api.planos_saude`/ `portal_api.indicadores`.""" from __future__ import annotations from . import leiaute_acoes, leiaute_ocorrencias from .modelos import ResultadoProcessamento def processa_importacao(caminho_ocorrencias: str, caminho_acoes: str) -> ResultadoProcessamento: ocorrencias, avisos = leiaute_ocorrencias.parse_ocorrencias(caminho_ocorrencias) acompanhamentos_por_chave = leiaute_acoes.parse_acompanhamentos(caminho_acoes) for ocorrencia in ocorrencias: for acao in ocorrencia.acoes: chave = (str(ocorrencia.codigo), str(acao.codigo)) acao.acompanhamentos = acompanhamentos_por_chave.get(chave, []) return ResultadoProcessamento(ocorrencias=ocorrencias, avisos=avisos)