# ValidaCGR - Fluxo
## Processo Macro
```flow
st=>start: Início
op1=>operation: 1 - Solicita Validação:>#Macro-1
cond1=>condition: 2- Solicitação
é de Início?:>#Macro-2
cond2=>condition: 3 - Fim - Pode ser
tratada?:>#Macro-3
cond3=>condition: 4 - Início - Pode ser
tratada?:>#Macro-4
op2=>operation: 5 - Fila de validação:>#Macro-5
op3=>operation: 6 - Início de
Tratamento:>#Macro-6
cond4=>condition: 7 - Necessita Apoio?:>#Macro-7
op4=>operation: 8 - Trata Validação:>#Macro-8
op5=>operation: 9 - Aciona Apoio:>#Macro-9
op99=>operation: Fim de
Tratamento
e=>end: Fim
st->op1
op1->cond1
cond1(yes)->cond3
cond1(no)->cond2
cond2(yes)->op2
cond2(no)->op99
cond3(yes)->op2
cond3(no)->op99
op2->op3
op3->cond4
cond4(yes)->op5
cond4(no)->op4
op4->op99
op5->op4
op99->e
```
## Detalhamento de Fluxo Macro
### Macro 1
Neste ponto caso a solicitação venha da página Web, o sistema mostra os dados da JM já com uma validação inicial e após a confirmação da abertura, executa as validações novamente.
### Macro 2
Sistema valida se a JM já possui registro anterior com status **OK** ou **NOK**. Se não possuir é considerada de início.
Os valores possíveis para considerar de início são:
* nulo, não possui registros para a JM
* Inválido
* Cancelado
### Macro 3
Sistema valida se a JM já possui registro anterior com status **OK** ou **NOK**. Se possuir é considerada de fim.
Caso o valor seja **OK**, é validado se o registro anterior é de **início** ou **fim**. Caso seja de **início** e os parâmetros de horários estiverem atendidos, a validação segue para a **fila de tratamento**. Caso seja de **fim**, a validação será encerrada pois a JM já foi encerrada.
Caso o valor seja **NOK**, a validação será encerrada pois a JM não teve a abertura aceita.
### Macro 4
Neste ponto o sistema faz a validação dos parâmetros de horário, área atendida e status da JM.
### Macro 5
Neste ponto temos o tratamento em si da JM.
* Registro na fila - só pode iniciar o tratamento caso não haja executor.
* Registro na fila com executor pode ser liberado? Quem pode liberar?
* A liberação poderá ser feita por qualquer operador do grupo registrado. O atendimento será baixado com o status **liberado** e um novo registro sem executor será adicionado à fila.
* Enviar relatório gerencial com os casos liberados.
## Telegram - Início
```flow
st=>start: Entrada de Início
e=>end: Fim
op=>operation: 1 - Solicita Validação:>#Passo-1
cond=>condition: Atende Critérios?
op2=>operation: 2 - Fila
op3=>operation: 3 - Erro 406
st->op->cond
cond(yes)->op2
op2->e
op3->e
cond(no)->op3
```
### validaRegistroInicio - Micro
```flow
in=>start: validaRegistroInicio()
cd1=>condition: validaGrupoTelegram()?
cd2=>condition: consultaDadosJM($registro)?
cd3=>condition: verificaAreaAtendimentoJM()?
cd4=>condition: verificaStatusTratamentoJM()?
cd5=>condition: verificaPrazoJM()?
cd6=>condition: consultaRegistroFila()?
cd7=>condition: consultaInicioStatus()?
fl=>operation: registraInicioValidacao();
e=>end: Fim
in->cd1
cd1(yes)->cd2
cd1(no)->e
cd2(yes)->cd3
cd2(no)->e
cd3(yes)->cd4
cd3(no)->e
cd4(yes)->cd5
cd4(no)->e
cd5(yes)->cd6
cd5(no)->e
cd6(yes)->cd7
cd6(no)->e
cd7(yes)->fl
cd7(no)->e
fl->e
```
### Passo 1
Telegram: TODO /inicio?
API: POST https://10.48.103.55/validaCgr/api/v1/jm/validacao/
```json=
Content-Type: application/json
{
"acao": "inicio",
"usuario": "icexxx",
"registro": "410701", //número da JM
"grupoEntrada": "-101010",
"perfilSolicitacao": "cliente"
}
```
Consome método Classe Valicao->trataAcaoValidacao
:::spoiler Retorno padrão
sucesso
```json=
{
"status": "SUCESSO",
"descricao": "Inclusão OK",
"posicaoFila": 1
}
```
falha
```json=
{
"status": "ERRO",
"descricao": "Fim fora do prazo: xxxxxxxx"
}
```
:::
### Passo 2
Registro foi gravado na fila de atendimento e deve ser tratado por algum agente
é tratado via WEB
WEB - TODO
### Consultas
Consultas que podes ser feitas a qualquer momento, ficam fora do fluxo principal.
#### JM
Telegram: TODO /jm/{{jm}}
API: GET https://10.48.103.55/validaCgr/api/v1/jm/{{jm}}
#### Tratamento
Telegram: TODO /tratamento/{{jm}}
API: GET https://10.48.103.55/validaCgr/api/v1/jm/tratamento/{{jm}}
:::spoiler Retorno da chamada
```json=
GET {{link}}/jm/tratamento/{{jm}}}
{
"Registro": [
{
"idfilaValidacao": "227",
"tipoValidacao_idtipoValidacao": "3",
"statusValidacao_idstatusValidacao": "6",
"grupoTelegram_idgrupoTelegram": "4",
"numRegistro": "410702",
"previsaoInicio": "2020-08-10 00:00:00",
"previsaoFim": "2020-08-10 05:30:00",
"dataInclusaoValidacao": "2020-09-15 14:46:29",
"dataFimValidacao": null,
"statusValidacao_tipoValidacao": "AGUARDANDO",
"usuarioInclusao": "ice",
"idTipoRede": "73",
"idtipoValidacao": "3",
"descricaoTipoValidacao": "Inicio de valida\u00e7\u00e3o via Telegram",
"idTipo": "31",
"descricaoTipo": "PLATAFORMA TV CAS",
"valido": "S",
"idgrupoTelegram": "4",
"idTelegram": "-101010",
"nomeGrupo": "teste ",
"validacaoViaSite": "S",
"validacaoViaTelegram": "S"
}
],
"Logs": [
{
"idLog": "436",
"tipoAcao": "VALIDACAO",
"statusAcao": "OK",
"descricao": "Inclus\u00e3o OK",
"dataInclusao": "2020-09-15 14:46:29",
"operInclusao": "ice",
"ip": "10.55.89.93",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "437",
"tipoAcao": "VALIDACAO",
"statusAcao": "NOK",
"descricao": "Atendimento j\u00e1 iniciado",
"dataInclusao": "2020-09-15 14:46:31",
"operInclusao": "ice",
"ip": "10.55.89.93",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "438",
"tipoAcao": "VALIDACAO",
"statusAcao": "NOK",
"descricao": "Atendimento j\u00e1 iniciado",
"dataInclusao": "2020-09-15 14:46:32",
"operInclusao": "ice",
"ip": "10.55.89.93",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "546",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "N\u00e3o pode ser cancelado",
"dataInclusao": "2020-09-16 10:36:02",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "547",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "N\u00e3o pode ser cancelado",
"dataInclusao": "2020-09-16 10:37:07",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "548",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "N\u00e3o pode ser cancelado",
"dataInclusao": "2020-09-16 10:37:09",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "549",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:20",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "550",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:27",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "551",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:29",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "552",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:31",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
}
],
"Tratamento": [
{
"idLog": "436",
"tipoAcao": "VALIDACAO",
"statusAcao": "OK",
"descricao": "Inclus\u00e3o OK",
"dataInclusao": "2020-09-15 14:46:29",
"operInclusao": "ice",
"ip": "10.55.89.93",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "437",
"tipoAcao": "VALIDACAO",
"statusAcao": "NOK",
"descricao": "Atendimento j\u00e1 iniciado",
"dataInclusao": "2020-09-15 14:46:31",
"operInclusao": "ice",
"ip": "10.55.89.93",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "438",
"tipoAcao": "VALIDACAO",
"statusAcao": "NOK",
"descricao": "Atendimento j\u00e1 iniciado",
"dataInclusao": "2020-09-15 14:46:32",
"operInclusao": "ice",
"ip": "10.55.89.93",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "546",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "N\u00e3o pode ser cancelado",
"dataInclusao": "2020-09-16 10:36:02",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "547",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "N\u00e3o pode ser cancelado",
"dataInclusao": "2020-09-16 10:37:07",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "548",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "N\u00e3o pode ser cancelado",
"dataInclusao": "2020-09-16 10:37:09",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "549",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:20",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "550",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:27",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "551",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:29",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
},
{
"idLog": "552",
"tipoAcao": "CANCELA",
"statusAcao": "NOK",
"descricao": "S\u00f3 pode ser cancelado por ice",
"dataInclusao": "2020-09-16 10:37:31",
"operInclusao": "",
"ip": "10.55.89.24",
"telegram": "-101010",
"registro": "410702"
}
]
}
```
:::