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:
47
TECH_DEBT.md
Normal file
47
TECH_DEBT.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user