# Desenvolvimento Local

Guia para rodar o projeto localmente conectando aos dados de producao.

## Pre-requisitos

- [Bun](https://bun.sh/) 1.3+
- [Docker](https://www.docker.com/) (para PostgreSQL)
- Node.js 20+ (opcional, usado pelo tsx)

## 1. Subir o PostgreSQL

O sistema usa PostgreSQL para autenticacao (Better Auth). Os dados de tickets ficam no Convex.

```bash
docker run -d \
  --name postgres-chamados \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=dev \
  -e POSTGRES_DB=sistema_chamados \
  postgres:18
```

Para verificar se esta rodando:

```bash
docker ps | grep postgres-chamados
```

Para parar/iniciar posteriormente:

```bash
docker stop postgres-chamados
docker start postgres-chamados
```

## 2. Configurar variaveis de ambiente

O arquivo `.env.local` ja vem configurado para desenvolvimento local apontando para o Convex de producao:

```env
NODE_ENV=development

# URLs locais
NEXT_PUBLIC_APP_URL=http://localhost:3000
BETTER_AUTH_URL=http://localhost:3000

# Convex de producao (dados reais)
NEXT_PUBLIC_CONVEX_URL=https://convex.esdrasrenan.com.br
CONVEX_INTERNAL_URL=https://convex.esdrasrenan.com.br

# PostgreSQL local (apenas autenticacao)
DATABASE_URL=postgresql://postgres:dev@localhost:5432/sistema_chamados
```

## 3. Instalar dependencias

```bash
bun install
```

## 4. Gerar cliente Prisma e aplicar schema

```bash
bun run prisma:generate
bunx prisma db push
```

## 5. Criar usuarios de desenvolvimento

O seed cria usuarios locais para autenticacao:

```bash
DATABASE_URL="postgresql://postgres:dev@localhost:5432/sistema_chamados" bun tsx scripts/seed-auth.mjs
```

### Credenciais padrao

| Usuario       | Email                | Senha      | Role  |
|---------------|----------------------|------------|-------|
| Administrador | `admin@sistema.dev`  | `admin123` | admin |
| Agentes       | `*@rever.com.br`     | `agent123` | agent |

## 6. Iniciar o servidor de desenvolvimento

```bash
bun run dev:bun
```

Acesse: http://localhost:3000

## Arquitetura Local vs Producao

```
┌─────────────────────────────────────────────────────────────┐
│                    DESENVOLVIMENTO LOCAL                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  localhost:3000 (Next.js)                                   │
│       │                                                     │
│       ├──► PostgreSQL local (porta 5432)                    │
│       │    └── Autenticacao (Better Auth)                   │
│       │    └── Usuarios, sessoes, contas                    │
│       │                                                     │
│       └──► convex.esdrasrenan.com.br (remoto)               │
│            └── Dados de producao                            │
│            └── Tickets, empresas, filas, etc.               │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

## Comandos uteis

| Comando | Descricao |
|---------|-----------|
| `bun run dev:bun` | Inicia servidor de desenvolvimento com Turbopack |
| `bun run build:bun` | Build de producao |
| `bun run lint` | Verificar codigo com ESLint |
| `bun test` | Rodar testes |
| `bunx prisma studio` | Interface visual do banco de dados |

## Solucao de problemas

### Erro de conexao com PostgreSQL

```
Error: P1001: Can't reach database server at localhost:5432
```

**Solucao:** Verifique se o container Docker esta rodando:

```bash
docker start postgres-chamados
```

### Erro de migracao (tipo DATETIME)

Se aparecer erro sobre tipo `DATETIME` ao rodar migrations, use `db push` em vez de `migrate`:

```bash
bunx prisma db push --accept-data-loss
```

### Usuario nao consegue logar

Os usuarios de autenticacao ficam no PostgreSQL local, nao no Convex. Rode o seed novamente:

```bash
DATABASE_URL="postgresql://postgres:dev@localhost:5432/sistema_chamados" bun tsx scripts/seed-auth.mjs
```

### Limpar banco e recriar

```bash
docker stop postgres-chamados
docker rm postgres-chamados
docker run -d --name postgres-chamados -p 5432:5432 -e POSTGRES_PASSWORD=dev -e POSTGRES_DB=sistema_chamados postgres:18
bunx prisma db push
DATABASE_URL="postgresql://postgres:dev@localhost:5432/sistema_chamados" bun tsx scripts/seed-auth.mjs
```

## Proximos passos

- Para deploy em producao, consulte `docs/OPERACAO-PRODUCAO.md`
- Para configuracao de SMTP, consulte `docs/SMTP.md`
- Para testes automatizados, consulte `docs/testes-vitest.md`
