diff --git a/README.md b/README.md index 3cd3458..b1bc40f 100644 --- a/README.md +++ b/README.md @@ -1,133 +1,168 @@ # Sistema Mercadía - Gestión de Espacios Comerciales +## Descripción + Sistema web para la gestión de espacios comerciales en tiendas Mercadía del Grupo Iconn. Permite digitalizar el proceso de asignación de espacios a proveedores dentro de las tiendas. -## Características Principales - -- **Arquitectura MVC** con Spring Boot y Thymeleaf -- **Interfaz responsiva** y sencilla para uso en computadoras y dispositivos móviles -- **Sistema de roles** (Administrador, Comercial, Tienda) -- **CRUD completo** de proveedores y formularios -- **Validación** de campos obligatorios -- **Búsqueda y filtrado** avanzado -- **Reportes** por tienda y proveedor -- **Seguridad** con autenticación, sesiones y encriptación de contraseñas -- **Base de datos PostgreSQL** - -## Tecnologías Utilizadas - -- **Java 17** -- **Spring Boot 3.5.4** -- **Spring Security 6** -- **Spring Data JPA** -- **Thymeleaf** -- **PostgreSQL** -- **Bootstrap 5.3.0** -- **Maven** - -## Requisitos Previos - -1. **Java 17** o superior -2. **PostgreSQL 12** o superior -3. **Maven 3.6** o superior - -## Configuración de la Base de Datos - -1. Crear la base de datos en PostgreSQL: -```sql -CREATE DATABASE mercadia_db; -CREATE USER mercadia_user WITH PASSWORD 'mercadia_password'; -GRANT ALL PRIVILEGES ON DATABASE mercadia_db TO mercadia_user; +### Problema Identificado + +Actualmente, el proceso de gestión y asignación de espacios comerciales a proveedores se realiza manualmente, lo que conlleva: +- Duplicidad de información +- Dificultad para rastrear acuerdos comerciales +- Falta de visibilidad sobre espacios disponibles +- Procesos administrativos lentos e ineficientes + +### Solución + +Mercadía digitaliza todo el proceso mediante: +- Registro centralizado de proveedores +- Control de espacios comerciales por tienda +- Gestión de formularios digitales +- Sistema de roles específicos para cada nivel operativo +- Reportes y análisis en tiempo real + +## Tabla de Contenidos + +- [Arquitectura](#arquitectura) +- [Requerimientos](#requerimientos) +- [Instalación](#instalación) +- [Configuración](#configuración) +- [Uso](#uso) +- [Pruebas](#pruebas-y-cicd) +- [Despliegue](#-despliegue-en-producción) +- [Contribución](#contribución) +- [Licencia](#licencia) +- [Contacto](#contacto) + +## Arquitectura + +El sistema Mercadía sigue una arquitectura MVC (Modelo-Vista-Controlador) implementada con Spring Boot: + +- **Modelo**: Entidades JPA para la persistencia de datos +- **Vista**: Thymeleaf + Bootstrap para la interfaz de usuario +- **Controlador**: Spring MVC para la lógica de negocio + +La arquitectura se compone de las siguientes capas: +1. **Capa de Presentación**: Thymeleaf + Bootstrap +2. **Capa de Controladores**: Spring MVC +3. **Capa de Servicios**: Spring Services +4. **Capa de Persistencia**: Spring Data JPA + PostgreSQL + +### Diagrama de Arquitectura + +```mermaid +flowchart TD + Client[Cliente Web] --> FE[Frontend - Thymeleaf + Bootstrap] + FE --> Controller[Controladores Spring MVC] + Controller --> Service[Servicios de Negocio] + Service --> Repository[Repositorios JPA] + Repository --> DB[(PostgreSQL/Supabase)] + + Security[Spring Security] --> Controller + Config[Configuración] --> Service ``` -2. Ajustar la configuración en `src/main/resources/application.properties` si es necesario: -```properties -spring.datasource.url=jdbc:postgresql://localhost:5432/mercadia_db -spring.datasource.username=mercadia_user -spring.datasource.password=mercadia_password -``` +## Requerimientos -## Instalación y Ejecución +### Requerimientos de Servidor -1. **Clonar el repositorio** (si corresponde) o descargar el código fuente +- **Servidor de Aplicación**: Compatible con Servlet 6.0+ (Tomcat embebido incluido) +- **Servidor Web**: Apache, Nginx o similar para producción +- **Base de Datos**: PostgreSQL 12+ +- **JDK**: Java 17+ +- **Memoria**: Mínimo 512MB RAM (1GB+ recomendado) +- **Almacenamiento**: 500MB+ para la aplicación y logs -2. **Compilar el proyecto**: -```bash -./mvnw clean compile -``` +### Dependencias Principales -3. **Ejecutar el proyecto**: -```bash -./mvnw spring-boot:run -``` +- **Spring Boot**: 3.3.2 +- **Spring Security**: 6 +- **Spring Data JPA**: Incluido en Spring Boot +- **Thymeleaf**: Incluido en Spring Boot +- **PostgreSQL Driver**: Runtime +- **Bootstrap**: 5.3.0 (WebJars) +- **Maven**: 3.6+ (Gestión de dependencias) -4. **Acceder al sistema**: - - URL: http://localhost:8080/mercadia - - El sistema se ejecuta en el puerto 8080 con el contexto `/mercadia` +## Instalación -## Pruebas y CI/CD +### Ambiente de Desarrollo -### Ejecutar Tests Localmente +1. **Requisitos previos**: + - Java 17+ + - Maven 3.6+ + - PostgreSQL 12+ + - Git -```bash -# Ejecutar todos los tests -./mvnw test +2. **Clonar el repositorio**: + ```bash + git clone https://github.com/alexpardox/mercaproject.git + cd mercaproject + ``` -# Ejecutar tests específicos -./mvnw test -Dtest=ProveedorTest +3. **Configurar la base de datos PostgreSQL**: + ```sql + CREATE DATABASE mercadia_db; + CREATE USER mercadia_user WITH PASSWORD 'tu_contraseña_segura'; + GRANT ALL PRIVILEGES ON DATABASE mercadia_db TO mercadia_user; + ``` -# Ejecutar tests con reportes -./mvnw clean test jacoco:report -``` +4. **Configurar variables de entorno**: + Crea un archivo `.env` en la raíz del proyecto (no incluirlo en Git): + ```env + DB_URL=jdbc:postgresql://localhost:5432/mercadia_db + DB_USERNAME=mercadia_user + DB_PASSWORD=tu_contraseña_segura + SPRING_PROFILES_ACTIVE=dev + ``` + +5. **Compilar el proyecto**: + ```bash + ./mvnw clean compile + ``` + +6. **Ejecutar la aplicación en modo desarrollo**: + ```bash + ./mvnw spring-boot:run + ``` -### Integración Continua con Travis CI +7. **Acceder a la aplicación**: + - URL: http://localhost:8080/mercadia + - Credenciales predeterminadas: admin/password -Este proyecto está configurado con Travis CI para ejecutar automáticamente las pruebas en cada push y pull request. +## Configuración -**Configuración Travis CI:** -- ✅ **Archivo configurado**: `.travis.yml` -- ✅ **Tests automáticos**: Se ejecutan en Java 17 -- ✅ **Base de datos de prueba**: H2 en memoria -- ✅ **Notificaciones**: Email en fallos +### Archivos de Configuración -**Estados de Build:** -- [![Build Status](https://app.travis-ci.com/alexpardox/mercaproject.svg?branch=main)](https://app.travis-ci.com/alexpardox/mercaproject) +- **`application.properties`**: Configuración principal +- **`application-dev.properties`**: Configuración para desarrollo +- **`application-production.properties`**: Configuración para producción +- **`.env`**: Variables de entorno (no incluir en Git) +- **`system.properties`**: Configuración para Heroku (versión de Java) +- **`Procfile`**: Configuración para Heroku (comandos de inicio) -**Para configurar Travis CI en tu fork:** +### Configuración de Base de Datos -1. **Conectar a Travis CI:** - - Ve a [travis-ci.com](https://travis-ci.com) - - Inicia sesión con tu cuenta de GitHub - - Autoriza Travis CI - - Activa el repositorio `mercaproject` +La aplicación usa PostgreSQL para todos los entornos. Configura las siguientes variables: -2. **Variables de entorno (opcional):** - ```bash - # En la configuración de Travis CI del repositorio - DB_URL=jdbc:h2:mem:testdb - DB_USERNAME=sa - DB_PASSWORD= - ``` +- `DB_URL`: URL de conexión a PostgreSQL +- `DB_USERNAME`: Usuario de la base de datos +- `DB_PASSWORD`: Contraseña de la base de datos -3. **Badge en README:** - ```markdown - [![Build Status](https://app.travis-ci.com/TU_USUARIO/mercaproject.svg?branch=main)](https://app.travis-ci.com/TU_USUARIO/mercaproject) - ``` +### Configuración de Seguridad + +- `JWT_SECRET`: Clave secreta para la generación de tokens JWT +- `JWT_EXPIRATION`: Tiempo de expiración del token en milisegundos -### Tests Incluidos +### Configuración de Perfiles -- **Tests de Entidad**: `ProveedorTest` - Validación del modelo de datos -- **Tests de Integración**: `MercaApplicationTests` - Carga del contexto Spring -- **Tests Básicos**: `BasicIntegrationTest` - Validaciones fundamentales +- **`dev`**: Para desarrollo local +- **`production`**: Para entorno de producción (Heroku) -**Cobertura de Tests:** -- ✅ Modelo de Proveedor: Estados, validaciones, constructores -- ✅ Contexto de Spring: Carga de aplicación y dependencias -- ✅ Configuración de Base de Datos: H2 para tests, PostgreSQL para producción +## Uso -## Usuarios de Prueba +### Usuarios Predefinidos -El sistema incluye usuarios de prueba que se crean automáticamente: +El sistema inicializa automáticamente los siguientes usuarios (solo si no existen): | Usuario | Contraseña | Rol | Descripción | |---------|------------|-----|-------------| @@ -135,6 +170,55 @@ El sistema incluye usuarios de prueba que se crean automáticamente: | `comercial` | `password` | COMERCIAL | Gestión de formularios y proveedores | | `tienda001` | `password` | TIENDA | Captura de formularios (Tienda TDA001) | +### Funcionalidades por Rol + +#### Administrador +- Gestión completa de usuarios +- Gestión completa de proveedores +- Gestión completa de formularios +- Acceso a todos los reportes +- Configuración del sistema + +#### Comercial +- Visualización de todos los formularios +- Gestión de proveedores +- Reportes por tienda y proveedor +- Edición de formularios de cualquier tienda + +#### Tienda +- Captura de formularios para su tienda asignada +- Visualización de formularios propios +- Consulta de proveedores +- Dashboard con estadísticas de su tienda + +## Pruebas y CI/CD + +### Ejecutar Tests Manualmente + +```bash +# Ejecutar todos los tests +./mvnw test + +# Ejecutar tests específicos +./mvnw test -Dtest=ProveedorTest + +# Ejecutar tests con reportes +./mvnw clean test jacoco:report +``` + +### Integración Continua con GitHub Actions + +Este proyecto está configurado con GitHub Actions para ejecutar automáticamente las pruebas en cada push y pull request. + +**Configuración GitHub Actions:** +- ✅ **Archivos configurados**: `.github/workflows/` +- ✅ **Tests automáticos**: Se ejecutan en Java 17 +- ✅ **Base de datos de prueba**: PostgreSQL +- ✅ **Notificaciones**: Email en fallos + +**Estados de Build:** +- [![Build Status](https://github.com/alexpardox/mercaproject/actions/workflows/main.yml/badge.svg)](https://github.com/alexpardox/mercaproject/actions) + ## Estructura del Proyecto ``` @@ -155,27 +239,6 @@ src/ └── java/ # Pruebas unitarias ``` -## Funcionalidades por Rol - -### Administrador -- Gestión completa de usuarios -- Gestión completa de proveedores -- Gestión completa de formularios -- Acceso a todos los reportes -- Configuración del sistema - -### Comercial -- Visualización de todos los formularios -- Gestión de proveedores -- Reportes por tienda y proveedor -- Edición de formularios de cualquier tienda - -### Tienda -- Captura de formularios para su tienda asignada -- Visualización de formularios propios -- Consulta de proveedores -- Dashboard con estadísticas de su tienda - ## Entidades Principales ### Usuario @@ -195,24 +258,6 @@ src/ - Vigencia y precio acordado - Estados (Activo, Vencido, Cancelado) -## Configuración de Desarrollo - -Para desarrollo, se recomienda: - -1. **Configurar perfil de desarrollo** en `application-dev.properties`: -```properties -spring.jpa.show-sql=true -logging.level.com.merca.merca=DEBUG -spring.thymeleaf.cache=false -``` - -2. **Usar H2 en memoria** para pruebas rápidas: -```properties -spring.datasource.url=jdbc:h2:mem:testdb -spring.datasource.driver-class-name=org.h2.Driver -spring.jpa.hibernate.ddl-auto=create-drop -``` - ## Personalización ### Estilos CSS @@ -328,6 +373,45 @@ java -jar target/merca-0.0.1-SNAPSHOT.jar --spring.profiles.active=production - `application-production.properties` - Configuración para producción - `database/mercadia_postgresql.sql` - Script de base de datos para Supabase +## 🗺️ Roadmap del Proyecto + +El desarrollo del Sistema Mercadía sigue la siguiente hoja de ruta: + +### Fase 1: Fundación (Completado) +- ✅ Análisis de requerimientos y diseño de arquitectura +- ✅ Configuración del entorno de desarrollo +- ✅ Implementación del modelo de datos básico +- ✅ Autenticación y gestión de usuarios +- ✅ Interfaz de usuario básica con Thymeleaf + +### Fase 2: Funcionalidades Core (En Progreso) +- ✅ Gestión completa de proveedores +- ✅ Sistema de formularios digitales +- ✅ Asignación de espacios comerciales +- 🔄 Dashboard para visualización de datos +- 🔄 Notificaciones y alertas + +### Fase 3: Optimización (Q3 2025) +- 📅 Mejoras de rendimiento en consultas de base de datos +- 📅 Implementación de caché para operaciones frecuentes +- 📅 Optimización de interfaz de usuario +- 📅 Mejoras de accesibilidad y UX +- 📅 Refactorización de código legacy + +### Fase 4: Escalabilidad (Q4 2025) +- 📅 Arquitectura de microservicios para módulos clave +- 📅 API RESTful para integración con sistemas externos +- 📅 Implementación de sistema de eventos y mensajería +- 📅 Soporte para múltiples bases de datos +- 📅 Mejoras en la seguridad y auditoría + +### Fase 5: Expansión (Q1-Q2 2026) +- 📅 Aplicación móvil para tiendas +- 📅 Análisis avanzado de datos y reportes personalizados +- 📅 Inteligencia artificial para recomendaciones +- 📅 Integración con sistemas ERP del grupo Iconn +- 📅 Expansión a nuevas unidades de negocio + ## Contribución Para contribuir al proyecto: diff --git a/pom.xml b/pom.xml index 1da0a45..e686c8c 100644 --- a/pom.xml +++ b/pom.xml @@ -102,12 +102,7 @@ test - - - com.h2database - h2 - test - + diff --git a/src/main/java/com/merca/merca/config/DataInitializer.java b/src/main/java/com/merca/merca/config/DataInitializer.java index 0233cac..0b94447 100644 --- a/src/main/java/com/merca/merca/config/DataInitializer.java +++ b/src/main/java/com/merca/merca/config/DataInitializer.java @@ -1,61 +1,29 @@ package com.merca.merca.config; -import com.merca.merca.entity.Proveedor; import com.merca.merca.entity.Usuario; -import com.merca.merca.service.ProveedorService; import com.merca.merca.service.UsuarioService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class DataInitializer implements CommandLineRunner { - @Value("${app.initialize-data:false}") - private boolean initializeData; - @Autowired private UsuarioService usuarioService; - @Autowired - private ProveedorService proveedorService; - @Override public void run(String... args) throws Exception { - // Solo inicializar datos si está habilitado explícitamente - if (initializeData) { - System.out.println("🔄 Inicializando datos de ejemplo..."); - initializeUsers(); - initializeProveedores(); - } else { - System.out.println("⏭️ Inicialización de datos deshabilitada"); - // Siempre intentar crear un usuario admin si no existe - initializeAdminUser(); - } - } - - private void initializeAdminUser() { - try { - if (usuarioService.buscarPorUsername("admin").isEmpty()) { - Usuario admin = new Usuario(); - admin.setUsername("admin"); - admin.setEmail("admin@mercadia.com"); - admin.setPassword("password"); - admin.setNombreCompleto("Administrador del Sistema"); - admin.setRol(Usuario.Rol.ADMINISTRADOR); - admin.setActivo(true); - - usuarioService.registrarUsuario(admin); - System.out.println("✅ Usuario administrador creado: admin/password"); - } - } catch (Exception e) { - System.out.println("⚠️ Error al crear usuario admin: " + e.getMessage()); - } + // Siempre verificar si existen usuarios y crearlos solo si no existen + System.out.println("🔄 Verificando usuarios del sistema..."); + initializeUsersIfNeeded(); + + // Ya no inicializamos proveedores automáticamente + System.out.println("⏭️ Inicialización de proveedores deshabilitada"); } - private void initializeUsers() { - // Crear usuario administrador + private void initializeUsersIfNeeded() { + // Crear usuario administrador solo si no existe if (usuarioService.buscarPorUsername("admin").isEmpty()) { Usuario admin = new Usuario(); admin.setUsername("admin"); @@ -67,13 +35,15 @@ private void initializeUsers() { try { usuarioService.registrarUsuario(admin); - System.out.println("Usuario administrador creado: admin/password"); + System.out.println("✅ Usuario administrador creado: admin/password"); } catch (Exception e) { - System.err.println("Error creando usuario admin: " + e.getMessage()); + System.out.println("⚠️ Error al crear usuario admin: " + e.getMessage()); } + } else { + System.out.println("✓ Usuario administrador ya existe"); } - // Crear usuario comercial + // Crear usuario comercial solo si no existe if (usuarioService.buscarPorUsername("comercial").isEmpty()) { Usuario comercial = new Usuario(); comercial.setUsername("comercial"); @@ -85,13 +55,15 @@ private void initializeUsers() { try { usuarioService.registrarUsuario(comercial); - System.out.println("Usuario comercial creado: comercial/password"); + System.out.println("✅ Usuario comercial creado: comercial/password"); } catch (Exception e) { - System.err.println("Error creando usuario comercial: " + e.getMessage()); + System.out.println("⚠️ Error al crear usuario comercial: " + e.getMessage()); } + } else { + System.out.println("✓ Usuario comercial ya existe"); } - // Crear usuario de tienda + // Crear usuario de tienda solo si no existe if (usuarioService.buscarPorUsername("tienda001").isEmpty()) { Usuario tienda = new Usuario(); tienda.setUsername("tienda001"); @@ -104,89 +76,12 @@ private void initializeUsers() { try { usuarioService.registrarUsuario(tienda); - System.out.println("Usuario tienda creado: tienda001/password"); - } catch (Exception e) { - System.err.println("Error creando usuario tienda: " + e.getMessage()); - } - } - } - - private void initializeProveedores() { - // Crear proveedores de ejemplo - if (proveedorService.buscarPorRfc("ABC123456789").isEmpty()) { - Proveedor proveedor1 = new Proveedor(); - proveedor1.setNombre("Coca-Cola FEMSA"); - proveedor1.setRfc("ABC123456789"); - proveedor1.setRazonSocial("Coca-Cola FEMSA, S.A.B. de C.V."); - proveedor1.setEmail("contacto@cocacola.com"); - proveedor1.setTelefono("5555551234"); - proveedor1.setContactoPrincipal("Juan Pérez"); - proveedor1.setDireccion("Av. Insurgentes Sur 1234, Ciudad de México"); - proveedor1.setEstado(Proveedor.Estado.ACTIVO); - - try { - proveedorService.registrarProveedor(proveedor1); - System.out.println("Proveedor Coca-Cola FEMSA creado"); - } catch (Exception e) { - System.err.println("Error creando proveedor Coca-Cola: " + e.getMessage()); - } - } - - if (proveedorService.buscarPorRfc("DEF987654321").isEmpty()) { - Proveedor proveedor2 = new Proveedor(); - proveedor2.setNombre("Bimbo"); - proveedor2.setRfc("DEF987654321"); - proveedor2.setRazonSocial("Grupo Bimbo, S.A.B. de C.V."); - proveedor2.setEmail("contacto@bimbo.com"); - proveedor2.setTelefono("5555559876"); - proveedor2.setContactoPrincipal("María García"); - proveedor2.setDireccion("Prolongación Paseo de la Reforma 1000, Ciudad de México"); - proveedor2.setEstado(Proveedor.Estado.ACTIVO); - - try { - proveedorService.registrarProveedor(proveedor2); - System.out.println("Proveedor Bimbo creado"); - } catch (Exception e) { - System.err.println("Error creando proveedor Bimbo: " + e.getMessage()); - } - } - - if (proveedorService.buscarPorRfc("GHI456789123").isEmpty()) { - Proveedor proveedor3 = new Proveedor(); - proveedor3.setNombre("Nestlé México"); - proveedor3.setRfc("GHI456789123"); - proveedor3.setRazonSocial("Nestlé México, S.A. de C.V."); - proveedor3.setEmail("contacto@nestle.com.mx"); - proveedor3.setTelefono("5555557890"); - proveedor3.setContactoPrincipal("Carlos López"); - proveedor3.setDireccion("Ejército Nacional 453, Ciudad de México"); - proveedor3.setEstado(Proveedor.Estado.ACTIVO); - - try { - proveedorService.registrarProveedor(proveedor3); - System.out.println("Proveedor Nestlé México creado"); - } catch (Exception e) { - System.err.println("Error creando proveedor Nestlé: " + e.getMessage()); - } - } - - if (proveedorService.buscarPorRfc("JKL789123456").isEmpty()) { - Proveedor proveedor4 = new Proveedor(); - proveedor4.setNombre("Procter & Gamble"); - proveedor4.setRfc("JKL789123456"); - proveedor4.setRazonSocial("Procter & Gamble Manufacturing, S. de R.L. de C.V."); - proveedor4.setEmail("contacto@pg.com"); - proveedor4.setTelefono("5555554567"); - proveedor4.setContactoPrincipal("Ana Rodríguez"); - proveedor4.setDireccion("Santa Fe 505, Ciudad de México"); - proveedor4.setEstado(Proveedor.Estado.ACTIVO); - - try { - proveedorService.registrarProveedor(proveedor4); - System.out.println("Proveedor Procter & Gamble creado"); + System.out.println("✅ Usuario tienda creado: tienda001/password"); } catch (Exception e) { - System.err.println("Error creando proveedor P&G: " + e.getMessage()); + System.out.println("⚠️ Error al crear usuario tienda: " + e.getMessage()); } + } else { + System.out.println("✓ Usuario tienda ya existe"); } } } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 35ae007..a491622 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -1,23 +1,20 @@ # ========================================= -# CONFIGURACIÓN PARA DESARROLLO LOCAL CON H2 +# CONFIGURACIÓN PARA DESARROLLO LOCAL CON POSTGRESQL (SUPABASE) # ========================================= -# Configuración de H2 (base de datos en memoria para desarrollo) -spring.datasource.url=jdbc:h2:mem:mercadia_dev -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.username=sa -spring.datasource.password=password +# Configuración de PostgreSQL (Supabase) - Misma que en producción +# Se utilizan las mismas variables de entorno que en producción +spring.datasource.url=${DB_URL} +spring.datasource.driver-class-name=org.postgresql.Driver +spring.datasource.username=${DB_USERNAME} +spring.datasource.password=${DB_PASSWORD} -# Configuración de JPA/Hibernate para H2 -spring.jpa.hibernate.ddl-auto=create-drop +# Configuración de JPA/Hibernate para PostgreSQL +spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect spring.jpa.properties.hibernate.format_sql=true -# Habilitar consola H2 -spring.h2.console.enabled=true -spring.h2.console.path=/h2-console - # Inicializar datos de ejemplo en desarrollo app.initialize-data=true diff --git a/src/main/resources/application-h2.properties b/src/main/resources/application-h2.properties deleted file mode 100644 index 5a52c36..0000000 --- a/src/main/resources/application-h2.properties +++ /dev/null @@ -1,39 +0,0 @@ -# ========================================= -# CONFIGURACIÓN PARA DESARROLLO LOCAL CON H2 -# ========================================= - -# Base de datos H2 en memoria para desarrollo local -spring.datasource.url=jdbc:h2:mem:mercadia -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.username=sa -spring.datasource.password= -spring.h2.console.enabled=true -spring.h2.console.path=/h2-console - -# Configuración de JPA/Hibernate para H2 -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.show-sql=false -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect -spring.jpa.properties.hibernate.format_sql=true -spring.jpa.properties.hibernate.jdbc.time_zone=UTC - -# Configuración de Thymeleaf -spring.thymeleaf.cache=false -spring.thymeleaf.prefix=classpath:/templates/ -spring.thymeleaf.suffix=.html - -# Configuración del servidor -server.port=${SERVER_PORT:8080} -server.servlet.context-path=${SERVER_CONTEXT_PATH:/mercadia} - -# Configuración de logging -logging.level.com.merca.merca=DEBUG -logging.level.org.springframework.security=DEBUG -logging.level.org.hibernate.SQL=DEBUG - -# Configuración de sesiones -server.servlet.session.timeout=30m -server.servlet.session.cookie.name=MERCADIA_SESSION - -# Configuración de archivos estáticos -spring.web.resources.static-locations=classpath:/static/