Repository navigation
v0.3.0 – Extracción real de PDFs, Búsquedas y Recuperación por Email
Fecha: 2025-09-30
🎯 Objetivo
Agregar extracción real de contenido desde PDFs, endpoints de consulta/búsqueda de tablas, flujo de recuperación de contraseña por correo y refactor hacia repos/servicios y utilidades reutilizables.
📦 Cambios incluidos
-
🔍 Extracción real de PDFs
- Servicio
app/services/pdf_processing.pyconpdfplumber(texto y tablas). - Documentación de proceso:
docs/pdf_processing.md.
- Servicio
-
✨ Endpoints de tablas
GET /tables/{document_id}→ lista tablas extraídas del documento (control de acceso por rol/departamento).GET /tables/search?q=→ búsqueda en JSON de tablas (JSON_SEARCH) unida adocuments; respuesta diferenciada{ document, table }.
-
🔒 Recuperación de contraseña por email (SMTP)
POST /auth/forgot-password→ genera token (15 min) y envía enlace por correo.POST /auth/reset-password→ valida token y actualiza contraseña.- Config SMTP en
settings.py(Gmail/Office365), utilidadutils/email.pycon TLS/SSL fallback yEMAIL_DEBUG.
-
🔐 Seguridad y autorización
- Bloqueo de operador por 5 intentos fallidos (centralizado en
services/auth_service.pyyrepositories/user_repo.py). - Dependencias
require_adminy helpersensure_user_can_access_documentenutils/authz.py.
- Bloqueo de operador por 5 intentos fallidos (centralizado en
-
📦 Refactor repos/utilidades
- Repos:
document_repo.py,table_repo.py,department_repo.py,password_reset_repo.py. - Utilidades:
utils/files.py(rutas/escritura uploads),utils/query.py(WHERE/PAGINACIÓN). - Controllers
documents.pyytables.pyrefactorizados a usar repos/utilidades.
- Repos:
-
👥 Usuarios
GET /users/(solo admin) con parámetros opcionales; por defecto listarole='operador'.GET /users/me→ retorna datos del usuario desde el JWT.
-
⚙️ Configuración
frontend_base_urlpara construir enlaces de reset.- Carpeta
database/condb_schema.sql(migrado desdedocs/). - Script
scripts/generate_sample_pdf.pyy muestrasamples/sample_invoice.pdf.
✅ Estado actual
- Extracción y persistencia de texto/tablas desde PDFs funcionando.
- Búsqueda por contenido extraído disponible y separada de la búsqueda por documentos.
- Flujo completo de recuperación de contraseña por email (tokens de un solo uso, expirables).
- Control de acceso por rol/departamento centralizado y probado en endpoints de documentos/tablas.
- Repositorios y utilidades reducen duplicación y mejoran mantenibilidad.