Skip to content

Implementar validações SPS 1.10 para elemento <fn>#1093

Draft
Copilot wants to merge 4 commits intomasterfrom
copilot/validate-fn-element-rules
Draft

Implementar validações SPS 1.10 para elemento <fn>#1093
Copilot wants to merge 4 commits intomasterfrom
copilot/validate-fn-element-rules

Conversation

Copy link
Contributor

Copilot AI commented Feb 13, 2026

O que esse PR faz?

Implementa 6 regras de validação SPS 1.10 para elementos <fn> (notas), aumentando conformidade de contextos específicos:

  • Regras 1 e 3 (CRITICAL): @fn-type obrigatório em <author-notes> e <fn-group>
  • Regra 2 (ERROR): Valores restritos em <author-notes>: abbr, coi-statement, corresp (antes aceitava 19 valores)
  • Regras 4 e 6 (ERROR): Unicidade de <author-notes> e <fn-group> por artigo/sub-artigo
  • Regra 8 (WARNING): Recomendação de uso de <corresp> ao invés de <fn fn-type="corresp">
# Antes: aceitava qualquer valor de fn-type em author-notes
<author-notes>
    <fn fn-type="funding">...</fn>  # ✅ Passava (incorreto)
</author-notes>

# Depois: restringe a valores SPS 1.10
<author-notes>
    <fn fn-type="funding">...</fn>  # ❌ ERROR
    <fn fn-type="coi-statement">...</fn>  # ✅ OK
</author-notes>

Onde a revisão poderia começar?

  1. packtools/sps/validation/author_notes.py - Métodos validate_fn_type_presence, validate_fn_type_author_notes_values, validate_author_notes_uniqueness
  2. packtools/sps/validation/fn.py - Métodos validate_fn_type_presence_in_fn_group, validate_fn_group_uniqueness
  3. Testes em tests/sps/validation/test_author_notes.py e test_fn.py

Como este poderia ser testado manualmente?

Execute os testes unitários:

python -m unittest tests.sps.validation.test_fn tests.sps.validation.test_author_notes -v

Ou valide XML com casos de teste do issue:

  • <fn> sem @fn-type em <author-notes> → CRITICAL
  • <fn fn-type="funding"> em <author-notes> → ERROR
  • Múltiplos <author-notes> → ERROR
  • <fn fn-type="corresp"> → WARNING

Algum cenário de contexto que queira dar?

Decisão de design: validate_fn_type_author_notes_values substitui validate_type (herdado de BaseFnValidation) para aplicar lista restrita específica de <author-notes>, enquanto <fn-group> mantém lista completa.

Compatibilidade: Validações existentes preservadas. XPath ajustado para considerar que xml_tree já está no nível do elemento <article>.

i18n: Todas mensagens implementam advice_text/advice_params conforme padrão article_contribs.py.

Screenshots

N/A - validações de backend sem interface visual.

Quais são tickets relevantes?

Relacionado ao issue "Criar validações para o elemento " conforme especificação SPS 1.10.

Referências

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • api.crossref.org
    • Triggering command: /usr/bin/python python -m unittest discover tests/sps/validation/ -p test_*.py -v (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Criar validações para o elemento </issue_title>
<issue_description>## Objetivo

Implementar validações para o elemento <fn> (notas) conforme a especificação SPS 1.10, aumentando a conformidade de X% para 75% (6 de 8 regras).

Nota: Algumas validações para <fn> podem já estar parcialmente implementadas no repositório. Este Issue visa reavaliar, complementar e garantir cobertura completa das regras SPS 1.10.


Contexto

O elemento <fn> é usado para marcação de notas em três contextos diferentes: notas de autor (<author-notes>), notas de documento (<fn-group>) e notas de tabela (<table-wrap-foot>). Cada contexto possui regras específicas de validação, especialmente quanto ao atributo obrigatório @fn-type e seus valores permitidos.

Conformidade atual: X de 8 regras implementadas (X%)
Meta após implementação: 6 de 8 regras (75%)


Documentação SPS

Referência oficial: https://docs.google.com/document/d/1GTv4Inc2LS_AXY-ToHT3HmO66UT0VAHWJNOIqzBNSgA/edit?tab=t.0#heading=h.fn

Regras principais conforme SPS 1.10:

  1. Atributo @fn-type obrigatório:

    • Obrigatório para <fn> em <author-notes>
    • Obrigatório para <fn> em <fn-group>
    • Não obrigatório para <fn> em <table-wrap-foot>
  2. Valores permitidos para @fn-type em <author-notes>:

    • abbr - Abreviaturas de nomes dos autores
    • con - Contribuição de autores (diferente de CRediT)
    • coi-statement - Declaração de conflito de interesse
    • corresp - Autor correspondente (recomenda-se usar <corresp>)
    • current-aff - Afiliação atual
    • deceased - Autor falecido
    • edited-by - Editor do documento
    • equal - Contribuição igualitária
    • on-leave - Autor ausente
    • participating-researchers - Pesquisador do documento
    • previously-at - Afiliação anterior
    • study-group-members - Membro do grupo de estudos
    • present-address - Endereço atual
    • presented-by - Trabalho apresentado pelo autor
    • other - Outros tipos não listados
  3. Valores permitidos para @fn-type em <fn-group>:

    • abbr - Abreviaturas de termos e nomes próprios
    • com - Comunicado relevante
    • data-availability - Declaração de disponibilidade de dados
    • financial-disclosure - Declaração de financiamento
    • supported-by - Declaração de apoio
    • presented-at - Documento apresentado em evento
    • supplementary-material - Material suplementar
    • other - Outros tipos não listados
  4. Atributo @id:

    • Necessário quando há @rid correspondente no texto
    • Opcional em outros casos
  5. Elemento <label>:

    • Obrigatório quando há indicação de etiqueta (1, 2, a, b, *, título, etc.)
    • Restrição: Não usar <title>, <bold> ou <italic> para representar rótulos
  6. Unicidade:

    • <author-notes> deve ocorrer uma única vez no documento
    • <fn-group> deve ocorrer uma única vez no documento

Regras a Implementar

P0 – Críticas (implementar obrigatoriamente)

# Regra Nível Descrição
1 Validar @fn-type em <author-notes> CRITICAL O atributo @fn-type é obrigatório para <fn> dentro de <author-notes>
2 Validar @fn-type em <fn-group> CRITICAL O atributo @fn-type é obrigatório para <fn> dentro de <fn-group>
3 Validar valores de @fn-type em <author-notes> ERROR Quando presente em <author-notes>, @fn-type deve ter valor da lista permitida para notas de autor
4 Validar valores de @fn-type em <fn-group> ERROR Quando presente em <fn-group>, @fn-type deve ter valor da lista permitida para notas de documento
5 Validar unicidade de <author-notes> ERROR O elemento <author-notes> deve aparecer no máximo uma vez no documento
6 Validar unicidade de <fn-group> ERROR O elemento <fn-group> deve aparecer no máximo uma vez no documento

P1 – Importantes (implementar se possível)

# Regra Nível Descrição
7 Validar uso correto de <label> WARNING Rótulos de notas devem usar <label>, não <title>, <bold> ou <italic>
8 Recomendar uso de <corresp> ao invés de @fn-type="corresp" WARNING Para informações de autor correspondente, recomenda-se usar <corresp> ao invés de <fn fn-type="corresp">

P2 – Futuras (fora do escopo deste Issue)

# Regra Motivo de exclusão
9 Validar correspondência entre @id e @rid Alta complexidade - requer análise de referências cruzadas em todo o documento
10 Validar sincronização entre <funding-group> e notas Alta complexidade - requer análise semântica de conteúdo e contexto

Arquivos a Criar/Modificar

Avaliar existentes (podem ter validações parciais):

  • packtools/sps/models/footnotes.py ou...

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 3 commits February 13, 2026 12:20
Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Copilot AI changed the title [WIP] Implement validation rules for <fn> element Implementar validações SPS 1.10 para elemento <fn> Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Criar validações para o elemento <fn>

2 participants