autocensup/REGRAS_VINCULO.md

50 lines
1.8 KiB
Markdown

# Regras de importacao de vinculos
## Origem
A importacao de vinculos consulta a API Gennera pessoa por pessoa, usando o CPF da
pessoa cadastrada localmente e o ano de referencia selecionado.
Endpoint consultado:
```text
GET /vinculo/?ano=<ano>&cpf=<cpf>
```
## Curso
O campo `course_code` retornado pela API Gennera representa o codigo MEC do curso.
Esse valor deve ser usado para localizar `Curso.codigo_mec`.
## Situacao do vinculo
As regras de situacao devem ser aplicadas por pessoa, curso e ano do censo.
Registros retornados pela API para outro ano devem ser ignorados na decisao do
ano selecionado.
1. Se `carga_horaria_acumulada` for maior ou igual a `carga_horaria_total` do curso,
a situacao do vinculo deve ser `FORMADO`.
2. Uma vez que um vinculo esteja `FORMADO`, ele nao pode ser alterado por outra
regra de importacao.
3. Se houver vinculo no ano do censo e no semestre 2, a situacao deve ser
`CURSANDO`.
4. Se houver vinculo no ano do censo e no semestre 1, mas nao houver no semestre 2,
a situacao deve ser `DESVINCULADO`.
5. Se nao houver vinculo no ano do censo para uma pessoa que ja possui vinculo local
no ano, a situacao local deve ser `DESVINCULADO`, exceto quando o vinculo local ja
estiver `FORMADO`.
## Prioridade
A regra de `FORMADO` tem prioridade sobre todas as demais.
Mesmo quando a situacao `FORMADO` for preservada, a carga horaria acumulada
retornada pela API deve sempre atualizar a carga horaria integralizada do vinculo.
Ordem pratica de decisao:
1. Manter `FORMADO` se o vinculo local ja estiver formado.
2. Definir `FORMADO` se a carga horaria acumulada atingir a carga horaria total do curso.
3. Ignorar registros fora do ano do censo selecionado.
4. Definir `CURSANDO` se existir registro no semestre 2 do ano do censo.
5. Definir `DESVINCULADO` nos demais casos do ano do censo.