SEI — o lado administrativo
O SEI não é sistema processual. Ele guarda o administrativo: ofícios, memorandos, requisições, contratos, férias, processos de compra. É outro mundo, com outro dono e outra chave.
E é, por isso, um bom lugar para escrever a sua primeira Tool contra um sistema interno de verdade. Não porque o dado não importe — importa —, mas porque um erro aqui não expõe parte de processo criminal.
"Menor risco" não é "sem risco", e a diferença tem nome: PAD.
Processo administrativo disciplinar, sindicância, dado funcional de servidor, laudo de saúde. O SEI tem tudo isso, com os próprios níveis de restrição, e a chave de acesso que a sua Tool vai usar pode alcançá-los.
O que muda em relação ao processo judicial é o tipo de dano, não a existência dele. As regras da unidade continuam valendo, todas.
A chave é do sistema, não sua
Aqui a simetria com o banco interno é exata, e vale entender por quê.
No SEI, integração externa não usa o seu login. O administrador cadastra um sistema — a sua ferramenta — e o associa aos serviços que ela pode chamar. Desse cadastro sai uma chave de acesso, que viaja num parâmetro de identificação em cada chamada.
Isso significa que a sua Tool não herda as suas permissões. Ela herda as permissões que o administrador deu ao cadastro. Que podem ser maiores que as suas.
É o mesmo problema do banco, com outra roupa, e a mesma solução: peça estreito. No cadastro, peça associação apenas às unidades e aos tipos de processo que você já acompanha, e apenas aos serviços de consulta.
Duas coisas operacionais que economizam um chamado:
A chave aparece uma vez. Ela é guardada cifrada, e a tela só a mostra no momento em que é gerada. Se você não copiou, não dá para recuperar — gera outra.
Existe autenticação por endereço, e ela está de saída. Versões do SEI permitem autorizar por IP em vez de chave; versões novas passam a aceitar só chave. Se a sua TI oferecer o caminho por IP porque é mais rápido, prefira a chave: é o que vai continuar existindo.
E, óbvio a esta altura: a chave mora em variável de ambiente.
identificacao = os.environ["SEI_CHAVE"] # nunca no config.yaml
Duas portas: SOAP e REST
O SEI tem uma interface de webservices SOAP, documentada no manual de Web Services da distribuição — é a oficial, é a que todo SEI tem, e o caminho é o mesmo do MNI: pegue o WSDL com a TI, aponte o zeep, rode o dump() antes de qualquer chamada.
Há também um módulo adicional de comunidade que expõe endpoints REST (mod-wssei). Se a sua instalação já o tiver, é mais confortável — requests e JSON, sem envelope. Se não tiver, não peça para instalar um módulo no SEI só para o seu exercício: instalar módulo em sistema administrativo do Tribunal é mudança de infraestrutura, e o custo disso não é seu para gastar.
Pergunte primeiro qual das duas já existe. A resposta decide o capítulo.
O que muda numa Tool de SEI
Quase nada, e isso é a boa notícia — as decisões são as mesmas três:
Consulta, nunca escrita. O SEI tem operações que criam processo e incluem documento. Elas existem, funcionam, e não entram numa Tool de agente. Um modelo que pode abrir processo administrativo é um modelo que vai abrir um processo administrativo por engano, e desfazer isso no SEI não é apagar uma linha.
Escolha os campos. A resposta traz interessados, unidades, andamentos. Devolva o que responde à pergunta, e só.
Respeite o nível de acesso. O SEI marca processo como público, restrito ou sigiloso. Se a sua Tool não olha esse campo, ela vai tratar os três igual — que é o mesmo erro do nivel_sigilo do capítulo do banco, com outro nome de coluna.
def consultar_processo_sei(protocolo: str) -> dict:
"""Situação e andamento de um processo administrativo do SEI.
Args:
protocolo: número do protocolo, no formato do SEI.
"""
r = cliente.service.consultarProcedimento(
SiglaSistema=os.environ["SEI_SISTEMA"],
IdentificacaoServico=os.environ["SEI_CHAVE"],
IdUnidade=os.environ["SEI_UNIDADE"],
ProtocoloProcedimento=protocolo,
)
if str(r.NivelAcesso) != "0": # 0 = público
return {"erro": "processo restrito; consulte pelo SEI."}
return {
"protocolo": protocolo,
"tipo": r.TipoProcedimento.Nome,
"unidade_atual": r.UnidadesProcedimentoAberto[0].Unidade.Sigla,
}
Os nomes dos campos e dos parâmetros variam com a versão do SEI e com o que o administrador habilitou no cadastro. Confira no WSDL — não copie daqui direto para produção.
Antes de conectar num agente
- O cadastro do sistema está associado apenas a serviços de consulta?
- Uma consulta a um processo de outra unidade, que você não acompanha, é recusada?
- A Tool olha o nível de acesso antes de devolver qualquer campo?
SEI_CHAVEestá só no ambiente?
O item 2 é o mesmo teste do item 3 do capítulo do MNI, e pela mesma razão: é o único que mede o alcance real da credencial em vez de supô-lo.
Próximo: Escreva a sua.