Descrição da nova funcionalidade
Eu, como editor ou administrador com acesso ao admin do Wagtail (utilizador staff), gostaria de enviar um pacote SPS em formato .zip por um formulário no admin, tê-lo registado como documento Wagtail e obter um relatório .csv gerado pelo packtools para revisão humana, então posso verificar a conformidade do pacote antes de publicar ou integrá-lo no fluxo editorial da plataforma SciELO RCT.
A funcionalidade deve manter sempre a versão mais recente da validação para cada pacote: um único registo por ficheiro .zip (documento Wagtail), com revalidação a substituir o CSV, as exceções e os metadados (utilizador, data e tamanho do zip).
Critérios de aceitação
Para que esta tarefa seja considerada concluída, devem ser contemplados os seguintes pontos:
- Interface no admin Wagtail: existe um formulário acessível no menu do admin (snippet ou grupo de snippets) com o rótulo adequado (ex.: «Validar pacote SPS»), permitindo selecionar ou enviar um ficheiro
.zip.
- Documento Wagtail: o
.zip enviado é guardado como wagtaildocs.Document (extensão zip já permitida nas definições do projeto) e associado ao registo de validação.
- Validação com packtools: após o envio, o pacote é validado com packtools (versão fixada no projeto,
4.12.6), extraindo o conteúdo do zip e aplicando o mesmo mecanismo de relatório usado para XML (XMLDataChecker), produzindo um ficheiro .csv para avaliação humana e um ficheiro de exceções (JSON/JSONL), alinhado ao fluxo existente em xml_manager.
- Processamento assíncrono: a validação corre em tarefa Celery (padrão de
xml_manager), com indicação de estado no admin (ex.: pendente, em execução, concluída, erro).
- Versão mais recente: existe um registo por pacote (ligado ao
wagtaildocs.Document). Nova validação do mesmo documento substitui o CSV, o ficheiro de exceções e atualiza os metadados — sem manter histórico de ficheiros de validação anteriores.
- Metadados obrigatórios visíveis no admin: utilizador que realizou a validação, data e hora da validação, tamanho do
.zip em bytes no momento da validação.
- Download do relatório: na listagem e/ou detalhe do registo, links para descarregar o CSV e o ficheiro de exceções (quando existirem), de forma análoga às colunas de ficheiros em
xml_manager.
- Permissões: apenas utilizadores com acesso ao admin Wagtail (staff) podem criar validações e ver resultados.
- Tratamento de erros: zip inválido, falha na extração ou erro na validação packtools devem ser comunicados no admin (mensagem e/ou estado de erro), sem deixar o registo inconsistente.
- Validação do formulário: aceitar apenas ficheiros com extensão
.zip; rejeitar envios vazios ou com tipo incorreto com mensagem clara.
Anexos
N/A
Referências
- Fluxo análogo (validação XML + CSV):
xml_manager/models.py, xml_manager/utils.py, xml_manager/tasks.py, xml_manager/wagtail_hooks.py
- packtools (dependência):
requirements/base.txt (scieloorg/packtools@4.12.6)
- Extensões de documentos Wagtail:
config/settings/base.py (WAGTAILDOCS_EXTENSIONS, inclui zip)
Notas técnicas (orientação à implementação)
| Decisão |
Escolha |
| App |
Estender xml_manager (já integra packtools e snippets Wagtail). |
| Modelo sugerido |
SPSPackageValidation com FK única a wagtaildocs.Document, validation_file, exceptions_file, zip_size_bytes, validated_at, validated_by, status. |
| packtools |
Extrair zip para diretório temporário; XMLDataChecker(csv, exceptions, extracted_dir).validate(params={}, csv_per_xml=False). |
| Revalidação |
Sobrescrever artefatos e metadados no mesmo registo (UniqueConstraint em package_document). |
Descrição da nova funcionalidade
Eu, como editor ou administrador com acesso ao admin do Wagtail (utilizador staff), gostaria de enviar um pacote SPS em formato
.zippor um formulário no admin, tê-lo registado como documento Wagtail e obter um relatório.csvgerado pelo packtools para revisão humana, então posso verificar a conformidade do pacote antes de publicar ou integrá-lo no fluxo editorial da plataforma SciELO RCT.A funcionalidade deve manter sempre a versão mais recente da validação para cada pacote: um único registo por ficheiro
.zip(documento Wagtail), com revalidação a substituir o CSV, as exceções e os metadados (utilizador, data e tamanho do zip).Critérios de aceitação
Para que esta tarefa seja considerada concluída, devem ser contemplados os seguintes pontos:
.zip..zipenviado é guardado comowagtaildocs.Document(extensãozipjá permitida nas definições do projeto) e associado ao registo de validação.4.12.6), extraindo o conteúdo do zip e aplicando o mesmo mecanismo de relatório usado para XML (XMLDataChecker), produzindo um ficheiro.csvpara avaliação humana e um ficheiro de exceções (JSON/JSONL), alinhado ao fluxo existente emxml_manager.xml_manager), com indicação de estado no admin (ex.: pendente, em execução, concluída, erro).wagtaildocs.Document). Nova validação do mesmo documento substitui o CSV, o ficheiro de exceções e atualiza os metadados — sem manter histórico de ficheiros de validação anteriores..zipem bytes no momento da validação.xml_manager..zip; rejeitar envios vazios ou com tipo incorreto com mensagem clara.Anexos
N/A
Referências
xml_manager/models.py,xml_manager/utils.py,xml_manager/tasks.py,xml_manager/wagtail_hooks.pyrequirements/base.txt(scieloorg/packtools@4.12.6)config/settings/base.py(WAGTAILDOCS_EXTENSIONS, incluizip)Notas técnicas (orientação à implementação)
xml_manager(já integra packtools e snippets Wagtail).SPSPackageValidationcom FK única awagtaildocs.Document,validation_file,exceptions_file,zip_size_bytes,validated_at,validated_by,status.XMLDataChecker(csv, exceptions, extracted_dir).validate(params={}, csv_per_xml=False).UniqueConstraintempackage_document).