ProyectoDishjer / README.md
README.md
Raw

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:

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.”