# 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=&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.