Pular para o conteúdo

Configuração do Ambiente de Desenvolvimento

Este guia percorre a configuração completa de um ambiente de desenvolvimento local para o Valter, desde a instalação dos pré-requisitos até a verificação de que todos os serviços estão rodando.

Antes de começar, certifique-se de ter os seguintes itens instalados:

FerramentaVersãoPropósito
Python>= 3.12Linguagem de runtime
Docker + Docker ComposeEstável recenteServiços de banco de dados (PostgreSQL, Qdrant, Redis)
makeQualquerInterface canônica de comandos
GitQualquerControle de versão
uv (recomendado)RecenteGerenciador de pacotes Python rápido. Usa pip como fallback se indisponível.

Requisitos de recursos: aproximadamente 4 GB de RAM e 3 GB de espaço em disco (incluindo o modelo de embedding).

Clone o repositório e crie um ambiente virtual Python:

Terminal window
git clone <repo-url>
cd Valter
python -m venv .venv
source .venv/bin/activate

Instale todas as dependências incluindo ferramentas de desenvolvimento:

Terminal window
# Preferido: usando uv (mais rápido)
uv pip install -e ".[dev]"
# Alternativa: usando pip
pip install -e ".[dev]"

Isso instala FastAPI, SQLAlchemy, cliente Qdrant, driver Neo4j, sentence-transformers e todas as ferramentas de desenvolvimento (pytest, ruff, mypy).

O arquivo docker-compose.yml define três serviços de banco de dados para desenvolvimento local:

Terminal window
make docker-up

Isso inicia os seguintes containers:

ServiçoImagemPortaPropósito
PostgreSQLpostgres:16-alpine5432Metadados de documentos, migrações
Qdrantqdrant/qdrant:latest6333Busca por similaridade vetorial
Redisredis:7-alpine6379Cache, rate limiting, fila de jobs ARQ

Verifique se os serviços estão rodando:

Terminal window
docker compose ps

Os três containers devem mostrar status running.

A maioria das variáveis de ambiente possui valores padrão que funcionam com a stack do docker-compose.yml. Para desenvolvimento básico, nenhum arquivo .env é necessário.

Para habilitar recursos opcionais, crie um arquivo .env na raiz do projeto:

Terminal window
# .env (opcional — apenas para recursos que você precisa)
# Groq LLM (habilita extração factual, expansão de queries)
# VALTER_GROQ_API_KEY=gsk_your_key_here
# VALTER_GROQ_ENABLED=true
# Neo4j (habilita recursos de grafo)
# VALTER_NEO4J_URI=bolt://localhost:7687
# Embedding remoto (pula download do modelo local)
# VALTER_EMBEDDING_SERVICE_URL=https://your-service.up.railway.app

Consulte a referência de Variáveis de Ambiente para todas as opções disponíveis.

Aplique as migrações Alembic para configurar o schema do PostgreSQL:

Terminal window
make migrate

Isso executa alembic upgrade head usando a configuração em migrations/alembic.ini. A migração conecta ao banco de dados definido por VALTER_DATABASE_URL (por padrão, o PostgreSQL local do docker-compose).

O recurso de busca semântica requer um modelo de embedding pré-treinado:

Terminal window
make download-model

Isso baixa rufimelo/Legal-BERTimbau-sts-base (~500 MB) do HuggingFace Hub e faz cache em ~/.cache/huggingface/. O download precisa ser feito apenas uma vez.

Para usar um modelo diferente:

Terminal window
VALTER_EMBEDDING_MODEL=my-org/my-model make download-model
Terminal window
make dev

A API inicia em http://localhost:8000. Verifique com:

Terminal window
curl http://localhost:8000/v1/health

Uma resposta bem-sucedida confirma que a API está rodando e as conexões com os bancos de dados estão saudáveis.

Terminal window
make test

Isso executa mais de 660 testes entre suítes unitárias, de regressão e MCP. Todos os testes devem passar sem dependências de serviços externos (stores são mockados nos testes unitários).

Terminal window
make lint

Isso executa ruff check e ruff format --check em src/ e tests/.

O Makefile é a interface canônica de comandos. Use make <target> para todas as operações rotineiras.

TargetDescrição
make devInicia servidor de desenvolvimento com hot reload (porta 8000)
make testExecuta a suíte completa do pytest
make test-covExecuta testes com relatório de cobertura
make test-neo4j-liveExecuta testes de integração Neo4j (requer credenciais Aura)
make lintVerifica estilo de código com ruff (check + verificação de formatação)
make fmtCorrige automaticamente problemas de estilo e formata o código
make qualityExecuta lint, mypy (com escopo) e testes juntos
make migrateAplica migrações de banco de dados Alembic
make worker-ingestInicia o background worker ARQ para jobs de ingestão
make mcp-remoteInicia o servidor MCP HTTP (porta 8001)
make docker-upInicia containers de banco de dados (PostgreSQL, Qdrant, Redis)
make docker-downPara e remove containers de banco de dados
make download-modelBaixa o modelo de embedding do HuggingFace
make validate-auraValida queries de grafo contra uma instância Neo4j Aura ao vivo

Se make migrate ou make dev falhar ao conectar ao PostgreSQL:

Terminal window
# Verifique se os containers estão rodando
docker compose ps
# Verifique os logs do PostgreSQL
docker compose logs postgres
# Reinicie a stack
make docker-down && make docker-up

Se a porta 5432, 6333 ou 6379 já estiver em uso, pare o serviço conflitante ou modifique os mapeamentos de porta no docker-compose.yml.

Se make download-model falhar por problemas de rede, tente novamente ou defina VALTER_EMBEDDING_SERVICE_URL para usar um serviço de encoding remoto.