# Análise de Lights Out

Quando um cadastro resulta em uma exceção, após o grupo de exceção ser criado e todas as exceções serem inseridas ele passará por uma análise de Lights Out.

{% hint style="warning" %}
A análise de Lights Out é uma funcionalidade disponível apenas a partir das versões 5 do GBDS
{% endhint %}

Uma exceção será analisada pelo Lights Out quando:

* Um grupo de exceções tiver todos os tratamentos biométricos finalizados
  * Nesse caso, a análise e tratamento de Lights Out são sincronizados com o tratamento na API.
* Quando um cadastro é terminado no Cluster do GBDS, gera uma exceção e o grupo de exceção possui target BIOGRAPHIC
  * Nesse caso, o GBDS Cluster irá marcar o grupo de exceção como READY para a análise de Lights Out na coluna `lights_out_status` em `gbds.exception_group`  e a análise é feita de maneira assincrona na API depois
  * O grupo de exceção pode ter uma ou mais exceções.

### Thread de Lights Out

Para analisar grupos de exceção para Lights Out, a API terá uma thread de serviço que irá executar na API classificada como `LEADER` na tabela `gbds.apis` quando:

* `gbds.lightsout.enabled` for true
* E os grupos de exceção estiverem marcados como READY na coluna `lights_out_status` da tabela `gbds.exception_group`

{% hint style="info" %}
A API irá se comportar como LEADER apenas se o hostname e porta configurados forem iguais aos descritos na tabela `gbds.apis`
{% endhint %}

### Análise de Lights Out

Dado que a API classificada como LEADER está rodando e um grupo de exceção marcado como READY foi selecionado para análise, os requisitos para que esse grupo seja tratado automaticamente são:

* O grupo de exceção deve ser de cadastro (enroll)
* O grupo de exceção não deve ter conflito de ID de chaves em suas transações (entrante incluso)
  * Chaves configuradas em `gbds.lightsout.enroll.unify.weakKeys` não são consideradas
* O grupo de exceção deve ter dados biográficos coincidentes entre todas suas transações (os IDs biográficos são configuráveis)
  * As chaves biográficas que devem coincidir são configuradas em `gbds.lightsout.enroll.unify.matchBiographics`&#x20;
  * Para que coincidam, **valor e ID** devem ser iguais (acentos não são diferenciados no valor)

### Tratamento de Lights Out

O grupo será tratado automaticamente uma vez que todos os requisitos anteriores forem cumpridos

#### KEEP

Serão mantidas:

* Todas as transações
* Todas as chaves
* Todos os biográficos de todas as transações
  * Se houver um conflito em ID biográfico, será mantido o valor da última transação
* Todas as labels são inclusas
* O usuário de tratamento será `lightsout`&#x20;
* O comentário de tratamento de grupo será definido para `Lights out automatic treatment`&#x20;

O grupo de exceção terá o critério usado salvo para referência futura, podendo ser (nonConflitantKeys, weakKeys, matchedBiographics)

### Busca de LightsOut

O status de um tratamento de Lights Out pode ser buscado da Base de Dados Relacional utilizando a query:

Para agrupar os tratamentos por status

```sql
SELECT eg.lights_out_status, COUNT(*)
FROM gbds.exception_group eg
group by eg.lights_out_status;
```

Para checar um grupo individualmente, buscando a linha inteira através do GGUID:

```sql
SELECT * FROM gbds.exception_group eg WHERE eg.gguid = 'xxxx';
```

### Reprocessamento

Para enviar um grupo de exceção para análise de Lights Out basta mudar o status do grupo na tabela `gbds.exception_group` através da query (alterando o GGUID para o correspondente):&#x20;

```
UPDATE gbds.exception_group SET lights_out_status = 'READY' WHERE gguid = 'xxxx';
```

{% hint style="danger" %}
Não é recomendado que se altere grupos que já foram processados por AUTO\_TREAT
{% endhint %}

### Configurações

As configurações do Banco de Dados para Lights Out são:

<table><thead><tr><th width="266.09088134765625">Configuração</th><th>Tipo</th><th>Valor padrão</th><th>Descrição</th></tr></thead><tbody><tr><td>gbds.lightsout.enabled</td><td>API</td><td>true</td><td>Valor responsável por habilitar o Lights Out</td></tr><tr><td>gbds.lightsout.enroll.unify.weakKeys</td><td>API</td><td>-</td><td>Lista separada por vírgulas que define as chaves fracas (não serão consideradas na checagem de chaves)</td></tr><tr><td>gbds.lightsout.enroll.unify.matchBiographics</td><td>API</td><td>-</td><td>Lista separada por vírgulas que define quais biográficos deverão coincidir chave e valor (acentos não são considerados)</td></tr></tbody></table>

{% hint style="warning" %}
API deve estar classificada como LEADER na tabela `gbds.apis` e deve estar ativa
{% endhint %}


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/configuracao-do-gbds/analise-de-lights-out.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
