# API de Creación de OT Cartec - Despliegue en Producción

## 📦 Contenido del Paquete

Esta carpeta contiene todo lo necesario para desplegar la API de Creación de OT de Cartec en producción.

---

## 📁 Estructura de Carpetas

```
api_deployment/
├── IMPLEMENTACION.md             # Guía de despliegue paso a paso
├── LEEME.md                      # Este archivo
├── package.json                  # Dependencias de Node.js
├── env.example                   # Plantilla de variables de entorno
├── .gitignore                    # Reglas de Git ignore
├── src/
│   └── index.js                 # Código fuente de la API
├── sql/
│   ├── api_procedure.sql        # Procedimiento almacenado (DEBE instalarse)
│   ├── verify_ot_data.sql       # Consultas de verificación
│   └── quick_queries.sql        # Consultas de diagnóstico rápido
├── docs/
│   └── DOCUMENTACION_API.md     # Documentación completa de la API
└── config/
    └── cartec-api.service       # Archivo de servicio systemd
```

---

## 🚀 Inicio Rápido

### 1. Lee la Guía de Implementación

**Comienza aquí:** [`IMPLEMENTACION.md`](./IMPLEMENTACION.md)

Esta guía contiene:
- Requisitos previos
- Instalación paso a paso
- Configuración
- Procedimientos de prueba
- Solución de problemas

### 2. Revisa la Documentación de la API

**Luego lee:** [`docs/DOCUMENTACION_API.md`](./docs/DOCUMENTACION_API.md)

Este documento contiene:
- Especificaciones de endpoints
- Ejemplos de petición/respuesta
- Descripción de campos
- Códigos de error
- Ejemplos de integración

---

## 📋 Lista de Verificación de Requisitos Previos

Antes del despliegue, asegúrate de tener:

- [ ] Ubuntu 22.04 LTS (o similar Linux)
- [ ] Node.js 12+ instalado
- [ ] MySQL 8.0+ ejecutándose
- [ ] Base de datos `revisa` existente
- [ ] Acceso root o sudo
- [ ] Al menos un técnico en la tabla `Tecnicos`

---

## ⚡ Despliegue Rápido (5 Minutos)

```bash
# 1. Desplegar archivos
sudo mkdir -p /opt/cartec_api
cd /var/www/html/W_CartecInstalador/api_deployment
sudo cp -r * /opt/cartec_api/
cd /opt/cartec_api

# 2. Configurar entorno
cp env.example .env
nano .env  # Editar credenciales de base de datos

# 3. Instalar dependencias
npm install

# 4. Instalar procedimiento almacenado
mysql -u root -p revisa < sql/api_procedure.sql

# 5. Instalar servicio
sudo cp config/cartec-api.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable cartec-api
sudo systemctl start cartec-api

# 6. Probar
curl http://localhost:3000/api/health
```

**Para pasos detallados, ver [`IMPLEMENTACION.md`](./IMPLEMENTACION.md)**

---

## 🎯 Endpoints de la API

### Verificación de Salud
```bash
GET /api/health
```

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

{
  "cliente": {...},
  "tecnico": {...},
  "servicio": {...},
  "vehiculos": [...]
}
```

**Ver documentación completa:** [`docs/DOCUMENTACION_API.md`](./docs/DOCUMENTACION_API.md)

---

## 🔍 Verificación

Después del despliegue, verifica que todo funcione:

```bash
# Verificar estado del servicio
sudo systemctl status cartec-api

# Probar endpoint de salud
curl http://localhost:3000/api/health

# Crear OT de prueba
curl -X POST http://localhost:3000/api/ot/create \
  -H "Content-Type: application/json" \
  -d @test_request.json

# Verificar registros en base de datos
mysql -u root -p revisa < sql/verify_ot_data.sql
```

---

## 📊 Descripción de Archivos

| Archivo | Propósito | Requerido |
|---------|-----------|-----------|
| `IMPLEMENTACION.md` | Guía de despliegue | ✅ LEER PRIMERO |
| `src/index.js` | Código fuente de la API | ✅ Sí |
| `package.json` | Dependencias | ✅ Sí |
| `env.example` | Plantilla de configuración | ✅ Sí |
| `sql/api_procedure.sql` | Procedimiento almacenado | ✅ DEBE INSTALARSE |
| `sql/verify_ot_data.sql` | Verificación | ⚙️ Opcional |
| `sql/quick_queries.sql` | Diagnósticos | ⚙️ Opcional |
| `config/cartec-api.service` | Servicio systemd | ✅ Sí |
| `docs/DOCUMENTACION_API.md` | Docs de la API | 📖 Referencia |

---

## 🛠️ Comandos Comunes

```bash
# Gestión del servicio
sudo systemctl start cartec-api      # Iniciar servicio
sudo systemctl stop cartec-api       # Detener servicio
sudo systemctl restart cartec-api    # Reiniciar servicio
sudo systemctl status cartec-api     # Ver estado

# Ver logs
sudo journalctl -u cartec-api -f     # Seguir logs en tiempo real
sudo journalctl -u cartec-api -n 100 # Últimas 100 líneas

# Base de datos
mysql -u root -p revisa < sql/api_procedure.sql  # Instalar procedimiento
mysql -u root -p revisa < sql/verify_ot_data.sql # Verificar datos

# Pruebas
curl http://localhost:3000/api/health  # Verificación de salud
```

---

## 📚 Enlaces de Documentación

1. **[IMPLEMENTACION.md](./IMPLEMENTACION.md)** - Guía de despliegue
2. **[docs/DOCUMENTACION_API.md](./docs/DOCUMENTACION_API.md)** - Referencia de la API
3. **[sql/api_procedure.sql](./sql/api_procedure.sql)** - Procedimiento de base de datos
4. **[config/cartec-api.service](./config/cartec-api.service)** - Configuración del servicio

---

## 🔒 Notas de Seguridad

1. **Cambiar credenciales por defecto** en `.env`
2. **Establecer permisos adecuados:**
   ```bash
   sudo chown -R www-data:www-data /opt/cartec_api
   sudo chmod 600 /opt/cartec_api/.env
   ```
3. **Configurar firewall** si se expone externamente
4. **Usar HTTPS** en producción (proxy reverso Nginx)
5. **Crear usuario de base de datos dedicado** (ver IMPLEMENTACION.md)

---

## 🐛 Solución de Problemas

### La API No Inicia
```bash
# Revisar logs
sudo journalctl -u cartec-api -n 50

# Verificar si el puerto está disponible
sudo netstat -tlnp | grep 3000

# Probar conexión a base de datos
mysql -u root -p revisa -e "SELECT 1;"
```

### Falla la Creación de OT
```bash
# Verificar que existe el procedimiento almacenado
mysql -u root -p revisa -e "SHOW PROCEDURE STATUS WHERE Name = 'prc_api_create_OT';"

# Verificar que existe el técnico
mysql -u root -p revisa -e "SELECT * FROM Tecnicos WHERE rut_tecnico = '11111111-1';"

# Ejecutar diagnósticos
mysql -u root -p revisa < sql/quick_queries.sql
```

**Para solución de problemas detallada, ver [`IMPLEMENTACION.md`](./IMPLEMENTACION.md)**

---

## 📞 Soporte

1. Revisar logs: `sudo journalctl -u cartec-api`
2. Revisar documentación
3. Verificar base de datos y procedimiento almacenado
4. Probar con ejemplos `curl`

---

## ✅ Lista de Verificación de Despliegue en Producción

- [ ] Leer IMPLEMENTACION.md
- [ ] Copiar archivos a `/opt/cartec_api`
- [ ] Configurar `.env` con credenciales de producción
- [ ] Ejecutar `npm install`
- [ ] Instalar procedimiento almacenado en base de datos
- [ ] Crear técnico de prueba (si es necesario)
- [ ] Instalar servicio systemd
- [ ] Iniciar y habilitar servicio
- [ ] Probar endpoint de salud
- [ ] Crear OT de prueba
- [ ] Verificar registros en base de datos
- [ ] Configurar firewall (si es necesario)
- [ ] Configurar monitoreo/alertas
- [ ] Documentar URL de la API para consumidores

---

## 🎉 ¡Listo para Desplegar!

Sigue los pasos en **[IMPLEMENTACION.md](./IMPLEMENTACION.md)** para desplegar la API en producción.

**Tiempo estimado de despliegue:** 10-15 minutos

---

**Versión:** 1.0.0  
**Última Actualización:** Diciembre 2025  
**Mantenido por:** Equipo de Desarrollo Cartec

