| Data de elaboração | 13/06/2022 |
| Responsável pelo estudo | Rafael Passos dos Santos (Assessor), Lucas de Souza e Sousa (Assessor) |
| Equipe do estudo | Gustavo Felix Gomes (Assessor), Rafael Passos dos Santos (Assessor), André Honório de Andrade Silva (Tecnico), Emanuel Rufino Alcantara de Lima (Analista), Alef Carvalho (Analista), Euriane Nogueira (Product Owner) |
| Alvo | Portal do Cidadão |
| Origem | Implementação: Cidadão realizar assinatura avançada da solicitação de atendimento online no Portal do Cidadão |
| 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. |
| Documentação correlata | 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=<h1>OPA</h1> |
| Observações | O presente estudo pretende também pretende levantar as Historias dos cars para a Sprint |
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.
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.
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.
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.
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:
Com essas informações é possível criar a URL da assinatura, onde serão enviado os parâmetros.
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:
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

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:

Tendo como obrigatório o Titulo e tipo de Documento, já o Corpo do documento (campo conteúdo) da Solicitação será composto
e o campo Usuário devera ter
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.

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.

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:

e seu retorno:

| 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 |
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.
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.
https://govdoc-api.development.local/swagger/index.html
https://whimsical.com/fluxo-assinatura-NxKxdgS5tGX65WBJwi6ncq