Files
hechakuaa_bot/TECH_DEBT.md
markosbenitez 7743919695 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>
2026-05-25 10:58:32 -03:00

2.1 KiB

TECH_DEBT.md — Deuda técnica

Deuda técnica conocida y aceptada en v0. Cada ítem se migra en v1 salvo indicación contraria.


Alta prioridad (migrar antes de agregar más usuarios)

TD-001: Fernet single-key en lugar de envelope encryption

Descripción: Las credenciales usan Fernet con una sola clave maestra en .env. En v1 se reemplaza por envelope encryption (DEK por tenant + MK separada). Impacto: Si la FERNET_KEY se compromete, todas las credenciales son vulnerables. Mitigation actual: El .env nunca va al repo; la key no está en el código. Destino: app/vault/ en v1 (ver docs/ARCHITECTURE.md §6).

TD-002: Snapshot en JSON local sin concurrencia

Descripción: storage.py lee/escribe un JSON sin locks. Con un solo proceso no hay problema. Impacto: Cero en v0 (single process). Race condition posible en v1 (multi-worker). Destino: Reemplazar por Postgres con transacciones en v1.

TD-003: Sin refresh token implementado

Descripción: Cuando el bearer token expira (TTL 1h), el cliente hace relogin completo. El endpoint de refresh token no fue capturado en el reconocimiento. Impacto: Relogin extra cada hora (costo ~0 ya que no hay captcha). Destino: Capturar el endpoint en sesión 2 de reconocimiento e implementar.


Baja prioridad (mejoras futuras)

TD-004: aiogram en lugar de python-telegram-bot

Descripción: aiogram tiene FSM nativo más robusto y mejor async que python-telegram-bot. Impacto: Cero en v0 (no usamos FSM complejo). Relevante cuando el bot tenga flujos multi-paso. Decisión: Evaluar al inicio de v1. No migrar en v0.

TD-005: structlog sin filtro global de credenciales

Descripción: scrub() existe pero se llama manualmente en cada log. Sería más seguro registrarlo como processor global de structlog. Destino: En v1, registrar como processor en la configuración de structlog.

TD-006: Sin tests de integración reales

Descripción: Los tests unitarios usan mocks. No hay tests que peguen al PJ real. Decisión aceptada: Tests contra el PJ real son @pytest.mark.manual por diseño.


Última actualización: 2026-05-20