- Diagrama de arquitectura general del sistema - Diagrama de flujo de datos - Diagrama ERD de modulos: Empleados, Gastos, Inventario, Hotel - Documentacion de funciones almacenadas principales - Estados del sistema y tipos de movimientos
363 lines
8.7 KiB
Markdown
363 lines
8.7 KiB
Markdown
# Hacienda San Angel - Sistema de Gestion Hotelera
|
|
|
|
Sistema integral de gestion para el hotel Hacienda San Angel. Incluye modulos de administracion de empleados, nomina, inventario, gastos, ingresos, y reporteria.
|
|
|
|
## Documentacion
|
|
|
|
- [Arquitectura y Diagramas de Base de Datos](docs/ARQUITECTURA.md) - Diagramas ERD, arquitectura del sistema y flujo de datos
|
|
|
|
## Tecnologias
|
|
|
|
### Backend
|
|
- **Node.js** con Express 5
|
|
- **PostgreSQL 15** como base de datos
|
|
- **Nodemailer** para envio de correos (Brevo/Sendinblue)
|
|
- **Stripe** para procesamiento de pagos
|
|
- **Axios** para consultas externas (tipo de cambio Banxico)
|
|
|
|
### Frontend
|
|
- **React 19** con Vite 7
|
|
- **React Router DOM 7** para navegacion
|
|
- **React Hook Form** + **Yup** para validacion de formularios
|
|
- **Bootstrap 5** + **Tailwind CSS** para estilos
|
|
- **Axios** para peticiones HTTP
|
|
- **XLSX** para exportacion de datos a Excel
|
|
|
|
### Infraestructura
|
|
- **Docker** y **Docker Compose** para contenedorizacion
|
|
- **PostgreSQL 15** en contenedor
|
|
|
|
---
|
|
|
|
## Estructura del Proyecto
|
|
|
|
```
|
|
Hotel/
|
|
├── backend/
|
|
│ ├── Dockerfile
|
|
│ └── hotel_hacienda/
|
|
│ ├── src/
|
|
│ │ ├── app.js # Configuracion Express
|
|
│ │ ├── server.js # Punto de entrada
|
|
│ │ ├── controllers/ # Logica de negocio
|
|
│ │ ├── routes/ # Definicion de rutas API
|
|
│ │ ├── middlewares/ # Validadores
|
|
│ │ ├── db/ # Conexion a PostgreSQL
|
|
│ │ └── services/ # Servicios (email)
|
|
│ ├── scripts bd/ # Scripts SQL para la BD
|
|
│ └── package.json
|
|
├── frontend/
|
|
│ ├── Dockerfile
|
|
│ └── Frontend-Hotel/
|
|
│ ├── src/
|
|
│ │ ├── App.jsx # Rutas principales
|
|
│ │ ├── main.jsx # Punto de entrada
|
|
│ │ ├── components/ # Componentes reutilizables
|
|
│ │ ├── pages/ # Paginas de la aplicacion
|
|
│ │ ├── services/ # Servicios API
|
|
│ │ ├── context/ # Context API
|
|
│ │ └── styles/ # Estilos globales
|
|
│ └── package.json
|
|
├── docker-compose.yml
|
|
├── .env.example
|
|
└── README.md
|
|
```
|
|
|
|
---
|
|
|
|
## Modulos del Sistema
|
|
|
|
### 1. Dashboard
|
|
- **Income**: Vista general de ingresos
|
|
- **Hotel P&L**: Estado de perdidas y ganancias del hotel
|
|
- **Restaurant P&L**: Estado de perdidas y ganancias del restaurante
|
|
- **Budget**: Presupuesto
|
|
- **Cost Per Room**: Costo por habitacion
|
|
- **Room Analysis**: Analisis de ocupacion de habitaciones
|
|
- **Expenses**: Resumen de gastos
|
|
|
|
### 2. Nomina y Empleados (Payroll)
|
|
- Gestion de empleados (alta, baja, modificacion)
|
|
- Contratos laborales
|
|
- Control de asistencia
|
|
- Uniformes
|
|
- Pago diario
|
|
|
|
### 3. Gastos (Expenses)
|
|
- Registro de gastos
|
|
- Pagos mensuales recurrentes
|
|
- Aprobacion de gastos (flujo de aprobacion)
|
|
- Proveedores
|
|
- Reportes de gastos
|
|
- Entradas de compras
|
|
|
|
### 4. Inventario (Inventory)
|
|
- Catalogo de productos
|
|
- Ajustes de inventario
|
|
- Salidas de inventario
|
|
- Salidas de ama de llaves (Housekeeper)
|
|
- Reportes de inventario
|
|
- Descarte de productos
|
|
|
|
### 5. Ingresos (Income)
|
|
- Registro de ingresos
|
|
- Reportes de ingresos
|
|
- Integracion con sistema Horux
|
|
|
|
### 6. Hotel
|
|
- Gestion de propiedades
|
|
- Gestion de habitaciones
|
|
|
|
### 7. Configuracion (Settings)
|
|
- Gestion de habitaciones
|
|
- Configuracion del sistema
|
|
- Gestion de usuarios
|
|
|
|
---
|
|
|
|
## API Endpoints
|
|
|
|
### Autenticacion
|
|
- `POST /api/auth/login` - Iniciar sesion
|
|
- `POST /api/auth/create` - Crear usuario
|
|
- `POST /api/auth/recover` - Recuperar contrasena
|
|
|
|
### Empleados
|
|
- `GET /api/employees` - Listar empleados
|
|
- `POST /api/employees/new` - Crear empleado
|
|
- `PUT /api/employees/update` - Actualizar empleado
|
|
- `GET /api/employees/attendance` - Obtener asistencia
|
|
|
|
### Contratos
|
|
- `GET /api/contracts` - Listar contratos
|
|
- `POST /api/contracts` - Crear contrato
|
|
- `PUT /api/contracts` - Actualizar contrato
|
|
|
|
### Productos/Inventario
|
|
- `GET /api/products` - Listar productos
|
|
- `POST /api/products` - Crear producto
|
|
- `PUT /api/products` - Actualizar producto
|
|
|
|
### Gastos
|
|
- `GET /api/expenses` - Listar gastos
|
|
- `POST /api/expenses` - Crear gasto
|
|
- `PUT /api/expenses` - Actualizar gasto
|
|
- `GET /api/expenses/pending` - Gastos pendientes de aprobacion
|
|
|
|
### Ingresos
|
|
- `GET /api/incomes` - Listar ingresos
|
|
- `POST /api/incomes` - Registrar ingreso
|
|
- `GET /api/incomeshrx` - Ingresos Horux
|
|
|
|
### Pagos
|
|
- `POST /api/payment` - Procesar pago con Stripe
|
|
|
|
### Tipo de Cambio
|
|
- `GET /api/exchange` - Obtener tipo de cambio (Banxico)
|
|
|
|
### Configuracion
|
|
- `GET /api/settings` - Obtener configuracion
|
|
- `PUT /api/settings` - Actualizar configuracion
|
|
|
|
---
|
|
|
|
## Guia de Instalacion
|
|
|
|
### Requisitos Previos
|
|
- Docker y Docker Compose instalados
|
|
- Git
|
|
|
|
### Opcion 1: Instalacion con Docker (Recomendado)
|
|
|
|
1. **Clonar el repositorio**
|
|
```bash
|
|
git clone https://git.consultoria-as.com/usuario/Hacienda-San-Angel.git
|
|
cd Hacienda-San-Angel
|
|
```
|
|
|
|
2. **Configurar variables de entorno**
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Editar el archivo `.env` con los valores correspondientes:
|
|
```env
|
|
POSTGRES_PASSWORD=tu_password_seguro
|
|
EMAIL_USER=tu_email@ejemplo.com
|
|
EMAIL_PASS=tu_api_key_brevo
|
|
BANXICO_TOKEN=tu_token_banxico
|
|
```
|
|
|
|
3. **Construir e iniciar los contenedores**
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
4. **Verificar que los servicios esten corriendo**
|
|
```bash
|
|
docker-compose ps
|
|
```
|
|
|
|
5. **Importar la base de datos**
|
|
```bash
|
|
# Copiar el archivo SQL al contenedor
|
|
docker cp backupcondatos22122025.sql postgres_db:/tmp/
|
|
|
|
# Ejecutar el script SQL
|
|
docker exec -it postgres_db psql -U oposgres -d haciendasanangel -f /tmp/backupcondatos22122025.sql
|
|
```
|
|
|
|
6. **Acceder a la aplicacion**
|
|
- Frontend: http://localhost:5172
|
|
- Backend API: http://localhost:4000/api
|
|
|
|
### Opcion 2: Instalacion Manual (Desarrollo)
|
|
|
|
#### Backend
|
|
|
|
1. **Navegar al directorio del backend**
|
|
```bash
|
|
cd backend/hotel_hacienda
|
|
```
|
|
|
|
2. **Instalar dependencias**
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. **Configurar variables de entorno**
|
|
```bash
|
|
cp .env.example .env
|
|
# Editar .env con los valores correspondientes
|
|
```
|
|
|
|
4. **Iniciar el servidor**
|
|
```bash
|
|
npm run dev # Desarrollo con nodemon
|
|
npm start # Produccion
|
|
```
|
|
|
|
#### Frontend
|
|
|
|
1. **Navegar al directorio del frontend**
|
|
```bash
|
|
cd frontend/Frontend-Hotel
|
|
```
|
|
|
|
2. **Instalar dependencias**
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. **Configurar variables de entorno**
|
|
```bash
|
|
cp .env.example .env
|
|
# Editar .env con la URL del API
|
|
```
|
|
|
|
4. **Iniciar la aplicacion**
|
|
```bash
|
|
npm run dev # Desarrollo
|
|
npm run build # Construir para produccion
|
|
```
|
|
|
|
---
|
|
|
|
## Base de Datos
|
|
|
|
### Configuracion
|
|
- **Motor**: PostgreSQL 15
|
|
- **Base de datos**: haciendasanangel
|
|
- **Usuario**: oposgres
|
|
|
|
### Scripts SQL
|
|
Los scripts de la base de datos se encuentran en `backend/hotel_hacienda/scripts bd/funcionesparaproduccion/`. Incluyen:
|
|
|
|
- Funciones para empleados y contratos
|
|
- Funciones para gastos e ingresos
|
|
- Funciones para inventario
|
|
- Funciones para reporteria
|
|
- Funciones de autenticacion
|
|
|
|
---
|
|
|
|
## Variables de Entorno
|
|
|
|
### Backend (.env)
|
|
| Variable | Descripcion |
|
|
|----------|-------------|
|
|
| PORT | Puerto del servidor (default: 4000) |
|
|
| DB_HOST | Host de PostgreSQL |
|
|
| DB_PORT | Puerto de PostgreSQL (default: 5432) |
|
|
| DB_USER | Usuario de PostgreSQL |
|
|
| DB_PASSWORD | Contrasena de PostgreSQL |
|
|
| DB_NAME | Nombre de la base de datos |
|
|
| EMAIL_HOST | Servidor SMTP |
|
|
| EMAIL_PORT | Puerto SMTP |
|
|
| EMAIL_USER | Usuario SMTP |
|
|
| EMAIL_PASS | Contrasena/API Key SMTP |
|
|
| URL_CORS | URL permitida para CORS |
|
|
| BANXICO_TOKEN | Token API de Banxico |
|
|
| STRIPE_SECRET_KEY | Llave secreta de Stripe |
|
|
|
|
### Frontend (.env)
|
|
| Variable | Descripcion |
|
|
|----------|-------------|
|
|
| VITE_API_BASE_URL | URL base del API backend |
|
|
|
|
---
|
|
|
|
## Despliegue en Produccion
|
|
|
|
### Con Docker Compose
|
|
|
|
1. Asegurarse de tener configurado el archivo `.env` con valores de produccion
|
|
|
|
2. Modificar `docker-compose.yml` si es necesario:
|
|
- Cambiar `URL_CORS` a tu dominio de produccion
|
|
- Configurar volumenes persistentes para la base de datos
|
|
|
|
3. Iniciar los servicios:
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Notas de Seguridad
|
|
- Cambiar las contrasenas por defecto
|
|
- Usar HTTPS en produccion (configurar con nginx o similar)
|
|
- Respaldar la base de datos regularmente
|
|
- No exponer el puerto de PostgreSQL al exterior
|
|
|
|
---
|
|
|
|
## Mantenimiento
|
|
|
|
### Respaldo de Base de Datos
|
|
```bash
|
|
docker exec postgres_db pg_dump -U oposgres haciendasanangel > backup_$(date +%Y%m%d).sql
|
|
```
|
|
|
|
### Ver logs
|
|
```bash
|
|
docker-compose logs -f backend
|
|
docker-compose logs -f frontend
|
|
docker-compose logs -f postgres
|
|
```
|
|
|
|
### Reiniciar servicios
|
|
```bash
|
|
docker-compose restart
|
|
```
|
|
|
|
---
|
|
|
|
## Licencia
|
|
|
|
Proyecto privado - Hacienda San Angel
|
|
|
|
---
|
|
|
|
## Contacto
|
|
|
|
Para soporte tecnico, contactar al equipo de desarrollo.
|