# DISJHER Soluciones en servicio tecnico RICOH ClienteApp es una aplicación desarrollada en Java con Spring Boot que permite generar y administrar reportes de servicios técnicos para una empresa de impresión digital. El sistema genera PDFs de los mantenimientos realizados, integra el envío por correo electrónico y busca automatizar los reportes que antes se hacían manualmente. A futuro, se pretende ampliar su alcance para gestionar inventarios, control de repuestos y estadísticas sobre los servicios. # Tabla de Contenidos ___ * Características * Tecnologías * Requisitos * Instalación y Ejecución * Estructura del Proyecto * Uso de la Aplicación * Próximas Mejoras * Contribución * Licencia # Características * Generación de reportes en PDF: Usa iText7 para crear reportes detallados de servicios. - Envío de correos: Envía los PDFs de manera automática a los clientes. - Gestión de clientes y servicios: Guarda la información de cada cliente y los mantenimientos realizados. - Configuración flexible: Usa variables de entorno para credenciales de base de datos y propiedades de Spring Boot. - Escalable: Pensado para integrar funcionalidades como inventarios, estadísticas mensuales, paneles de control, etc. # Tecnologías **Lenguaje: Java 17** **Framework: Spring Boot 3.3.0** **Base de Datos: MySQL 8.0.33** **Generación de PDF: iText7** **ORM: Hibernate / JPA** **MapStruct: Para el mapeo de DTOs** **Spring Security: (Aún por definir la implementación específica)** **Maven: Para la construcción y gestión de dependencias** # Requisitos Java 17 instalado. Maven (3.6+ recomendado) instalado, si deseas compilar localmente. MySQL corriendo y con una base de datos creada (por defecto bddishjer). Opcional: Variables de entorno para la BD (si se desean usar en lugar de colocar credenciales directamente): SPRING_DATA_SOURCE_URL SPRING_DATA_SOURCE_USERNAME SPRING_DATA_SOURCE_PASSWORD # Instalación y Ejecución Clonar el repositorio: * bash * Copy * Edit * git clone https://github.com/Steeevenn/ProyectoDishjer.git * cd clienteapp # Configurar la base de datos Verifica en application.properties la URL, usuario y contraseña de tu base de datos. Asegúrate de tener creada la base de datos bddishjer (o la que desees). Opcionalmente, configura tus variables de entorno en tu sistema para mayor seguridad (en lugar de exponer tus credenciales en el archivo). Compilar y correr la aplicación: - bash - Copy - Edit ### Opción A: usando Maven localmente - mvn clean install - mvn spring-boot:run ### Opción B: usar el wrapper si está configurado - ./mvnw clean install - ./mvnw spring-boot:run - Verificar que se ejecute Por defecto, la app corre en http://localhost:8080/. Puedes hacer un GET a algún endpoint como http://localhost:8080/clientes o http://localhost:8080/dashboard para comprobar que está funcionando. # Estructura del Proyecto | Ruta | Descripción | |------|-------------| | clienteapp/ | Directorio raíz del proyecto | | ├─ .idea/ | Configuración de IntelliJ (ignorado en GitHub usualmente) | | ├─ .mvn/ | Maven wrapper | | ├─ src/ | Código fuente | | │ ├─ main/ | Código principal | | │ │ ├─ java/com/app/clienteapp/ | Paquete base de Java | | │ │ │ ├─ config/ | Clases de configuración (Seguridad, etc.) | | │ │ │ ├─ controller/ | Controladores REST | | │ │ │ ├─ dto/ | Objetos de transferencia de datos | | │ │ │ ├─ firmas/ | Carpeta específica para PDFs, firma digital, etc. | | │ │ │ ├─ model/ | Modelos de negocio (si no se usan Entities directas) | | │ │ │ ├─ persistence.entity/ | Entidades JPA | | │ │ │ ├─ repository/ | Repositorios (interfaces JPA) | | │ │ │ └─ service/ | Lógica de negocio | | │ │ └─ resources/ | Recursos de la aplicación | | │ │ ├─ application.properties | Configuración principal | | │ │ └─ banner.txt | Banner de Spring Boot al inicio | | │ └─ test/ | Pruebas unitarias e integración | | │ └─ ... | Archivos de prueba | | ├─ pom.xml | Dependencias y configuración de Maven | | ├─ .gitignore | Archivos ignorados por Git | | └─ README.md | Este archivo | # Generar reporte en PDF Endpoint (ejemplo): POST /api/reportes/generar Envía datos del servicio para generar un PDF y enviarlo por correo. # Gestión de clientes GET /api/clientes : listar todos los clientes POST /api/clientes : crear un nuevo cliente PUT /api/clientes/{id} : actualizar un cliente DELETE /api/clientes/{id} : eliminar un cliente # Gestión de servicios GET /api/servicios : listar servicios realizados POST /api/servicios : registrar un nuevo servicio PUT /api/servicios/{id} : actualizar datos de un servicio DELETE /api/servicios/{id} : eliminar un servicio Si tienes Swagger habilitado, podrías acceder a la documentación en: - bash - Copy - Edit http://localhost:8080/swagger-ui.html (añade la dependencia y configuración de springdoc-openapi-starter-webmvc-ui si lo deseas) # Próximas Mejoras Integrar inventario: Control de repuestos, stock, alertas de bajo inventario, etc. Estadísticas: Cantidad de servicios por mes, tiempos de respuesta, horas totales dedicadas por técnico, etc. Exportar a Excel: Generar reportes de servicios en formato XLSX, CSV, etc. Autenticación y roles: Ampliar la configuración de Spring Security para tener usuarios y roles (admin, técnico, cliente). Despliegue en la nube: Usar Docker + contenedores en AWS, Azure o similar. # Contribución ¡Las contribuciones son bienvenidas! Para contribuir: Haz un fork del proyecto Crea una rama de característica (git checkout -b feature/nueva-funcionalidad) Haz commit de tus cambios (git commit -m 'Agrega nueva funcionalidad') Haz push de la rama (git push origin feature/nueva-funcionalidad) Crea un Pull Request explicando los cambios # Licencia Este proyecto se distribuye privadamente por lo que requeriras de autorizacion para su distribucion y/o comercializacion ### ¡Gracias por usar ClienteApp! Si te resulta útil o quieres proponer mejoras, no dudes en abrir un issue o un pull request. ***“Automatizar los reportes manuales es solo el primer paso: la verdadera innovación surge cuando cada servicio se convierte en un insumo para la mejora continua.”***