Skip to content

Validação exige <award-id> em <award-group> mesmo quando não há número de contrato a declarar #1337

Description

@Rossi-Luciano

Descrição do problema

FundingGroupValidation.validate_required_award_ids() (packtools/sps/validation/funding_group.py:34) marca
como inválido (valid = False) o caso em que um <award-group> contém apenas <funding-source>, sem
<award-id> (branch elif funding_sources:, linha ~66-70), exigindo indevidamente que <award-id> sempre
acompanhe <funding-source>.

O SPS 1.10, na seção "<funding-group>: Financiamento e Apoio", define a obrigatoriedade de forma
condicional:

"Quando houver uma ou mais instituições declaradas no texto, obrigatoriamente o uso de <funding-source>
deve ocorrer. Quando houver uma ou mais instituições declaradas no texto com número de contrato,
obrigatoriamente o uso de <award-id> deve ocorrer."

Ou seja, <award-id> só é obrigatório quando existe número de contrato mencionado; <award-group> contendo
apenas <funding-source> é uma estrutura válida (os próprios exemplos do SPS demonstram essa possibilidade).

Passos para reproduzir o problema

  1. Validar um XML com:
    <funding-group>
        <award-group>
            <funding-source>Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP)</funding-source>
        </award-group>
    </funding-group>
  2. Observar que a validação retorna inválido, pedindo para "marcar o contrato número com <award-id>", mesmo
    sem haver número de contrato a ser declarado.

Comportamento esperado

  • <award-group> contendo apenas <funding-source> (sem <award-id>) deve ser considerado válido.
  • Manter a exigência de <funding-source> quando houver <award-id> (a validação inversa, já implementada
    no branch elif award_ids:, está correta).

Anexos

Trecho citado a partir do arquivo SPS 1.10_pt.pdf (versão 1.10, última atualização em 22/05/2025), seção
"<funding-group>: Financiamento e Apoio".

Ambiente utilizado

N/A (validação de XML via packtools.sps.validation.xml_validator)

Classificação (esforço / risco / relevância)

  • Esforço: Baixo - inverter um único branch condicional (elif funding_sources:).
  • Risco: Baixo - mudança isolada e unidirecional (só reduz falsos positivos); a suíte
    test_funding_group.py é grande e pode exigir ajuste pontual nas asserções que hoje esperam o comportamento
    incorreto.
  • Relevância: Alta - declarar apenas a instituição financiadora, sem número de contrato, é um caso comum
    de financiamento.

Referências

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions