# 馃毄 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'] = '' DATABASES['default']['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.