# Instalación local (desarrollo)

Este proyecto **no** se instala en el servidor de producción durante el desarrollo.
Todo lo siguiente es para una máquina de desarrollo.

## 1. Requisitos

- **Node.js 24 LTS** (recomendado con nvm: `nvm install 24 && nvm use`; el repo trae `.nvmrc`).
- **PostgreSQL 16 o superior**, local. Opciones:
  - Instalado en el sistema, o
  - Docker: `docker compose up -d` (usa `docker-compose.yml`: PostgreSQL 16 en `127.0.0.1:5432`,
    usuario `chesco`, clave `chesco_dev`, base `chesco_local`; solo para desarrollo).

## 2. Base de datos

Con PostgreSQL instalado en el sistema, crear usuario y bases (ajusta la clave):

```sql
CREATE ROLE chesco LOGIN PASSWORD 'cambia-esta-clave' CREATEDB;
CREATE DATABASE chesco_local OWNER chesco;
```

`CREATEDB` permite que las pruebas de integración creen su propia base `chesco_test`.

## 3. Variables de entorno

```bash
cp .env.example .env
openssl rand -base64 48      # pegar el resultado en SESSION_SECRET
```

Completar en `.env` como mínimo: `DATABASE_URL`, `SESSION_SECRET`, `NEXT_PUBLIC_SITE_URL`,
`SEED_ADMIN_EMAIL`. Para tener vehículos y usuarios de prueba: `SEED_DEMO_DATA=true`.

## 4. Dependencias, migraciones y seed

```bash
npm install            # también genera el cliente Prisma (postinstall)
npm run db:deploy      # aplica las migraciones
npm run db:seed        # roles, permisos, SUPER_ADMIN, configuración, demo
```

El seed muestra **una sola vez** la contraseña temporal del SUPER_ADMIN si no definiste
`SEED_ADMIN_PASSWORD`. En el primer ingreso el sistema obliga a cambiarla.

## 5. Levantar

```bash
npm run dev
```

- Web pública: http://localhost:3000
- Panel: http://localhost:3000/admin (redirige a `/admin/login`)
- Salud: http://localhost:3000/api/health

Usuarios DEMO (si `SEED_DEMO_DATA=true`): `supervisor@demo.chesco.local`,
`asesor1@demo.chesco.local`, `asesor2@demo.chesco.local` con la clave de `SEED_DEMO_PASSWORD`.

## 6. Verificación

```bash
npm run check          # lint + typecheck + pruebas + build
```

Las pruebas de integración usan `TEST_DATABASE_URL` (por defecto `chesco_test` en localhost).
**La base de pruebas se vacía en cada corrida**; por seguridad el setup se niega a operar sobre una
base cuyo nombre no termine en `_test`.

## Problemas conocidos

- **Prisma no puede descargar su motor** (redes corporativas que bloquean `binaries.prisma.sh`):
  los comandos `prisma migrate`, `validate` y `generate` necesitan el binario `schema-engine`.
  Se puede apuntar a un binario existente con `PRISMA_SCHEMA_ENGINE_BINARY=/ruta/schema-engine`.
  El binario debe corresponder a la versión de Prisma instalada (7.10.0).
- **`__Host-` en la cookie con `npm start`**: el servidor de producción usa una cookie `Secure`.
  Los navegadores la aceptan en `http://localhost`; en cualquier otro host se necesita HTTPS.
