diseñarte el modelo de negocio completo de la pastelería (actores, procesos, entidades, reglas de negocio y diagrama ER)
Como primera etapa de aprendizaje, te propongo diseñar el modelo de negocio completo, pero manteniendo una distinción importante:
El modelo de negocio completo describe cómo funcionaría la pastelería. No significa que tengamos que programar todo desde el principio.
Nuestro MVP inicial seguirá siendo únicamente el CRUD de pasteles. Las demás entidades quedarán como futuras etapas.
🍰 Modelo de negocio — Sistema de Pastelería
1. Objetivo del sistema
La pastelería necesita administrar los productos que ofrece a sus clientes y posteriormente controlar el proceso de venta y entrega de pedidos.
El sistema permitirá inicialmente administrar el catálogo de pasteles y, en futuras etapas, podrá incorporar clientes, pedidos, pagos e inventario.
2. Actores del sistema
Los actores representan a las personas o sistemas que interactúan con el negocio.
PASTELERÍA
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
ENCARGADO REPOSTERO CLIENTE
│ │ │
│ │ │
Gestiona Prepara Compra
catálogo pedidos pasteles👤 Encargado
Responsable de administrar el sistema.
Puede:
Registrar pasteles.
Consultar pasteles.
Modificar pasteles.
Activar/desactivar disponibilidad.
Eliminar pasteles.
Restaurar pasteles.
Administrar pedidos posteriormente.
👨🍳 Repostero
Responsable de preparar los pasteles.
Posteriormente podrá:
Consultar pedidos.
Consultar pasteles solicitados.
Cambiar el estado de preparación.
Marcar un pedido como listo.
👤 Cliente
Persona que compra o solicita un pastel.
Posteriormente podrá:
Consultar el catálogo.
Solicitar pasteles.
Realizar pedidos.
Proporcionar datos para entrega.
Realizar pagos.
3. Procesos del negocio
Ahora podemos visualizar qué hace el negocio.
Proceso 1 — Administración del catálogo
ENCARGADO
│
▼
Registrar pastel
│
▼
Consultar catálogo
│
├── Modificar
│
├── Activar / Desactivar
│
└── EliminarEste es nuestro primer proceso de desarrollo.
Proceso 2 — Realizar pedido
En una etapa posterior:
CLIENTE
│
▼
Selecciona pastel
│
▼
Indica cantidad
│
▼
Genera pedido
│
▼
Confirma pedidoProceso 3 — Preparar pedido
PEDIDO
│
▼
Pendiente
│
▼
Confirmado
│
▼
En preparación
│
▼
ListoProceso 4 — Entregar pedido
LISTO
│
▼
Entregado
│
▼
Finalizado4. Entidades del negocio
Aquí comienza el modelo de datos.
En el sistema completo tendríamos:
┌───────────────┐
│ CLIENTE │
└───────────────┘
│
│ realiza
▼
┌───────────────┐
│ PEDIDO │
└───────────────┘
│
│ contiene
▼
┌───────────────────┐
│ DETALLE_PEDIDO │
└───────────────────┘
│
│ corresponde
▼
┌───────────────┐
│ PASTEL │
└───────────────┘Y posteriormente podríamos incorporar:
CLIENTE
PASTEL
PEDIDO
DETALLE_PEDIDO
PAGO
Incluso podríamos agregar:
CATEGORIA
INGREDIENTE
INVENTARIO
EMPLEADO
pero no los necesitamos todavía.
5. Entidad PASTEL
Esta es la entidad que vamos a desarrollar primero.
PASTEL
────────────────────────────────────
id
nombre
sabor
precio
disponible
descripcion
created_at
updated_at
deleted_atSignificado de los atributos
| Campo | Significado |
|---|---|
| id | Identificador único |
| nombre | Nombre comercial del pastel |
| sabor | Sabor principal |
| precio | Precio de venta |
| disponible | Indica si puede venderse |
| descripcion | Descripción del producto |
| created_at | Fecha de creación |
| updated_at | Última modificación |
| deleted_at | Eliminación lógica |
Esto coincide con la estructura base del tutorial, que plantea nombre, sabor, precio, disponible y descripcion, además de timestamps y eliminación lógica.
6. Reglas de negocio
Esta parte es muy importante.
Las reglas de negocio indican qué está permitido y qué no.
RB01 — Nombre obligatorio
Todo pastel debe tener un nombre.
nombre ≠ vacíoRB02 — Precio válido
El precio no puede ser negativo.
precio >= 0RB03 — Sabor obligatorio
Todo pastel debe tener un sabor.
RB04 — Disponibilidad
Un pastel puede estar:
Disponible
No disponible
Si está no disponible, no debería poder seleccionarse para un nuevo pedido.
RB05 — Eliminación
Eliminar un pastel no significa necesariamente destruirlo físicamente.
Se puede utilizar:
deleted_atpara realizar una eliminación lógica.
Esto también está contemplado en el tutorial mediante SoftDeletes.
RB06 — Restauración
Un pastel eliminado lógicamente puede restaurarse.
RB07 — Precio
El precio representa el precio de venta actual del producto.
En una versión posterior, si necesitamos conservar el precio histórico de los pedidos, el precio deberá almacenarse también en el detalle del pedido.
7. Casos de uso
Podemos resumir las funciones del sistema así:
ENCARGADO
│
┌─────────┼─────────┐
│ │ │
▼ ▼ ▼
Registrar Consultar Modificar
pastel pastel pastel
│ │ │
└─────────┼─────────┘
│
▼
Eliminar
pastel
│
▼
Restaurar
pastelPara nuestra primera versión solamente implementaremos:
UC01 Registrar pastel
UC02 Consultar pasteles
UC03 Consultar un pastel
UC04 Modificar pastel
UC05 Eliminar pastel
Y opcionalmente:
UC06 Restaurar pastel
8. Diagrama ER completo — visión futura
Ahora podemos ver hacia dónde podría crecer el sistema:
┌─────────────────┐
│ CLIENTES │
├─────────────────┤
│ PK id │
│ nombre │
│ telefono │
│ email │
│ direccion │
└───────┬─────────┘
│
│ 1
│
│ N
┌───────▼─────────┐
│ PEDIDOS │
├─────────────────┤
│ PK id │
│ FK cliente_id│
│ fecha │
│ estado │
│ total │
└───────┬─────────┘
│
│ 1
│
│ N
┌───────▼─────────────────┐
│ DETALLE_PEDIDO │
├─────────────────────────┤
│ PK id │
│ FK pedido_id │
│ FK pastel_id │
│ cantidad │
│ precio │
│ subtotal │
└───────┬─────────────────┘
│
│ N
│
│ 1
┌───────▼─────────┐
│ PASTELES │
├─────────────────┤
│ PK id │
│ nombre │
│ sabor │
│ precio │
│ disponible │
│ descripcion │
│ created_at │
│ updated_at │
│ deleted_at │
└─────────────────┘
┌─────────────────┐
│ PAGOS │
├─────────────────┤
│ PK id │
│ FK pedido_id │
│ monto │
│ metodo │
│ fecha │
│ estado │
└─────────────────┘Las relaciones principales serían:
CLIENTE 1 ─────────── N PEDIDO
PEDIDO 1 ─────────── N DETALLE_PEDIDO
PASTEL 1 ─────────── N DETALLE_PEDIDO
PEDIDO 1 ─────────── N PAGOS
9. Pero nuestro ER de la primera etapa es muchísimo más sencillo
Como acordamos que por ahora solamente queremos una tabla, nuestro modelo real de la Etapa 1 es:
┌─────────────────────────────┐
│ PASTELES │
├─────────────────────────────┤
│ PK id │
│ nombre │
│ sabor │
│ precio │
│ disponible │
│ descripcion │
│ created_at │
│ updated_at │
│ deleted_at │
└─────────────────────────────┘No hay relaciones todavía.
10. Mapa de aprendizaje
Aquí es donde creo que esta metodología te va a servir mucho para aprender:
┌───────────────────────────────────────────────────────┐
│ 1. MODELO DE NEGOCIO │
│ │
│ Pastelería administra sus pasteles │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 2. REGLAS DE NEGOCIO │
│ │
│ Nombre obligatorio │
│ Precio >= 0 │
│ Disponible / No disponible │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 3. MODELO DE DATOS │
│ │
│ Tabla PASTELES │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 4. PoC │
│ │
│ BD → Modelo → Controller → View │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 5. ARQUITECTURA │
│ │
│ Route → Controller → Model → BD │
│ ↓ │
│ View │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 6. CRUD │
│ │
│ CREATE → READ → UPDATE → DELETE │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 7. VALIDACIONES │
└──────────────────────┬────────────────────────────────┘
▼
┌───────────────────────────────────────────────────────┐
│ 8. INTERFAZ │
│ │
│ HTML / Bootstrap / JS │
└───────────────────────────────────────────────────────┘🎯 Lo más importante para tu curso
Yo convertiría esto en una plantilla que puedas reutilizar en cualquier proyecto.
Por ejemplo, mañana quieres hacer un CRUD de:
Empleados
No empiezas diciendo:
php artisan make:model EmpleadoEmpiezas preguntando:
¿Qué problema del negocio resuelve?
¿Quién utiliza el sistema?
¿Qué procesos realiza?
¿Qué entidad necesito?
¿Qué datos tiene?
¿Qué reglas de negocio existen?
¿Cuál es el modelo ER?
¿Puedo demostrar el flujo de datos?
¿Cómo se comunican las capas?
Ahora sí: ¿cómo lo implemento?
Eso te empieza a formar como desarrollador, no solamente como alguien que conoce comandos de Laravel.
Y en nuestro ejercicio de pastelería, el siguiente paso natural sería convertir este modelo de negocio en el documento técnico de la Etapa 2: "Modelo de datos de pasteles", donde definimos exactamente cada campo, tipo de dato, tamaño, obligatorio/opcional, valor por defecto y reglas antes de escribir la migración
Comentarios
Publicar un comentario