# Modulo AWS Textract + S3

Este modulo adiciona upload de PDF, armazenamento em S3, processamento via Amazon Textract e visualizacao dos dados extraidos.

## Instalacao

1) Instale a SDK da AWS:

```bash
composer require aws/aws-sdk-php
```

2) Execute a migration SQL:

- `database/migrations/20260509_create_aws_textract_tables.sql`

3) Garanta permissao de escrita:

- `storage/logs`
- `storage/uploads` (ou o caminho definido em `STORAGE_LOCAL_DIR`)

## Variaveis de ambiente

```
AWS_REGION=sa-east-1
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_S3_BUCKET=minibanco-documentos-sp
AWS_S3_PREFIX=uploads/
AWS_TEXTRACT_MODE=sync
STORAGE_LOCAL_DIR=/home/minibanco/storage/uploads
MAX_UPLOAD_MB=15
```

## Config via Integracoes (sem chaves no .env)

Tambem e possivel cadastrar as chaves pela tela **Configuracoes > Integracoes**.

- Crie uma integracao com:
  - **Nome:** AWS Textract
  - **Tipo:** `aws_textract`
  - **API Key:** `AWS_ACCESS_KEY_ID`
  - **Password:** `AWS_SECRET_ACCESS_KEY`
  - **Extra config (JSON):**

```json
{
  "region": "sa-east-1",
  "bucket": "minibanco-documentos-sp",
  "prefix": "uploads/",
  "mode": "sync",
  "storage_dir": "/home/minibanco/storage/uploads",
  "max_upload_mb": 15
}
```

Se `ENCRYPT_API_KEYS=true`, defina `API_CIPHER_KEY` no `.env` para criptografar as chaves.

## Rotas

- `GET  /docs-aws` (lista + upload)
- `POST /docs-aws/upload`
- `GET  /docs-aws/{id}`
- `POST /docs-aws/{id}/process`
- `POST /docs-aws/{id}/delete`
- `GET  /docs-aws/{id}/raw` (admin)
- `GET  /docs-aws/{id}/export`

## Teste rapido (CLI)

```
php tools/test_textract.php /caminho/arquivo.pdf
```

O script envia para o S3, chama o Textract e salva o JSON em `storage/textract_test_*.json`.

## Permissoes IAM sugeridas

- `s3:PutObject`, `s3:GetObject`, `s3:DeleteObject`
- `textract:AnalyzeDocument`

## Observacoes

- Apenas PDF e limite definido por `MAX_UPLOAD_MB`.
- Bucket permanece privado.
- Log principal: `storage/logs/textract.log`.

## Tabelas e rastreabilidade

- `aws_documents`:
  - Metadados do arquivo, status e campos extraidos basicos.
- `aws_document_items`:
  - Itens extraidos por fonte (`FORM`, `TABLE`, `LINE`).
- `aws_document_textract_raw`:
  - JSON bruto do Textract para auditoria completa.

## Auditoria rapida

1) Localize o documento em `/docs-aws`.
2) Abra o detalhe e confira o `id`.
3) Consulte as tabelas acima para validar os valores exibidos.
4) Use `/docs-aws/{id}/raw` (admin) para comparar com o JSON bruto.
