140 lines
6.8 KiB
Markdown
140 lines
6.8 KiB
Markdown
# 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 |