# SISER — Sistema Integrado de Solicitud de Servicios

Sistema de gestión de solicitudes de servicios internos de la empresa, desarrollado en **Laravel 11**.

El código principal de la aplicación se encuentra en el directorio [siser_v2/](file:///c:/xampp82/htdocs/siser/siser_v2).

## Requisitos del Servidor

Para desplegar la aplicación en el servidor corporativo, se requiere la siguiente pila de software:

| Componente | Versión Mínima | Detalle |
|-----------|----------------|---------|
| **PHP** | `8.2+` | Con extensiones `pdo_pgsql`, `pdo_mysql`, `gd`, `zip`, `bcmath`, `opcache`. |
| **PostgreSQL** | `14+` | Servidor de base de datos relacional. |
| **Composer** | `2.x` | Gestor de dependencias de PHP. |
| **Node.js & npm** | `18+ / 9+` | Necesario para compilar el frontend con Vite. |
| **Servidor Web** | Apache / Nginx | Con soporte para reescritura de URL (`mod_rewrite` en Apache) y apuntando al Document Root adecuado. |

> [!CAUTION]
> **Seguridad del Document Root:**
> El servidor web (Apache o Nginx) debe estar configurado para apuntar su Document Root a la carpeta **`siser_v2/public`**, y **no** a la raíz del proyecto. Si apunta a la raíz, se expondrán archivos de configuración confidenciales (como el archivo `.env`) al público general.

---

## Estructura de Base de Datos y Multitenancy

El sistema utiliza un middleware para separar dinámicamente los contextos operativos en dos bases de datos independientes dentro del mismo cluster PostgreSQL:

1.  **Módulo Tecnología (Por defecto):** Conexión principal `pgsql`. Base de datos: `bd_siserinfo`. Contiene los datos organizacionales comunes (usuarios, departamentos, gerencias) y las solicitudes de Tecnología.
2.  **Módulo Mantenimiento:** Conexión secundaria `pgsql_mantenimiento`. Base de datos: `siser_mantenimiento`. Contiene las solicitudes y ejecuciones operativas del área de Mantenimiento.

Adicionalmente, se cuenta con una conexión de solo lectura a la base de datos de Recursos Humanos (`pgsql_rrhh`, DB `db_mdo_2026`).

---

## Proceso de Instalación y Despliegue en Producción

Siga estos pasos para desplegar la aplicación en el servidor corporativo:

### 1. Preparar el código y configuración de entorno
1. Copie el contenido del directorio `siser_v2` al directorio de publicación del servidor web.
2. Copie el archivo `.env.production` como `.env`:
   ```bash
   cp .env.production .env
   ```
3. Edite el archivo `.env` configurando los accesos correctos a las bases de datos de producción (`DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_MANT_DATABASE`, `DB_RRHH_*`, etc.) y la URL de la aplicación (`APP_URL`).

### 2. Instalar dependencias de PHP y generar la clave
Ejecute en la raíz del proyecto Laravel:
```bash
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
```

### 3. Compilar archivos del frontend
Ejecute para instalar dependencias de desarrollo y compilar los assets de producción mediante Vite:
```bash
npm ci
npm run build
```

### 4. Crear enlace de almacenamiento
Habilite la visualización de archivos adjuntos y subidas mediante el enlace simbólico:
```bash
php artisan storage:link
```

### 5. Ejecutar migraciones de base de datos
Deben ejecutarse las migraciones para ambas bases de datos:

1.  **Migraciones de la Base de Datos Principal (Tecnología):**
    ```bash
    php artisan migrate --force
    ```
2.  **Migraciones de la Base de Datos de Mantenimiento (Secundaria):**
    ```bash
    php artisan migrate --database=pgsql_mantenimiento --path=database/migrations/mantenimiento --force
    ```

---

## Monitoreo de Salud (Health Check)

El sistema provee un endpoint ligero para monitorear el estado de la aplicación desde sistemas externos:
```bash
curl https://<url-servidor-empresa>/health.php
```
Respuesta esperada: `{"status":"ok"}` con código HTTP 200.
