# Cartec API - OT Creation

API para creación de Órdenes de Trabajo (OT) usando stored procedures.

## Estructura

```
cartec_api/
├── src/
│   └── index.js           # Aplicación principal
├── sql/
│   └── prc_api_create_OT.sql  # Stored procedure
├── package.json
├── .env.example
└── README.md
```

## Instalación

```bash
cd cartec_api
npm install
```

## Configuración

1. Copiar `.env.example` a `.env`:
```bash
cp .env.example .env
```

2. Configurar variables de entorno en `.env`:
```env
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=tu_password
DB_NAME=revisa
DB_CONNECTION_LIMIT=10
NODE_ENV=development
```

3. Instalar el stored procedure:
```bash
mysql -u root -p revisa < sql/prc_api_create_OT.sql
```

## Uso

### Desarrollo
```bash
npm run dev
```

### Producción
```bash
npm start
```

## Endpoints

### Health Check
```
GET /api/health
```

### Crear OT
```
POST /api/ot/create
Content-Type: application/json

{
  "cliente": {
    "rut": "12345678",
    "nombre": "Juan Pérez",
    "direccion": "Av. Principal 123",
    "comuna": "Santiago",
    "telefono": "+56912345678",
    "email": "juan@example.com"
  },
  "tecnico": {
    "rut": "98765432"
  },
  "servicio": {
    "presGPS": "gpsimple",
    "tiposerv": "instalacion_gps",
    "taller_install": "cartec"
  },
  "vehiculos": [
    {
      "patente": "ABCD12",
      "marca": "Toyota",
      "modelo": "Corolla",
      "color": "Blanco",
      "anio": 2020
    }
  ]
}
```

## Respuestas

### Éxito (201)
```json
{
  "success": 1,
  "message": "OT creada exitosamente. ID: 1234. Vehículos procesados: 1",
  "data": {
    "id_ot": 1234,
    "rut_cliente": "12345678-9",
    "rut_tecnico": "98765432-1",
    "vehiculos_procesados": 1
  }
}
```

### Error de validación (400)
```json
{
  "success": 0,
  "message": "Error de validación",
  "errors": {
    "cliente.rut": ["RUT de cliente es requerido"]
  }
}
```

### Técnico no encontrado (404)
```json
{
  "success": 0,
  "message": "Técnico no encontrado",
  "errors": {
    "tecnico.rut": ["El RUT del técnico no existe en el sistema"]
  }
}
```

## Tecnologías

- Node.js
- Express.js
- MySQL2
- Stored Procedures

## Notas

- RUT validation con algoritmo chileno
- Validación completa en capa de aplicación
- Business logic en stored procedure
- Transacciones atómicas (all or nothing)

