Skip to main content
Glama
Lucas-Bueno04

JETTAX Auditoria Fiscal AI MCP Server

README.md
# JETTAX Auditoria Fiscal AI (plugin MCPR)

Envelopa `app/JETTAX_AUDITORIA_4.0.py` — não modificado — atrás do contrato
MCPR, seguindo `PLUGINS/PROMPT_CONVERSAO_MCPR.md`. Usa um LLM para detectar
divergências entre os impostos declarados numa planilha de notas fiscais
(NFS-e) e os valores efetivamente mencionados no texto de cada nota.

## O que tem aqui

- `manifest.json` — contrato do plugin com duas funcionalidades:
  `listar_empresas` (grátis, sem chamar LLM — só inspeciona o que existe em
  `dados/`) e `auditar_empresas` (a auditoria completa, marcada
  `destrutiva: true` porque envia texto fiscal da empresa pra API da
  OpenAI e tem custo real por chamada).
- `Makefile` / `make.ps1` — entrypoints finos, só encaminham para `cli.py`.
- `cli.py` — o adapter: traduz stdin/stdout JSON em chamadas às classes de
  `app/JETTAX_AUDITORIA_4.0.py`. Nenhuma lógica de auditoria mora aqui.
- `app/JETTAX_AUDITORIA_4.0.py` — o sistema original, **sem nenhuma
  alteração**.
- `dados/` — raiz das empresas a auditar (ver "Como organizar os dados"
  abaixo). Substitui o `root_dir` arbitrário do CLI original — o MCPR só
  permite que caminhos resolvam dentro da raiz do plugin.

## Como organizar os dados

```
dados/
└── <NOME_DA_EMPRESA>/
    └── notas/
        └── recebidas.csv
```

Mesma estrutura que o CLI original já esperava, só que agora sempre dentro
de `dados/` (ou do diretório externo indicado — ver abaixo).

### Apontar para um diretório externo

Copiar os dados pra dentro de `dados/` toda vez nem sempre é prático. O
input `diretorio_dados` (em `listar_empresas` e `auditar_empresas`) aceita
um caminho **absoluto** no disco desta máquina — quando preenchido,
substitui `dados/` inteiramente como raiz, com o mesmo formato de sempre
dentro dele:

```
/home/usuario/Documents/NOTAS/
└── <NOME_DA_EMPRESA>/
    └── notas/
        └── recebidas.csv
```

Deixe `diretorio_dados` vazio pra manter o comportamento padrão (pasta
interna `dados/` do plugin).

`diretorio_dados` é declarado no manifesto como `tipo: "string"`, não
`tipo: "path"` — deliberadamente fora da contenção de caminho do MCPR (que
restringe todo input `path` à raiz do próprio plugin), já que o propósito
dele é justamente apontar pra fora da pasta do plugin. Só use com caminhos
em que você confia.

## Configuração

1. `cp .env.example .env` e preencha `OPENAI_API_KEY`.
2. Instale as dependências de `app/JETTAX_AUDITORIA_4.0.py` no mesmo
   `python3` que o `Makefile`/`make.ps1` chamam:
   ```
   pip install -r requirements.txt
   ```

## Diferenças em relação ao CLI original

- **Sem prompts interativos.** Os parâmetros que a JETTAX pedia via
  `Prompt.ask`/`IntPrompt.ask` (diretório, modelo, paralelismo, delay)
  agora são `inputs` da funcionalidade `auditar_empresas`, com os mesmos
  valores padrão.
- **`root_dir` reenraizado em `dados/` por padrão** (ou num diretório
  externo via `diretorio_dados`) — ver "Como organizar os dados".
- **Saída em JSON, não em tabelas Rich no terminal** — os mesmos dados que
  apareciam no resumo do console (`print_summary`) continuam sendo escritos
  no Excel geral; a funcionalidade também devolve os totais principais
  (`total_empresas`, `empresas_com_divergencia`, `total_notas_analisadas`,
  `total_divergencias`) relidos de volta do próprio relatório.
- **`listar_empresas` é novo** — não existia como comando separado no CLI
  original (que sempre ia direto para a auditoria completa). Adicionado
  porque `auditar_empresas` é `destrutiva: true` (custo real de API) e
  ajuda a conferir o escopo do lote antes de confirmar. Reaproveita só os
  métodos de descoberta já existentes (`_find_companies`/`_find_csv`), sem
  nenhuma lógica de análise nova.

## Referência completa do protocolo

Ver `backend/src/infrastructure/mcpr/README.md` e
`PLUGINS/PROMPT_CONVERSAO_MCPR.md` para o contrato completo do manifesto e
do adapter.