Configuração (leai.yml)
O arquivo de configuração leai.yml controla todos os aspectos de extração, filtragem, armazenamento, versionamento Git e integração com IA do LEAI.
📄 Exemplo Completo Comentado
# ==============================================================================
# Configuração do LEAI
# ==============================================================================
# 1. Conexão com o Oracle (DSN)
# Suporta interpolação de variáveis de ambiente com ${VARIAVEL}
dsn: "oracle://${DB_USER}:${DB_PASS}@${DB_HOST}:1521/${DB_SERVICE}"
# 2. Schemas a Extrair
# Pode ser uma lista de schemas ou "ALL" (requer permissão de DBA/SELECT ANY DICTIONARY)
schemas:
- RH
- FINANCEIRO
# 3. Diretórios do Pipeline e Logs
rawPath: "./raw" # Snapshots técnicos em JSON
annotationsPath: "./annotations" # Camada de anotações em YAML
docPath: "./docs" # Documentação final em Markdown
updates_log_path: "./logs/updates" # Logs e manifestos de atualização (latest.json, latest.md)
generate_update_log: true # Gera auditoria de objetos alterados no leai update
# 4. Filtros de Inclusão e Exclusão (Padrão SQL LIKE)
include:
- FUNCIONARIOS
- VENDAS_%
exclude:
- BIN$% # Tabelas da lixeira do Oracle
- SYS_%
# 5. Categorias de Objetos
object_types:
- tables
- views
- mviews
- procedures
- functions
- packages
- triggers
- synonyms
# 6. Configurações de IA (LLMs para Auto-Enriquecimento, Chat e Subagentes)
ai:
default_provider: "ollama" # ollama | local | openai | gemini | anthropic | deepseek | qwen | kimi | grok
temperature: 0.2 # Temperatura padrão global (0.0 a 1.0)
timeout: 300.0 # Timeout padrão global em segundos
max_history_turns: 15 # Janela de turnos mantidos na memória do chat
max_agent_iterations: 10 # Limite máximo de ferramentas executadas por turno do agente
max_subagent_iterations: 5 # Limite de iterações para subagentes especialistas
providers:
ollama:
base_url: "http://localhost:11434/v1"
model: "qwen2.5-coder:latest"
temperature: 0.1
timeout: 300.0
num_ctx: 32768 # Tamanho da janela de contexto para evitar truncamento em DDLs/Packages
keep_alive: "1h" # Mantém o modelo em memória no Ollama
local:
base_url: "http://localhost:1234/v1" # Exemplo: LM Studio, vLLM, LocalAI
model: "qwen2.5"
temperature: 0.1
num_ctx: 32768
max_tokens: 4096
top_p: 0.95
openai:
api_key: "${OPENAI_API_KEY}"
model: "gpt-4o-mini"
temperature: 0.2
timeout: 120.0
max_tokens: 4096
gemini:
api_key: "${GEMINI_API_KEY}"
model: "gemini-2.5-flash"
anthropic:
api_key: "${ANTHROPIC_API_KEY}"
model: "claude-3-5-sonnet-20241022"
# 7. Sincronização com Git / GitLab / GitHub (GitOps)
git:
enabled: false # Ativa comandos leai git e /git
remote_url: "${GIT_REMOTE_URL}" # URL do repositório remoto
branch: "main" # Branch de rastreamento
author_name: "LEAI Bot" # Nome do autor nos commits
author_email: "leai@empresa.com" # E-mail do autor nos commits
auto_sync: false # Push automático após extract/compile
tracked_paths:
- "annotations"
- "docs"
- "raw"
- "leai.yml"
# 8. Armazenamento Distribuído / Object Storage (SeaweedFS / S3)
storage:
seaweedfs:
enabled: false # Se true, usa S3 sem precisar da flag --seaweed
endpoint_url: "http://localhost:8333" # Gateway S3 do SeaweedFS ou MinIO
bucket: "leai" # Nome do bucket S3
access_key: "${SEAWEEDFS_ACCESS_KEY}"
secret_key: "${SEAWEEDFS_SECRET_KEY}"
region_name: "us-east-1"
raw_prefix: "raw" # Prefixo dos snapshots JSON
annotations_prefix: "annotations" # Prefixo das anotações YAML
auto_create_bucket: true # Cria o bucket caso não exista
no_cache: false # Se true, opera em modo 100% remoto
incremental: true # Deduplicação SHA-256
# 9. Idioma da Interface & Localização
language: "pt-BR" # "en-US" (padrão canônico) ou "pt-BR"
# 10. Checagem Automática de Atualizações
update_check: true # true (padrão) ou false
🔑 Formatos Suportados de DSN
O LEAI suporta diversas formas de declarar a string de conexão:
Sintaxe de URL (Padrão)
Sintaxe EZCONNECT (Oracle)
TNS / Descriptor Completo (para TCPS, Wallets ou Oracle Cloud / Autonomous DB)
dsn: "usuario/senha@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=db.exemplo.com)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=meu_servico)))"
🎯 Filtros de Objetos
Você pode usar os filtros include e exclude para focar estritamente nas tabelas de interesse do seu domínio:
%: Corresponde a zero ou mais caracteres (ex:TB_%inclui todas as tabelas iniciadas porTB_)._: Corresponde a exatamente um caractere.
[!TIP] Se a lista
includeestiver vazia, o LEAI processará todos os objetos do schema que correspondam aosobject_types, exceto aqueles listados emexclude.
🌐 Internacionalização e Idioma (language)
O LEAI possui subsistema nativo de internacionalização (leai/i18n) com fallback canônico em inglês e catálogos bilíngues paritários:
O que o idioma afeta:
- Terminal & CLI: Mensagens informativas, tabelas formatadas, spinners de progresso e resumos de pipeline.
- Sessão TUI Interativa: Respostas dos comandos de barra (
/git status,/help,/rule,/copy,/model). - Prompts e Respostas de IA: Quando configurado em
pt-BR, o system prompt instrui o modelo LLM a preencher descrições de colunas e regras de negócio em Português (mantendo termos técnicos SQL intactos). Emen-US, a geração ocorre integralmente em Inglês. - Cabeçalhos de Documentação Markdown: Os arquivos gerados em
docs/utilizam seções no idioma configurado (## Visão Geral,## Colunas,## Regras de Negóciovs.## Overview,## Columns,## Business Rules). - Web Studio: Textos da interface web, modais, mensagens de loading e seletor dinâmico em tempo de execução via API REST (
/api/config).
Precedência de Resolução
O LEAI determina o idioma ativo seguindo a seguinte ordem de prioridade estrita: 1. Flag CLI: --lang <locale> ou -L <locale> (ex: leai --lang pt-BR ask "quais são as tabelas de vendas?") 2. Variável de Ambiente: LEAI_LANG ou LEAI_LANGUAGE (ex: export LEAI_LANG=pt-BR) 3. Arquivo de Configuração: Chave language: no leai.yml 4. Padrão Canônico: en-US
Inicialização Rápida com Idioma
Para gerar o arquivo leai.yml pré-configurado e documentado em Português:
🔄 Checagem Automática de Atualizações (update_check)
Por padrão, ao iniciar qualquer comando, o LEAI consulta o repositório PyPI em segundo plano de forma não bloqueante para verificar se existe uma versão mais recente disponível.
Como Desativar a Verificação:
- No arquivo
leai.yml: Definaupdate_check: false. - Via Variável de Ambiente: Exporte
LEAI_NO_UPDATE_CHECK=1ouLEAI_NO_UPDATE_CHECK=true. - Via Linha de Comando (Flag Global): Utilize
--no-update-checkem qualquer comando:
📋 Logs de Auditoria de Atualização (updates_log_path e generate_update_log)
Ao executar o comando leai update, o LEAI pode registrar formalmente um manifesto e relatório de todos os objetos extraídos e modificados no Oracle naquela execução:
updates_log_path: "./logs/updates" # Diretório para gravação dos arquivos (Padrão: ./logs/updates)
generate_update_log: true # Gera arquivos JSON e Markdown de auditoria (Padrão: true)
Arquivos Gerados por Execução:
update_YYYYMMDD_HHMMSS.json&latest.json: Manifesto estruturado com timestamp UTC, janela de busca, autor da alteração (last_modified_by), timestamp no Oracle (last_ddl_time) e métricas de sincronização.update_YYYYMMDD_HHMMSS.md&latest.md: Relatório com tabelas legíveis no VS Code ou GitHub.- Sincronização com SeaweedFS / S3: Se
--seaweedou o storage S3 estiver ativo, os arquivos são replicados automaticamente no bucket soblogs/updates/.