Repository navigation
Releases: ISPC-PROYECTOS/GranjaNV
Releases · ISPC-PROYECTOS/GranjaNV
Release list
v1.0.0-beta.3 — Correcciones de motor email, landing y login
📦 Cambios en esta versión (v1.0.0-beta.3)
🛠️ Correcciones (Hotfixes)
- Envío de correo para OTP: Utilización en producción del servicio de Resend para gestionar el envío de OTP para reestablecimiento de contraseña. Se hace a través de django-anymail.
- Landing Page: Corrección de datos de contacto en footer de la web pública. Se agrega correo real con dominio propio.
- Contraseña en Login: Implementación de botón toggle para mostrar u ocultar contraseña ingresada.
🚀 Instrucciones de Ejecución
Entorno de Producción (Cloud)
- Aplicación Web Oficial: https://granjanv.com.ar
- API Backend: https://granjanv.com.ar/api/
- Endpoint Health Check: https://granjanv.com.ar/api/health/
- Panel Administrativo Django: https://granjanv.com.ar/admin/
Evaluación Local con Docker
git clone [https://github.com/ISPC-PROYECTOS/GranjaNV.git](https://github.com/ISPC-PROYECTOS/GranjaNV.git)
cd GranjaNV
cp .env.example .env
docker compose up --build -d- Frontend (SPA Angular 21 + Nginx): http://localhost (Puerto 80)
- Backend API (Django 6.0 REST Framework): http://localhost:8000/api/
- Panel Administrativo Django: http://localhost:8000/admin/
Credenciales de Prueba (Administrador)
- Correo:
admin@granjanv.com.ar - Contraseña: Se enviará por correo electrónico al cuerpo docente.
v1.0.0-beta.2 — Correcciones de Despliegue y Monitoreo.
📦 Cambios en esta versión (v1.0.0-beta.2)
🛠️ Correcciones e Infraestructura de Despliegue (Hotfixes)
- Endpoint de Monitoreo Keep-Alive: Incorporación del endpoint ligero
/api/health/encore/urls.pyque responde texto plano con código200 OKsin interactuar con PostgreSQL ni MongoDB Atlas, permitiendo configurar pings automáticos (vía cronjob externo) para mitigar la suspensión por inactividad en la capa gratuita de Render. - Optimización de Memoria en Servidor WSGI: Ajuste en
backend/Dockerfiledel comando de arranque de Gunicorn a--workers 2 --threads 2, optimizando el consumo de RAM para operar de forma estable dentro del límite de 512 MB de la capa gratuita de Render y evitar reinicios por Out of Memory (OOM). - Carga Resiliente de Variables de Entorno: Integración tolerante a fallos de
python-dotenvencore/settings.pypara detectar y cargar automáticamente archivos.envtanto desde la carpetabackend/como desde la raíz del proyecto, garantizando paridad entre desarrollo local (uv/ virtualenv) y contenedores de producción. - Registro de Dependencias: Incorporación formal de
python-dotenv==1.2.4enbackend/requirements.txtpara sincronizar entornos locales y compilaciones de despliegue. - Compatibilidad de Proxy Reverso y Red: Configuración de cabeceras de proxy SSL (
SECURE_PROXY_SSL_HEADER), orígenes de confianza CSRF yALLOWED_HOSTSpara la comunicación entre Vercel, Render y Cloudflare.
🚀 Instrucciones de Ejecución
Entorno de Producción (Cloud)
- Aplicación Web Oficial: https://granjanv.com.ar
- API Backend: https://granjanv.com.ar/api/
- Endpoint Health Check: https://granjanv.com.ar/api/health/
- Panel Administrativo Django: https://granjanv.com.ar/admin/
Evaluación Local con Docker
git clone [https://github.com/ISPC-PROYECTOS/GranjaNV.git](https://github.com/ISPC-PROYECTOS/GranjaNV.git)
cd GranjaNV
cp .env.example .env
docker compose up --build -d- Frontend (SPA Angular 21 + Nginx): http://localhost (Puerto 80)
- Backend API (Django 6.0 REST Framework): http://localhost:8000/api/
- Panel Administrativo Django: http://localhost:8000/admin/
Credenciales de Prueba (Administrador)
- Correo:
admin@granjanv.com.ar - Contraseña: Se enviará por correo electrónico al cuerpo docente.
v1.0.0-beta.1 — Primera Versión Beta (Producción, Reportes y Cloud Deploy)
🚀 Granja NV — Versión 1.0.0-beta.1
Primera versión Beta integral del sistema de gestión para Granja Avícola NV, integrando módulos de producción diaria, reportes ejecutivos, auditoría automatizada y despliegue productivo.
📦 Principales Novedades
- Módulo de Producción Avícola: Registro diario de maples por variedad, control de mermas y balance atómico de stock.
- Módulo de Reportes & Métricas: Generación bajo demanda de PDF y Excel, métricas comerciales dinámicas y auditoría de descargas en MongoDB Atlas.
- Gestión de Galpones, Usuarios y Clientes: Control de capacidad máxima instalada, roles de acceso (Admin/Empleado) y prevención de clientes homónimos.
- Sistema de Notificaciones: Polling reactivo en frontend y disparadores automáticos en backend para entregas del día y movimientos de aves.
- Testing Automatizado: Cobertura con Django
APITestCase, colecciones Newman/Postman, pruebas E2E con Playwright y auditoría de accesibilidad WCAG AA con Axe Core. - Infraestructura Cloud: Despliegue distribuido en Render (Backend), Vercel (Frontend SPA con reverse proxy), Aiven (PostgreSQL con SSL), MongoDB Atlas y Cloudflare DNS (SSL Full Strict).
Consulte el archivo CHANGELOG.md para el desglose detallado de las tareas implementadas.
v0.3.0-alpha.3 - Módulo de Ventas, Clientes y OTP
📦 Cambios en esta versión (v0.3.0-alpha.3)
🛒 Módulo de Ventas y Gestión de Pedidos
- Modelado relacional y restricciones de integridad: Entidades
PedidoeItemPedidocon claves foráneas protegidas (PROTECTen clientes yCASCADEen items), restricciones a nivel de base de datos (CheckConstraintpara unidades mayores a 0 yUniqueConstraintpara evitar duplicación de tipo de huevo) e índices compuestos para optimizar consultas por estado y fecha. - Transacciones atómicas: Uso explícito de
@transaction.atomicen altas y modificaciones con operaciones en lote (bulk_create) y recálculo automático del total. - Lógica de negocio avícola: Cálculo automatizado de maples comerciales (30 unidades por maple) con discriminación por variedades (
BLANCO_1,BLANCO_2,COLOR_1,COLOR_2). - Métricas operativas en tiempo real: Endpoint
api/pedidos/metricas/para calcular pedidos pendientes y total de ventas cobradas mediante agregaciones SQL (Sumy filtrosQ). - UI Reactiva en Angular: Pantalla de despacho con listado de pedidos pendientes, chips de productos, conmutadores rápidos de cobro y entrega (
toggle-pago,toggle-entrega), vista colapsable de pedidos cerrados y modal de reapertura.
👥 Módulo de Gestión de Clientes
- Entidad
Cliente: Soporte para tipos mayorista y minorista, normalización de cadenas en mayúsculas al persistir y patrón de borrado lógico (soft delete) para preservar el histórico de pedidos. - Validación estricta de datos: Reglas basadas en expresiones regulares en modelo (
clean) y serializador DRF para restringir caracteres alfabéticos en nombres/apellidos y validar formato telefónico numérico (mínimo 10 dígitos). - Componente modal reutilizable:
CrearClienteComponentstandalone con formularios reactivos (FormGroup), autocompletado en tiempo real en la creación de pedidos y cuadro de diálogo para corroboración de datos previo a la escritura.
🔐 Seguridad y Recuperación de Contraseñas (OTP)
- Flujo de verificación por un solo uso: Endpoints
api/auth/request-otp/yapi/auth/reset-password-otp/para recuperación de credenciales mediante códigos numéricos de 6 dígitos con expiración automática de 10 minutos. - Protección contra enumeración: Respuesta HTTP idéntica ante solicitudes de recuperación para mitigar ataques de enumeración de cuentas.
- Despacho transaccional por correo: Integración con backend SMTP y control de excepciones (
SMTPException) con registro de auditoría en logging. - Formulario reactivo multietapa: Adaptación de la pantalla de autenticación para alternar limpiamente entre el inicio de sesión JWT y el restablecimiento por OTP.
📊 Dashboard Administrativo y Componentes Compartidos
- Métricas integradas: Métricas en tiempo real en
PanelDeControlsincronizadas con los servicios de backend (GastosyPedidosService). - Selector de rango temporal: Componente standalone
SelectorFechacon soporte para filtrado mensual o rango abierto de fechas (RangoFechaMixinen backend). - Buscador adaptativo: Componente
Buscadorcon debounce (rxjs/debounceTime) e interfaz responsive optimizada para dispositivos móviles mediante modal popup. - Persistencia de tema: Soporte para modo oscuro con sincronización directa en
localStoragey manipulación de clase CSS raíz.
🌐 Landing Page Pública y Persistencia Políglota
- Integración NoSQL secundaria: Endpoint de recetas avícolas conectado a MongoDB Atlas mediante
pymongopara la gestión de contenido dinámico de la landing. - Componentes de navegación pública: Carrusel genérico dinámico reutilizable, secciones informativas de sanidad/bienestar animal y botón flotante de interacción directa vía WhatsApp.
🚀 Instrucciones de Ejecución
git clone [https://github.com/ISPC-PROYECTOS/GranjaNV.git](https://github.com/ISPC-PROYECTOS/GranjaNV.git)
cd GranjaNV
docker compose up --build -d- Frontend (SPA Angular 21 + Nginx): http://localhost (Puerto 80)
- Backend API (Django 6.0 REST Framework): http://localhost:8000/api/
- Panel Administrativo Django: http://localhost:8000/admin/
Credenciales de Prueba (Administrador)
- Correo:
admin@granjanv.com.ar - Contraseña:
adminadmin
v0.2.0-alpha.2 — Dockerización y Despliegue de Servicios
📦 Cambios en esta versión
🐳 Contenerización y Despliegue
- Configuración de Dockerfiles multi-stage para Frontend (Angular 21 + Nginx) y Backend (Django 6.0 + Gunicorn).
- Integración de WhiteNoise para el correcto despacho de estáticos en el panel administrativo.
- Orquestación integral con
docker-compose.ymlpara despliegue en un solo paso. - Imágenes oficiales compiladas y publicadas en Docker Hub.
🔐 Seguridad
- Parametrización de credenciales y claves secretas en
settings.pymediante variables de entorno del sistema.
🚀 Instrucciones de Ejecución
git clone <URL_REPOSITORIO>
docker compose up --build -dFrontend: http://localhost (Puerto 80)
Backend API: http://localhost:8000/api/
v0.1.0-alpha.1
Registro de Cambios (Changelog)
Todos los cambios notables del proyecto Granja NV se documentarán en este archivo.
El formato está basado en Keep a Changelog y este proyecto adhiere a Semantic Versioning.
[v0.1.0-alpha.1] - 2026-08-27
Added
- Módulo de Autenticación:
- Endpoint de inicio de sesión con emisión de tokens JWT (
accessyrefresh) en Django REST Framework. - Protección de rutas en Angular mediante
AuthGuardsegún el rol de usuario (Administrador / Empleado). - Pantallas de login y flujo para recuperación de contraseña.
- Endpoint de inicio de sesión con emisión de tokens JWT (
- Módulo de Compras:
- Modelo relacional
Egresoen Django para el registro de gastos operativos. - Interfaz gráfica en Angular para la carga y visualización de gastos diarios.
- Modelo relacional
- Componentes Base Reutilizables:
- Componente
Navbarcon visualización de fecha, hora e integración del clima.
- Componente
- Base de Datos:
- Migraciones y modelos iniciales en PostgreSQL para las entidades de usuarios y egresos.
Fixed
- Corrección en el componente
Navbarpara ocultar el icono de perfil de usuario en la pantalla de login. - Ajuste de estilos CSS en vistas móviles para corregir desbordes visuales.
- Corrección de validación de permisos en backend para respuestas con código
401 Unauthorizedante credenciales inválidas.