# Configuração do ETR Web Server

## Introdução

Esse manual descreve a configuração dos componentes do lado do servidor do *GBS ETR*. O GBS ETR é uma aplicação que permite o usuário analisar e tratar exceções geradas pelo GBDS.

O procedimento de configuração deve ser feito somente depois do passo de instalação. Para mais informações, consulte o [Manual de Instalação do GBS Apps](/componentes-web/gbsappssetup.md).

## Configuration

Os passos de configuração são:

1. Configure o [Tomcat](#configuracao-do-tomcat);
2. Configure os [Certificados](#configuracao-de-certificados);
3. Gere a [Senha Criptografada](#criptografia-da-senha-do-banco-de-dados);
4. Habilite o [Best of Biometrics](#habilitando-o-best-of-biometrics);
5. Configure as [Chaves e Biográficos mostrados](#configurando-chaves-e-biograficos-para-aparecerem-na-lista-de-excecoes);
6. Configure o [Destaque de Rótulos](#configuracao-de-destaque-de-rotulo);
7. Configure os [Tratamentos Permitidos](#configuracao-de-tratamentos-permitidos);
8. Configure o [Acesso Web](#configuracao-do-etr);
9. Configure o [Ambiente PSBIO](#configuracao-especifica-para-ambiente-psbio);
10. Configure o [Lights Out](#lights-out);
11. Configure outras [propriedades do config.properties](#configuracoes-finais);

Todos os passos são descritos abaixo.

### Configuração do Tomcat

Edite o arquivo de configuração do Tomcat para configurar os certificados e a porta que a aplicação usará.

```bash
vi /var/lib/tomcats/etr/conf/server.xml
```

Para mudar a porta, procure por `connector port=`. Essa é a porta para operações backend.

### Configuração de Certificados

Para habilitar autenticação SSL, procure por `connector port=` no arquivo `/conf/server.xml`.

Existem duas entradas. A comentada é a configuração para SSL. Remova os delimitadores de comentários `<!--` e `-->`, então ajuste os seguintes parâmetros:

```properties
port="58194"
keystoreFile="/home/griaule/keystore"
keystorePass="password"
keyAlias="1"
clientAuth="true"
truststoreFile="/home/griaule/keystore"
truststorePass="password"
```

O parâmetro `port` deve ser a porta de rede desejada para a aplicação.

Mude o caminho do `keystoreFile` e o `truststoreFile` para os valores apropriados. Faça o mesmo para o `keystorePass` e o `truststorePass`.

O parâmetro `clientAuth="true"` irá requerer autenticação do servidor para o cliente e do cliente para o servidor. Isso significa que o cliente necessitará importar o certificado no navegador para poder acessar a aplicação.

{% hint style="warning" %}
Quando **clientAuth** é definida como *true*, o administrador do sistema deve fornecer o arquivo **certificate.pfx** para os usuários finais.
{% endhint %}

### Criptografia da senha do Banco de Dados

No arquivo `config.properties`, o parâmetro `jdbc.password` é uma senha criptografada. Para gerar a senha criptografada, siga os seguintes passos:

1. Vá para o seguinte diretório:

   ```bash
   cd /var/lib/tomcats/etr/webapps/gbs-etr-server/WEB-INF/lib
   ```
2. Execute o comando:

   ```bash
   java -cp gbs-common-db-<versão>.jar com.griaule.commons.util.EncryptUtil <senhaDesejada>
   ```
3. A senha criptografada aparecerá depois da mensagem: *"Encrypted password is:"*

{% hint style="info" %}
Guarde a senha criptografada. Ela será usada em configurações posteriores.
{% endhint %}

### Habilitando o Best of Biometrics

O Best of Biometrics é uma operação aplicada quando dois ou mais perfis são mesclados ou vinculados.

Quando aplicado, o Best of Biometrics avalia cada template de impressão digital e palmar individualmente e seleciona os templates com a mais alta qualidade em cada dedo e/ou posição da palma entre todas as transações mescladas. Em seguida, atualiza o perfil da pessoa para unificar a "melhor" biometria em uma única transação ativa que será utilizada para comparação biométrica. Esta operação não se aplica aos templates de Face e Iris, nos quais as imagens mais recentes substituirão as mais antigas, independentemente da qualidade.

{% hint style="danger" %}
O Best of Biometrics é um recurso disponível para GBDS e para o ETR. Apesar de cumprirem a mesma função, eles **NÃO** são o mesmo processo e **NÃO DEVEM** estar juntos.

Para mais informações, entre em contato com o time de Suporte da Griaule.
{% endhint %}

Para habilitar o Best of Biometrics no ETR, o banco de dados deve ter os parâmetros `treat.multiMerge.consolidation` e `bob.trustedUpdate.active` definidos como `true`.

Para criar e habilitar os parâmetros:

```sql
INSERT INTO `sphinx`.`settings` (`name`, `type`, `val`) VALUES ('treat.multiMerge.consolidation', 'ETR', 'true');
INSERT INTO `sphinx`.`settings` (`name`, `type`, `val`) VALUES ('bob.trustedUpdate.active', 'ETR', 'true');
```

Para habilitar parâmetros existentes:

```sql
UPDATE `sphinx`.`settings` SET `val`='false' WHERE  `name`='treat.multiMerge.consolidation' AND `type`='ETR';
UPDATE `sphinx`.`settings` SET `val`='false' WHERE  `name`='bob.trustedUpdate.active' AND `type`='ETR';
```

Se o Best of Biometrics estiver ativo e for necessário desativá-lo, use a seguinte query:

```sql
UPDATE `sphinx`.`settings` SET `val`='false' WHERE  `name`='bob.trustedUpdate.active' AND `type`='ETR';
```

### Configurando Chaves e Biográficos para Aparecerem na Lista de Exceções

A aplicação mostra chaves e biográficos na tela de lista de exceções. É possível configurar os campos que serão exibidos (até dois campos), por exemplo: CPF, idn, documentID, nome e qualquer outro campo desejado.

Para configurar um novo campo, é necessário que este campo seja adicionado ao banco de dados MySQL. FaçA login no servidor MySQL usando:

```bash
mysql -u<user> -p
```

Execute a seguinte instrução para verificar os campos existentes:

```sql
use sphinx;

select * from field;
```

Verifique o número de campos que retornam na consulta. Se você já possui 7 campos, a ordem do novo deve ser 8 por exemplo.

Execute a seguinte instrução, alterando os valores de acordo:

```sql
INSERT INTO `sphinx`.`field` (`name`, `description_en_us`, `description_pt_br`, `description_es_es`, `field_type`, `field_kind`, `field_order`, `cardscan`) VALUES ('newField', 'descriptionEN', 'descriptionBR', 'descriptionES', 'string', 'KEY', '8', '1');
```

* newField = nome do campo a ser usado
* descriptionEN = descrição em inglês
* descriptionBR = descrição em português
* descriptionES = descrição em espanhol
* string = o tipo do valor (string ou integer) – chaves e biográficos podem usar string
* KEY = o tipo do campo: `KEY` ou `BIOGRAPHIC`
* 8 = É a ordem dos campos. Basta aumentar o número de campos que já existem (o número atual foi retornado na consulta anterior)
* 1 = habilitar o campo para cardscan. Não é necessário alterar este valor

Execute uma solicitação de **GET** para a URL do endpoint `IP:port/config`.

Copie a resposta (tudo dentro de showFields).

Envie uma solicitação **POST** para a mesma URL do endpoint com as configurações de JSON modificadas (todos os campos desejados devem ser informados - campos antigos e campos novos, caso contrário apenas os campos informados serão considerados):

```json
{
	"showFields": [
		{
			"name": "newField",
			"descriptionEnUs": "descriptionEN",
			"descriptionPtBr": "descriptionBR",
			"required": false,
			"type": "string",
			"kind": "KEY",
			"order": 0,
			"cardscan": true,
			"candidate-list": false
		},
		{
			"name": "name",
			"descriptionEnUs": "Name",
			"descriptionPtBr": "Nome",
			"required": false,
			"type": "string",
			"kind": "BIOGRAPHIC",
			"order": 0,
			"cardscan": true,
			"candidate-list": false
		}
	]
}
```

A resposta correta deve ser:

```json
{
	"status": "OK"
}
```

### Configuração de Destaque de Rótulo

O aplicativo mostra rótulos quando o usuário está analisando uma exceção. É possível configurar a cor de destaque desses rótulos.

Execute uma solicitação de **GET** para o endpoint `IP:port/config`.

Copie a resposta (tudo dentro da configuração do sistema).

Envie uma solicitação **POST** para o mesmo URL do endpoint, alterando o seguinte item no JSON copiado:

```json
{
	"highlightLabels": [
		{
			"label": "OWNED",
			"color": "#ff00f0"
		}
	]
}
```

Neste caso, o rótulo *OWNED* será destacada com a cor especificada.

### Configuração de Tratamentos Permitidos

O ETR usa o arquivo `/var/lib/tomcats/etr/conf/treatments.json` para exibir os tratamentos que estarão disponíveis para o tratamento de exceções:

```default
SAME_FINGERS, DIFFERENT_FINGERS, INCORRECT_ENROLL, MERGE, and RECOLLECT
```

Exemplo:

```json
{
	"key": "enroll.merge",
	"type": "ENROLL",
	"status": "MERGE_TRANSACTIONS",
	"enabled": true,
	"match-person-effect": "MERGE",
	"enroll-effect": "MERGE"
}
```

* O valor da chave com tipo ENROLL pode ser: enroll.same\_fingers, enroll.different\_fingers, enroll.recollect, enroll.merge
* O valor da chave com tipo UPDATE pode ser: update.same\_fingers, update.different\_fingers, update.incorrect\_enroll, update.recollect, update.merge

Para habilitá-lo: defina o valor como `true`. Caso contrário, use `false`.

* O match-person-effect é o efeito que será exibido na tela do ETR para a pessoa de referência no banco de dados. Valores disponíveis: KEEP, DISCARD, MERGE, and BLACKLIST.
* O enroll-effect é o efeito que será exibido na teal do ETR para a pessoa entrante via cadastro no banco de dados. Valores disponíveis: KEEP, DISCARD, MERGE, and BLACKLIST.

## Arquivo de Configuração da Aplicação

Essa seção descreve as possíveis configurações do arquivo `config.properties`. Para acessá-lo, abra-o com:

```bash
vi /var/lib/tomcats/etr/conf/config.properties
```

Um exemplo do arquivo `config.properties` pode ser visto na seção [Exemplo do Arquivo de Configuração](#exemplo-do-arquivo-de-configuracao).

{% hint style="danger" %}
Todas as linhas devem estar presentes no arquivo de configuração. Comentar ou deletar linhas pode causar comportamentos inesperados. Para informações adicionais, contate o Time de Suporte da Griaule.
{% endhint %}

### Configuração do ETR

Esta seção mostrará algumas configurações específicas para o ETR e a configuração do IP e porta da aplicação que o usuário final acessará. O IP e a porta devem ser os mesmos configurados na seção de [Configuração do Tomcat](#configuracao-do-tomcat).

```properties
etr.ip=<ip>
etr.port=<port>
etr.protocol=<protocol>
```

{% hint style="warning" %}
Certifique-se de que os parâmetros de configuração `etr.ip`, `etr.port` e `etr.protocol` estejam corretamente especificados no arquivo `config.properties`. Em diversos casos, o IP será o mesmo para diversas aplicações. Contudo, cada aplicação possuirá uma porta **diferente e única**.
{% endhint %}

O recurso de verificação dupla para o ETR pode ser desabilitado executando a seguinte consulta no banco de dados relacional: ``UPDATE `sphinx`.`settings` SET `val`='false' WHERE `name`='etr.doubleCheck' AND `type`='ETR';``

#### Configuração específica para ambientes extras do ETR

É possível ter mais de uma instância do ETR em execução. É essencial permitir que apenas um ETR escute a notificação de exceção para evitar duplicar as exceções no banco de dados.

O parâmetro de configuração `notification.active` define se o ETR escutará as notificações. Apenas um ETR deve tê-lo como `true`, enquanto todas as outras instâncias devem ser definidas como `false`.

#### Configuração específica para ambiente PSBIO

Para configurar o ambiente para PSBIO:

```properties
gbds.listExceptions.labels=COMMON_NAME_OF_CERTIFICATE
filter.people.pguid=ALL
getMatchedPersonWithTguid=false
```

A configuração `getMatchedPersonWithTguid` define os critérios para recuperar dados em exceções de cadastro (enroll).

* Quando definido como `true`, o perfil de referência será recuperando usando o **Transaction GUID (TGUID)**
* Quando definido como `false`, o perfil de referência será recuperando usando o **Person GUID (PGUID)**

Ao definir esse valor de configuração como `true`, a recuperação do perfil não será afetada por nenhuma atualização da pessoa de referência.

{% hint style="info" %}
Essa configuração não tem efeito nas exceções de **atualização**.
{% endhint %}

{% hint style="danger" %}
É estritamente recomendado não alterar a configuração `filter.people.pguid` sem a devida orientação, sob o risco de comprometer o funcionamento do ETR. Para mais informações, entre em contato com o Time de Suporte da Griaule.
{% endhint %}

### Lights Out

O Lights Out é um recurso que permite que exceções de cadastro e atualização sejam tratadas automaticamente de acordo com os parâmetros configurados. Para permitir que o lightsOut trate uma exceção, os parâmetros `lightsOut.enroll.active` e `lightsOut.update.active` devem ser definidos como verdadeiros. Os valores possíveis são `true` ou `false`.

{% hint style="danger" %}
Para que o Lights Out funcione corretamente, **TODOS** os parâmetros de configuração do Lights Out no arquivo `config.properties` devem estar presentes, conforme descrito no arquivo de exemplo na seção [Exemplo do Arquivo de Configuração](#exemplo-do-arquivo-de-configuracao). A falta ou exclusão de alguns parâmetros de configuração pode causar problemas de comportamento inesperados.
{% endhint %}

Além disso, o usuário pode personalizar o Lights Out para cada operação de cadastro ou atualização para usar outras informações biométricas ou biográficas. As opções personalizáveis referem-se a impressões digitais, face, íris, informações biográficas e rótulos e estão descritas abaixo.

{% hint style="warning" %}
Todos os parâmetros abaixo estão disponíveis para as operações de cadastro e atualização, portanto, em `*lightsOut.{operação}.*`, o texto `{operação}` deve ser substituído por `enroll` ou `update`, como exemplo o parâmetro `lightsOut.{operação}.minimum.fingerprints` pode ser `lightsOut.update.minimum.fingerprints` ou `lightsOut.enroll.minimum.fingerprints`.
{% endhint %}

#### Configuração de Rótulo

A configuração do rótulo pode ser definida em `lightsOut.{operação}.disabled.labels`, ele aceita mais de um rótulo por vez e o valor padrão é vazio. A escolha de um ou mais valores desativará o Lights Out se pelo menos um deles estiver presente no perfil do participante.

#### Configuração de Digitais

Para impressões digitais, existem três parâmetros disponíveis, são eles:

* `lightsOut.{operação}.minimum.fingerprints`, que define as correspondências mínimas de impressão digital que devem ocorrer para permitir que Lights Out execute o tratamento;
* `lightsOut.{operação}.fingerScore.any_finger`, que define o limite para todos os dedos;
* `lightsOut.{operação}.fingerScore.{lado}_{dedo}`, que define o limite para um dedo especificado. {lado} é para a esquerda ou direita e {dedo} é o nome do dedo. Os possíveis valores são:
  * {lado}: left or right.
  * {dedo}: little, ring, middle, index, and thumb.

O parâmetro `.any_finger` será ignorado para um dedo se o limite do dedo específico for diferente de zero, por exemplo, se `lightsOut.{operação}.fingerScore.right_ring=80`, o limite para o dedo anelar direito será 80 em vez do definido em `lightsOut.{operação}.fingerScore.any_finger`.

Todos esses parâmetros de operação são definidos por `lightsOut.{operação}.fingerScoresRule`, que pode ter os valores `AT_LEAST_MINIMUM`, onde é necessário atingir pelo menos o limite no número de impressões digitais configurado em `lightsOut.{operação}.minimum.fingerprints` para que o Lights Out trate a exceção, ou `ALL`, onde todas as pontuações de impressão digital devem atingir o limite de pontuação.

#### Configuração de Face

Os parâmetros configuráveis de face são: `lightsOut.{operação}.useFace` para habilitar o uso de face e é `lightsOut.{operação}.faceScore` para definir o limiar de qualidade.

#### Configuração de Íris

Os parâmetros configuráveis de íris são:

* `lightsOut.{operação}.useIris` que define se a íris será usada;
* `lightsOut.{operação}.minimum.irises`, que define a quantidade mínima de íris necessária;
* `lightsOut.{operação}.irisScore.any_iris` define o limiar de qualidade para todas as íris;

  > Esse valor será usado se `lightsOut.{operação}.irisScore.left_iris` ou `lightsOut.enroll.irisScore.right_iris` estiverem definidas como 0, senão, o valor dos últimos dois parâmetros será usado.

#### Configuração Biográfica

As informações biográficas para Lights Out podem ser ativadas no parâmetro `lightsOut.{operação}.useBiographics`, os valores possíveis para esses parâmetros são `true` ou `false`.

As chaves biográficas que precisam estar presentes podem ser listadas no parâmetro `lightsOut.{operação}.biographicRules` para `key:MATCH` ou `key:NOT_MATCH`. Esta configuração aceita mais de um parâmetro por vez, por exemplo:

O parâmetro de configuração `lightsOut.enroll.biographicRules=key1:MATCH, key2:MATCH, key3:NOT_MATCH` só aplicará o tratamento Lights Out à operação de registro se key1 e key2 corresponderem em ambos os perfis, key3 não corresponder e as outras regras pré-definidas, como useFace, useIris, limiar de dedos e número mínimo de correspondências de digitais também forem válidas.

{% hint style="info" %}
Se alguma dessas informações biométricas e/ou biográficas for escolhida para ser usada no Lights Out e o perfil não possuir essa informação, por exemplo, não possuir captura de íris e `lightsOut.{operação}.useIris=true`, o Lights Out não realizará o tratamento.
{% endhint %}

A ação executada para o tratamento automático de exceções pode ser definida através do parâmetro `lightsOut.{operação}.treatStatus`, os valores possíveis são os mesmos valores possíveis para o tratamento da exceção pelo ETR. Além disso, um comentário para o tratamento escolhido pode ser personalizado no parâmetro `lightsOut.{operação}.treatComments`.

### Configurações de Pooling

A configuração de pooling controla o comportamento de paginação do ETR. Duas configurações o controlam: `pollingPaginationMode` e `pollingPagination.size`. A primeira controla se está ativo ou não, a segunda controla quantas exceções serão exibidas por paginação. A paginação padrão do GBDS é 1000.

### Configurações de Transações Recusadas

As configurações de transações recusadas controlam se o ETR deve reenviar uma transação recusada após todas as exceções que geraram essa transação serem resolvidas.

Uma transação recusada é uma transação que gerou uma exceção com outra transação que também tem uma exceção. Exemplo:

```default
1 - O Perfil A está no GBDS
2 - Você enviou uma Transação A e essa transação gerou uma exceção com o Perfil A
3 - Depois, você enviou uma Transação B e essa transação gerou uma exceção com a Transação A.
4 - O GBDS marcará a Transação B como RECUSADA.
```

Este recurso reenviará a Transação B após a exceção gerada pela Transação A ser tratada. Para habilitar este recurso, defina `refused.active` como verdadeiro. O parâmetro `resend.tries` define o número máximo de vezes que o ETR tentará reenviar uma transação recusada.

Outras configurações controlam o atraso na operação. Estes são `updateStatusDelay`, `verifyStatusDelay`, `listRefusedDelay` e `deleteRefusedDelay`. O tempo de atraso é definido em **segundos**.

### Configurações finais

As configurações finais que requerem atenção e devem ser editadas para corresponder a cada implementação específica são `jdbc.url`, `jdbc.username`, `jdbc.password` e `gbds.url`. Configure os parâmetros de acordo com o ambiente.

Alguns detalhes de propriedades são mostrados na subseção abaixo.

{% hint style="info" %}
Lembre-se de substituir a senha criptografada gerada na seção [Criptografia da senha do Banco de Dados](#criptografia-da-senha-do-banco-de-dados) neste arquivo.
{% endhint %}

#### Descrição de Configurações

**listAnalysisTreatments.initialTimestamp**

> O ETR atualiza a lista de exceções pendentes por meio de consultas ao GBDS que são restritas por um intervalo de tempo. Este parâmetro define o início deste intervalo de tempo, expresso no formato **DD/MM/AAAA HH:MM:SS**. Exceções pendentes anteriores a este valor **não** serão listadas nos clientes ETR.

**listAnalysisTreatments.offset**

> Essa propriedade controla a duração do intervalo de tempo usado para consultar o GBDS para exceções pendentes, conforme descrito em **listAnalysisTreatments.initialTimestamp.** O valor pode ser expresso em dias, horas, minutos ou segundos: `1d`, `5h`, `30m` ou `460s`.

**listTreatedTreatments.initialTimestamp**

> O ETR atualiza a lista de exceções tratadas por meio de consultas ao GBDS que são restritas por um intervalo de tempo. Este parâmetro define o início deste intervalo de tempo, expresso no formato **DD/MM/AAAA HH:MM:SS**. Exceções tratadas antes desse valor não serão listadas nos clientes ETR.

**listTreatedTreatments.offset**

> Essa propriedade controla a duração do intervalo de tempo usado para consultar o GBDS para exceções tratadas, conforme descrito em **listTreatedTreatments.initialTimestamp**. O valor pode ser expresso em dias, horas, minutos ou segundos: `1d`, `5h`, `30m` ou `460s`.

**listTreatments.analysisAndTreated.synchronized**

> Esta propriedade define a listagem de tratamentos na ETR. Se `true`, o aplicativo listará primeiro todas as análises não tratadas e depois as tratadas. Se `false`, o aplicativo listará com base no intervalo de tempo da análise.

**listTreatments.offsetDelay.milliseconds**

> Esta propriedade controla a duração do atraso entre cada chamada do GBDS.

## Finalizando as Configurações

Após completar todos os passos de configuração, volte para o [Manual de Instalação do GBS Apps - Seção de Configuração](/componentes-web/gbsappssetup.md#configuracoes).

## Double Blind

A análise de Double Blind é usada quando há necessidade de cada decisão passar por uma segunda análise para confirmar a decisão. Se a segunda decisão for diferente da primeira, haverá um terceiro e último veredito de um supervisor.

Para ativar ou desativar o Double Blind, a instalação do ETR Server deve estar completa. Para alterar seu status, proceda da seguinte forma:

1. Entre no MySQL
2. Atualize a configuração da tabela de banco de dados sphinx com uma das seguintes queries:

   ```sql
   #DEACTIVATE

   UPDATE `sphinx`.`settings` SET `val`='false' WHERE  `name`='etr.doubleCheck' AND `type`='ETR';
   commit;

   #ACTIVATE

   UPDATE `sphinx`.`settings` SET `val`='true' WHERE  `name`='etr.doubleCheck' AND `type`='ETR';
   commit;
   ```
3. Reset ETR Server

## Exemplo do Arquivo de Configuração

Essa seção mostra um exemplo do arquivo `config.properties`.

```properties
#     /$$$$$$$$ /$$$$$$$$ /$$$$$$$
#    | $$_____/|__  $$__/| $$__  $$
#    | $$         | $$   | $$  \ $$
#    | $$$$$      | $$   | $$$$$$$/
#    | $$__/      | $$   | $$__  $$
#    | $$         | $$   | $$  \ $$
#    | $$$$$$$$   | $$   | $$  | $$
#    |________/   |__/   |__/  |__/

# **************************************************************************************************************
# DATABASE (RDB)

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/etr?useSSL=false
jdbc.username=griaule
jdbc.password=CDrt8vbewA2YAubPNOLZkw==
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.showSql=false

# **************************************************************************************************************
# GBDS CONNECTION (& AUTHENTICATION LDAP ONLY)

gbds.url=http://localhost:8085
gbds.user=gbds_bind
gbds.key=Griaule.123
gbds.logLevel=INFO
gbds.timeout=300
gbds.listExceptions.label=

# **************************************************************************************************************
# ETR * GUI

etr.ip=127.0.0.1
etr.port=8089
etr.protocol=http
locale=en_us

# **************************************************************************************************************
# ETR * CONFIGURATION

biometric.modules=FINGERPRINT,FACE
faceQuality.qtdeMinErrors=2
filter.people.pguid=ALL
fingerprint.useSDK=true
gbds.etrUser=etr_server
getMatchedPersonWithTguid.enroll=true
getMatchedPersonWithTguid.update=true
highlight.labels=
listFields=KEY:documentID,BIOGRAPHIC:name
notification.active=true
pollingPagination.size=20
pollingPaginationMode=true
profile.cacheSize=100
profile.cacheTime=5m
same.user.simultaneous.login=false
showField.tguid=true
sync.logLevel=INFO

# **************************************************************************************************************
# ETR * SEND TREATMENTS

sendTreatments.active=true

# **************************************************************************************************************
# ETR * SEARCH TREATMENTS

verifyTreatments.active=true
verifyTreatments.interval.seconds=5
verifyTreatments.maxTries=5

# **************************************************************************************************************
# ETR * POLL ANALYSIS

listAnalysisTreatments.active=true
listAnalysisTreatments.interval.minutes=30
listAnalysisTreatments.delay.minutes=5
listAnalysisTreatments.initialTimestamp=01/01/2020 00:00:00
listAnalysisTreatments.offset=1d

# **************************************************************************************************************
# ETR * POLL TREATED

listTreatedTreatments.active=true
listTreatedTreatments.interval.minutes=120
listTreatedTreatments.initialTimestamp=01/01/2020 00:00:00
listTreatedTreatments.offset=1d

# **************************************************************************************************************
# ETR * LIST TREATED

listTreatments.analysisAndTreated.synchronized=true
listTreatments.offsetDelay.milliseconds=0

# **************************************************************************************************************
# ETR * LO (ENABLE/DISABLE)

lightsOut.enroll.active=false
lightsOut.enroll.disabled.labels=

lightsOut.update.active=false
lightsOut.update.disabled.labels=

# **************************************************************************************************************
# ETR * LO FINGERPRINT

lightsOut.enroll.minimum.fingerprints=12
lightsOut.enroll.fingerScore.any_finger=50
lightsOut.enroll.fingerScore.left_little=60
lightsOut.enroll.fingerScore.left_ring=80
lightsOut.enroll.fingerScore.left_middle=0
lightsOut.enroll.fingerScore.left_index=0
lightsOut.enroll.fingerScore.left_thumb=0
lightsOut.enroll.fingerScore.right_little=0
lightsOut.enroll.fingerScore.right_ring=0
lightsOut.enroll.fingerScore.right_middle=0
lightsOut.enroll.fingerScore.right_index=0
lightsOut.enroll.fingerScore.right_thumb=0
lightsOut.enroll.fingerScoresRule=AT_LEAST_MINIMUM

lightsOut.update.minimum.fingerprints=10
lightsOut.update.fingerScore.any_finger=100
lightsOut.update.fingerScore.left_little=100
lightsOut.update.fingerScore.left_ring=100
lightsOut.update.fingerScore.left_middle=0
lightsOut.update.fingerScore.left_index=0
lightsOut.update.fingerScore.left_thumb=0
lightsOut.update.fingerScore.right_little=0
lightsOut.update.fingerScore.right_ring=0
lightsOut.update.fingerScore.right_middle=0
lightsOut.update.fingerScore.right_index=0
lightsOut.update.fingerScore.right_thumb=0
lightsOut.update.fingerScoresRule=ALL

# **************************************************************************************************************
# ETR * LO OTHER (FACE/IRIS/BIOGRAPHIC)

lightsOut.enroll.useFace=false
lightsOut.enroll.faceScore=70
lightsOut.enroll.useIris=false
lightsOut.enroll.minimum.irises=0
lightsOut.enroll.irisScore.any_iris=0
lightsOut.enroll.irisScore.left_iris=0
lightsOut.enroll.irisScore.right_iris=0
lightsOut.enroll.useBiographics=false
lightsOut.enroll.biographicRules=name:MATCH

lightsOut.update.useFace=false
lightsOut.update.faceScore=100
lightsOut.update.useIris=false
lightsOut.update.minimum.irises=0
lightsOut.update.irisScore.any_iris=0
lightsOut.update.irisScore.left_iris=0
lightsOut.update.irisScore.right_iris=0
lightsOut.update.useBiographics=false
lightsOut.update.biographicRules=name:MATCH

# **************************************************************************************************************
# ETR * LO TREATMENT

lightsOut.enroll.treatStatus=MERGE_TRANSACTIONS
lightsOut.enroll.treatComments=Treated by ETR Lights Out

lightsOut.update.treatStatus=SAME_FINGERS
lightsOut.update.treatComments=Treated by ETR Lights Out

# **************************************************************************************************************
# ETR * Refused Thread

refused.active=true
updateStatusDelay=60
verifyRefusedDelay=60
listRefusedDelay=60
deleteRefusedDelay=60
resend.tries=3

# *************************************************************************************************************
# ADDITIONAL CONFIGURATION
#gbds.additionalHeaders={}
#gbds.flushDebugRequests=false
#gbds.proxy.url=
#gbds.proxy.port=
#gbds.enroll.priority=DEFAULT_PRIORITY
#gbds.trustedEnroll.priority=DEFAULT_PRIORITY
#externalIdName=null
```


---

# 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/componentes-web/etrwebconfig.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.
