4. A ocorrência nasce em campo
A se depara com o fato e registra pelo celular. É um verbo só, porque cinco chamadas pela rede deixam o pela metade quando o sinal cai entre elas: a nasce com a própria despachada e aceita, e presenca diz se o despacho nasce no_local ou a_caminho.
A cena
A cena 3D deste caso (roteiro ocorrencia-em-campo) entra aqui quando a operação 3D publicar os roteiros dos casos de uso; até lá, o diagrama abaixo é a cena.
O app sugere a presença pela distância até o ponto: dentro do raio (configurável por , 100 m por padrão) nasce no_local, e a ocorrência já entra em em_atendimento; fora dele nasce aceito, e a equipe desloca e chega como no caso 3.
Pelo app do policial
/**
* A equipe se depara com o fato e registra pelo celular.
*
* É UM verbo só no plugin: a ocorrência nasce com a própria guarnição
* despachada e aceita, e `presenca` diz se o despacho nasce no local ou a
* caminho. Cinco chamadas pela rede deixariam o despacho pela metade quando
* o sinal cai entre elas.
*/
export function registrarEmCampo(
atendimento: AtendimentoNoApp,
registro: RegistroEmCampoDoApp,
): Promise<DespachoAceito | DespachoNoLocal> {
const presenca: PresencaNoRegistro =
registro.distanciaAteOPontoEmMetros <=
(registro.raioNoLocalEmMetros ?? RAIO_NO_LOCAL_EM_METROS)
? 'no_local'
: 'a_caminho';
return atendimento.doPlugin.registrarOcorrenciaEmCampo(atendimento.quem, {
dados: registro.dados,
presenca,
});
}/**
* A equipe se depara com o fato e registra pelo celular.
*
* É UM verbo só no plugin: a ocorrência nasce com a própria guarnição
* despachada e aceita, e `presenca` diz se o despacho nasce no local ou a
* caminho. Cinco chamadas pela rede deixariam o despacho pela metade quando
* o sinal cai entre elas.
*/
export function registrarEmCampo(atendimento, registro) {
const presenca =
registro.distanciaAteOPontoEmMetros <=
(registro.raioNoLocalEmMetros ?? RAIO_NO_LOCAL_EM_METROS)
? 'no_local'
: 'a_caminho';
return atendimento.doPlugin.registrarOcorrenciaEmCampo(atendimento.quem, {
dados: registro.dados,
presenca,
});
}curl -X POST https://geohub.exemplo.gov.br/plugins/ocorrencias/em-campo -H "Authorization: Bearer $TOKEN" -H "x-solicitacao-id: $(uuidv7)" -H "Content-Type: application/json" \
-d '{"dados":{"classificacao":{"natureza":"roubo","prioridade":1},"solicitante":{"canal":"presencial"}},
"recurso":{"tipo":"guarnicao","guarnicaoId":"…","viatura":"RP-1207","composicao":[…],"identificador":"RP-1207"},
"presenca":"no_local"}'
# {"dados":{"ocorrenciaId":"…","despachoId":"…"}}A guarnição não vai no pedido: o servidor a resolve pela sessão de quem chama, e a guarda confere que é mesmo a dele. O não alcança este verbo.
Pela REST
A operação é registrarOcorrenciaEmCampo, na API, com corpo, respostas e erros.
POST /plugins/ocorrencias/em-campo
{"dados":{"classificacao":{"natureza":"roubo","prioridade":1},"solicitante":{"canal":"presencial"}},
"recurso":{"tipo":"guarnicao","guarnicaoId":"…","viatura":"RP-1207","composicao":[…],"identificador":"RP-1207"},
"presenca":"no_local"}
→ 200 {"dados":{"ocorrenciaId":"…","despachoId":"…"}}Em revisão
Hoje o empenho da própria guarnição numa ocorrência que já existe usa despachar, o mesmo verbo da central. A separação em verbo próprio da equipe está decidida; quando entrar, esta página ganha o nome novo e despachar volta a significar só designar de terceiro.