# 🤝 Guía de Contribución

## Cómo Trabajar en Este Proyecto

### 1. Flujo de Trabajo con Git

```bash
# Clonar el repositorio
git clone https://git.consultoria-as.com/consultoria-as/hotel-hacienda.git

# Crear una rama para tu cambio
git checkout -b feature/nombre-de-la-funcionalidad

# Hacer commit con mensajes descriptivos
git add .
git commit -m "feat: descripción clara del cambio"

# Subir y crear Pull Request
git push origin feature/nombre-de-la-funcionalidad
```

### 2. Convención de Commits

| Prefijo | Uso |
|---------|-----|
| `feat:` | Nueva funcionalidad |
| `fix:` | Corrección de bug |
| `docs:` | Cambios en documentación |
| `style:` | Cambios de formato (espacios, comas) |
| `refactor:` | Refactorización de código |
| `test:` | Agregar o corregir tests |
| `chore:` | Tareas de mantenimiento |

### 3. Antes de Modificar Cualquier Cosa

1. **Lee `DOCUMENTACION_TECNICA.md`** — entiende la arquitectura.
2. **Si modificas lógica de negocio:** revisa la función SQL correspondiente en PostgreSQL.
3. **Si agregas un endpoint:** sigue el patrón `route → controller → función SQL`.
4. **Si agregas una página:** actualiza `menuconfig.js`, `App.jsx` y `Layout2.jsx`.

### 4. Reglas de Oro

- No hardcodees `localhost` en el frontend. Usa `import.meta.env.VITE_API_BASE_URL`.
- Usa queries parametrizadas (`$1`, `$2`) en PostgreSQL para evitar SQL Injection.
- Si cambias una función SQL, busca TODOS los controllers que la usen.
- Mantén la consistencia en la respuesta JSON: `{ message, data, status }`.
- Agrega traducciones EN/ES para todo texto visible.

### 5. Testing

Actualmente no hay tests. Si agregas funcionalidad crítica, considera:
- Probar la función SQL directamente en PostgreSQL.
- Probar el endpoint con `curl` o Postman.
- Probar el flujo completo en el navegador.

### 6. Documentación

Si tu cambio afecta:
- **Endpoints:** actualiza `docs/API.md`
- **Base de datos:** actualiza `docs/DATABASE.md`
- **Despliegue:** actualiza `docs/DEPLOYMENT.md`
- **Arquitectura:** actualiza `DOCUMENTACION_TECNICA.md`
