Ir para o conteúdo principal

Portal do Cidadão - Cidadão realizar assinatura da solicitação de atendimento online

OBJETIVO

Analisar a melhor abordagem para o Cidadão realizar assinatura da solicitação de atendimento online no projeto Portal do Cidadão conforme a User Story: “Eu como vingadores, preciso realizar um estudo para o cidadão realizar assinatura da solicitação de atendimento online" presente na Sprint número 101 do time Vingadores.


JUSTIFICATIVA

Tendo em vista que o Portal do Cidadão precisa integrar a assinatura avançada do assine aqui, o qual irar levar o usuário para outra tela, fora do aplicativo. Destarte, foi pensado na criação desse estudo para garantir a melhor abordagem para essa integração garantindo a integridade dos sistemas. 


RESULTADOS ESPERADOS

Levantar casos de uso adequados para a realização da integração, mantendo a integridade e melhor experiencia para o usuário poder assinar suas solicitações.


ENVOLVIDOS:

Gustavo Felix Gomes (Dev team)

Rafael Passos dos Santos (Dev team)

Emanuel Rufino Alcantara de Lima (Dev team)

Lucas de Souza e Sousa (Dev team)

André Honório de Andrade Silva (Dev team)

Alef Carvalho (Dev team)

Euriane Nogueira Frota (Product Owner)


1 - INTRODUÇÃO

Como o portal do cidadão precisará implementar a assinatura digital do Gov.br, foi desenvolvido a assinatura avançada do assine aqui, o qual torna possível os sistemas da SETIC assinarem com o Sauron ou Gov.br, a assinatura será realizada no Portal do Cidadão quando o mesmo solicitar um serviço.


2 - FUNCIONAMENTO

Com o novo assine aqui será possível assinar com o Gov.br,  para assinar será necessário selecionar a opção "entrar com o Gov.br", ele pedirá seu usuário e senha do Gov.br e em seguida mostrará as informações do documento e do assinante.

Após carregar a tela, ele pedirá seu CPF para gerar um código de confirmação com validade de 5 minutos que será enviado para seu e-mail cadastrado no Gov.br, assim que receber o código de confirmação no seu e-mail, é só inseri-lo no seu respectivo campo, também é possível reenviar o código caso seja necessário, depois de informado o código é só clicar em assinar e uma tela confirmando a assinatura irá aparecer.

Segundo as informações disponíveis para implementar assinatura será necessário:   

  • Id do documento que deseja assinar;
  • Nome do documento que deseja assinar;
  • Id do sistema cliente (ClientId) que fará a integração;
  • String do corpo do documento que deseja assinar (HASH do documento)

Com essas informações é possível criar a URL da assinatura, onde serão enviado os parâmetros.


3 - IMPLEMENTAÇÃO

Para realizar a integração com o assine aqui é necessário que a solicitação do Cidadão vire um documento, pois o assine aqui só assina documentos, diante disso só é possível realizar a assinatura depois que a Api de Solicitações estiver integrada com o Gov.doc, pois ele criara um documento da solicitação do cidadão, e poderá retornar as informações que o assine aqui precisa, sendo elas:

  • Id do documento que deseja assinar;
  • Nome do documento que deseja assinar;
  • String do corpo do documento que deseja assinar (HASH do documento)

Além disso, quando a solicitação for salva, ela precisa salvar essas informações de cima também na solicitação.


Fluxo da criação do documento no GOV.DOC

image.png

Criação do documento no GOV.DOC

URL api do gov.doc

https://govdoc-api.development.local/swagger/index.html

A Criação deverá ser realizada na Controller de Documentos na Action PostDocumentoUsuarioExterno

/Documentos/PostDocumentoUsuarioExterno - Como na imagem a baixo:

image.png


Tendo como obrigatório o Titulo e tipo de Documento, já  o Corpo do documento (campo conteúdo) da Solicitação será composto 

  • Protocolo da solicitação
  • Data e Hora da solicitação
  • Área de atendimento (Departamento solicitado)
  • Nome do solicitante
  • Serviço solicitado
  • CPF Anonimizado
  • Conteúdo das respostas, se tiver

e o campo Usuário devera ter 

  • Nome do Cidadão 
  • CPF Anonimizado

Logo baixo podemos ver Dois exemplos de um objetos que podem ser enviados, onde o Corpo do documento se trata de uma String. 

{
  "titulo": "Solicitação do servico - Cadastro de Acesso ao Programa Mulher Protegida - Menor de 18 anos",
  "conteudo": "Protocolo da solicitação, Data e Hora da solicitação, Área de atendimento, Prazo Restante, Prazo Total, Conteúdo da resposta, se tiver",
  "clientId": "35ac2a48-c839-4130-a273-47139bb5a7ea",
  "tipoDeDocumento": "Parecer",
  "usuario": {
    "nome": "Lucas de S.",
    "cpf": "034440*****",
    "email": "string"
  },
  "restrito": false
}

No exemplo de baixo podemos ver também o retorno da Api.

image.png

Com o retorno é possível obter o Id e o corpo do documento, tais informações serão usadas na assinatura, e cabe a api de solicitação gerar um HASH a partir do corpo do documento e salvar ele e o ID do documento junto a solicitação.

Se tudo der certo o sistema deve retorna pro detalhes da solicitação com o botão assinar visível, trazendo junto com as informações do detalhes da solicitação, o campo id e HASH do documento.


Assinatura com Assine Aqui

Quando o usuário for realizar a assinatura, abrirá um pop-up, que é uma nova pagina em outra aba do navegador, o time vingadores acha que tal abordagem não seja a melhor, pois tira o cidadão do App, quebrando sua experiencia de usuário com a aplicação.

image.png

Diante disso, o time vingadores encontrou dois possíveis cenários  para realização da assinatura.

O primeiro era a implementação da API do assine aqui e o Gov.br integrado com o Portal do cidadão, nessa opção não abrira outra aba do navegador e a assinatura seria realizada em uma tela dentro do próprio portal do Cidadão, com o layout do Portal.

Toda via, o assine aqui com Gov.br não usa a API do assine aqui, o projeto é somente web, e tal abordagem se tornou inviável em vista que é obrigatório por decreto o uso do assine aqui, com seu layout, para o cidadão ter total entendimento que está usando o sistema.

A outra abordagem é mais simples, usando o assine aqui, entretanto em vez de abri a nova aba quando o Cidadão for assinar, o portal ira redirecionar pro assine aqui através da tag html:

<a class="btn btn-primary" href="link do assine aqui">Assinar</a>

e o time TAMBAKISS ficando responsável pelo redirecionamento de voltar pro Portal do cidadão após a realização da assinatura, tal atividade já foi concordada com o PO do time, entrando na sua sprint atual.


Obter Assinatura 

A assinatura será obtida pela api do assine aqui, que tem as seguintes URLs:

https://assineaqui-api.development.local/index.html

https://assineaqui-api.staging.local/index.html

https://assineaqui-api.production.local/index.html

a assinatura pode ser obtida pela Action (/api/Assinaturas/BuscarPorDocumentoId), passando os parâmetros documentoId e sistemaClientId, como na imagem abaixo:

image.png

e seu retorno:

image.png

4 - IMPLEMENTAÇÃO E HISTÓRIAS DE USUÁRIO

HISTÓRIA

PONTUAÇÃO

PRODUTO

REGRA

1 - Integração do alpha solicitações API com Gov Doc

5

Alpha Solicitações Api e Gov Doc

- Criar Modelo do Documento no Gov.Doc

2 - Parte 1 -  Criar um documento no Gov doc com as informações da solicitação, , ao realizar uma solicitação no Portal do Cidadão 5 Gov Doc e Alpha Solicitações Api 

- Passar o Client Id do Alpha Solicitações

 - Campos do Documento (Protocolo, Nome, Serviço, Data e Hora, CPF Anonimizado...)

3 - Parte 2 - Após a criação do documento, obter o retorno dele e gerar um Hash com o corpo do documento e salvar ele e o id do documento junto a solicitação realizada no Portal do Cidadão 8 Gov Doc e Alpha Solicitações Api 

- Obter o retorno da criação do documento e gerar um Hash com o corpo do documento 

- Salvar Id e Hash do documento na solicitação

4 - Parte 3 - Obter o Id do documento e o Hash do documento criado no Alpha solicitação quando Cidadão for pra tela de detalhes da solicitação 3 Alpha Solicitações Api e Portal do Cidadão

- Tela de detalhes com o botão assinar

5 - Realizar a assinatura enviando o Id, Hash e nome do documento por parâmetro 3 Portal do Cidadão  - O campo nome do documento pode ser o Id do documento

6 - Integração do Portal do Cidadão com Api do Assine Aqui

5 Portal do Cidadão e Api do Assine Aqui
7 - Cidadão visualizar assinatura 5 Portal do Cidadão - Anonimizar o CPF
8 - Atendente visualizar assinatura 5 Alpha Solicitações Web - Anonimizar o CPF
9 - Criar um novo tipo de documento no gov doc para a solicictação. 2 Gov Doc - Debito técnico

TOTAL

41




5 - POSSÍVEIS PROBLEMAS NA UTILIZAÇÃO

Existem algumas preocupações com possíveis problemas na realização da assinatura

  • O principal é o envio do hash do documento por parâmetro na URL do assine aqui
  • Performance do Gov doc em relação a grande quantidade de request, pois será criado um documento toda vez que for realizado uma solicitação online no Portal do Cidadão.


6 - CONCLUSÃO

Com a Produção deste Spike foi possível elaborar o fluxo completo da integração do Portal do Cidadão com o Assine aqui e Gov Br, sendo necessário também a integração do Alpha solicitação com o Gov Doc e as histórias de usuário que serão necessárias para a criação desta funcionalidade.

Elaborado de 12 de Julho de 2022.


7 - REFERÊNCIAS

https://documentos.sistemas.ro.gov.br/books/assine-aqui/page/tutorial-integracao-da-assinatura-avancada-ao-seu-sistema

https://govdoc-api.development.local/swagger/index.html

https://whimsical.com/fluxo-assinatura-NxKxdgS5tGX65WBJwi6ncq

https://assineaqui.development.local/AssinaturaExterna/AssinarDocumento?documentoId=id&nomeDoDocumento=PortariaXYZ&sistemaClientId=13fb3448-9037-42d8-a852-ebf1b468a832&corpoDoDocumento=%3Ch1%3EOPA%3C/h1%3E