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.

text
                    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

text
ENCARGADO
    │
    ▼
Registrar pastel
    │
    ▼
Consultar catálogo
    │
    ├── Modificar
    │
    ├── Activar / Desactivar
    │
    └── Eliminar

Este es nuestro primer proceso de desarrollo.

Proceso 2 — Realizar pedido

En una etapa posterior:

text
CLIENTE
   │
   ▼
Selecciona pastel
   │
   ▼
Indica cantidad
   │
   ▼
Genera pedido
   │
   ▼
Confirma pedido

Proceso 3 — Preparar pedido

text
PEDIDO
   │
   ▼
Pendiente
   │
   ▼
Confirmado
   │
   ▼
En preparación
   │
   ▼
Listo

Proceso 4 — Entregar pedido

text
LISTO
  │
  ▼
Entregado
  │
  ▼
Finalizado

4. Entidades del negocio

Aquí comienza el modelo de datos.

En el sistema completo tendríamos:

text
┌───────────────┐
│   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.

text
PASTEL
────────────────────────────────────
id
nombre
sabor
precio
disponible
descripcion
created_at
updated_at
deleted_at

Significado de los atributos

CampoSignificado
idIdentificador único
nombreNombre comercial del pastel
saborSabor principal
precioPrecio de venta
disponibleIndica si puede venderse
descripcionDescripción del producto
created_atFecha de creación
updated_atÚltima modificación
deleted_atEliminació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.

text
nombre ≠ vacío

RB02 — Precio válido

El precio no puede ser negativo.

text
precio >= 0

RB03 — 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:

text
deleted_at

para 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í:

text
              ENCARGADO
                  │
        ┌─────────┼─────────┐
        │         │         │
        ▼         ▼         ▼
     Registrar  Consultar  Modificar
      pastel     pastel     pastel
        │         │         │
        └─────────┼─────────┘
                  │
                  ▼
              Eliminar
                pastel
                  │
                  ▼
              Restaurar
                pastel

Para 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:

text
┌─────────────────┐
│   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:

text
                 ┌─────────────────────────────┐
                 │       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:

text
┌───────────────────────────────────────────────────────┐
│ 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:

bash
php artisan make:model Empleado

Empiezas preguntando:

  1. ¿Qué problema del negocio resuelve?

  2. ¿Quién utiliza el sistema?

  3. ¿Qué procesos realiza?

  4. ¿Qué entidad necesito?

  5. ¿Qué datos tiene?

  6. ¿Qué reglas de negocio existen?

  7. ¿Cuál es el modelo ER?

  8. ¿Puedo demostrar el flujo de datos?

  9. ¿Cómo se comunican las capas?

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

Entradas más populares de este blog

Tutorial CRUD con Laravel 12-Pastel::factory(50)->create();

CRUD Completo con Laravel 12 - Guía Práctica Paso a Paso-productos

CRUD en Laravel 12 con Git - Guía para Principiantes