> For the complete documentation index, see [llms.txt](https://ajuda.tagone.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ajuda.tagone.com.br/tagone-sistema/crediario/assistente-de-credito.md).

# Assistente de crédito

Este guia explica como cadastrar políticas de crédito no ERP de forma que o motor de análise consiga interpretá-las corretamente. As regras aqui são estritas: se a política não seguir exatamente esse

## 1. Estrutura de uma política

Toda política tem 5 campos:

| Campo         | O que é                                                                                            |
| ------------- | -------------------------------------------------------------------------------------------------- |
| **nome**      | Identificador único da política (ex.: `P0001`, `rest`, `entrad`)                                   |
| **descricao** | Texto livre explicando a política para humanos                                                     |
| **condicao**  | Regra que decide SE a política se aplica ao cliente                                                |
| **acao**      | O que fazer no limite/entrada quando a política se aplica (só usado quando `resultado` é LIBERADO) |
| **resultado** | Um dos 5 valores fixos: `LIBERADO`, `MESA`, `CONSULTA`, `BLOQUEADO`, `MANTIDO`                     |

***

## 2. Como escrever a CONDIÇÃO

A condição segue o padrão:

```
VARIAVEL OPERADOR VALOR [E|OU] VARIAVEL OPERADOR VALOR ...
```

**Sempre use o prefixo `VAR_` antes do nome do campo.** Isso é o que permite ao sistema reconhecer campos novos automaticamente, sem precisar de nenhum ajuste técnico no motor de crédito — só cadastrar a política já funciona:

```
VAR_IDADE MAIOR QUE 35
VAR_SCORE IGUAL A A
VAR_NEGATIVACAO_CONTAGEM MAIOR QUE 0
```

O nome depois do `VAR_` precisa ser exatamente o nome do campo do cliente (mesmo nome que aparece nos dados da análise), só que em maiúsculo. Se o campo não existir, a política simplesmente não se aplica — sem tentar adivinhar.

### Operadores disponíveis

| Operador (palavra) | Símbolo equivalente | Exemplo                                                                                                    |
| ------------------ | ------------------- | ---------------------------------------------------------------------------------------------------------- |
| MAIOR QUE          | `>`                 | `VAR_IDADE MAIOR QUE 18`                                                                                   |
| MENOR QUE          | `<`                 | `VAR_IDADE MENOR QUE 18`                                                                                   |
| MAIOR OU IGUAL A   | `>=`                | `VAR_RENDA_TOTAL MAIOR OU IGUAL A 2000`                                                                    |
| MENOR OU IGUAL A   | `<=`                | `VAR_DIAS_ULTIMA_COMPRA MENOR OU IGUAL A 30`                                                               |
| IGUAL A            | `==`                | `VAR_TELEFONE_CONFIRMADO IGUAL A SIM`                                                                      |
| DIFERENTE DE       | `!=`                | `VAR_SCORE DIFERENTE DE A`                                                                                 |
| EM (lista)         | —                   | `VAR_SCORE EM (E, F)` — também aceita `VAR_SCORE (E, F)`, sem a palavra EM                                 |
| NÃO EM (lista)     | —                   | `VAR_SCORE NÃO EM (A, B)` — também aceita `NAO EM` e `NOT IN`                                              |
| ENTRE (intervalo)  | —                   | `VAR_IDADE ENTRE (18, 65)` — inclusive nas duas pontas                                                     |
| VAZIO / PREENCHIDO | —                   | `VAR_RENDA_CONFIRMADA VAZIO` — só pra saber se o campo tem informação ou não; `0` **não** conta como vazio |

Palavra ou símbolo, tanto faz — os dois funcionam. O importante é escrever exatamente uma dessas formas, sem variações.

### Combinando duas ou mais condições

Use **E** ou **OU** entre as partes — mas nunca os dois na mesma condição:

```
VAR_IDADE MENOR QUE 18 E VAR_SCORE EM (E, F)          ✅ só E
VAR_NEGATIVACAO_CONTAGEM > 0 OU VAR_VALOR_ATRASADO > 0 ✅ só OU
VAR_IDADE MENOR QUE 18 E VAR_SCORE EM (E,F) OU VAR_RENDA > 0  ❌ não misture E e OU
```

Se precisar de uma lógica mais complexa (tipo "(A e B) ou C"), quebre em duas políticas separadas com o mesmo `resultado`.

***

## 3. Relacionando políticas entre si (encadeamento)

Uma política pode depender do que **outra política já decidiu**. Isso é útil quando uma regra só faz sentido depois que outra já foi avaliada.

Referencie o nome da outra política seguido de `.APLICADA` ou `.RESULTADO`:

```
P0001.APLICADA IGUAL A VERDADEIRO E VAR_IDADE MENOR QUE 18
```

Ou, na forma curta (mesmo efeito):

```
P0001.APLICADA E VAR_IDADE MENOR QUE 18
```

Também dá pra checar o resultado específico de outra política:

```
P0001.RESULTADO IGUAL A LIBERADO
```

**Não importa a ordem** em que as políticas estão cadastradas — o motor avalia em várias passagens até não sobrar mais nenhuma política nova pra destravar. Cadastre na ordem que fizer mais sentido pra leitura humana.

***

## 4. Como escrever a AÇÃO

A ação só é levada em conta quando `resultado = LIBERADO`. Ela decide como `limite_ajustado` e `entrada_obrigatoria` mudam.

| Ação                        | O que faz                                 | Exemplo                                            |
| --------------------------- | ----------------------------------------- | -------------------------------------------------- |
| `AUMENTAR <CAMPO> EM <N>%`  | Aumenta um percentual sobre o valor atual | `AUMENTAR LIMITE EM 20%`                           |
| `AUMENTAR <CAMPO> EM <N>`   | Soma um valor fixo (sem `%`)              | `AUMENTAR LIMITE EM 100` → soma R$ 100             |
| `REDUZIR <CAMPO> EM <N>%`   | Reduz um percentual sobre o valor atual   | `REDUZIR LIMITE EM 50%`                            |
| `REDUZIR <CAMPO> EM <N>`    | Subtrai um valor fixo (sem `%`)           | `REDUZIR LIMITE EM 100` → subtrai R$ 100           |
| `DEFINIR <CAMPO> COMO <N>%` | Define como um percentual do valor atual  | `DEFINIR LIMITE COMO 50%` → metade do limite atual |
| `DEFINIR <CAMPO> COMO <N>`  | Define um valor fixo                      | `DEFINIR LIMITE COMO 1500`                         |
| `ENTRADA DE <N>%`           | Atalho pra definir a entrada obrigatória  | `ENTRADA DE 30%`                                   |

`<CAMPO>` aceito: `LIMITE` (ou `LIMITE_AJUSTADO`) e `ENTRADA` (ou `ENTRADA_OBRIGATORIA`).

**Regra importante:** uma ação = uma mutação só. Se precisar mexer em limite E em entrada na mesma política, crie duas políticas com o mesmo `resultado`, cada uma cuidando de um campo.

Se o texto da ação não bater com nenhum desses formatos, a política é automaticamente reclassificada como `MESA` — ninguém libera crédito por causa de um erro de digitação, vai direto pra revisão humana.

***

## 5. Os 5 tipos de RESULTADO

| Resultado     | Significado                                  |
| ------------- | -------------------------------------------- |
| **LIBERADO**  | Ação é aplicada de verdade no limite/entrada |
| **MESA**      | Vai para análise da mesa de crédito          |
| **CONSULTA**  | Precisa de uma nova consulta ao birô         |
| **BLOQUEADO** | Cliente fora das políticas de crédito        |
| **MANTIDO**   | Condições atuais são mantidas, sem alteração |

### Regra de ouro

O `limite_ajustado` e o `entrada_obrigatoria` **só são alterados quando TODAS as políticas que se aplicaram ao cliente têm resultado LIBERADO**. Se aparecer qualquer política com outro resultado — mesmo uma só, mesmo com dez políticas LIBERADO ao lado dela — nada é alterado. A análise como um todo ainda não está liberada.

### Prioridade de decisão final (acao\_sugerida)

Quando o cliente recebe mais de um resultado diferente, existe uma ordem fixa que decide qual prevalece:

```
1º CONSULTA
2º MESA
3º MANTIDO
4º BLOQUEADO
5º LIBERADO (só se nenhum dos anteriores apareceu)
```

Ou seja: se o cliente tiver uma política CONSULTA e cinco políticas LIBERADO, a decisão final é **CONSULTA** — sempre o mais restritivo vence.

***

## 6. Erros comuns

* Escrever `IGUAL` sem o `A` depois (`SCORE IGUAL A`, não `SCORE IGUAL`)
* Misturar E e OU na mesma condição
* Esquecer o `%` quando a intenção era percentual (`AUMENTAR LIMITE EM 100` soma R$ 100, não dobra o limite — se quiser 100%, escreva `AUMENTAR LIMITE EM 100%`)
* Usar variável que não existe no cadastro do cliente (nome errado, típo de digitação)
* Ação com duas mutações numa política só (`AUMENTAR LIMITE E REDUZIR ENTRADA` — não existe esse formato, precisa ser duas políticas)

Quando algo não bate, o sistema não tenta adivinhar — ele te avisa exatamente o que não reconheceu, pra revisão manual.

***

## 7. Exemplos completos

**Bloquear menores de idade:**

```
condicao: VAR_IDADE MENOR QUE 18
resultado: BLOQUEADO
```

**Aumentar limite por bom pagador:**

```
condicao: VAR_ATRASO_MEDIO MENOR OU IGUAL A 0 E VAR_CONTRATO_QUITADO MAIOR QUE 0
acao: AUMENTAR LIMITE EM 20%
resultado: LIBERADO
```

**Encadeamento — exigir entrada se score baixo E outra política já bloqueou algo:**

```
condicao: VAR_SCORE EM (E, F) E P0001.APLICADA IGUAL A VERDADEIRO
acao: ENTRADA DE 30%
resultado: LIBERADO
```

***

## 8. FAQ — Perguntas frequentes

**Por que minha política não está aplicando, mesmo com os dados batendo?**

Quase sempre é um detalhe de digitação na condição. Confira:

* Escreveu `IGUAL A` completo, e não só `IGUAL`?
* Não misturou `E` e `OU` na mesma condição?
* O nome da variável está exatamente como no cadastro do cliente (sem espaço extra, sem abreviação diferente)?

O sistema não tenta adivinhar — se não bater exatamente com a gramática, considera a condição falsa.

***

**Posso usar símbolo (`>`, `<`, `==`) em vez de escrever por extenso?**

Sim, os dois funcionam e têm o mesmo peso: `MAIOR QUE` e `>` são equivalentes. Escolha um estilo e tente manter consistência entre as políticas.

***

**Como faço uma política depender de outra?**

Referencie o nome da política + `.APLICADA` (ou `.RESULTADO`):

```
P0001.APLICADA IGUAL A VERDADEIRO E VAR_IDADE MENOR QUE 18
```

Não importa a ordem em que as políticas foram cadastradas — o sistema resolve isso sozinho.

***

**Cadastrei uma lista assim: `VAR_SCORE ( E, F )` — funciona sem escrever "EM"?**

Sim. `VAR_SCORE EM (E, F)` e `VAR_SCORE (E, F)` dão o mesmo resultado.

***

**"AUMENTAR LIMITE EM 100" dobra o limite ou soma 100 reais?**

Soma R$ 100 (valor absoluto). Se a intenção é 100%, precisa escrever com o `%`: `AUMENTAR LIMITE EM 100%`.

***

**Minha política é LIBERADO, mas o limite não mudou. Por quê?**

Duas causas possíveis:

1. **A ação não bateu com nenhum formato reconhecido** — nesse caso a política é automaticamente reclassificada como `MESA`, e o `parecer` dela explica qual texto não foi entendido.
2. **Existe outra política aplicada ao mesmo cliente que não é LIBERADO** — nesse caso, nenhuma ação é aplicada em nenhuma política, mesmo que a ação individual esteja certinha. Só quando **todas** as políticas do cliente são LIBERADO é que o limite/entrada são realmente alterados.

***

**Quando o cliente cai em mais de um tipo de resultado (ex.: uma política MESA e outra LIBERADO), qual vale no final?**

Existe uma ordem fixa de prioridade — o mais restritivo sempre vence:

```
CONSULTA > MESA > MANTIDO > BLOQUEADO > LIBERADO
```

***

**Posso fazer uma ação mexer em limite E em entrada ao mesmo tempo?**

Não numa política só. Cada ação faz uma mutação. Se precisa dos dois, crie duas políticas com o mesmo `resultado`.

***

**Uma política com resultado `BLOQUEADO`/`MESA`/`CONSULTA`/`MANTIDO` também aparece na análise final?**

Sim, sempre. Ela só não altera limite/entrada — mas continua listada, com um parecer padrão explicando o motivo (ex.: "enviado para mesa de crédito").

***

**Preciso escrever `VAR_` antes de toda variável?**

É recomendado, não obrigatório — deixa a condição mais legível e sinaliza que aquilo é um campo do cliente. O sistema busca primeiro numa lista oficial de campos catalogados; se não achar ali, tenta resolver o nome direto contra os dados do cliente. Não existem mais apelidos: o nome precisa bater com o campo real (ex.: `VAR_LOJA_ESTADO`, não `VAR_UF_LOJA`).

***

**Preciso preencher o campo `acao` numa política que não é LIBERADO?**

Não. O campo `acao` só é lido e interpretado quando o `resultado` da política é `LIBERADO`. Para `MESA`, `CONSULTA`, `BLOQUEADO` e `MANTIDO`, o sistema usa uma frase padrão pra cada tipo, sem olhar o que está (ou não) escrito em `acao`. Pode deixar em branco ou usar pra uma anotação interna — não afeta o processamento.

***

**Preciso escrever tudo em maiúsculo?**

Não é obrigatório — o sistema não diferencia maiúsculo de minúsculo nos operadores e variáveis. Mas manter um padrão visual ajuda a evitar erro de digitação na hora de revisar.
