Files
hotel-hacienda/docs/TROUBLESHOOTING.md
Consultoria AS 411d517ba4 docs: documentación extensiva del proyecto
- README.md con guía completa de instalación y arquitectura
- docs/BACKEND.md — guía detallada del API
- docs/FRONTEND.md — guía del SPA React
- docs/DATABASE.md — funciones SQL y patrones de datos
- docs/API.md — referencia completa de endpoints REST
- docs/DEPLOYMENT.md — guía de despliegue en producción
- docs/TROUBLESHOOTING.md — solución de problemas comunes
- CHANGELOG.md — historial de cambios
- CONTRIBUTING.md — guía de contribución
2026-06-09 16:26:09 -07:00

218 lines
4.6 KiB
Markdown

# 🔧 Solución de Problemas Comunes
## Índice
1. [Backend](#backend)
2. [Frontend](#frontend)
3. [Base de Datos](#base-de-datos)
4. [Integraciones Externas](#integraciones-externas)
5. [Producción](#producción)
---
## Backend
### Error: "Conectado a PostgreSQL" no aparece
**Causa:** Variables de entorno de DB incorrectas o PostgreSQL no está corriendo.
**Solución:**
```bash
# Verificar PostgreSQL
sudo systemctl status postgresql
# Verificar variables de entorno
cat backend/hotel_hacienda/.env | grep DB_
# Probar conexión manual
node -e "require('./backend/hotel_hacienda/src/db/connection')"
```
### Error: CORS bloquea peticiones del frontend
**Causa:** `URL_CORS` no coincide con el dominio del frontend.
**Solución:**
```bash
# En backend/.env
URL_CORS=https://hotel.consultoria-as.com
# Sin slash al final
```
### Error: "Cannot find module 'pg'"
**Causa:** Dependencias no instaladas.
**Solución:**
```bash
cd backend/hotel_hacienda
npm install
```
### Emails no se envían
**Causa:** Credenciales SMTP incorrectas o servidor bloqueando.
**Solución:**
1. Verificar variables `EMAIL_HOST`, `EMAIL_PORT`, `EMAIL_USER`, `EMAIL_PASS`
2. Para Gmail, usar "App Password", no la contraseña normal
3. Revisar logs: `pm2 logs hotel-api`
---
## Frontend
### Error: "Failed to fetch" o "Network Error"
**Causa:** `VITE_API_BASE_URL` apunta a localhost en producción.
**Solución:**
```bash
# Verificar .env del frontend
cat frontend/Frontend-Hotel/.env
# Debe ser:
VITE_API_BASE_URL=https://hotel.consultoria-as.com/api
```
### Página en blanco después del build
**Causa:** Rutas de React Router no configuradas en Nginx.
**Solución:** Asegurar que Nginx tenga:
```nginx
location / {
try_files $uri $uri/ /index.html;
}
```
### Error: `useAuth` is not exported
**Causa:** Bug conocido. `AuthContext.jsx` no exporta `useAuth`.
**Solución temporal:**
```jsx
// En vez de:
import { useAuth } from "../context/AuthContext";
// Usar:
import { AuthContext } from "../context/AuthContext";
const { user, login, logout } = useContext(AuthContext);
```
### Tailwind no aplica estilos
**Causa:** Tailwind v4 usa configuración diferente o `index.css` no tiene las directivas.
**Solución:** Verificar que `src/index.css` contenga:
```css
@tailwind base;
@tailwind components;
@tailwind utilities;
```
---
## Base de Datos
### Error: "function newexpensev2 does not exist"
**Causa:** Backup no restaurado completamente o función no migrada.
**Solución:**
```bash
# Restaurar backup completo
sudo -u postgres psql -d hotel_hacienda -f backupcondatos22122025.sql
# Verificar funciones existentes
sudo -u postgres psql -d hotel_hacienda -c "\df public.*"
```
### Error: "duplicate key value violates unique constraint"
**Causa:** Algunas funciones SQL no son idempotentes y se llaman dos veces.
**Solución:** Revisar la función SQL correspondiente. Agregar `IF EXISTS` o `ON CONFLICT`.
### Stock duplicado en inventario
**Causa:** Dos procesos tocan el mismo stock (ver análisis técnico en `DOCUMENTACION_TECNICA.md`, sección "Problema de duplicación en inventario").
**Solución:** Decidir si el stock se actualiza en `purchaseentry()` o en `setpaymentstatusv2()`, no en ambos.
---
## Integraciones Externas
### Stripe no devuelve datos
**Causa:** `STRIPE_SECRET_KEY` incorrecta o modo live/test mezclado.
**Solución:**
```bash
# Verificar que la key comience con sk_test_ o sk_live_
cat backend/.env | grep STRIPE
```
### API de Facturas devuelve error
**Causa:** Token expirado, RFC incorrecto, o fechas fuera de rango.
**Solución:**
1. Verificar `FACTURAS_API_TOKEN` y `FACTURAS_ISSUER_RFC`
2. Verificar que el rango de fechas no exceda el límite de la API
3. Revisar logs del backend
### Banxico retorna error
**Causa:** Token inválido o serie incorrecta.
**Solución:**
1. Verificar `BANXICO_TOKEN`
2. La serie usada es `SF43718` (Fix de USD/MXN)
3. Verificar que el token no haya expirado
---
## Producción
### PM2 no inicia al reiniciar servidor
**Solución:**
```bash
pm2 startup
pm2 save
```
### Nginx error 502 Bad Gateway
**Causa:** Backend no está corriendo o escucha en puerto diferente.
**Solución:**
```bash
# Verificar proceso
pm2 list
# Verificar puerto
sudo ss -tlnp | grep 3000
# Reiniciar
pm2 restart hotel-api
sudo systemctl restart nginx
```
### Certificado SSL expirado
**Solución:**
```bash
sudo certbot renew --dry-run
sudo certbot renew
sudo systemctl reload nginx
```
---
> Para problemas no listados aquí, revisar los logs detallados:
> - Backend: `pm2 logs hotel-api`
> - Nginx: `sudo tail -f /var/log/nginx/hotel-error.log`
> - PostgreSQL: `sudo tail -f /var/log/postgresql/postgresql-*.log`