udistrital / argo_documentacion

0 stars 0 forks source link

Investigación generación de minuta desde la plantilla #57

Closed edwargl7 closed 4 months ago

edwargl7 commented 4 months ago

Se requiere realizar la investigación para generar el documento de la minuta, actualmente se genera desde el HTML y CSS almacenado en la tabla plantilla_minuta de ARGO. Se requiere realizar la investigación para replicar el funcionamiento basandolo en HTML y CSS para permitir un manejo similar desde el equipo de funcionamiento. Esta tarea se generó desde la Issue #55.

Material de apoyo

Sub Tareas

Criterios de aceptación

Requerimientos

No aplica

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

Lau2ri commented 4 months ago

Se comenzó con la revisión y el análisis del material de apoyo dado.

Lau2ri commented 4 months ago

Análisis previo:

Del Script de generación de la minuta para gestión contractual documentoPdfContratoPrestacionServicios1 se analizó lo siguiente:

  1. Define una clase EnLetras para convertir números a su representación en letras.

  2. Define una clase RegistradorOrden que maneja la lógica principal:

    • Realiza múltiples consultas a bases de datos para obtener información del contrato, contratista, ordenador, supervisor, etc.
    • Formatea la información obtenida.
    • Carga una plantilla de contrato basada en el tipo de contrato y la fecha.
    • Reemplaza marcadores en la plantilla con la información recopilada.
  3. Crea una instancia de RegistradorOrden y llama al método documento() para generar el contenido del PDF.

  4. Utiliza la biblioteca mPDF para generar el PDF:

    • Establece el tamaño de página, márgenes, fuente, etc.
    • Añade encabezados y pies de página.
    • Escribe el contenido HTML generado en el PDF.
    • Genera el archivo PDF para descargar.
Lau2ri commented 4 months ago

Propuestas generación de PDF a partir del HTML y CSS

1. WeasyPrint:

WeasyPrint es una biblioteca de Python para convertir HTML y CSS a PDF.

Funcionamiento:

Pros:

Contras:

2. mPDF:

Funcionamiento:

Pros:

Contras:

3. Puppeteer

Puppeteer es una biblioteca de Node.js desarrollada por Google que proporciona una API de alto nivel para controlar Chrome o Chromium.

Funcionamiento:

Pros:

Contras:

4. PDFKit:

PDFKit es una biblioteca de generación de PDF para Node.js. Aunque no está diseñada específicamente para convertir HTML a PDF, se puede usar en combinación con otras librerías para lograr este objetivo.

Funcionamiento:

Pros:

Contras:

edwargl7 commented 4 months ago

Se realiza una primera propuesta de microservicios para el manejo de este módulo de plantillas. Conformado por:

Se realiza la consulta de las tecnologías usadas por otros sistemas para la generación de PDF y se obtine que:

Lau2ri commented 4 months ago

Propuesta de diagrama de microservicios dónde se evidencian los tres microservicios dados además del manejo de clausulas y parágrafos:

Minuta_argo_v2-Microservicios drawio (1)

Además, dada la experiencia obtenida de los otros sistemas con el uso de gofpdf se propone esta tecnología como primera opción para la futura generación de minutas en Argo, quedarían pendientes las pruebas de concepto de dicha tecnología para confirmar su funcionalidad y rendimiento con nuestro caso particular.

edwargl7 commented 4 months ago

Se requieren ajustes en el diagrama de microservicios dado que el microservicio que recopila la información es quien consume los servicios que almacenan la información y la plantilla y envía estos al microservicio que realiza el renderizado. Se continuará con la revisión de las opciones y la prueba de concepto. Buen trabajo.