Bot de Telegram para monitoreo de notificaciones judiciales del PJ Paraguay. Multi-tenant con onboarding conversacional, audit log, y polling automático. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
127 lines
3.8 KiB
Markdown
127 lines
3.8 KiB
Markdown
# Prompt para Claude Code — Agregar comando /exp al bot
|
|
|
|
## Tarea
|
|
|
|
Agregar la feature "detalle de expediente por número" al bot de Telegram.
|
|
|
|
## Contexto
|
|
|
|
El reconocimiento del 22/05/2026 confirmó todos los endpoints necesarios.
|
|
Ver `csj_client_nuevos_metodos.py` en la raíz del proyecto — tiene el código
|
|
listo para integrar con documentación inline.
|
|
|
|
## Cambios requeridos
|
|
|
|
### 1. En `csj_client.py`
|
|
|
|
a) Agregar después de la clase `NotificacionPendiente`:
|
|
- Clase `CasoJudicial` (ver `csj_client_nuevos_metodos.py`)
|
|
- Clase `ActuacionCaso` (ver `csj_client_nuevos_metodos.py`)
|
|
|
|
b) Agregar dentro de la clase `CSJClient`:
|
|
- Método `buscar_expedientes()` (ver `csj_client_nuevos_metodos.py`)
|
|
- Método `listar_actuaciones()` (ver `csj_client_nuevos_metodos.py`)
|
|
|
|
c) El import de `httpx` ya existe. No agregar dependencias nuevas.
|
|
|
|
### 2. En `telegram_bot.py`
|
|
|
|
Agregar el comando `/exp` con este comportamiento:
|
|
|
|
```
|
|
/exp 198 → busca número 198 sin filtrar por año
|
|
/exp 198/2026 → busca número 198, año 2026
|
|
/exp carlos → busca por carátula (texto, no número)
|
|
```
|
|
|
|
**Mensaje de respuesta cuando encuentra un expediente:**
|
|
|
|
```
|
|
📂 Exp. {numero}/{anio}
|
|
{caratula}
|
|
{circunscripcion} | {estado}
|
|
|
|
Últimas actuaciones:
|
|
• {fecha} — {tipo}: {descripcion_actuacion}
|
|
• {fecha} — {tipo}: {descripcion_actuacion}
|
|
• {fecha} — {tipo}: {descripcion_actuacion}
|
|
|
|
({total} actuaciones en total)
|
|
```
|
|
|
|
Mostrar máximo 3 actuaciones más recientes (las primeras del response,
|
|
que ya vienen ordenadas por fecha descendente).
|
|
|
|
**Cuando encuentra múltiples expedientes** (búsqueda por carátula):
|
|
|
|
```
|
|
Se encontraron {N} expedientes para "{búsqueda}":
|
|
|
|
1. Exp. {numero}/{anio} — {caratula_truncada_50_chars}
|
|
{circunscripcion} | {estado}
|
|
|
|
2. ...
|
|
|
|
Para ver detalle: /exp {numero}/{anio}
|
|
```
|
|
|
|
Mostrar máximo 5 resultados. Si hay más, indicar cuántos hay en total.
|
|
|
|
**Cuando no encuentra nada:**
|
|
|
|
```
|
|
No encontré expedientes para "{búsqueda}".
|
|
Probá con la carátula o con número/año.
|
|
```
|
|
|
|
### 3. En `CLAUDE.md`
|
|
|
|
Agregar `/exp` a la lista de comandos de Telegram.
|
|
|
|
## Parsing del argumento del comando
|
|
|
|
```python
|
|
def parsear_argumento_exp(arg: str) -> dict:
|
|
"""
|
|
Parsea el argumento del comando /exp.
|
|
|
|
Retorna dict con claves posibles:
|
|
- numero (int): número de expediente
|
|
- anio (int): año del expediente
|
|
- caratula (str): texto para buscar por carátula
|
|
|
|
Ejemplos:
|
|
"198" → {"numero": 198}
|
|
"198/2026" → {"numero": 198, "anio": 2026}
|
|
"carlos" → {"caratula": "carlos"}
|
|
"198/26" → {"numero": 198, "anio": 2026} # año de 2 dígitos → 2000+anio
|
|
"""
|
|
```
|
|
|
|
## Notas importantes
|
|
|
|
- Usar `scrub()` de `utils/sanitize.py` en cualquier log que incluya
|
|
contenido de respuestas del PJ
|
|
- El comando solo responde al `TELEGRAM_CHAT_ID` autorizado (igual que el resto)
|
|
- Si `listar_actuaciones()` falla pero `buscar_expedientes()` tuvo éxito,
|
|
mostrar igual los datos del caso sin actuaciones (degradación elegante)
|
|
- `incluirNotificaciones=false` siempre (no mezclar con notificaciones)
|
|
- Truncar carátulas largas a 60 caracteres con "..." en listados
|
|
- Fechas en formato DD/MM/YYYY
|
|
|
|
## Qué NO hacer
|
|
|
|
- No agregar paginación interactiva (botones "siguiente página") en esta versión
|
|
- No agregar descarga de documentos en esta versión
|
|
- No cambiar nada del flujo de notificaciones existente
|
|
- No agregar dependencias nuevas
|
|
|
|
## Verificación
|
|
|
|
Después de implementar, verificar:
|
|
- [ ] `/exp 198` responde con el caso correcto
|
|
- [ ] `/exp 198/2026` responde con el caso correcto
|
|
- [ ] `/exp carlos` muestra lista de casos con "carlos" en carátula
|
|
- [ ] `/exp 999999/1900` responde "No encontré expedientes"
|
|
- [ ] Sin credenciales en logs (verificar con LOG_LEVEL=DEBUG)
|
|
- [ ] Agrega `/exp` a la lista de comandos en CLAUDE.md |