Initial commit — Pedrito Hechakuaa v0
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>
This commit is contained in:
123
README.md
Normal file
123
README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# Pedrito Hechakuaa
|
||||
|
||||
Monitor de notificaciones del Poder Judicial de Paraguay vía Telegram.
|
||||
|
||||
Te avisa cuando aparecen notificaciones nuevas en tu cuenta del sistema del PJ.
|
||||
|
||||
## Setup en 5 pasos
|
||||
|
||||
### 1. Prerequisitos
|
||||
|
||||
- Python 3.12+
|
||||
- Una cuenta en Telegram
|
||||
- Un bot de Telegram creado con [@BotFather](https://t.me/BotFather)
|
||||
- Tu chat_id de Telegram (obtenerlo con [@userinfobot](https://t.me/userinfobot))
|
||||
- Credenciales del sistema del PJ (`apps.csj.gov.py`)
|
||||
|
||||
### 2. Instalar
|
||||
|
||||
```bash
|
||||
# Entrar a la carpeta del proyecto
|
||||
cd pedrito-hechakuaa
|
||||
|
||||
# Instalar dependencias (recomendado: uv)
|
||||
pip install uv
|
||||
uv sync
|
||||
```
|
||||
|
||||
### 3. Configurar
|
||||
|
||||
```bash
|
||||
# Copiar el template
|
||||
cp .env.example .env
|
||||
|
||||
# Generar una clave de cifrado (guardarla en un lugar seguro también)
|
||||
uv run python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
||||
# Copiar el resultado en FERNET_KEY= dentro de .env
|
||||
|
||||
# Editar .env y completar:
|
||||
# - FERNET_KEY (la que generaste arriba)
|
||||
# - TELEGRAM_BOT_TOKEN (de @BotFather)
|
||||
# - TELEGRAM_CHAT_ID (de @userinfobot)
|
||||
```
|
||||
|
||||
### 4. Cifrar las credenciales del PJ
|
||||
|
||||
```bash
|
||||
uv run python scripts/cifrar_credenciales.py
|
||||
```
|
||||
|
||||
Te va a pedir la cédula y contraseña del PJ, las cifra con Fernet, y actualiza
|
||||
`PJ_USUARIO_ENC` y `PJ_PASSWORD_ENC` en tu `.env`. Nunca escribe las
|
||||
credenciales en plano.
|
||||
|
||||
### 5. Arrancar
|
||||
|
||||
```bash
|
||||
uv run python main.py
|
||||
```
|
||||
|
||||
El bot va a:
|
||||
1. Conectarse al PJ y revisar tus notificaciones actuales
|
||||
2. Mandarte un mensaje en Telegram con el estado inicial
|
||||
3. Revisar cada hora en horario hábil (lunes-viernes, 7-18h)
|
||||
4. Avisarte en Telegram cuando aparezca algo nuevo
|
||||
|
||||
## Comandos de Telegram
|
||||
|
||||
| Comando | Función |
|
||||
|---------|---------|
|
||||
| `/start` | Ver estado del bot |
|
||||
| `/notif` | Revisar notificaciones ahora (no esperar la próxima hora) |
|
||||
| `/estado` | Ver último chequeo y estadísticas |
|
||||
| `/ayuda` | Lista de comandos |
|
||||
|
||||
## Correr como servicio (opcional)
|
||||
|
||||
Si querés que corra en background en tu Mac o en un servidor:
|
||||
|
||||
**Con screen (más simple):**
|
||||
```bash
|
||||
screen -S pedrito
|
||||
python main.py
|
||||
# Ctrl+A, D para detach
|
||||
# screen -r pedrito para volver
|
||||
```
|
||||
|
||||
**Con systemd en Linux:**
|
||||
```ini
|
||||
# /etc/systemd/system/pedrito.service
|
||||
[Unit]
|
||||
Description=Pedrito Hechakuaa - monitor judicial
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/ruta/al/pedrito-hechakuaa
|
||||
ExecStart=/usr/bin/python3 main.py
|
||||
Restart=on-failure
|
||||
RestartSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl enable pedrito
|
||||
sudo systemctl start pedrito
|
||||
```
|
||||
|
||||
## Seguridad
|
||||
|
||||
- Las credenciales del PJ se cifran con Fernet (AES-128-CBC con HMAC)
|
||||
- `.env` nunca se commitea (está en `.gitignore`)
|
||||
- El bot solo responde al `TELEGRAM_CHAT_ID` que configuraste
|
||||
- El bot es read-only: nunca acusa notificaciones ni tiene efectos procesales
|
||||
|
||||
## Migración a v1
|
||||
|
||||
Cuando estés listo para la arquitectura completa (multi-tenant, LLM conversacional,
|
||||
web de onboarding), ver el directorio `../pedrito-hechakuaa/` con el diseño completo.
|
||||
|
||||
La v0 está pensada para migrar incrementalmente: cada módulo tiene el mismo
|
||||
contrato que su equivalente en v1.
|
||||
Reference in New Issue
Block a user