## Título Sistema de Gestión de Artículos y Unidades (ProyectoServing) ## Descripción Proyecto Django para el registro, asignación y control de artículos por unidades, con comprobantes de movimiento y un módulo de inventario básico. ## Stickers Usa estas imágenes como "stickers" en la documentación o UI (ya incluidas en el repo): ![sticker-logo](../static/imagenes/logo.png) ![sticker-logo2](../static/imagenes/logo2.png) ![sticker-icon](../static/imagenes/icon.ico) Si quieres añadir más stickers, añádelos en `static/imagenes/stickers/` y referencia la ruta relativa desde la raíz del proyecto. ## Stack tecnológico - Python (se recomienda 3.11+; los .pyc en el repo sugieren 3.12/3.13) - Django 5.0.3 - Base de datos: configurable (MySQL, PostgreSQL o SQLite), dependencias: `mysqlclient`, `psycopg2`, `PyMySQL` - Bibliotecas notables (ver `sistema/requirements.txt`): `django-adminlte3`, `django-select2`, `Pillow`, `reportlab`, `qrcode`, `django-wkhtmltopdf` ## Modelos de datos (resumen) Las clases principales están en `serving/models.py`: - Articulo - Campos: `articulo`, `description`, `marca`, `modelo`, `serial`, `unidad_medida`, `fecha`, `fecha_registro`, `cantidad`, `precio` - Métodos: `__str__`, `total()` (cantidad * precio) - Comprobante - Campos: `e_o_s`, `conceptos`, `observaciones`, `concepto_movimiento`, `numero_movimiento`, `grupo`, `subgrupo` - Unidad - Campos: `nombreUnidad`, `comandante`, `ubicacion`, `telefono` - Relación: `articulos` ManyToMany con `Articulo` a través de `ArticuloUnidad` - ArticuloUnidad (tabla intermedia) - Campos: FK a `Articulo` y `Unidad`, FK a `Comprobante` (nullable), `marca`, `modelo`, `serial`, `movimiento`, `description`, `unidad_medida`, `fecha_salida`, `cantidad`, `precio` - Métodos: `__str__`, `total()` - PruebaUnidad (registro de prueba similar a ArticuloUnidad) Ejemplo de forma de datos (JSON) para un `Articulo`: { "articulo": "Proyector X", "marca": "MarcaA", "modelo": "MX-100", "serial": "SN12345", "unidad_medida": "unidad", "cantidad": 2, "precio": "350.00" } ## Requisitos previos - Tener Python 3.11+ instalado. - Git (opcional). - En Windows PowerShell: crear y activar un entorno virtual. - Archivo de dependencias: `sistema/requirements.txt` (contiene todas las librerías necesarias). ## Instalación y configuración (Windows PowerShell) 1) Abrir PowerShell en la carpeta raíz del proyecto (`e:/PROYECTOS/ProyectoServing/sistema`). 2) Crear y activar entorno virtual: ```powershell python -m venv .venv; .\.venv\Scripts\Activate.ps1 ``` 3) Instalar dependencias: ```powershell python -m pip install --upgrade pip; pip install -r requirements.txt ``` 4) Configurar variables de entorno (recomendado): - `DJANGO_SECRET_KEY` — clave secreta. - `DJANGO_DEBUG` — `False` en producción. - `DATABASE_URL` o editar `sistema/settings.py` para ajustar `DATABASES`. Puedes exportar variables en PowerShell así (temporalmente): ```powershell $env:DJANGO_SECRET_KEY = "tu_secret_key" $env:DJANGO_DEBUG = "True" ``` 5) Migraciones y superusuario: ```powershell python ..\manage.py migrate; python ..\manage.py createsuperuser ``` 6) Ejecutar servidor local: ```powershell python ..\manage.py runserver ``` ## Uso del sistema - Iniciar sesión en `http://127.0.0.1:8000/` con el superusuario. - Desde el panel admin o las vistas públicas del app `serving` podrás: - Crear/editar `Articulo`. - Registrar `Comprobante` y asignar movimientos. - Crear `Unidad` y vincular artículos mediante `ArticuloUnidad`. - Generar reportes o comprobantes (algunas dependencias dan soporte a PDF/QR). ## Módulos del sistema - `serving/` — app principal con modelos, vistas, formularios y templates. - `sistema/` — configuración del proyecto Django (`settings.py`, `urls.py`, `wsgi/asgi`). - `templates/` — plantillas base y por módulo (ver `templates/` y subcarpetas). - `static/` y `staticfiles/` — assets: CSS, JS y `imagenes/` (logos y stickers). ## Seguridad - No dejar `DEBUG = True` en producción. - Guardar `SECRET_KEY` en variables de entorno, no en el repositorio. - Configurar `ALLOWED_HOSTS` en `sistema/settings.py`. - Usar conexión segura (HTTPS) y marcar cookies seguras (`SESSION_COOKIE_SECURE`, `CSRF_COOKIE_SECURE`). - Restringir accesos en el admin y usar contraseñas fuertes. - Revisar dependencias y mantenerlas actualizadas; ejecutar escáneres de seguridad sobre el entorno. ## Posibles mejoras - Añadir API REST (Django REST Framework) para integraciones. - Implementar tests unitarios y de integración automatizados. - Añadir control de permisos más fino (roles/GRANT) para módulos. - Mejorar la interfaz con componentes JS modernos o SPA. - Soporte de importación/exportación (CSV/Excel) robusto. - Auditoría de cambios (historial de movimientos por artículo). ## Mapa rápido de archivos relevantes - `serving/models.py` — modelos del dominio. - `serving/views.py`, `serving/forms.py`, `serving/urls.py` — lógica y rutas. - `sistema/settings.py` — configuración del proyecto. - `sistema/requirements.txt` — dependencias (ruta: `sistema/requirements.txt`). ## Estado de requisitos del usuario - Título — Hecho - Descripción — Hecho - Stack tecnológico — Hecho - Modelos de datos — Hecho (resumen a partir de `serving/models.py`) - Requisitos previos — Hecho (referencia a `sistema/requirements.txt`) - Uso del sistema — Hecho - Módulos del sistema — Hecho - Seguridad — Hecho - Instalación y configuración — Hecho (instrucciones PowerShell) - Posibles mejoras — Hecho Si quieres, puedo: - Añadir badges (build, dependabot) o más imágenes-stickers específicas. - Generar un pequeño script `setup.ps1` que automatice los pasos de instalación.