# Roca Carga - Sistema Integral de Logística y Recarga Eléctrica (GRUPO 4) ## 1. Identidad y Alcance del Sistema - **Nombre Oficial:** Roca Carga - **Tipo de Proyecto:** Plataforma Web Funcional de Carga Eléctrica y Logística de Distribución - **Localización:** Ciudad de General Roca y Alto Valle (Río Negro, Argentina) - **Materia / Curso:** Mantenimiento - 2° 1ra CB - **Profesores:** Armas - Bañares - **Autores Estudiantiles:** Belen Abigail Paez, Ian Olivares y Equipo. - **Identidad Visual Oficial (Definida por Belen Paez en SRS):** - Verde principal: `#247A4B` (botones, títulos y acentos destacados). - Verde suave: `#E8F4EC` (fondos y tarjetas secundarias). - Blanco puro: `#FFFFFF` (fondos y tarjetas). - Texto oscuro: `#1e293b`. - **Estado Técnico:** 🟢 **SISTEMA EN PRODUCCIÓN FUNCIONAL (Arquitectura Modular PHP + Flat-File JSON sin SQL)**. --- ## 2. Reorganización y Estructura Profesional de Carpetas Siguiendo las directrices de `GUIA_ESTANDAR_PROYECTOS_Y_DESPLIEGUE.md`, el proyecto fue estructurado en capas limpias y seguras: ```text GRUPO 4/ ├── index.php # Enrutador Front Controller (Rutas seguras por Whitelist) ├── .htaccess # Directivas de seguridad Apache (Options -Indexes, cabeceras) ├── SEGUIMIENTO.md # Memoria técnica, integrantes, roles y bitácora ├── config/ │ ├── .htaccess # Protección estricta: "Require all denied" │ ├── config.php # Rutas del sistema, timezone y sesión segura (SameSite=Lax) │ └── security.php # Protección XSS (e()), tokens CSRF y sanitización ├── src/ │ ├── .htaccess # Protección estricta contra lectura web directa │ ├── Database.php # Motor JSON Flat-File atómico con concurrencia segura (flock) │ ├── Auth.php # Autenticación criptográfica (password_hash Bcrypt) y roles (RBAC) │ ├── ChargingStationService.php # Gestión de estaciones, estados y aviso "Voy en camino" │ ├── CargoService.php # Gestión de fletes, envíos y seguimiento de cargas │ └── AssistantService.php # Asistente digital con base de conocimiento de General Roca ├── data/ │ ├── .htaccess # Denegación total de acceso público a la base de datos JSON │ ├── stations.json # Puntos de recarga de Roca (Ruta 22, Canalito, Parque Industrial, etc.) │ ├── cargas.json # Registro de fletes y envíos con estados (pendiente, en tránsito, entregado) │ ├── users.json # Base de usuarios con contraseñas Bcrypt y arquetipos │ └── chat_history.json # Historial de consultas al asistente digital ├── views/ │ ├── layouts/ │ │ ├── header.php # Layout superior, barra académica hacia maquetas y accesibilidad │ │ └── footer.php # Layout inferior y scripts base │ ├── dashboard.php # Menú principal con métricas en vivo y accesos directos │ ├── map.php # Mapa interactivo Leaflet.js con estados (verde/amarillo/rojo) y Google Maps │ ├── assistant.php # Asistente virtual AI con chat interactivo y sugerencias │ ├── cargas.php # Solicitud y seguimiento de envíos de fletes │ ├── profile.php # Perfil del conductor / usuario con vehículo asignado │ ├── admin.php # Consola administrativa protegida (ABM de cargadores y flota) │ ├── login.php # Portal de acceso con botones de prueba rápida para 4 arquetipos │ └── register.php # Registro de nuevos transportistas y usuarios ├── api/ │ └── index.php # API RESTful centralizada con validación CSRF y control de roles ├── docs/ │ ├── Cuestionario de Relevamiento de Requisitos roca carga.docx │ ├── Parte 2 SRS paso c Abigail Paez.docx │ └── inicio de sesion roca carga.docx └── legacy_mockups/ # Resguardo de las 8 maquetas HTML originales de los estudiantes ├── redise_o_men_principal_roca_carga.html ├── mapa_interactivo.html ├── asistente_digital_ai.html ├── inicio de sesion roca carga.html ├── Registro_y_espectador.html ├── perfil_de_usuario.html ├── administracion roca carga.html └── modo_usuario.html ``` --- ## 3. Cumplimiento de Requisitos del Cuestionario SRS | Requisito del Cuestionario | Implementación Técnica en Roca Carga | Estado | |---|---|---| | **Gestión de Sesión y Cierre** | Cierre de sesión seguro con destrucción de cookies en `Auth::logout()` y opción de mantener cuenta activa. | ✅ Cumplido | | **Arquetipos de Usuarios** | 4 roles activos en `users.json`: Administrador, Conductor/Consumidor, Comerciante y Espectador. | ✅ Cumplido | | **Lógica de Colores en el Mapa** | Semáforo de cargadores: Verde (Disponible), Amarillo (Ocupado), Rojo (Mantenimiento). | ✅ Cumplido | | **Integración con Google Maps** | Botón directo que abre la navegación paso a paso externa hacia las coordenadas del punto de carga. | ✅ Cumplido | | **Aviso al Comerciante ("Voy en camino")** | Botón que registra en tiempo real cuántos usuarios se dirigen hacia el punto para reservar conector. | ✅ Cumplido | | **Asistente Digital AI** | Módulo interactivo con conocimiento de tarifas, tipos de conector (Tipo 2, CCS2), tiempos y fletes. | ✅ Cumplido | | **Gestión de Fletes y Cargas** | Formulario de solicitud y cambio de estados (Pendiente, En Tránsito, Entregado). | ✅ Cumplido | | **Accesibilidad (RNF)** | Selector de escala de fuente tipográfica A-/A/A+ con persistencia en `localStorage`. | ✅ Cumplido | --- ## 4. Cuentas de Acceso para Evaluación Docente | Rol / Arquetipo | Correo Electrónico | Contraseña | Capacidades | |---|---|---|---| | **Administrador** | `admin@rocacarga.com` | `admin123` | Control total, ABM de cargadores y supervisión | | **Conductor / Consumidor** | `conductor@rocacarga.com` | `conductor123` | Solicitar fletes, avisar trayecto y consultar asistente | | **Comerciante (Shell)** | `comercio@rocacarga.com` | `comercio123` | Modificar estado de disponibilidad de su estación | | **Espectador / Consulta** | `espectador@rocacarga.com` | `espectador123` | Modo consulta pública en mapa y cartelera | > [!TIP] > En la pantalla de login (`index.php?v=login`) hay 4 botones con un clic que autocompletan las credenciales de cada arquetipo para agilizar la corrección académica. --- ## 5. Instrucciones de Despliegue en Hostinger 1. Subir el archivo `GRUPO_4_ROCA_CARGA_HOSTINGER.zip` a la carpeta `public_html` (o subdominio asignado) desde el **Administrador de Archivos de Hostinger (hPanel)**. 2. Hacer clic derecho y seleccionar **Extraer** (`Extract`). 3. Verificar que la versión de PHP en Hostinger sea **PHP 8.1 o PHP 8.2**. 4. Confirmar que la carpeta `data/` tenga permisos de escritura (`chmod 755` o `775`). 5. Abrir el sitio web y verificar que la barra académica superior enlace a las 8 maquetas originales y que la consola interactiva guarde los cambios en los archivos JSON.