> For the complete documentation index, see [llms.txt](https://docs.griaule.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.griaule.com/gbspsbio/como-funciona/fluxos.md).

# Fluxos de transação e status

#### Sobre esta página

Descreve como o Módulo PSBio trata cada tipo de transação e quais status ele informa ao Módulo AC em cada etapa. Use esta página para entender por que uma transação terminou em determinado status.

#### Sumário

1. [Operações](#operacoes)
2. [Status de transação](#status-de-transacao)
3. [Pacotes trocados entre PSBios](#pacotes-trocados-entre-psbios)

## Operações

As transações de Search, Enroll e Update começam com um status `*_IN_PROGRESS`. As que geram exceção ficam aguardando tratamento na aplicação GBS Apps.

{% tabs %}
{% tab title="Search" %}
Verifica se a pessoa com um IDN é quem diz ser (comparação biométrica 1:1).

1. O PSBio responde `SEARCH_IN_PROGRESS`.
2. Dispara dois fluxos em paralelo: a busca local (base local e cache) e a busca remota, com um `IDN_Query` enviado aos demais PSBios.
3. Se o IDN for encontrado, compara as biometrias da consulta com as do cadastro e responde `SEARCH_MATCH` ou `SEARCH_NOT_MATCH`.
4. Se o IDN não existir em nenhum lugar, responde `SEARCH_FAILED`.

![Fluxo de Search](https://8115392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJaE9Zybol0s5SL1TerUi%2Fuploads%2FvV81bzb36WyE7Ty0UbdE%2Fimg-search-r2.png?alt=media)
{% endtab %}

{% tab title="Enroll" %}
Cadastra uma pessoa nova na rede.

1. O PSBio responde `ENROLL_IN_PROGRESS`.
2. Procura as biometrias na blacklist. Se encontrar, recusa com `ENROLL_ANOMALY_BLACKLIST`.
3. Consulta o IDN nos demais PSBios com um `IDN_Query`. Se o IDN for encontrado, recusa com `ENROLL_FAILED`.
4. Procura as biometrias na base local e no cache. Se encontrar, responde `ENROLL_ANOMALY` e aguarda o tratamento da exceção. Se o match ocorrer no cache, envia também um pacote IDE para atualizar os demais PSBios.
5. Envia um pacote IDE aos demais PSBios para sincronizar os caches e muda para `ENROLL_CACHE_OK`.
6. Quando as respostas VRE são recebidas, conclui com `ENROLL_OK`.

![Fluxo de Enroll](https://8115392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJaE9Zybol0s5SL1TerUi%2Fuploads%2F6mV4LSmM14CDsZTUeWh6%2Fimg-enroll-r2.png?alt=media)
{% endtab %}

{% tab title="Update" %}
Atualiza as biometrias de um cadastro existente. Só o PSBio que detém o cadastro original pode atualizá-lo.

1. O PSBio responde `UPDATE_IN_PROGRESS`.
2. Procura as biometrias na blacklist. Se encontrar, recusa com `UPDATE_ANOMALY_BLACKLIST`.
3. Consulta o IDN na base e no cache locais e nos demais PSBios, com um `IDN_Query`. Se não encontrar, recusa com `UPDATE_FAILED`.
4. Se o cadastro original for de outro PSBio, ou se houver exceção pendente para ele, recusa com `UPDATE_REFUSED`.
5. Compara as biometrias do update com as do cadastro. Sem match, responde `UPDATE_ANOMALY` e aguarda o tratamento.
6. Com match e sem digitais novas, realiza o update como `TRUSTED_ENROLL` e conclui com `UPDATE_OK`.
7. Com digitais novas, procura essas digitais na blacklist e depois na base e no cache:
   * na blacklist: `UPDATE_ANOMALY_BLACKLIST`;
   * em outra pessoa: `UPDATE_ANOMALY`;
   * não encontradas, ou encontradas no mesmo indivíduo com posições trocadas: envia um pacote IDE aos demais PSBios, passa por `CACHE_OK` e conclui com `UPDATE_OK`.

![Fluxo de Update](https://8115392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJaE9Zybol0s5SL1TerUi%2Fuploads%2FcV2NDfdHocRr6kvWr2RK%2Fimg-update-r2.png?alt=media)
{% endtab %}

{% tab title="Delete" %}
Remove um cadastro da rede. Só o PSBio que detém o cadastro original pode removê-lo.

1. Se o cadastro for de outro PSBio, recusa com `DELETE_NOT_OK`.
2. Muda para `DELETE_PENDING` e remove o cadastro da base e do cache locais.
3. Notifica a remoção aos demais PSBios, que devem remover o cadastro do cache e revogar sua validade.
4. Quando recebe a confirmação de todos, conclui com `DELETE_OK`.

![Fluxo de Delete](https://8115392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJaE9Zybol0s5SL1TerUi%2Fuploads%2F4PfzL1Wo5Thox7lgYksS%2Fimg-delete-r2.png?alt=media)
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Exceções aguardam tratamento no GBS Apps.** Com `ENROLL_ANOMALY` ou `UPDATE_ANOMALY`, a transação fica pendente até a exceção ser tratada. Os tratamentos possíveis e os status resultantes estão em [Exceções e duplicidades](/gbspsbio/como-funciona/excecoes.md).
{% endhint %}

***

## Status de transação

| Status                     | Operação       | Tipo               | Significado                                                                                                             |
| -------------------------- | -------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `SEARCH_IN_PROGRESS`       | Search         | Em andamento       | Busca recebida.                                                                                                         |
| `SEARCH_MATCH`             | Search         | Final              | IDN encontrado e biometrias conferem.                                                                                   |
| `SEARCH_NOT_MATCH`         | Search         | Final              | IDN encontrado, mas as biometrias não conferem.                                                                         |
| `SEARCH_FAILED`            | Search         | Final              | IDN não existe em nenhum PSBio.                                                                                         |
| `ENROLL_IN_PROGRESS`       | Enroll         | Em andamento       | Cadastro recebido.                                                                                                      |
| `ENROLL_ANOMALY_BLACKLIST` | Enroll         | Final              | Biometrias encontradas na blacklist. Cadastro recusado.                                                                 |
| `ENROLL_FAILED`            | Enroll         | Final              | IDN já cadastrado em outro PSBio. Cadastro recusado.                                                                    |
| `ENROLL_ANOMALY`           | Enroll         | Aguarda tratamento | Biometrias encontradas na base local ou no cache.                                                                       |
| `ENROLL_CACHE_OK`          | Enroll         | Em andamento       | Pacote IDE enviado aos demais PSBios. Aguarda as respostas VRE.                                                         |
| `ENROLL_OK`                | Enroll         | Final              | Cadastro concluído.                                                                                                     |
| `UPDATE_IN_PROGRESS`       | Update         | Em andamento       | Atualização recebida.                                                                                                   |
| `UPDATE_ANOMALY_BLACKLIST` | Update         | Final              | Biometrias encontradas na blacklist. Update recusado.                                                                   |
| `UPDATE_FAILED`            | Update         | Final              | IDN não encontrado. Update recusado.                                                                                    |
| `UPDATE_REFUSED`           | Update         | Final              | Cadastro é de outro PSBio ou tem exceção pendente.                                                                      |
| `UPDATE_ANOMALY`           | Update         | Aguarda tratamento | Biometrias não conferem com o cadastro original, ou digitais novas foram encontradas em outro indivíduo.                |
| `CACHE_OK`                 | Update         | Em andamento       | Pacote IDE enviado aos demais PSBios.                                                                                   |
| `UPDATE_OK`                | Update         | Final              | Atualização concluída.                                                                                                  |
| `DELETE_PENDING`           | Delete         | Em andamento       | Cadastro removido localmente. Aguarda confirmação dos demais PSBios.                                                    |
| `DELETE_NOT_OK`            | Delete         | Final              | Cadastro é de outro PSBio. Remoção recusada.                                                                            |
| `DELETE_OK`                | Delete         | Final              | Remoção confirmada por todos os PSBios.                                                                                 |
| `FRAUD` / `PERSON_FRAUD`   | Enroll, Update | Final              | Notificados após o tratamento de algumas exceções. Veja [Exceções e duplicidades](/gbspsbio/como-funciona/excecoes.md). |

***

## Pacotes trocados entre PSBios

Mensagens trocadas entre os PSBios citadas nos fluxos acima:

| Pacote      | Para que serve                                                                                                                  |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `IDN_Query` | Pergunta aos demais PSBios se um IDN já está cadastrado.                                                                        |
| `IDE`       | Enviado aos demais PSBios para sincronizar os caches.                                                                           |
| `VRE`       | Resposta dos demais PSBios. O campo `SRF` vem `X` (resultado negativo) ou `M` (resultado positivo para as biometrias enviadas). |
| `UPR`       | Encaminha um update ao PSBio que detém o cadastro original.                                                                     |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.griaule.com/gbspsbio/como-funciona/fluxos.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
