# S.I.P - Sistema de Identificación Papiloscópica 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 (Equivalente a la carpeta 'app/' de Laravel) │ ├── app/ │ │ ├── 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 │ │ │ ├── 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 SPA (VueJS 3 + Vite) │ ├── src/ │ │ ├── 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) │ ├── .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