5.6 KiB
🚩 SAEJB - Sistema de Gestión Militar
____ ___ _____ _____ ____
/ ___| / _ \| ____|/ _ \___ \
| | | | | | _| | | | |__) |
| |___ | |_| | |___| |_| / __/
\____| \___/|_____\___/_____|
Sistema SAEJB - Inventario, Armamento y Personal
Pequeña guía del proyecto y cómo ponerlo en marcha.
Descripción
SAEJB es una aplicación Django diseñada para gestionar brigadas, batallones, personal, armas, municiones e inventario asociado. Incluye módulos para digitalización de documentos, abastecimiento y control de reparaciones/equipos.
Stack tecnológico
- Backend: Python 3.x, Django 5.0
- Base de datos: MySQL (configurada en
sistema/settings.py) y driversmysqlclient/PyMySQLdisponibles - Frontend: plantillas Django + AdminLTE (
django-adminlte3), SweetAlert2 (viapackage.json) - Bibliotecas relevantes (extraídas de
requirements.txt): Pillow, reportlab, wkhtmltopdf, xhtml2pdf, openpyxl, PyPDF
Modelos de datos (resumen)
Los modelos principales se encuentran en seajb/models.py. Resumen de las entidades y campos clave:
-
Brigada
- code (unique), nombreB, ubicacionB, comandante, telefono, correo, fecha
-
Batallones
- nombreB, ubicacionB, comandante, telefono, correo, fecha, primero (FK -> Brigada)
-
Armas
- categoria, tipoA, modeloA, calibreA, serialA, serialAG, fechaAG, opAM, cantidadA, cantidadC, ac (accesorios), armaS, calibreS, serialS, cantidadS, segundo (FK -> Batallones)
-
Municiones
- tipoM, serialAG, fechaAG, cantidadM, lote, tercero (FK -> Batallones)
-
Personas (personal)
- code (unique), categoria, grado, promocion, anio, unidad, datos (nombres), cedula, armaA, cargadores, municiones, serialA, serialAG, fechaAG, direccion, telefono, correo, img
-
ArmasDePersonas
- armas, modelo, serial, serialag, fechag, cargadores, municiones, persona (FK -> Personas)
-
BrigadaDigital / UnidadDigital
- tablas para digitalización de documentos con campos de nombre, descripción, imagen y relaciones
-
Producto, Abastecimiento, ProductoAbastecimiento
- inventario de productos con códigos únicos, cantidad, precio y movimientos entre puntos de abastecimiento
-
Cemanblin, Cemantar, Cemansac
- registros de reparaciones/equipos con código único, unidad, equipo, fechas y firmas
Para ver todos los campos y validaciones revisa seajb/models.py.
Requisitos previos
- Python 3.10+ (compatible con Django 5)
- MySQL (o ajustar a Postgres si se prefiere)
- pip
- Node/npm si se van a gestionar dependencias frontend (opcional)
Dependencias del proyecto en requirements.txt.
Uso del sistema (resumen)
-
Crear y activar un entorno virtual:
python -m venv .venv ..venv\Scripts\Activate.ps1
-
Instalar dependencias:
pip install -r requirements.txt
-
Configurar la base de datos en
sistema/settings.py(USER, PASSWORD, HOST, NAME) -
Migraciones y usuario admin:
python manage.py migrate python manage.py createsuperuser
-
Ejecutar servidor en desarrollo:
python manage.py runserver
-
Acceder a la administración:
http://127.0.0.1:8000/admin
Nota: si usa imágenes, asegúrese de que MEDIA_ROOT está accesible y MEDIA_URL configurado (ya está en sistema/settings.py).
Módulos del sistema
- Gestión de Brigadas y Batallones (
Brigada,Batallones) - Gestión de Armas y Municiones (
Armas,Municiones) - Gestión de Personal y sus armas (
Personas,ArmasDePersonas) - Inventario y abastecimiento (
Producto,Abastecimiento,ProductoAbastecimiento) - Digitalización de documentos (
BrigadaDigital,UnidadDigital) - Control de reparaciones/equipos (
Cemanblin,Cemantar,Cemansac) - Reportes/PDFs:
reportlab,wkhtmltopdf,xhtml2pdf
Seguridad
- Actualmente
DEBUG = TrueyALLOWED_HOSTS = ['*']ensistema/settings.py. Cambiar antes de producción. - Mantener
SECRET_KEYfuera del repositorio (usar variables de entorno o vault). - Habilitar HTTPS en despliegue y configurar cabeceras de seguridad (HSTS, X-Frame-Options ya activado por middleware).
- Revisar control de acceso en vistas y usar permisos de Django para recursos sensibles.
- Asegurarse de la protección CSRF (Django la incluye por defecto) y de la correcta gestión de archivos subidos.
Instalación y configuración detallada
-
Clonar el repositorio y situarse en la carpeta raíz (donde está
manage.py). -
Crear entorno virtual y activarlo (Windows PowerShell):
python -m venv .venv .\.venv\Scripts\Activate.ps1
-
Instalar dependencias:
pip install -r requirements.txt
-
Configurar base de datos en
sistema/settings.pyo preferiblemente usar variables de entorno:DATABASES['default']['NAME'] = 'saejb' DATABASES['default']['USER'] = '<tu_usuario>' DATABASES['default']['PASSWORD'] = '<tu_password>' DATABASES['default']['HOST'] = 'localhost'
-
Migrar y crear superusuario:
python manage.py migrate python manage.py createsuperuser
-
Correr el servidor:
python manage.py runserver
Posibles mejoras
- Externalizar secretos: usar
django-environo variables de entorno. - Soporte para despliegue con Docker y docker-compose.
- Mejorar validaciones y pruebas unitarias (actualmente no hay tests visibles).
- Añadir API REST con Django REST Framework para integración móvil/externa.
- Soporte multi-usuario con roles más finos y logs de auditoría para cambios críticos.
- Implementar sistema de backups y rotación de logs para la base de datos.
Si quieres, puedo:
- Añadir un Dockerfile y docker-compose para desarrollo.
- Generar un archivo de configuración de entorno (.env) y adaptar
settings.pypara leerlo. - Crear plantillas de despliegue (systemd, nginx + gunicorn).
Fin del README.