From dfe185045d9658a4c01e1724cd24828112b8b99a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Elias=20Rios=20Nu=C3=B1ez?= Date: Mon, 1 Jun 2026 10:14:14 -0300 Subject: [PATCH] actualizacion de Readme --- README.md | 163 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 131 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index ec7b10b..1f79738 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,140 @@ -# sip_huellas +# S.I.P - Sistema de Identificación Papiloscópica -## Estructura del Proyecto (Inspirada en Laravel) -Flask no impone una estructura, pero podemos emular el patrón de Laravel utilizando Blueprints para modularizar la aplicación. +El **S.I.P** es una plataforma web pericial y criminalística diseñada para la gestión, catalogación y análisis de huellas dactilares, minucias y fichas de clasificación mono-dactilar basándose en los principios del Sistema Dactiloscópico Argentino (Vucetich). -''' +El ecosistema está completamente contenedorizado y utiliza una arquitectura desacoplada: un backend robusto en **Flask** que emula el patrón modular de Laravel, y una interfaz de usuario interactiva en **Vue 3**. + +--- + +## 🏗️ Estructura del Proyecto (Inspirada en Laravel) + +Flask no impone una estructura rígida, pero este desarrollo emula el patrón arquitectónico de Laravel utilizando *Blueprints* para modularizar el backend por dominios: + +```text sip_huellas/ -├── api/ # Backend Flask (Similar a la carpeta 'app' de Laravel) +├── api/ # Backend Flask (Equivalente a la carpeta 'app/' de Laravel) │ ├── app/ -│ │ ├── config.py # Configuración del entorno -│ │ ├── database.py # Inicialización de SQLAlchemy +│ │ ├── config.py # Configuración del entorno y variables del sistema +│ │ ├── database.py # Inicialización y abstracción de SQLAlchemy │ │ ├── models/ # Modelos del ORM (Eloquent Models) +│ │ │ ├── __init__.py # Indexador y exposición de metadatos para Alembic +│ │ │ ├── user.py # Entidades de usuarios, roles y permisos administrativos +│ │ │ └── biometria.py # Entidades forenses (Personas, Huellas, Minucias, Fichas) +│ │ ├── routes/ # Controladores y Endpoints de la API (Http/Controllers) │ │ │ ├── __init__.py -│ │ │ ├── user.py -│ │ │ ├── fingerprint.py -│ │ │ └── report.py -│ │ ├── routes/ # Controladores / Rutas (Http/Controllers) -│ │ │ ├── __init__.py -│ │ │ ├── auth.py -│ │ │ ├── fingerprints.py -│ │ │ └── reports.py -│ │ └── middlewares/ # Control de Roles y Permisos (Http/Middleware) -│ │ └── auth_middleware.py -│ ├── migrations/ # Migraciones de Base de Datos -│ ├── Dockerfile -│ ├── requirements.txt -│ └── run.py # Extremo de entrada de la API +│ │ │ ├── auth.py # Control de autenticación y emisión de JWT +│ │ │ ├── users.py # CRUD y gestión de investigadores +│ │ │ └── roles.py # Control de privilegios transaccionales +│ │ └── middlewares/ # Interceptores de control (Http/Middleware) +│ │ └── auth_middleware.py # Validación de firmas JWT y políticas de acceso +│ ├── migrations/ # Historial de Migraciones del ORM (Alembic) +│ ├── Dockerfile # Configuración de compilación para el entorno Python 3.11 +│ ├── requirements.txt # Dependencias de paquetes del ecosistema del Backend +│ └── run.py # Punto de entrada de la API y registro CLI (Fábrica) │ -├── frontend/ # Frontend VueJS +├── frontend/ # Frontend SPA (VueJS 3 + Vite) │ ├── src/ -│ │ ├── components/ -│ │ ├── views/ -│ │ ├── router/ -│ │ ├── App.vue -│ │ └── main.js -│ ├── Dockerfile -│ ├── package.json -│ └── vite.config.js +│ │ ├── components/ # Componentes UI reutilizables +│ │ ├── views/ # Vistas funcionales (Dashboard, Login, Crud, Huellas) +│ │ ├── router/ # Enrutador Web con Guards middleware integrados +│ │ ├── App.vue # Componente raíz de renderizado +│ │ └── main.js # Inicialización de Vue y plugins (BootstrapVue Next) +│ ├── Dockerfile # Configuración de compilación para entornos Node.js +│ ├── package.json # Scripts de Node y manifiesto de dependencias npm +│ └── vite.config.js # Configuración del empaquetador Vite (Puerto 8080) │ -└── docker-compose.yml # Orquestador de Servicios -''' +├── .env # Archivo de variables de entorno global +└── docker-compose.yml # Orquestador multi-contenedor (DB, API, FRONT) + + +🚀 Requisitos Previos +Para levantar el ecosistema completo, solo necesitás tener instalado en tu sistema local: + +Docker (Versión 20.10+ recomendada) + +Docker Compose V2 + +🛠️ Despliegue Rápido Automatizado +El proyecto incluye un script en Bash (desplegar.sh) que automatiza de forma inteligente todo el ciclo de vida inicial del entorno. Para desplegar el sistema desde cero, ejecutá en tu terminal: + +# Asignar permisos de ejecución al script por única vez +chmod +x desplegar.sh + +# Ejecutar el despliegue automático +./desplegar.sh + +¿Qué hace este script exactamente? +Limpieza: Realiza un docker compose down eliminando contenedores huérfanos y liberando sockets bloqueados. + +Orquestación: Levanta la Base de Datos (PostgreSQL), la API Flask y el Frontend Vue 3 en segundo plano (-d). + +Migraciones: Inicializa el repositorio de base de datos (flask db init), detecta las entidades periciales de biometria.py y aplica las tablas físicas mediante flask db upgrade. + +Sembrado: Ejecuta de forma nativa el comando flask seed para inyectar de manera transaccional los roles, usuarios administradores, perfiles de personas y las coordenadas geométricas patrón de las huellas de prueba. + +🔒 Variables de Entorno (.env) +El ecosistema se configura mediante el archivo .env ubicado en la raíz del proyecto. Asegúrate de que sus valores estén alineados con tu infraestructura local: + +# --- ENTORNO GENERAL --- +PROJECT_NAME=huellas_investigacion +FLASK_ENV=development + +# --- BASE DE DATOS (POSTGRESQL) --- +POSTGRES_USER=admin +POSTGRES_PASSWORD=secretpassword_2026_x8 +POSTGRES_DB=huellas_investigacion +POSTGRES_PORT=5432 +POSTGRES_HOST=db + +# --- BACKEND (API FLASK) --- +FLASK_PORT=5000 +JWT_SECRET_KEY=laravel_style_jwt_secret_token_scientific_2026 + +# --- FRONTEND (VUE 3 + VITE) --- +VITE_PORT=8080 +VITE_API_BASE_URL=http://localhost:5000/api + +🖥️ Acceso al Sistema y Credenciales de Prueba +Una vez finalizado el script, podés ingresar a las distintas plataformas del ecosistema: + +Frontend Web: http://localhost:8080 (Pantalla de login con marca de agua biométrica integrada) + +Backend API REST: http://localhost:5000/api + +🔑 Credenciales del Investigador Raíz (Creadas por el Seeder) +Identificador de Usuario: admin_root + +Contraseña de Acceso: admin1234 + +🧪 Comandos Útiles de Mantenimiento +Si necesitás ejecutar tareas manuales de mantenimiento dentro del contenedor de la API, utilizá las siguientes instrucciones: + +# Reiniciar exclusivamente el servicio de la API (por cambios en Python) +docker compose restart api + +# Generar una nueva migración manual si modificás los modelos +docker exec -it -e FLASK_APP=run.py huellas_api flask db migrate -m "descripcion_del_cambio" + +# Impactar la migración generada en PostgreSQL +docker exec -it -e FLASK_APP=run.py huellas_api flask db upgrade + +# Forzar una nueva siembra de base de datos +docker exec -it -e FLASK_APP=run.py huellas_api flask seed + +# Ver registros de auditoría y logs de errores de Python en tiempo real +docker logs huellas_api --tail 50 -f + +# Reiniciar exclusivamente el servicio de la API (por cambios en Python) +docker compose restart api + +# Generar una nueva migración manual si modificás los modelos +docker exec -it -e FLASK_APP=run.py huellas_api flask db migrate -m "descripcion_del_cambio" + +# Impactar la migración generada en PostgreSQL +docker exec -it -e FLASK_APP=run.py huellas_api flask db upgrade + +# Forzar una nueva siembra de base de datos +docker exec -it -e FLASK_APP=run.py huellas_api flask seed + +# Ver registros de auditoría y logs de errores de Python en tiempo real +docker logs huellas_api --tail 50 -f \ No newline at end of file