Files
descarga_factura_transporte/CHANGELOG.md
T
GeorgeandClaude Sonnet 5.5 ca1550bced versión 1.2.0: despliegue como servicio de Windows con NSSM
- deploy/: scripts de PowerShell para instalar el servicio (cuenta de servicio
  con acceso a la ruta de red, reinicio automático, parada con Ctrl+C,
  rotación de la salida, PYTHONUTF8), actualizar a una versión etiquetada o
  volver a una anterior, y desinstalar.
- docs/despliegue_windows.md: requisitos, instalación, operación, rollback y
  problemas frecuentes.
- tools/verificar_conexiones.py: comprueba .env, Graph, SAP, HANA y la ruta de
  red sin modificar nada.
- CHANGELOG.md, README e inventario; pyproject.toml pasa a 1.2.0.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 12:08:38 -05:00

3.9 KiB
Raw Blame History

Historial de cambios

Las versiones siguen SemVer y se publican como etiquetas de git (v1.2.0). La versión vigente está en pyproject.toml y se muestra en el log al arrancar.

[1.2.0] — 2026-10-22

Agregado

  • Respuesta al proveedor con las plantillas HTML de aceptado y rechazado (plantilla/), enviada a quien envió el correo. Ver docs/respuesta_proveedor.md.
    • NOTIFICACION_MODO: prueba (por defecto; la respuesta va al equipo, no al proveedor) o real (al remitente, con copia oculta al equipo).
    • Protecciones: no responde a remitentes desconocidos o sin dominio válido, al propio buzón, a no-reply, a mensajes automáticos ni rebotes, a respuestas de nuestras notificaciones, y limita a 3 respuestas por remitente cada 24 h en correos sin comprobante.
    • Rechazo con observaciones estructuradas (título, detalle, cómo corregir) también para correos sin comprobante válido.
  • Se valida si la factura ya existe en SAP (factura de compra no anulada o draft) antes de crear el draft; si existe, no se duplica y se responde que ya está registrada.
  • Servicio fuera de línea: si SAP Service Layer o HANA no responden, se avisa una vez al proveedor ("en cola, no necesita reenviar") y el correo se reintenta en los ciclos siguientes, hasta 24 veces. Plantilla plantilla-fuera-de-linea.html.
  • Código de seguimiento (ABR-AAMMDD-NNNNN) por comprobante, con su resultado y el estado de la notificación (seguimiento.py, tabla comprobantes).
  • Despliegue en Windows como servicio con NSSM (deploy/, docs/despliegue_windows.md).
  • Validación del .env al arrancar (config_validator.py), que además anuncia el modo de notificación.
  • Versión del proyecto en el log al arrancar y tools/verificar_conexiones.py (comprueba el .env, Microsoft Graph, SAP, HANA y la ruta de red sin modificar nada).
  • Suite de pruebas pytest (más de 280) y herramientas de vista previa y envío de prueba de las plantillas (tools/previsualizar_plantillas.py).
  • Documentación: README.md, guía de MSAL (docs/configurar_msal.md) y una página por módulo principal.

Cambiado

  • El correo técnico (tablas de SAP y JSON adjuntos) va solo al equipo; antes iba también al remitente.
  • Un error de SAP/HANA o un fallo inesperado ya no se le comunica al proveedor como rechazo y ya no interrumpe el ciclo: solo esa factura.
  • "Guía no encontrada" exige que HANA responda: si no, se trata como servicio fuera de línea.
  • DueDate de las cuotas del draft = fecha de vencimiento (antes, fecha de emisión).
  • Horarios sin huecos: se agregan 21:30–24:00 (cada 60 min) y 05:00–06:30 (cada 30 min); antes el demonio dormía hasta las 06:30 en esos tramos.
  • La base emails.db y la carpeta de resultados se resuelven junto al código, no relativas al directorio de trabajo.
  • copiar_a_red ya no crea carpetas locales cuando RUTA_RED_FACTURACION no es una ruta absoluta en el sistema operativo (una ruta UNC fuera de Windows); antes el draft podía referenciar archivos que no estaban en el recurso compartido.
  • pipeline.py se divide en módulos (adjuntos, documentos, persistencia, draft_sap, notificaciones).
  • Los print de los módulos pasan a logging con nivel explícito (LOG_LEVEL filtra por severidad).
  • pyproject.toml y requirements.txt alineados, con las dependencias directas fijadas.
  • consulta_rapida.py y los scripts manuales pasan a tools/; los correos de ejemplo, a tests/fixtures/.

Eliminado

  • tools/documento.json (token de ngrok sin uso). El token sigue en el historial de git: revóquelo.

Seguridad

  • Pendiente de rotar: la contraseña de SAP y el token de ngrok, presentes en el historial de git (tools/aberio.http, tools/documento.json).

[1.1.0]

Versión anterior a este registro: descarga de adjuntos, extracción de XML y PDF, validación de precios contra SAP B1, creación del draft y notificación por correo.