Descrição do problema
validate_sps_zip() (src/spsvalidator/domain/validation.py) reporta falsos CRITICAL e ERROR de "arquivo mencionado no XML mas não presente no pacote" para praticamente toda figura e todo PDF de rendition em pacotes SPS reais, mesmo quando o arquivo está de fato no zip.
Causa raiz: files_in_zip é montado a partir de xml_with_pre.files, que traz o caminho completo dentro do zip (incluindo a subpasta, presente em todo pacote SPS real: o zip contém uma pasta com o nome do pacote, e os arquivos ficam dentro dela). Já asset["name"] e rendition["name"] (de xml_with_pre.assets/xml_with_pre.renditions) trazem só o nome do arquivo, sem path. A checagem asset["name"] not in files_in_zip compara nome-base contra caminho completo, então nunca bate.
Passos para reproduzir o problema
- Validar qualquer pacote SPS real cujo zip tenha os arquivos dentro de uma subpasta (padrão comum, confirmado num lote de 30 pacotes reais de teste).
- Observar no relatório de validação linhas CRITICAL do tipo "
<arquivo> file is mentioned in the XML but not present in the package" para figuras que estão de fato no zip, e ERROR "PDF file not present in the package" pra renditions também presentes.
Comportamento esperado
Só reportar CRITICAL/ERROR de arquivo ausente quando o arquivo realmente não está no zip.
Correção
Já corrigido, junto com o refactor da issue #16 / PR #23, no commit 08ff77f (branch feature/issue-16-preview-html-idiomas): files_in_zip passou a ser comparado por nome-base dos dois lados.
Validado no mesmo lote de 30 pacotes reais: antes da correção, praticamente toda figura e rendition de pacote real vinha marcada como ausente; depois, restaram só os casos onde o arquivo realmente não está no zip (confirmado manualmente comparando com o conteúdo do zip).
Abrindo esta issue para rastrear o bug separadamente da issue #16 (que tratava de outro assunto, a prévia HTML), já que esse problema afeta o relatório de validação em si, não só a prévia, e pode ter gerado falsos positivos em validações anteriores a este fix.
Descrição do problema
validate_sps_zip()(src/spsvalidator/domain/validation.py) reporta falsos CRITICAL e ERROR de "arquivo mencionado no XML mas não presente no pacote" para praticamente toda figura e todo PDF de rendition em pacotes SPS reais, mesmo quando o arquivo está de fato no zip.Causa raiz:
files_in_zipé montado a partir dexml_with_pre.files, que traz o caminho completo dentro do zip (incluindo a subpasta, presente em todo pacote SPS real: o zip contém uma pasta com o nome do pacote, e os arquivos ficam dentro dela). Jáasset["name"]erendition["name"](dexml_with_pre.assets/xml_with_pre.renditions) trazem só o nome do arquivo, sem path. A checagemasset["name"] not in files_in_zipcompara nome-base contra caminho completo, então nunca bate.Passos para reproduzir o problema
<arquivo>file is mentioned in the XML but not present in the package" para figuras que estão de fato no zip, e ERROR "PDF file not present in the package" pra renditions também presentes.Comportamento esperado
Só reportar CRITICAL/ERROR de arquivo ausente quando o arquivo realmente não está no zip.
Correção
Já corrigido, junto com o refactor da issue #16 / PR #23, no commit
08ff77f(branchfeature/issue-16-preview-html-idiomas):files_in_zippassou a ser comparado por nome-base dos dois lados.Validado no mesmo lote de 30 pacotes reais: antes da correção, praticamente toda figura e rendition de pacote real vinha marcada como ausente; depois, restaram só os casos onde o arquivo realmente não está no zip (confirmado manualmente comparando com o conteúdo do zip).
Abrindo esta issue para rastrear o bug separadamente da issue #16 (que tratava de outro assunto, a prévia HTML), já que esse problema afeta o relatório de validação em si, não só a prévia, e pode ter gerado falsos positivos em validações anteriores a este fix.