From e79aa1f212373325972b652bd0926bebab1b3122 Mon Sep 17 00:00:00 2001 From: gitea Date: Thu, 27 Nov 2025 17:29:02 -0300 Subject: [PATCH] =?UTF-8?q?Backend=20actualizado=20a=20v1.0.78=20=E2=9C=85?= =?UTF-8?q?=20Cambios=20aplicados:=20=F0=9F=93=8F=20Nuevos=20tama=C3=B1os?= =?UTF-8?q?=20de=20letra:=20Preguntas:=2011pt=20en=20negrita=20(m=C3=A1s?= =?UTF-8?q?=20grandes=20y=20destacadas)=20Respuestas:=2010pt=20(tama=C3=B1?= =?UTF-8?q?o=20medio=20legible)=20Comentarios:=209pt=20con=20indentaci?= =?UTF-8?q?=C3=B3n=20(diferenciados=20visualmente)=20=F0=9F=A4=96=20Format?= =?UTF-8?q?o=20mejorado=20de=20comentarios=20IA:=20=E2=9C=85=20Removido=20?= =?UTF-8?q?prefijo=20"An=C3=A1lisis=20IA=20(98%=20confianza):=20"=20?= =?UTF-8?q?=E2=9C=85=20Salto=20de=20l=C3=ADnea=20doble=20antes=20de=20"Rec?= =?UTF-8?q?omendaciones:"=20=E2=9C=85=20"Recomendaciones:"=20ahora=20en=20?= =?UTF-8?q?negrita=20=E2=9C=85=20Indentaci=C3=B3n=20de=2010mm=20en=20comen?= =?UTF-8?q?tarios=20para=20mejor=20jerarqu=C3=ADa=20visual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/main.py | 54 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/backend/app/main.py b/backend/app/main.py index 7d25d55..fd5cbd4 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -204,7 +204,7 @@ def send_completed_inspection_to_n8n(inspection, db): # No lanzamos excepción para no interrumpir el flujo normal -BACKEND_VERSION = "1.0.77" +BACKEND_VERSION = "1.0.78" app = FastAPI(title="Checklist Inteligente API", version=BACKEND_VERSION) # S3/MinIO configuration @@ -1369,6 +1369,34 @@ def generate_inspection_pdf(inspection_id: int, db: Session) -> str: textColor=colors.HexColor('#64748b') ) + # Estilos mejorados para preguntas y respuestas + question_style = ParagraphStyle( + 'QuestionStyle', + parent=styles['Normal'], + fontSize=11, + textColor=colors.HexColor('#1f2937'), + spaceAfter=3, + fontName='Helvetica-Bold' + ) + + answer_style = ParagraphStyle( + 'AnswerStyle', + parent=styles['Normal'], + fontSize=10, + textColor=colors.HexColor('#374151'), + spaceAfter=4 + ) + + comment_style = ParagraphStyle( + 'CommentStyle', + parent=styles['Normal'], + fontSize=9, + textColor=colors.HexColor('#6b7280'), + spaceAfter=6, + leftIndent=10, + rightIndent=10 + ) + # Obtener datos mechanic = db.query(models.User).filter(models.User.id == inspection.mechanic_id).first() checklist = db.query(models.Checklist).filter(models.Checklist.id == inspection.checklist_id).first() @@ -1618,9 +1646,9 @@ def generate_inspection_pdf(inspection_id: int, db: Session) -> str: # Tabla de pregunta/respuesta question_data = [] - # Fila 1: Pregunta + # Fila 1: Pregunta con estilo mejorado question_data.append([ - Paragraph(f"{status_icon} {question.text}", info_style), + Paragraph(f"{status_icon} {question.text}", question_style), ]) # Fila 2: Respuesta y estado - Convertir valor técnico a etiqueta legible @@ -1628,16 +1656,28 @@ def generate_inspection_pdf(inspection_id: int, db: Session) -> str: question_data.append([ Table([ [ - Paragraph(f"Respuesta: {answer_text}", small_style), - Paragraph(f"Estado: {ans.status.upper()}", ParagraphStyle('status', parent=small_style, textColor=status_color, fontName='Helvetica-Bold')) + Paragraph(f"Respuesta: {answer_text}", answer_style), + Paragraph(f"Estado: {ans.status.upper()}", ParagraphStyle('status', parent=answer_style, textColor=status_color, fontName='Helvetica-Bold')) ] ], colWidths=[120*mm, 50*mm]) ]) - # Fila 3: Comentario (si existe) + # Fila 3: Comentario mejorado (si existe) if ans.comment: + comment_text = ans.comment + + # Limpiar prefijo de IA si existe + if "Análisis IA (" in comment_text and "): " in comment_text: + # Remover "Análisis IA (98% confianza): " + comment_text = comment_text.split("): ", 1)[1] if "): " in comment_text else comment_text + + # Separar análisis y recomendaciones con salto de línea + if "Recomendaciones:" in comment_text or "Recomendación:" in comment_text: + comment_text = comment_text.replace("Recomendaciones:", "

Recomendaciones:") + comment_text = comment_text.replace("Recomendación:", "

Recomendación:") + question_data.append([ - Paragraph(f"Comentario: {ans.comment}", small_style) + Paragraph(f"Comentario: {comment_text}", comment_style) ]) # Fila 4: Imágenes (si existen)