# Setup Completo do Ambiente (Windows + PowerShell)

Este guia descreve o passo a passo para preparar e iniciar o sistema PESA com:

- Python (ambiente virtual e dependências)
- Banco de dados PostgreSQL
- Backend (FastAPI)
- Frontend (arquivos HTML servidos pela API)

## 1) Pré-requisitos

Instale antes de começar:

- Python 3.11+ (com `python` ou `py` no PATH)
- PostgreSQL (servidor + `psql`)
- PowerShell

Verificação rápida:

```powershell
python --version
py --version
psql --version
```

## 2) Abrir o projeto

No PowerShell:

```powershell
cd "g:\Meu Drive\_UCB\Permanencia\centro-alertas"
```

## 3) Criar e ativar ambiente virtual Python

```powershell
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
```

## 4) Instalar dependências do backend

Como o projeto não usa arquivo `requirements.txt` no momento, instale:

```powershell
pip install fastapi uvicorn asyncpg pydantic reportlab
```

## 4.1) Configurar IA local (Ollama) por `.env` (recomendado)

Copie o arquivo de exemplo:

```powershell
Copy-Item ".\.env.example" ".\.env"
```

Valores recomendados no `.env`:

```dotenv
OLLAMA_BASE_URL=http://127.0.0.1:11434
OLLAMA_MODEL=llama3.1:8b
OLLAMA_TIMEOUT_SECONDS=60
```

Observações:

- Em máquinas mais lentas, aumente para `OLLAMA_TIMEOUT_SECONDS=90`.
- O backend lê essas variáveis para gerar recomendações com IA local.
- `OLLAMA_JSON_FORMAT=1` (padrão se definido no `.env`) usa `format: json` na API do Ollama para respostas mais estáveis; defina `0` só se sua versão do Ollama não suportar.

## 5) Configurar banco de dados (PostgreSQL)

### Opção recomendada (automática)

Use o script que cria/garante banco, schema e usuário admin:

```powershell
powershell -ExecutionPolicy Bypass -File ".\scripts\setup-db-windows.ps1" `
  -PgUser "postgres" `
  -PgHost "localhost" `
  -PgPort 5432 `
  -DbName "pesa" `
  -AdminName "Administrador" `
  -AdminEmail "admin@pesa.local" `
  -AdminPassword "Admin@12345" `
  -PersistEnv
```

Observações:

- O script pede senha do PostgreSQL se `-PgPassword` não for informado.
- Com `-PersistEnv`, a variável `DATABASE_URL` fica salva no Windows (abra novo terminal para refletir globalmente).

### Opção manual (se preferir)

Defina a variável de conexão no terminal atual:

```powershell
$env:DATABASE_URL = "postgres://postgres:SUA_SENHA@localhost:5432/pesa"
```

> Sem `DATABASE_URL`, o backend não inicializa.

### Opção Supabase (PostgreSQL gerenciado)

No Supabase, abra **Project Settings > Database** e copie a string de conexão do tipo
`postgresql://...` (de preferência com `sslmode=require`).

No PowerShell, defina no terminal atual:

```powershell
$env:SUPABASE_DB_URL = "postgresql://postgres.SEU_PROJETO:SUA_SENHA@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require"
```

Como alternativa, você pode usar `DATABASE_URL` com o mesmo valor:

```powershell
$env:DATABASE_URL = $env:SUPABASE_DB_URL
```

Observações:

- O backend aceita `DATABASE_URL` e, se não existir, usa `SUPABASE_DB_URL`.
- Para conexão remota no Supabase, mantenha `sslmode=require`.
- Se quiser testar a API do Supabase pelo frontend, preencha também `SUPABASE_URL` e `SUPABASE_ANON_KEY` no `.env`.

## 6) Iniciar Backend + Frontend

No projeto, o backend e o frontend sobem juntos pela aplicação FastAPI (`backend.app`), que também serve os arquivos HTML estáticos.

### Opção A (script pronto)

```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\iniciar-servidor.ps1
```

### Opção B (comando direto)

```powershell
python -m uvicorn backend.app:app --reload --host 0.0.0.0 --port 8001
```

Se `python` não funcionar:

```powershell
py -m uvicorn backend.app:app --reload --host 0.0.0.0 --port 8001
```

## 7) URLs de acesso

Com o servidor em execução:

- Aplicação principal: `http://127.0.0.1:8001/index.html`
- Login: `http://127.0.0.1:8001/login.html`
- Healthcheck API: `http://127.0.0.1:8001/health`
- Swagger: `http://127.0.0.1:8001/docs`

## 8) Fluxo diário (resumo)

Sempre que for trabalhar:

```powershell
cd "g:\Meu Drive\_UCB\Permanencia\centro-alertas"
.\.venv\Scripts\Activate.ps1
python -m uvicorn backend.app:app --reload --host 0.0.0.0 --port 8001
```

## 9) Encerrar aplicação

No terminal onde o servidor está rodando:

- `Ctrl + C`

## 10) Erros comuns e correções rápidas

- `DATABASE_URL não configurada no ambiente.`  
  Defina `$env:DATABASE_URL` ou rode `.\scripts\setup-db-windows.ps1`.

- `Dependência ausente para PDF. Instale com: pip install reportlab`  
  Rode `pip install reportlab` no ambiente virtual ativo.

- `python não foi encontrado`  
  Use `py` no lugar de `python`.

- Porta 8001 ocupada  
  Feche o processo que está usando a porta ou altere `--port`.
