feat: F3 — extracto de PDF en notificaciones y comando /pdf (pypdf, sin disco)
This commit is contained in:
@@ -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\\."
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user