159 lines
5.6 KiB
Markdown
159 lines
5.6 KiB
Markdown
# 🚩 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.
|