Descripción: Se ha realizado una refactorización mayor del sistema de notificaciones y generación de comprobantes para eliminar dependencias legacy (Imagick/FTP) y modernizar la arquitectura. 🚀 Nuevas Características (Features) Microservicio PDF (pdf-cropper): Nuevo servicio en Python (FastAPI + Poppler) desplegado en Docker (Puerto 8050) para la conversión de PDF a Imagen. Reemplaza la librería Imagick de PHP, aislando el procesamiento pesado fuera del plugin. Modo Full: Garantiza la conversión del PDF completo respetando su relación de aspecto original (sin recortes ni "square crop"). Overlay de Texto: Capacidad nativa en el backend para sobreescribir texto dinámicamente (ej. cambiar "Tarjeta de crédito Stripe" por "OXXO Pay") basado en parámetros. Integración S3 / MinIO: Implementación de MinioStorageService . Los comprobantes (JPG) y Vouchers OXXO se suben automáticamente a MinIO en lugar de usar FTP. Generación de URLs públicas seguras. 🧹 Mantenimiento y Limpieza (Chores/Refactor) Limpieza Automática (Cleanup): Se implementó lógica para eliminar archivos temporales locales (PDFs descargados, JPGs generados) inmediatamente después de una subida exitosa a MinIO. Aplica tanto para comprobantes de pago como para Vouchers OXXO. Refactor ClientCallBellAPI : Eliminación de código muerto relacionado con FTP de WordPress. Implementación de cliente HTTP Guzzle para comunicación con pdf-cropper. Cache Busting: Se añade Timestamp al nombre de archivo (_time()) para evitar caché agresivo en WhatsApp/Navegadores. Detección de Método: Lógica preliminar para detectar "OXXO" o "Transferencia" en notas de pago y aplicar Overlay. Docker Infraestructura: Actualización de docker-compose.yml para incluir pdf-cropper. Instalación de fuentes (fonts-dejavu-core) para renderizado correcto de texto. 🐛 Correcciones (Bug Fixes) Fix Recorte de Imagen: Se eliminó la restricción de relación de aspecto 1:1 (cuadrado) que cortaba headers y footers en documentos rectangulares. Standardización de Notas: Actualización de AbstractStripeOperationsFacade para incluir explícitamente "OXXO" o "Transferencia" en las notas de pago de UCRM (preparación para lógica de plantillas).
47 lines
1.4 KiB
Python
Executable File
47 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import os
|
|
from pathlib import Path
|
|
import re
|
|
from subprocess import list2cmdline, run
|
|
from tempfile import NamedTemporaryFile
|
|
|
|
CLANG_FORMAT_VERSION = '18.1.6'
|
|
|
|
INCLUDE_REGEX = re.compile(r'^ext/.*\.(c|h|inl)$')
|
|
EXCLUDE_REGEX = re.compile(r'^$')
|
|
|
|
arg_parser = argparse.ArgumentParser(description="Check with clang-format")
|
|
arg_parser.add_argument('-i', '--inplace-edit', action='store_true',
|
|
help="Edit files inplace")
|
|
args = arg_parser.parse_args()
|
|
|
|
os.chdir(Path(__file__).parent)
|
|
|
|
# create file containing list of all files to format
|
|
filepaths_file = NamedTemporaryFile(delete=False)
|
|
for dirpath, dirnames, filenames in os.walk('.'):
|
|
for filename in filenames:
|
|
# our regexes expect filepath to use forward slash
|
|
filepath = Path(dirpath, filename).as_posix()
|
|
if not INCLUDE_REGEX.match(filepath):
|
|
continue
|
|
if EXCLUDE_REGEX.match(filepath):
|
|
continue
|
|
|
|
filepaths_file.write(f"{filepath}\n".encode())
|
|
filepaths_file.close()
|
|
|
|
# use pipx to run clang-format from PyPI
|
|
# this is a simple way to run the same clang-format version regardless of OS
|
|
cmd = ['pipx', 'run', f'clang-format=={CLANG_FORMAT_VERSION}',
|
|
f'--files={filepaths_file.name}']
|
|
if args.inplace_edit:
|
|
cmd += ['-i']
|
|
else:
|
|
cmd += ['--Werror', '--dry-run']
|
|
|
|
print(f"{Path.cwd()}$ {list2cmdline(cmd)}")
|
|
if run(cmd).returncode:
|
|
exit(1)
|