feat: F3 — extracto de PDF en notificaciones y comando /pdf (pypdf, sin disco)

This commit is contained in:
markosbenitez
2026-05-30 01:13:31 -03:00
parent 64cfc4d1b7
commit 61a15c5c50
5 changed files with 113 additions and 3 deletions

View File

@@ -39,6 +39,7 @@ from csj_client import (
)
from database import get_tenant
from onboarding import OnboardingFlow
from pdf_extractor import extraer_extracto
from storage import Snapshot
if TYPE_CHECKING:
@@ -647,6 +648,13 @@ class PedritoBot:
filename=filename,
caption=caption,
)
extracto = extraer_extracto(pdf_bytes)
if extracto:
await update.effective_message.reply_text( # type: ignore[union-attr]
f"📄 *Contenido del documento:*\n{_escape_md(extracto)}\n\n"
"⚠️ _Verificá el original antes de actuar\\._",
parse_mode=ParseMode.MARKDOWN_V2,
)
await audit.log("bot_pdf_enviado", chat_id=chat_id, detalle={"cod_caso": caso.cod_caso_judicial, "cod_actuacion": actuacion.cod_actuacion_caso}, tenant=tenant)
# ──────────────────────────────────────────────────────────────────────────
@@ -782,13 +790,25 @@ class PedritoBot:
document=pdf_bytes,
filename=f"Actuacion_{cod_caso}_{cod_actuacion}.pdf",
)
extracto = extraer_extracto(pdf_bytes)
if extracto:
await query.message.reply_text( # type: ignore[union-attr]
f"📄 *Contenido del documento:*\n{_escape_md(extracto)}\n\n"
"⚠️ _Verificá el original antes de actuar\\._",
parse_mode=ParseMode.MARKDOWN_V2,
)
await audit.log("bot_pdf_enviado", chat_id=chat_id, detalle={"cod_caso": int(cod_caso), "cod_actuacion": int(cod_actuacion)}, tenant=await get_tenant(chat_id))
# ──────────────────────────────────────────────────────────────────────────
# Mensajes proactivos (llamados desde el poller)
# ──────────────────────────────────────────────────────────────────────────
async def enviar_notificacion(self, notif: NotificacionPendiente, tenant: dict) -> None:
async def enviar_notificacion(
self,
notif: NotificacionPendiente,
tenant: dict,
extracto: str | None = None,
) -> None:
"""Envía una notificación nueva al tenant específico, con su tono."""
assert self._app is not None
chat_id: int = tenant["chat_id"]
@@ -804,13 +824,22 @@ class PedritoBot:
nombre=nombre, exp=notif.expediente_str
)
extracto_bloque = ""
if extracto:
extracto_bloque = (
f"\n\n📄 *Extracto del documento:*\n"
f"{_escape_md(extracto)}\n\n"
f"⚠️ _Este es el texto crudo del documento\\. Verificá el original antes de actuar\\._"
)
texto = (
f"{_escape_md(intro)}\n\n"
f"📋 *Nueva notificación judicial*\n\n"
f"{_escape_md(caratula)}\n"
f"Exp\\. {_escape_md(notif.expediente_str)} \\{_escape_md(juzgado)}\n\n"
f"Tipo: {_escape_md(tipo)}\n"
f"Fecha: {_escape_md(fecha)}\n\n"
f"Fecha: {_escape_md(fecha)}"
f"{extracto_bloque}\n\n"
f"⚠️ Para acusar esta notificación entrá directamente en el sistema del PJ\\."
)