ProyectoServing/README.md

164 lines
5.7 KiB
Markdown

## 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.