| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
As migrations 0003_remove_articledocxmarkup_dateiso_and_more (main) e 0004_articledocxmarkup_xref_status (add-xref-linking) foram criadas a partir do mesmo ancestral 0002, gerando dois nós folha conflitantes no grafo de migrations. A migration de merge resolve o conflito sem alterar o banco de dados. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
O campo dateiso foi excluído de ArticleDocxMarkup pela migration 0003_remove_articledocxmarkup_dateiso_and_more, mas get_xml() ainda o referenciava para gerar pub-date, causando AttributeError em toda task de geração de XML. A data de publicação da issue agora vem de issue.year e issue.month, já tratados no bloco anterior. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Quando o parágrafo de introdução era o primeiro elemento a registrar uma seção no documento, a lista sections ainda estava vazia no momento em que extractContent tentava acessar sections[-1] para criar o first_block. Adicionado guard para retornar lista vazia quando sections não tem elementos. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CONN_MAX_AGE = 0 força o Django a fechar conexões após cada request, evitando acúmulo que esgotava o limite do banco. max_connections=200 no serviço postgres do docker-compose local acomoda os 16 workers prefork do Celery mais as conexões do Django sem atingir o limite padrão de 100. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Contexto
Após o merge das branches add-xref-linking e mudanças na main (que removeu campos do modelo ArticleDocxMarkup e criou o model Issue), surgiram três problemas que impediam o processamento de artigos.
Mudanças
1. Migration de merge (markup_doc/migrations/0005_merge_20260602_1323.py)
As migrations 0003_remove_articledocxmarkup_dateiso_and_more (main) e 0004_articledocxmarkup_xref_status (add-xref-linking) foram criadas a partir do mesmo ancestral, gerando conflito no grafo de migrations. A migration de merge resolve o conflito sem alterar o banco de dados.
2. markup_doc/xml.py — remoção de referência a campo inexistente
O campo dateiso foi removido de ArticleDocxMarkup pela migration 0003, mas get_xml() ainda o referenciava para gerar o elemento <pub-date>, causando AttributeError em toda task de geração de XML. O bloco foi removido — a data de publicação da issue já é tratada via issue.year e issue.month no bloco imediatamente anterior.
3. markuplib/function_docx.py — correção de IndexError
Quando o parágrafo de introdução era encontrado antes de qualquer seção registrada, sections estava vazia e sections[-1] lançava IndexError, abortando o processamento do DOCX. Corrigido com guard if sections else [].
4. config/settings/base.py e local.yml — ajuste de conexões PostgreSQL
Com Celery rodando 16 workers prefork, o limite padrão de 100 conexões do PostgreSQL era esgotado, causando FATAL: sorry, too many clients already. Duas correções complementares:
Testes
Os bugs foram reproduzidos e confirmados resolvidos com o reprocessamento de três artigos reais obtidos do Google Drive (pasta de artigos SciELO em produção), selecionados para cobrir as principais variações estruturais do pipeline:
bn-2025-1828.docx — Biota Neotropica (artigo bilíngue PT/EN)
Cobre o fluxo de artigos bilíngues, forçando a detecção de idioma e a geração de blocos <trans-title> e <trans-abstract>.
rbent-2025-0077.docx — Revista Brasileira de Entomologia (artigo em inglês)
Complementa o anterior cobrindo o fluxo monolíngue, validando que o pipeline não gera elementos de tradução vazios quando não há conteúdo bilíngue, e exercitando o parser de <kwd-group> num formato de lista separada.
mr-2025-0709.docx — Materials Research (artigo com figuras)
Único fixture com imagens embutidas, cobrindo o caminho de código responsável por detectar w:drawing no XML do DOCX, persistir cada imagem como ImageModel no Wagtail e gerar os 10 elementos <fig> (f1–f10) no XML final.
Os três artigos, juntos, cobrem as principais variações estruturais do pipeline:
🤖 Generated with Claude Code