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 drivers mysqlclient/PyMySQL disponibles
  • Frontend: plantillas Django + AdminLTE (django-adminlte3), SweetAlert2 (via package.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)

  1. Crear y activar un entorno virtual:

    python -m venv .venv ..venv\Scripts\Activate.ps1

  2. Instalar dependencias:

    pip install -r requirements.txt

  3. Configurar la base de datos en sistema/settings.py (USER, PASSWORD, HOST, NAME)

  4. Migraciones y usuario admin:

    python manage.py migrate python manage.py createsuperuser

  5. Ejecutar servidor en desarrollo:

    python manage.py runserver

  6. 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 = True y ALLOWED_HOSTS = ['*'] en sistema/settings.py. Cambiar antes de producción.
  • Mantener SECRET_KEY fuera 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

  1. Clonar el repositorio y situarse en la carpeta raíz (donde está manage.py).

  2. Crear entorno virtual y activarlo (Windows PowerShell):

    python -m venv .venv .\.venv\Scripts\Activate.ps1

  3. Instalar dependencias:

    pip install -r requirements.txt

  4. Configurar base de datos en sistema/settings.py o preferiblemente usar variables de entorno:

    DATABASES['default']['NAME'] = 'saejb' DATABASES['default']['USER'] = '<tu_usuario>' DATABASES['default']['PASSWORD'] = '<tu_password>' DATABASES['default']['HOST'] = 'localhost'

  5. Migrar y crear superusuario:

    python manage.py migrate python manage.py createsuperuser

  6. Correr el servidor:

    python manage.py runserver

Posibles mejoras

  • Externalizar secretos: usar django-environ o 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.py para leerlo.
  • Crear plantillas de despliegue (systemd, nginx + gunicorn).

Fin del README.