Fix Demo enterprise
This commit is contained in:
@@ -1,55 +1,114 @@
|
||||
{
|
||||
"tenant": {
|
||||
"id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Panadería Central - Demo Enterprise",
|
||||
"name": "Panader\u00eda Artesana Espa\u00f1a - Central",
|
||||
"subscription_tier": "enterprise",
|
||||
"tenant_type": "parent",
|
||||
"email": "demo.enterprise@panaderiacentral.com",
|
||||
"subdomain": "demo-central",
|
||||
"description": "Enterprise tier demo tenant with multiple locations",
|
||||
"created_at": "2025-01-15T06:00:00Z",
|
||||
"email": "central@panaderiaartesana.es",
|
||||
"subdomain": "artesana-central",
|
||||
"is_active": true,
|
||||
"created_at": "2024-01-01T00:00:00Z",
|
||||
"updated_at": "2024-01-01T00:00:00Z"
|
||||
},
|
||||
"owner": {
|
||||
"id": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
|
||||
"name": "Carlos Rodr\u00edguez",
|
||||
"email": "director@panaderiaartesana.es",
|
||||
"role": "owner"
|
||||
},
|
||||
"subscription": {
|
||||
"id": "80000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"plan": "enterprise",
|
||||
"status": "active",
|
||||
"monthly_price": 1999.0,
|
||||
"max_users": 50,
|
||||
"max_locations": 20,
|
||||
"max_products": 5000,
|
||||
"features": {
|
||||
"multi_location_management": true,
|
||||
"centralized_inventory": true,
|
||||
"centralized_production": true,
|
||||
"bulk_procurement": true,
|
||||
"advanced_analytics": true,
|
||||
"custom_reporting": true,
|
||||
"api_access": true,
|
||||
"priority_support": true,
|
||||
"cross_location_optimization": true,
|
||||
"distribution_management": true
|
||||
},
|
||||
"trial_ends_at": "2025-02-15T06:00:00Z",
|
||||
"next_billing_date": "2025-02-01T06:00:00Z",
|
||||
"created_at": "2024-01-01T00:00:00Z",
|
||||
"updated_at": "2024-01-01T00:00:00Z",
|
||||
"enterprise_features": [
|
||||
"multi_location_management",
|
||||
"centralized_inventory",
|
||||
"centralized_production",
|
||||
"bulk_procurement",
|
||||
"advanced_analytics",
|
||||
"custom_reporting",
|
||||
"api_access",
|
||||
"priority_support"
|
||||
"priority_support",
|
||||
"cross_location_optimization",
|
||||
"distribution_management"
|
||||
]
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"id": "A0000000-0000-4000-a000-000000000001",
|
||||
"name": "Madrid Centro",
|
||||
"name": "Madrid - Salamanca",
|
||||
"location": {
|
||||
"city": "Madrid",
|
||||
"zone": "Centro",
|
||||
"latitude": 40.4168,
|
||||
"longitude": -3.7038
|
||||
"zone": "Salamanca",
|
||||
"latitude": 40.4284,
|
||||
"longitude": -3.6847
|
||||
},
|
||||
"description": "Central Madrid location"
|
||||
"description": "Premium location in upscale Salamanca district"
|
||||
},
|
||||
{
|
||||
"id": "B0000000-0000-4000-a000-000000000001",
|
||||
"name": "Barcelona Gràcia",
|
||||
"name": "Barcelona - Eixample",
|
||||
"location": {
|
||||
"city": "Barcelona",
|
||||
"zone": "Gràcia",
|
||||
"latitude": 41.4036,
|
||||
"longitude": 2.1561
|
||||
"zone": "Eixample",
|
||||
"latitude": 41.3947,
|
||||
"longitude": 2.1616
|
||||
},
|
||||
"description": "Barcelona Gràcia district location"
|
||||
"description": "High-volume tourist and local area in central Barcelona"
|
||||
},
|
||||
{
|
||||
"id": "C0000000-0000-4000-a000-000000000001",
|
||||
"name": "Valencia Ruzafa",
|
||||
"name": "Valencia - Ruzafa",
|
||||
"location": {
|
||||
"city": "Valencia",
|
||||
"zone": "Ruzafa",
|
||||
"latitude": 39.4623,
|
||||
"longitude": -0.3645
|
||||
},
|
||||
"description": "Valencia Ruzafa neighborhood location"
|
||||
"description": "Trendy artisan neighborhood with focus on quality"
|
||||
},
|
||||
{
|
||||
"id": "D0000000-0000-4000-a000-000000000001",
|
||||
"name": "Seville - Triana",
|
||||
"location": {
|
||||
"city": "Seville",
|
||||
"zone": "Triana",
|
||||
"latitude": 37.3828,
|
||||
"longitude": -6.0026
|
||||
},
|
||||
"description": "Traditional Andalusian location with local specialties"
|
||||
},
|
||||
{
|
||||
"id": "E0000000-0000-4000-a000-000000000001",
|
||||
"name": "Bilbao - Casco Viejo",
|
||||
"location": {
|
||||
"city": "Bilbao",
|
||||
"zone": "Casco Viejo",
|
||||
"latitude": 43.2567,
|
||||
"longitude": -2.9272
|
||||
},
|
||||
"description": "Basque region location with focus on quality and local culture"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -3,130 +3,271 @@
|
||||
{
|
||||
"id": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Carlos Martínez Ruiz",
|
||||
"email": "carlos.martinez@panaderiacentral.com",
|
||||
"name": "Director",
|
||||
"email": "director@panaderiaartesana.es",
|
||||
"role": "owner",
|
||||
"position": "CEO",
|
||||
"phone": "+34 912 345 678",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"permissions": [
|
||||
"all_access",
|
||||
"enterprise_admin",
|
||||
"financial_reports",
|
||||
"multi_location_management"
|
||||
]
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 365d",
|
||||
"updated_at": "BASE_TS - 365d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000011",
|
||||
"id": "ae38accc-1ad4-410d-adbc-a55630908924",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Roberto Producción",
|
||||
"email": "roberto.produccion@panaderiacentral.com",
|
||||
"role": "production_manager",
|
||||
"position": "Head of Production",
|
||||
"phone": "+34 913 456 789",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"permissions": [
|
||||
"production_management",
|
||||
"inventory_management",
|
||||
"quality_control",
|
||||
"multi_location_view"
|
||||
]
|
||||
"name": "Produccion",
|
||||
"email": "produccion@panaderiaartesana.es",
|
||||
"role": "production_director",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 300d",
|
||||
"updated_at": "BASE_TS - 300d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000012",
|
||||
"id": "9d04ab32-8b7f-4f71-b88f-d7bf1452a010",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Marta Calidad",
|
||||
"email": "marta.calidad@panaderiacentral.com",
|
||||
"name": "Compras",
|
||||
"email": "compras@panaderiaartesana.es",
|
||||
"role": "procurement_manager",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 280d",
|
||||
"updated_at": "BASE_TS - 280d"
|
||||
},
|
||||
{
|
||||
"id": "80765906-0074-4206-8f58-5867df1975fd",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "calidad@panaderiaartesana.es",
|
||||
"first_name": "Jos\u00e9",
|
||||
"last_name": "Mart\u00ednez",
|
||||
"role": "quality_control",
|
||||
"position": "Quality Assurance Manager",
|
||||
"phone": "+34 914 567 890",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"department": "quality",
|
||||
"position": "Responsable de Calidad",
|
||||
"phone": "+34 916 123 459",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 250d",
|
||||
"permissions": [
|
||||
"quality_control",
|
||||
"compliance_management",
|
||||
"audit_access",
|
||||
"multi_location_view"
|
||||
]
|
||||
"batch_approve",
|
||||
"quality_reports"
|
||||
],
|
||||
"name": "Jos\u00e9 Mart\u00ednez",
|
||||
"updated_at": "BASE_TS - 250d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000013",
|
||||
"id": "f6c54d0f-5899-4952-ad94-7a492c07167a",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Javier Logística",
|
||||
"email": "javier.logistica@panaderiacentral.com",
|
||||
"role": "logistics",
|
||||
"position": "Logistics Coordinator",
|
||||
"phone": "+34 915 678 901",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"email": "logistica@panaderiaartesana.es",
|
||||
"first_name": "Laura",
|
||||
"last_name": "L\u00f3pez",
|
||||
"role": "logistics_coord",
|
||||
"department": "logistics",
|
||||
"position": "Coordinadora de Log\u00edstica",
|
||||
"phone": "+34 916 123 460",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 230d",
|
||||
"permissions": [
|
||||
"logistics_management",
|
||||
"delivery_scheduling",
|
||||
"fleet_management",
|
||||
"multi_location_view"
|
||||
]
|
||||
"distribution_manage",
|
||||
"inventory_view",
|
||||
"order_manage"
|
||||
],
|
||||
"name": "Laura L\u00f3pez",
|
||||
"updated_at": "BASE_TS - 230d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000014",
|
||||
"id": "77621701-e794-48d9-87d7-dc8db905efc0",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Carmen Ventas",
|
||||
"email": "carmen.ventas@panaderiacentral.com",
|
||||
"role": "sales",
|
||||
"position": "Sales Director",
|
||||
"phone": "+34 916 789 012",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"email": "maestro1@panaderiaartesana.es",
|
||||
"first_name": "Antonio",
|
||||
"last_name": "S\u00e1nchez",
|
||||
"role": "master_baker",
|
||||
"department": "production",
|
||||
"position": "Maestro Panadero Principal",
|
||||
"phone": "+34 916 123 461",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 320d",
|
||||
"permissions": [
|
||||
"sales_management",
|
||||
"customer_relations",
|
||||
"contract_management",
|
||||
"multi_location_view",
|
||||
"enterprise_reports"
|
||||
]
|
||||
"recipe_manage",
|
||||
"production_manage",
|
||||
"training"
|
||||
],
|
||||
"name": "Antonio S\u00e1nchez",
|
||||
"updated_at": "BASE_TS - 320d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000015",
|
||||
"id": "f21dadbf-a37e-4f53-86e6-b5f34a0c792f",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Luis Compras",
|
||||
"email": "luis.compras@panaderiacentral.com",
|
||||
"role": "procurement",
|
||||
"position": "Procurement Manager",
|
||||
"phone": "+34 917 890 123",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"email": "maestro2@panaderiaartesana.es",
|
||||
"first_name": "Isabel",
|
||||
"last_name": "Ruiz",
|
||||
"role": "master_baker",
|
||||
"department": "production",
|
||||
"position": "Maestra Panadera Senior",
|
||||
"phone": "+34 916 123 462",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 280d",
|
||||
"permissions": [
|
||||
"procurement_management",
|
||||
"supplier_relations",
|
||||
"inventory_planning",
|
||||
"multi_location_view",
|
||||
"enterprise_reports"
|
||||
]
|
||||
"recipe_manage",
|
||||
"production_manage",
|
||||
"training"
|
||||
],
|
||||
"name": "Isabel Ruiz",
|
||||
"updated_at": "BASE_TS - 280d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000016",
|
||||
"id": "701cb9d2-6049-4bb9-8d3a-1b3bd3aae45f",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Miguel Mantenimiento",
|
||||
"email": "miguel.mantenimiento@panaderiacentral.com",
|
||||
"role": "maintenance",
|
||||
"position": "Maintenance Supervisor",
|
||||
"phone": "+34 918 901 234",
|
||||
"status": "ACTIVE",
|
||||
"created_at": "BASE_TS",
|
||||
"last_login": "2025-01-15T06:00:00Z",
|
||||
"email": "almacen1@panaderiaartesana.es",
|
||||
"first_name": "Francisco",
|
||||
"last_name": "Moreno",
|
||||
"role": "warehouse_supervisor",
|
||||
"department": "warehouse",
|
||||
"position": "Supervisor de Almac\u00e9n",
|
||||
"phone": "+34 916 123 463",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 200d",
|
||||
"permissions": [
|
||||
"equipment_maintenance",
|
||||
"facility_management",
|
||||
"iot_monitoring",
|
||||
"multi_location_view"
|
||||
]
|
||||
"inventory_manage",
|
||||
"stock_receive",
|
||||
"stock_transfer"
|
||||
],
|
||||
"name": "Francisco Moreno",
|
||||
"updated_at": "BASE_TS - 200d"
|
||||
},
|
||||
{
|
||||
"id": "a98bbee4-96fa-4840-9eb7-1f35c6e83a36",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "almacen2@panaderiaartesana.es",
|
||||
"first_name": "Carmen",
|
||||
"last_name": "Jim\u00e9nez",
|
||||
"role": "warehouse_supervisor",
|
||||
"department": "warehouse",
|
||||
"position": "Supervisora de Almac\u00e9n Turno Noche",
|
||||
"phone": "+34 916 123 464",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 180d",
|
||||
"permissions": [
|
||||
"inventory_manage",
|
||||
"stock_receive",
|
||||
"stock_transfer"
|
||||
],
|
||||
"name": "Carmen Jim\u00e9nez",
|
||||
"updated_at": "BASE_TS - 180d"
|
||||
},
|
||||
{
|
||||
"id": "022fba62-ff2a-4a38-b345-42228e11f04a",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "analisis@panaderiaartesana.es",
|
||||
"first_name": "David",
|
||||
"last_name": "Gonz\u00e1lez",
|
||||
"role": "operations_analyst",
|
||||
"department": "operations",
|
||||
"position": "Analista de Operaciones",
|
||||
"phone": "+34 916 123 465",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 150d",
|
||||
"permissions": [
|
||||
"reports_view",
|
||||
"analytics_view",
|
||||
"forecasting_view"
|
||||
],
|
||||
"name": "David Gonz\u00e1lez",
|
||||
"updated_at": "BASE_TS - 150d"
|
||||
},
|
||||
{
|
||||
"id": "ba2ce42e-efd7-46a6-aa09-d9f9afc1c63f",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "mantenimiento@panaderiaartesana.es",
|
||||
"first_name": "Pedro",
|
||||
"last_name": "D\u00edaz",
|
||||
"role": "maintenance_tech",
|
||||
"department": "maintenance",
|
||||
"position": "T\u00e9cnico de Mantenimiento",
|
||||
"phone": "+34 916 123 466",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 200d",
|
||||
"permissions": [
|
||||
"equipment_view",
|
||||
"maintenance_log"
|
||||
],
|
||||
"name": "Pedro D\u00edaz",
|
||||
"updated_at": "BASE_TS - 200d"
|
||||
},
|
||||
{
|
||||
"id": "ba8ca79b-b81e-4fe9-b064-e58a34bf0fa3",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "turno.dia@panaderiaartesana.es",
|
||||
"first_name": "Rosa",
|
||||
"last_name": "Navarro",
|
||||
"role": "shift_supervisor",
|
||||
"department": "production",
|
||||
"position": "Supervisora Turno D\u00eda",
|
||||
"phone": "+34 916 123 467",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 180d",
|
||||
"permissions": [
|
||||
"production_view",
|
||||
"batch_create",
|
||||
"staff_manage"
|
||||
],
|
||||
"name": "Rosa Navarro",
|
||||
"updated_at": "BASE_TS - 180d"
|
||||
},
|
||||
{
|
||||
"id": "75e92fec-e052-4e90-bd96-804eed44926c",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "turno.tarde@panaderiaartesana.es",
|
||||
"first_name": "Manuel",
|
||||
"last_name": "Torres",
|
||||
"role": "shift_supervisor",
|
||||
"department": "production",
|
||||
"position": "Supervisor Turno Tarde",
|
||||
"phone": "+34 916 123 468",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 160d",
|
||||
"permissions": [
|
||||
"production_view",
|
||||
"batch_create",
|
||||
"staff_manage"
|
||||
],
|
||||
"name": "Manuel Torres",
|
||||
"updated_at": "BASE_TS - 160d"
|
||||
},
|
||||
{
|
||||
"id": "6fec3a43-f83d-47c3-b760-54105fcbf7f1",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "turno.noche@panaderiaartesana.es",
|
||||
"first_name": "Luc\u00eda",
|
||||
"last_name": "Romero",
|
||||
"role": "shift_supervisor",
|
||||
"department": "production",
|
||||
"position": "Supervisora Turno Noche",
|
||||
"phone": "+34 916 123 469",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 140d",
|
||||
"permissions": [
|
||||
"production_view",
|
||||
"batch_create",
|
||||
"staff_manage"
|
||||
],
|
||||
"name": "Luc\u00eda Romero",
|
||||
"updated_at": "BASE_TS - 140d"
|
||||
},
|
||||
{
|
||||
"id": "743fd2c8-58b8-4431-a49f-085e0c284ff0",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"email": "it@panaderiaartesana.es",
|
||||
"first_name": "Javier",
|
||||
"last_name": "Vargas",
|
||||
"role": "it_admin",
|
||||
"department": "it",
|
||||
"position": "Administrador de Sistemas",
|
||||
"phone": "+34 916 123 470",
|
||||
"is_active": true,
|
||||
"created_at": "BASE_TS - 200d",
|
||||
"permissions": [
|
||||
"system_admin",
|
||||
"user_manage",
|
||||
"settings_manage"
|
||||
],
|
||||
"name": "Javier Vargas",
|
||||
"updated_at": "BASE_TS - 200d"
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,116 +3,846 @@
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Baguette Premium - Enterprise Standard",
|
||||
"recipe_code": "ENT-BAG-STD-001",
|
||||
"version": "2.0",
|
||||
"name": "Baguette Francesa Tradicional",
|
||||
"recipe_code": null,
|
||||
"version": "1.0",
|
||||
"finished_product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"description": "Receta estándar de baguette premium para todas las ubicaciones enterprise. Optimizada para producción masiva con calidad consistente.",
|
||||
"description": "Baguette francesa tradicional con corteza crujiente y miga alveolada. Perfecta para acompa\u00f1ar cualquier comida.",
|
||||
"category": "Panes",
|
||||
"cuisine_type": "Francesa",
|
||||
"difficulty_level": 2,
|
||||
"yield_quantity": 50.0,
|
||||
"yield_quantity": 10.0,
|
||||
"yield_unit": "units",
|
||||
"prep_time_minutes": 30,
|
||||
"prep_time_minutes": 20,
|
||||
"cook_time_minutes": 25,
|
||||
"total_time_minutes": 180,
|
||||
"total_time_minutes": 165,
|
||||
"rest_time_minutes": 120,
|
||||
"estimated_cost_per_unit": 1.8,
|
||||
"last_calculated_cost": 1.75,
|
||||
"cost_calculation_date": "2025-01-14T00:00:00Z",
|
||||
"target_margin_percentage": 65.0,
|
||||
"suggested_selling_price": 2.95,
|
||||
"status": "APPROVED",
|
||||
"is_active": true,
|
||||
"is_standardized": true,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"created_by": "50000000-0000-0000-0000-000000000011",
|
||||
"enterprise_standard": true,
|
||||
"applicable_locations": [
|
||||
"Madrid Centro",
|
||||
"Barcelona Gràcia",
|
||||
"Valencia Ruzafa"
|
||||
],
|
||||
"estimated_cost_per_unit": null,
|
||||
"last_calculated_cost": null,
|
||||
"cost_calculation_date": null,
|
||||
"target_margin_percentage": null,
|
||||
"suggested_selling_price": null,
|
||||
"instructions": {
|
||||
"steps": [
|
||||
{
|
||||
"step": 1,
|
||||
"title": "Amasado Estándar",
|
||||
"description": "Mezclar harina, agua, sal y levadura en amasadora espiral durante 20 minutos. Temperatura de masa objetivo: 24°C.",
|
||||
"duration_minutes": 20
|
||||
"title": "Amasado",
|
||||
"description": "Mezclar harina, agua, sal y levadura. Amasar durante 15 minutos hasta obtener una masa lisa y el\u00e1stica.",
|
||||
"duration_minutes": 15
|
||||
},
|
||||
{
|
||||
"step": 2,
|
||||
"title": "Fermentación Controlada",
|
||||
"description": "Fermentar en cámara a 26°C con 75% humedad durante 90 minutos.",
|
||||
"duration_minutes": 90
|
||||
"title": "Primera Fermentaci\u00f3n",
|
||||
"description": "Dejar reposar la masa en un recipiente tapado durante 60 minutos a temperatura ambiente (22-24\u00b0C).",
|
||||
"duration_minutes": 60
|
||||
},
|
||||
{
|
||||
"step": 3,
|
||||
"title": "División y Formado",
|
||||
"description": "Dividir en piezas de 280g y formar baguettes con equipo automático.",
|
||||
"duration_minutes": 25
|
||||
"title": "Divisi\u00f3n y Formado",
|
||||
"description": "Dividir la masa en 10 piezas de 250g cada una. Formar las baguettes d\u00e1ndoles la forma alargada caracter\u00edstica.",
|
||||
"duration_minutes": 20
|
||||
},
|
||||
{
|
||||
"step": 4,
|
||||
"title": "Fermentación Final",
|
||||
"description": "Fermentación final en cámara a 28°C con 80% humedad durante 60 minutos.",
|
||||
"title": "Segunda Fermentaci\u00f3n",
|
||||
"description": "Colocar las baguettes en un lienzo enharinado y dejar fermentar 60 minutos m\u00e1s.",
|
||||
"duration_minutes": 60
|
||||
},
|
||||
{
|
||||
"step": 5,
|
||||
"title": "Cocción",
|
||||
"description": "Hornear a 240°C con vapor durante 25 minutos en horno rotativo.",
|
||||
"title": "Gre\u00f1ado y Horneado",
|
||||
"description": "Hacer cortes diagonales en la superficie con una cuchilla. Hornear a 240\u00b0C con vapor inicial durante 25 minutos.",
|
||||
"duration_minutes": 25
|
||||
}
|
||||
],
|
||||
"quality_checks": [
|
||||
]
|
||||
},
|
||||
"preparation_notes": "Es crucial usar vapor al inicio del horneado para lograr una corteza crujiente. La temperatura del agua debe estar entre 18-20\u00b0C.",
|
||||
"storage_instructions": "Consumir el mismo d\u00eda de producci\u00f3n. Se puede congelar despu\u00e9s del horneado.",
|
||||
"serves_count": null,
|
||||
"nutritional_info": null,
|
||||
"allergen_info": null,
|
||||
"dietary_tags": null,
|
||||
"batch_size_multiplier": 1.0,
|
||||
"minimum_batch_size": null,
|
||||
"maximum_batch_size": null,
|
||||
"optimal_production_temperature": null,
|
||||
"optimal_humidity": null,
|
||||
"quality_check_configuration": null,
|
||||
"status": "ACTIVE",
|
||||
"is_seasonal": false,
|
||||
"season_start_month": null,
|
||||
"season_end_month": null,
|
||||
"is_signature_item": true,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"created_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"updated_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"enterprise_standard": true,
|
||||
"centrally_produced": true
|
||||
},
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Croissant de Mantequilla Artesanal",
|
||||
"recipe_code": null,
|
||||
"version": "1.0",
|
||||
"finished_product_id": "20000000-0000-0000-0000-000000000002",
|
||||
"description": "Croissant de mantequilla con laminado perfecto y textura hojaldrada. Elaboraci\u00f3n artesanal con mantequilla de alta calidad.",
|
||||
"category": "Boller\u00eda",
|
||||
"cuisine_type": "Francesa",
|
||||
"difficulty_level": 4,
|
||||
"yield_quantity": 12.0,
|
||||
"yield_unit": "units",
|
||||
"prep_time_minutes": 45,
|
||||
"cook_time_minutes": 18,
|
||||
"total_time_minutes": 333,
|
||||
"rest_time_minutes": 270,
|
||||
"estimated_cost_per_unit": null,
|
||||
"last_calculated_cost": null,
|
||||
"cost_calculation_date": null,
|
||||
"target_margin_percentage": null,
|
||||
"suggested_selling_price": null,
|
||||
"instructions": {
|
||||
"steps": [
|
||||
{
|
||||
"check": "Temperatura de masa",
|
||||
"target": "24°C",
|
||||
"tolerance": "±1°C"
|
||||
"step": 1,
|
||||
"title": "Preparaci\u00f3n de la Masa Base",
|
||||
"description": "Mezclar todos los ingredientes excepto la mantequilla de laminado. Amasar hasta obtener una masa homog\u00e9nea.",
|
||||
"duration_minutes": 20
|
||||
},
|
||||
{
|
||||
"check": "Peso final",
|
||||
"target": "280g",
|
||||
"tolerance": "±5g"
|
||||
"step": 2,
|
||||
"title": "Reposo en Fr\u00edo",
|
||||
"description": "Envolver la masa en film y refrigerar durante 2 horas.",
|
||||
"duration_minutes": 120
|
||||
},
|
||||
{
|
||||
"check": "Color de corteza",
|
||||
"target": "Dorado intenso"
|
||||
"step": 3,
|
||||
"title": "Laminado",
|
||||
"description": "Extender la masa en rect\u00e1ngulo. Colocar la mantequilla en el centro y hacer 3 dobleces sencillos con 30 minutos de reposo entre cada uno.",
|
||||
"duration_minutes": 90
|
||||
},
|
||||
{
|
||||
"step": 4,
|
||||
"title": "Formado",
|
||||
"description": "Extender a 3mm de grosor, cortar tri\u00e1ngulos y enrollar para formar los croissants.",
|
||||
"duration_minutes": 25
|
||||
},
|
||||
{
|
||||
"step": 5,
|
||||
"title": "Fermentaci\u00f3n Final",
|
||||
"description": "Dejar fermentar a 26\u00b0C durante 2-3 horas hasta que dupliquen su volumen.",
|
||||
"duration_minutes": 150
|
||||
},
|
||||
{
|
||||
"step": 6,
|
||||
"title": "Horneado",
|
||||
"description": "Pintar con huevo batido y hornear a 200\u00b0C durante 18 minutos hasta dorar.",
|
||||
"duration_minutes": 18
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"preparation_notes": "La mantequilla para laminar debe estar a 15-16\u00b0C, flexible pero no blanda. Trabajar en ambiente fresco.",
|
||||
"storage_instructions": "Consumir el d\u00eda de producci\u00f3n. Se puede congelar la masa formada antes de la fermentaci\u00f3n final.",
|
||||
"serves_count": null,
|
||||
"nutritional_info": null,
|
||||
"allergen_info": null,
|
||||
"dietary_tags": null,
|
||||
"batch_size_multiplier": 1.0,
|
||||
"minimum_batch_size": null,
|
||||
"maximum_batch_size": null,
|
||||
"optimal_production_temperature": null,
|
||||
"optimal_humidity": null,
|
||||
"quality_check_configuration": null,
|
||||
"status": "ACTIVE",
|
||||
"is_seasonal": false,
|
||||
"season_start_month": null,
|
||||
"season_end_month": null,
|
||||
"is_signature_item": true,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"created_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"updated_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"enterprise_standard": true,
|
||||
"centrally_produced": true
|
||||
},
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Pan de Pueblo con Masa Madre",
|
||||
"recipe_code": null,
|
||||
"version": "1.0",
|
||||
"finished_product_id": "20000000-0000-0000-0000-000000000003",
|
||||
"description": "Hogaza de pan r\u00fastico elaborada con masa madre natural. Corteza gruesa y miga densa con sabor ligeramente \u00e1cido.",
|
||||
"category": "Panes Artesanales",
|
||||
"cuisine_type": "Espa\u00f1ola",
|
||||
"difficulty_level": 3,
|
||||
"yield_quantity": 4.0,
|
||||
"yield_unit": "units",
|
||||
"prep_time_minutes": 30,
|
||||
"cook_time_minutes": 45,
|
||||
"total_time_minutes": 435,
|
||||
"rest_time_minutes": 360,
|
||||
"estimated_cost_per_unit": null,
|
||||
"last_calculated_cost": null,
|
||||
"cost_calculation_date": null,
|
||||
"target_margin_percentage": null,
|
||||
"suggested_selling_price": null,
|
||||
"instructions": {
|
||||
"steps": [
|
||||
{
|
||||
"step": 1,
|
||||
"title": "Autolisis",
|
||||
"description": "Mezclar harinas y agua, dejar reposar 30 minutos para desarrollar el gluten.",
|
||||
"duration_minutes": 30
|
||||
},
|
||||
{
|
||||
"step": 2,
|
||||
"title": "Incorporaci\u00f3n de Masa Madre y Sal",
|
||||
"description": "A\u00f1adir la masa madre y la sal. Amasar suavemente hasta integrar completamente.",
|
||||
"duration_minutes": 15
|
||||
},
|
||||
{
|
||||
"step": 3,
|
||||
"title": "Fermentaci\u00f3n en Bloque con Pliegues",
|
||||
"description": "Realizar 4 series de pliegues cada 30 minutos durante las primeras 2 horas. Luego dejar reposar 2 horas m\u00e1s.",
|
||||
"duration_minutes": 240
|
||||
},
|
||||
{
|
||||
"step": 4,
|
||||
"title": "Divisi\u00f3n y Preformado",
|
||||
"description": "Dividir en 4 piezas de 800g. Preformar en bolas y dejar reposar 30 minutos.",
|
||||
"duration_minutes": 30
|
||||
},
|
||||
{
|
||||
"step": 5,
|
||||
"title": "Formado Final",
|
||||
"description": "Formar las hogazas d\u00e1ndoles tensi\u00f3n superficial. Colocar en banneton o lienzo enharinado.",
|
||||
"duration_minutes": 15
|
||||
},
|
||||
{
|
||||
"step": 6,
|
||||
"title": "Fermentaci\u00f3n Final",
|
||||
"description": "Dejar fermentar a temperatura ambiente durante 2 horas o en fr\u00edo durante la noche.",
|
||||
"duration_minutes": 120
|
||||
},
|
||||
{
|
||||
"step": 7,
|
||||
"title": "Horneado",
|
||||
"description": "Hacer cortes en la superficie. Hornear a 230\u00b0C con vapor inicial durante 45 minutos.",
|
||||
"duration_minutes": 45
|
||||
}
|
||||
]
|
||||
},
|
||||
"preparation_notes": "La masa madre debe estar activa y en su punto \u00f3ptimo. La temperatura final de la masa debe ser 24-25\u00b0C.",
|
||||
"storage_instructions": "Se conserva hasta 5-7 d\u00edas en bolsa de papel. Mejora al segundo d\u00eda.",
|
||||
"serves_count": null,
|
||||
"nutritional_info": null,
|
||||
"allergen_info": null,
|
||||
"dietary_tags": null,
|
||||
"batch_size_multiplier": 1.0,
|
||||
"minimum_batch_size": null,
|
||||
"maximum_batch_size": null,
|
||||
"optimal_production_temperature": null,
|
||||
"optimal_humidity": null,
|
||||
"quality_check_configuration": null,
|
||||
"status": "ACTIVE",
|
||||
"is_seasonal": false,
|
||||
"season_start_month": null,
|
||||
"season_end_month": null,
|
||||
"is_signature_item": true,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"created_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"updated_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"enterprise_standard": true,
|
||||
"centrally_produced": true
|
||||
},
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000000004",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Napolitana de Chocolate",
|
||||
"recipe_code": null,
|
||||
"version": "1.0",
|
||||
"finished_product_id": "20000000-0000-0000-0000-000000000004",
|
||||
"description": "Boller\u00eda de hojaldre rectangular rellena de chocolate. Cl\u00e1sico de las panader\u00edas espa\u00f1olas.",
|
||||
"category": "Boller\u00eda",
|
||||
"cuisine_type": "Espa\u00f1ola",
|
||||
"difficulty_level": 3,
|
||||
"yield_quantity": 16.0,
|
||||
"yield_unit": "units",
|
||||
"prep_time_minutes": 40,
|
||||
"cook_time_minutes": 15,
|
||||
"total_time_minutes": 325,
|
||||
"rest_time_minutes": 270,
|
||||
"estimated_cost_per_unit": null,
|
||||
"last_calculated_cost": null,
|
||||
"cost_calculation_date": null,
|
||||
"target_margin_percentage": null,
|
||||
"suggested_selling_price": null,
|
||||
"instructions": {
|
||||
"steps": [
|
||||
{
|
||||
"step": 1,
|
||||
"title": "Masa Base y Laminado",
|
||||
"description": "Preparar masa de hojaldre siguiendo el mismo proceso que los croissants.",
|
||||
"duration_minutes": 180
|
||||
},
|
||||
{
|
||||
"step": 2,
|
||||
"title": "Corte y Formado",
|
||||
"description": "Extender la masa y cortar rect\u00e1ngulos de 10x15cm. Colocar barritas de chocolate en el centro.",
|
||||
"duration_minutes": 20
|
||||
},
|
||||
{
|
||||
"step": 3,
|
||||
"title": "Sellado",
|
||||
"description": "Doblar la masa sobre s\u00ed misma para cubrir el chocolate. Sellar bien los bordes.",
|
||||
"duration_minutes": 20
|
||||
},
|
||||
{
|
||||
"step": 4,
|
||||
"title": "Fermentaci\u00f3n",
|
||||
"description": "Dejar fermentar a 26\u00b0C durante 90 minutos.",
|
||||
"duration_minutes": 90
|
||||
},
|
||||
{
|
||||
"step": 5,
|
||||
"title": "Horneado",
|
||||
"description": "Pintar con huevo y hornear a 190\u00b0C durante 15 minutos.",
|
||||
"duration_minutes": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
"preparation_notes": "El chocolate debe ser de buena calidad para un mejor resultado. No sobrecargar de chocolate.",
|
||||
"storage_instructions": "Consumir preferiblemente el d\u00eda de producci\u00f3n.",
|
||||
"serves_count": null,
|
||||
"nutritional_info": null,
|
||||
"allergen_info": null,
|
||||
"dietary_tags": null,
|
||||
"batch_size_multiplier": 1.0,
|
||||
"minimum_batch_size": null,
|
||||
"maximum_batch_size": null,
|
||||
"optimal_production_temperature": null,
|
||||
"optimal_humidity": null,
|
||||
"quality_check_configuration": null,
|
||||
"status": "ACTIVE",
|
||||
"is_seasonal": false,
|
||||
"season_start_month": null,
|
||||
"season_end_month": null,
|
||||
"is_signature_item": false,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"created_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"updated_by": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
|
||||
"enterprise_standard": true,
|
||||
"centrally_produced": true
|
||||
}
|
||||
],
|
||||
"recipe_ingredients": [
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000001001",
|
||||
"id": "473debdb-ab7c-4a79-9b41-985715695710",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity": 14.0,
|
||||
"unit": "kilograms",
|
||||
"substitution_options": [
|
||||
"10000000-0000-0000-0000-000000000002"
|
||||
],
|
||||
"is_essential": true,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_standard": true
|
||||
"quantity": 1000.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "tamizada",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 1,
|
||||
"ingredient_group": "Secos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000001002",
|
||||
"id": "545c7899-d893-41f4-a839-963235f128cd",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000033",
|
||||
"quantity": 650.0,
|
||||
"unit": "ml",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "temperatura ambiente",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 2,
|
||||
"ingredient_group": "L\u00edquidos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "4e9ec9cc-6339-4191-bad5-c52b604106c9",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000031",
|
||||
"quantity": 20.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 3,
|
||||
"ingredient_group": "Secos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "f89b85f2-e18e-451a-8048-668bcfb6bc51",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000021",
|
||||
"quantity": 15.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "desmenuzada",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 4,
|
||||
"ingredient_group": "Fermentos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "5e25c0c8-17b9-4db1-b099-8dc459def206",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity": 500.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 1,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "89a9872d-4bf4-469f-8c84-37f7bf0c9a92",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000012",
|
||||
"quantity": 120.0,
|
||||
"unit": "ml",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "tibia",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 2,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "1843a05b-d3dd-4963-afa1-1c76fcd6922f",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000033",
|
||||
"quantity": 80.0,
|
||||
"unit": "ml",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 3,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "af984d98-3b75-458f-8fdd-02699dc33e9d",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000032",
|
||||
"quantity": 50.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 4,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "b09b738f-d24c-4dde-be76-6b88ea99511e",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000031",
|
||||
"quantity": 10.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 5,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "119496cd-e7e3-40a4-b298-09a434b679fc",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000021",
|
||||
"quantity": 20.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 6,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "c8fe9422-3000-42b4-a74a-cb00b6277130",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000011",
|
||||
"quantity": 25.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "en la masa",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 7,
|
||||
"ingredient_group": "Masa base",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "107a15bf-d2df-4e25-95fe-aee64febf112",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000011",
|
||||
"quantity": 250.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "para laminar (15-16\u00b0C)",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 8,
|
||||
"ingredient_group": "Laminado",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "242e8508-3adf-4b11-b482-33d740bd5397",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000003",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000002",
|
||||
"quantity": 0.5,
|
||||
"unit": "kilograms",
|
||||
"substitution_options": [],
|
||||
"is_essential": false,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_standard": true,
|
||||
"notes": "Solo para versión premium"
|
||||
"quantity": 800.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 1,
|
||||
"ingredient_group": "Harinas",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "ea701cf5-0c6b-45aa-9519-e4dc42a40662",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000003",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000004",
|
||||
"quantity": 200.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 2,
|
||||
"ingredient_group": "Harinas",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "3a4f0c61-8451-42fe-b3bc-4b0f4527af87",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000003",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000023",
|
||||
"quantity": 300.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "activa y alimentada",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 3,
|
||||
"ingredient_group": "Fermentos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "ededf3a3-b58a-4f10-8d12-324aa3400349",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000003",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000033",
|
||||
"quantity": 650.0,
|
||||
"unit": "ml",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "temperatura ambiente",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 4,
|
||||
"ingredient_group": "L\u00edquidos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "93177be7-24e5-4e97-8d46-df373d6a04bc",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000003",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000031",
|
||||
"quantity": 22.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 5,
|
||||
"ingredient_group": "Condimentos",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "c27a4fbb-d451-4a14-b0e2-09e5cbd07bad",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity": 500.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 1,
|
||||
"ingredient_group": "Masa",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "dd8a0784-ead1-483b-b183-21c71b692a7d",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000011",
|
||||
"quantity": 300.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 2,
|
||||
"ingredient_group": "Laminado",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "6434bf78-48e5-469d-a8d0-6f4dbe5c69ca",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000041",
|
||||
"quantity": 200.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": "en barritas",
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 3,
|
||||
"ingredient_group": "Relleno",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "38661b92-03e9-4dcd-ac90-86832eee9455",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000032",
|
||||
"quantity": 60.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 4,
|
||||
"ingredient_group": "Masa",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "1ff5fb46-3361-4978-b248-a6b3bb6592f7",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000031",
|
||||
"quantity": 10.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 5,
|
||||
"ingredient_group": "Masa",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "aa85612a-f99b-4c8b-a100-08ae4a9898a5",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000021",
|
||||
"quantity": 15.0,
|
||||
"unit": "g",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 6,
|
||||
"ingredient_group": "Masa",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
},
|
||||
{
|
||||
"id": "33c542c8-bf36-4041-957f-765bf28cc68a",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000004",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000012",
|
||||
"quantity": 150.0,
|
||||
"unit": "ml",
|
||||
"quantity_in_base_unit": null,
|
||||
"alternative_quantity": null,
|
||||
"alternative_unit": null,
|
||||
"preparation_method": null,
|
||||
"ingredient_notes": null,
|
||||
"is_optional": false,
|
||||
"ingredient_order": 7,
|
||||
"ingredient_group": "Masa",
|
||||
"substitution_options": null,
|
||||
"substitution_ratio": null,
|
||||
"unit_cost": null,
|
||||
"total_cost": null,
|
||||
"cost_updated_at": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -3,79 +3,205 @@
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Molinos San José - Enterprise Division",
|
||||
"supplier_code": "SUP-HARINA-ENT-001",
|
||||
"business_name": "Molinos San José S.A. - Enterprise Division",
|
||||
"tax_id": "A12345678",
|
||||
"contact_person": "José Martínez",
|
||||
"email": "enterprise@molinossanjose.es",
|
||||
"name": "Harinas del Norte",
|
||||
"supplier_code": "SUP-HARINA-001",
|
||||
"business_name": "Harinas del Norte S.L.",
|
||||
"tax_id": "B12345678",
|
||||
"contact_person": "Jos\u00e9 Mart\u00ednez (Cuentas Enterprise)",
|
||||
"email": "pedidos@harinasdelnorte.es",
|
||||
"phone": "+34 945 123 456",
|
||||
"address": "Pol. Industrial Norte, Calle 5",
|
||||
"city": "Vitoria-Gasteiz",
|
||||
"postal_code": "01000",
|
||||
"country": "España",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"rating": 4.8,
|
||||
"rating": 4.5,
|
||||
"payment_terms": "60_DAYS",
|
||||
"minimum_order_amount": 1000.0,
|
||||
"minimum_order_amount": 200.0,
|
||||
"lead_time_days": 2,
|
||||
"contract_start_date": "2024-01-01T00:00:00Z",
|
||||
"contract_end_date": "2025-12-31T23:59:59Z",
|
||||
"created_at": "BASE_TS",
|
||||
"specialties": [
|
||||
"flour",
|
||||
"bread_improvers",
|
||||
"enterprise_supply"
|
||||
"bread_improvers"
|
||||
],
|
||||
"delivery_areas": [
|
||||
"Madrid",
|
||||
"Barcelona",
|
||||
"Valencia",
|
||||
"Basque Country"
|
||||
"Basque Country",
|
||||
"Navarra"
|
||||
],
|
||||
"enterprise_contract": true,
|
||||
"contract_type": "national_supply_agreement",
|
||||
"annual_volume_commitment": 50000.0,
|
||||
"preferred_supplier": true
|
||||
"enterprise_account": false
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Lescure - Enterprise Division",
|
||||
"supplier_code": "SUP-LACTEO-ENT-001",
|
||||
"business_name": "Lescure S.A. - Enterprise Division",
|
||||
"name": "L\u00e1cteos Gipuzkoa",
|
||||
"supplier_code": "SUP-LACTEO-001",
|
||||
"business_name": "L\u00e1cteos Gipuzkoa S.A.",
|
||||
"tax_id": "B87654321",
|
||||
"contact_person": "María López",
|
||||
"email": "enterprise@lescure.com",
|
||||
"contact_person": "Mar\u00eda L\u00f3pez (Cuentas Enterprise)",
|
||||
"email": "ventas@lacteosgipuzkoa.com",
|
||||
"phone": "+34 943 234 567",
|
||||
"address": "Calle Urola, 12",
|
||||
"city": "Donostia-San Sebastián",
|
||||
"city": "Donostia-San Sebasti\u00e1n",
|
||||
"postal_code": "20001",
|
||||
"country": "España",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"rating": 4.9,
|
||||
"rating": 4.8,
|
||||
"payment_terms": "30_DAYS",
|
||||
"minimum_order_amount": 500.0,
|
||||
"minimum_order_amount": 150.0,
|
||||
"lead_time_days": 1,
|
||||
"contract_start_date": "2024-03-15T00:00:00Z",
|
||||
"contract_end_date": "2025-12-31T23:59:59Z",
|
||||
"created_at": "BASE_TS",
|
||||
"specialties": [
|
||||
"milk",
|
||||
"butter",
|
||||
"cream",
|
||||
"enterprise_dairy"
|
||||
"cream"
|
||||
],
|
||||
"delivery_areas": [
|
||||
"Madrid",
|
||||
"Basque Country",
|
||||
"Cantabria"
|
||||
],
|
||||
"enterprise_account": false
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Frutas Frescas",
|
||||
"supplier_code": "SUP-FRUTA-001",
|
||||
"business_name": "Frutas Frescas S.L.",
|
||||
"tax_id": "B23456789",
|
||||
"contact_person": "Carlos Ruiz (Cuentas Enterprise)",
|
||||
"email": "info@frutasfrescas.es",
|
||||
"phone": "+34 915 345 678",
|
||||
"address": "Mercado Central, Pabell\u00f3n 3",
|
||||
"city": "Madrid",
|
||||
"postal_code": "28013",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"rating": 4.2,
|
||||
"payment_terms": "30_DAYS",
|
||||
"minimum_order_amount": 100.0,
|
||||
"lead_time_days": 1,
|
||||
"contract_start_date": "2024-06-01T00:00:00Z",
|
||||
"contract_end_date": "2025-12-31T23:59:59Z",
|
||||
"created_at": "BASE_TS",
|
||||
"specialties": [
|
||||
"fruits",
|
||||
"vegetables",
|
||||
"citrus"
|
||||
],
|
||||
"delivery_areas": [
|
||||
"Madrid",
|
||||
"Toledo",
|
||||
"Guadalajara"
|
||||
],
|
||||
"enterprise_account": false
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000004",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Sal de Mar",
|
||||
"supplier_code": "SUP-SAL-001",
|
||||
"business_name": "Sal de Mar S.A.",
|
||||
"tax_id": "B34567890",
|
||||
"contact_person": "Ana Mart\u00ednez (Cuentas Enterprise)",
|
||||
"email": "ventas@saldemar.com",
|
||||
"phone": "+34 965 456 789",
|
||||
"address": "Calle Salinera, 8",
|
||||
"city": "Alicante",
|
||||
"postal_code": "03001",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"rating": 4.7,
|
||||
"payment_terms": "60_DAYS",
|
||||
"minimum_order_amount": 50.0,
|
||||
"lead_time_days": 3,
|
||||
"contract_start_date": "2024-01-01T00:00:00Z",
|
||||
"contract_end_date": "2025-12-31T23:59:59Z",
|
||||
"created_at": "BASE_TS",
|
||||
"specialties": [
|
||||
"salt",
|
||||
"sea_salt",
|
||||
"gourmet_salt"
|
||||
],
|
||||
"delivery_areas": [
|
||||
"Madrid",
|
||||
"Valencia",
|
||||
"Murcia"
|
||||
],
|
||||
"enterprise_account": false
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000005",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Envases Pro",
|
||||
"supplier_code": "SUP-ENVASE-001",
|
||||
"business_name": "Envases Pro S.L.",
|
||||
"tax_id": "B45678901",
|
||||
"contact_person": "Luis G\u00f3mez (Cuentas Enterprise)",
|
||||
"email": "comercial@envasespro.es",
|
||||
"phone": "+34 932 345 678",
|
||||
"address": "Calle Industrial, 15",
|
||||
"city": "Barcelona",
|
||||
"postal_code": "08019",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"rating": 4.0,
|
||||
"payment_terms": "60_DAYS",
|
||||
"minimum_order_amount": 300.0,
|
||||
"lead_time_days": 5,
|
||||
"contract_start_date": "2024-01-01T00:00:00Z",
|
||||
"contract_end_date": "2025-12-31T23:59:59Z",
|
||||
"created_at": "BASE_TS",
|
||||
"specialties": [
|
||||
"packaging",
|
||||
"bags",
|
||||
"boxes"
|
||||
],
|
||||
"delivery_areas": [
|
||||
"Madrid",
|
||||
"Barcelona",
|
||||
"Valencia",
|
||||
"Basque Country"
|
||||
"Zaragoza"
|
||||
],
|
||||
"enterprise_contract": true,
|
||||
"contract_type": "premium_dairy_supply",
|
||||
"annual_volume_commitment": 12000.0,
|
||||
"preferred_supplier": true,
|
||||
"organic_certified": true
|
||||
"enterprise_account": false
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000006",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Levaduras Spain",
|
||||
"supplier_code": "SUP-LEVADURA-001",
|
||||
"business_name": "Levaduras Spain S.A.",
|
||||
"tax_id": "B56789012",
|
||||
"contact_person": "Sof\u00eda Fern\u00e1ndez (Cuentas Enterprise)",
|
||||
"email": "ventas@levadurasspain.com",
|
||||
"phone": "+34 976 567 890",
|
||||
"address": "Calle Fermentaci\u00f3n, 3",
|
||||
"city": "Zaragoza",
|
||||
"postal_code": "50001",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"rating": 4.9,
|
||||
"payment_terms": "60_DAYS",
|
||||
"minimum_order_amount": 100.0,
|
||||
"lead_time_days": 2,
|
||||
"contract_start_date": "2024-01-01T00:00:00Z",
|
||||
"contract_end_date": "2025-12-31T23:59:59Z",
|
||||
"created_at": "BASE_TS",
|
||||
"specialties": [
|
||||
"yeast",
|
||||
"baking_yeast",
|
||||
"dry_yeast"
|
||||
],
|
||||
"delivery_areas": [
|
||||
"Madrid",
|
||||
"Zaragoza",
|
||||
"Navarra"
|
||||
],
|
||||
"enterprise_account": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,92 +1,532 @@
|
||||
{
|
||||
"equipment": [
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000000001",
|
||||
"id": "6ad0f2c5-bacb-49e9-b6e3-7e56dbf72b2b",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Horno Rotativo Enterprise - Línea 1",
|
||||
"type": "oven",
|
||||
"model": "Sveba Dahlen DC-32 Enterprise",
|
||||
"serial_number": "SD-ENT-2023-001",
|
||||
"location": "Central Production Facility - Madrid",
|
||||
"manufacturer": "Sveba Dahlen",
|
||||
"firmware_version": "4.2.1",
|
||||
"name": "Horno Rotativo Industrial 1",
|
||||
"manufacturer": "Wiesheu",
|
||||
"model": "MATADOR M8 Rack Oven",
|
||||
"status": "OPERATIONAL",
|
||||
"install_date": "BASE_TS - 215d 18h",
|
||||
"last_maintenance_date": "BASE_TS - 6d 18h",
|
||||
"next_maintenance_date": "BASE_TS + 84d 18h",
|
||||
"location": "Central Production - \u00c1rea 1",
|
||||
"iot_enabled": false,
|
||||
"type": "oven",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 15d",
|
||||
"next_maintenance_date": "BASE_TS + 75d",
|
||||
"capacity": 320,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": 95.0,
|
||||
"uptime_percentage": 97.0,
|
||||
"energy_usage_kwh": 85.0,
|
||||
"power_kw": 90.0,
|
||||
"capacity": 32.0,
|
||||
"weight_kg": 2500.0,
|
||||
"current_temperature": 230.0,
|
||||
"target_temperature": 230.0,
|
||||
"iot_enabled": true,
|
||||
"iot_protocol": "MQTT",
|
||||
"iot_endpoint": "iot.panaderiacentral.com",
|
||||
"iot_port": 1883,
|
||||
"iot_connection_status": "CONNECTED",
|
||||
"iot_last_connected": "2025-01-15T05:45:00Z",
|
||||
"supports_realtime": true,
|
||||
"poll_interval_seconds": 10,
|
||||
"temperature_zones": 4,
|
||||
"supports_humidity": true,
|
||||
"supports_energy_monitoring": true,
|
||||
"supports_remote_control": true,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": "Equipo principal para producción masiva",
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"enterprise_asset": true,
|
||||
"shared_locations": [
|
||||
"Madrid Centro",
|
||||
"Barcelona Gràcia",
|
||||
"Valencia Ruzafa"
|
||||
]
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "20fce716-1db8-4a9b-beb9-5cba1095e349",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Horno Rotativo Industrial 2",
|
||||
"manufacturer": "Wiesheu",
|
||||
"model": "MATADOR M8 Rack Oven",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea 1",
|
||||
"iot_enabled": false,
|
||||
"type": "oven",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 10d",
|
||||
"next_maintenance_date": "BASE_TS + 80d",
|
||||
"capacity": 320,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "b91e6fff-3df2-4634-bd3a-c8b6e310b262",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Horno Rotativo Industrial 3",
|
||||
"manufacturer": "Wachtel",
|
||||
"model": "Piccolo Rack Oven",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea 2",
|
||||
"iot_enabled": false,
|
||||
"type": "oven",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 8d",
|
||||
"next_maintenance_date": "BASE_TS + 82d",
|
||||
"capacity": 240,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "6892d6d5-5918-4164-8b5a-4ec305d80001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Amasadora Industrial 1",
|
||||
"manufacturer": "Diosna",
|
||||
"model": "W240 Spiral Mixer",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea Mezcla",
|
||||
"iot_enabled": false,
|
||||
"type": "mixer",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 12d",
|
||||
"next_maintenance_date": "BASE_TS + 78d",
|
||||
"capacity": 240,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "3333fc20-ee58-4ca7-aad7-be336b94abdb",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Amasadora Industrial 2",
|
||||
"manufacturer": "Diosna",
|
||||
"model": "W240 Spiral Mixer",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea Mezcla",
|
||||
"iot_enabled": false,
|
||||
"type": "mixer",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 14d",
|
||||
"next_maintenance_date": "BASE_TS + 76d",
|
||||
"capacity": 240,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "19239b69-d93e-475f-8632-f77823e1b583",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Fermentadora Industrial 1",
|
||||
"manufacturer": "Sveba Dahlen",
|
||||
"model": "P-Series Proofer",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea Fermentaci\u00f3n",
|
||||
"iot_enabled": false,
|
||||
"type": "proofer",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 20d",
|
||||
"next_maintenance_date": "BASE_TS + 70d",
|
||||
"capacity": 200,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "6da854c6-77b7-49b9-887e-6177442aebbb",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Divisora Autom\u00e1tica",
|
||||
"manufacturer": "Benier",
|
||||
"model": "Multi Divider Pro",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea Divisi\u00f3n",
|
||||
"iot_enabled": false,
|
||||
"type": "other",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 18d",
|
||||
"next_maintenance_date": "BASE_TS + 72d",
|
||||
"capacity": 3000,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "a0b631a2-a36b-417e-8926-e97304319649",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Laminadora Industrial",
|
||||
"manufacturer": "Rondo",
|
||||
"model": "Doge 630 Sheeter",
|
||||
"status": "OPERATIONAL",
|
||||
"location": "Central Production - \u00c1rea Laminado",
|
||||
"iot_enabled": false,
|
||||
"type": "other",
|
||||
"install_date": "BASE_TS",
|
||||
"last_maintenance_date": "BASE_TS - 22d",
|
||||
"next_maintenance_date": "BASE_TS + 68d",
|
||||
"capacity": 150,
|
||||
"serial_number": null,
|
||||
"firmware_version": null,
|
||||
"maintenance_interval_days": 90,
|
||||
"efficiency_percentage": null,
|
||||
"uptime_percentage": null,
|
||||
"energy_usage_kwh": null,
|
||||
"power_kw": null,
|
||||
"weight_kg": null,
|
||||
"current_temperature": null,
|
||||
"target_temperature": null,
|
||||
"iot_protocol": null,
|
||||
"iot_endpoint": null,
|
||||
"iot_port": null,
|
||||
"iot_connection_status": null,
|
||||
"iot_last_connected": null,
|
||||
"supports_realtime": false,
|
||||
"poll_interval_seconds": null,
|
||||
"temperature_zones": null,
|
||||
"supports_humidity": false,
|
||||
"supports_energy_monitoring": false,
|
||||
"supports_remote_control": false,
|
||||
"is_active": true,
|
||||
"notes": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
}
|
||||
],
|
||||
"production_batches": [
|
||||
"quality_checks": [
|
||||
{
|
||||
"id": "30000000-0000-0000-0000-000000002001",
|
||||
"id": "70000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"batch_number": "ENT-BAG-20250115-001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
||||
"equipment_id": "30000000-0000-0000-0000-000000000001",
|
||||
"status": "IN_PROGRESS",
|
||||
"start_time": "BASE_TS + 30m",
|
||||
"end_time": "BASE_TS + 4h 30m",
|
||||
"planned_quantity": 250.0,
|
||||
"actual_quantity": 200.0,
|
||||
"waste_quantity": 5.0,
|
||||
"quality_status": "PENDING",
|
||||
"production_line": "Linea 1 - Baguettes",
|
||||
"shift": "Morning",
|
||||
"supervisor_id": "50000000-0000-0000-0000-000000000011",
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS",
|
||||
"enterprise_batch": true,
|
||||
"production_facility": "Central Production Facility - Madrid",
|
||||
"distribution_plan": [
|
||||
"batch_id": "40000000-0000-0000-0000-000000000001",
|
||||
"check_type": "visual_inspection",
|
||||
"check_time": "2025-01-08T14:30:00Z",
|
||||
"checker_id": "50000000-0000-0000-0000-000000000007",
|
||||
"quality_score": 9.5,
|
||||
"pass_fail": true,
|
||||
"defect_count": 2,
|
||||
"defect_types": [
|
||||
{
|
||||
"location": "Madrid Centro",
|
||||
"quantity": 100.0,
|
||||
"delivery_time": "2025-01-15T12:00:00Z"
|
||||
},
|
||||
{
|
||||
"location": "Barcelona Gràcia",
|
||||
"quantity": 60.0,
|
||||
"delivery_time": "2025-01-15T14:00:00Z"
|
||||
},
|
||||
{
|
||||
"location": "Valencia Ruzafa",
|
||||
"quantity": 40.0,
|
||||
"delivery_time": "2025-01-15T16:00:00Z"
|
||||
"defect_type": "burnt",
|
||||
"quantity": 2.0,
|
||||
"severity": "minor"
|
||||
}
|
||||
],
|
||||
"staff_assigned": []
|
||||
"check_notes": "Excelente aspecto y textura, 2 unidades con quemaduras leves (dentro de tolerancia)",
|
||||
"corrective_actions": null,
|
||||
"created_at": "BASE_TS - 7d 8h 30m",
|
||||
"updated_at": "BASE_TS - 7d 8h 45m"
|
||||
},
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"batch_id": "40000000-0000-0000-0000-000000000002",
|
||||
"check_type": "dimensional_check",
|
||||
"check_time": "2025-01-08T14:45:00Z",
|
||||
"checker_id": "50000000-0000-0000-0000-000000000007",
|
||||
"quality_score": 9.2,
|
||||
"pass_fail": true,
|
||||
"defect_count": 3,
|
||||
"defect_types": [
|
||||
{
|
||||
"defect_type": "misshapen",
|
||||
"quantity": 3.0,
|
||||
"severity": "minor"
|
||||
}
|
||||
],
|
||||
"check_notes": "Buen desarrollo y laminado, 3 unidades con forma irregular (dentro de tolerancia)",
|
||||
"corrective_actions": null,
|
||||
"created_at": "BASE_TS - 7d 8h 45m",
|
||||
"updated_at": "BASE_TS - 7d 9h"
|
||||
},
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"batch_id": "40000000-0000-0000-0000-000000000001",
|
||||
"check_type": "taste_test",
|
||||
"check_time": "2025-01-09T14:30:00Z",
|
||||
"checker_id": "50000000-0000-0000-0000-000000000007",
|
||||
"quality_score": 6.5,
|
||||
"pass_fail": false,
|
||||
"defect_count": 10,
|
||||
"defect_types": [
|
||||
{
|
||||
"defect_type": "off_taste",
|
||||
"quantity": 10.0,
|
||||
"severity": "major"
|
||||
}
|
||||
],
|
||||
"check_notes": "\u26a0\ufe0f CRITICAL: Sabor amargo en el chocolate, posible problema con proveedor de cacao",
|
||||
"corrective_actions": [
|
||||
"Lote puesto en cuarentena",
|
||||
"Notificado proveedor de chocolate",
|
||||
"Programada nueva prueba con muestra diferente"
|
||||
],
|
||||
"created_at": "BASE_TS - 6d 8h 30m",
|
||||
"updated_at": "BASE_TS - 6d 9h"
|
||||
},
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000000004",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"batch_id": "40000000-0000-0000-0000-000000000001",
|
||||
"check_type": "visual_inspection",
|
||||
"check_time": "BASE_TS + 0h",
|
||||
"checker_id": null,
|
||||
"quality_score": 0.0,
|
||||
"pass_fail": false,
|
||||
"defect_count": 0,
|
||||
"defect_types": null,
|
||||
"check_notes": "\u26a0\ufe0f PENDING: Control de calidad programado para lote en producci\u00f3n",
|
||||
"corrective_actions": null,
|
||||
"created_at": "BASE_TS",
|
||||
"updated_at": "BASE_TS"
|
||||
}
|
||||
],
|
||||
"quality_check_templates": [],
|
||||
"batches": [
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"batch_number": "BATCH-ENT-0001",
|
||||
"status": "completed",
|
||||
"quantity_produced": 100,
|
||||
"quantity_good": 100,
|
||||
"quantity_defective": 0,
|
||||
"production_date": "BASE_TS - 1d",
|
||||
"expiration_date": "BASE_TS + 3d",
|
||||
"production_line": "Linea 1",
|
||||
"shift": "morning",
|
||||
"produced_by": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
|
||||
"approved_by": "80765906-0074-4206-8f58-5867df1975fd",
|
||||
"created_at": "BASE_TS - 1d",
|
||||
"updated_at": "BASE_TS - 1d",
|
||||
"is_active": true,
|
||||
"ingredients": [
|
||||
{
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity_used": 50.0,
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000011",
|
||||
"quantity_used": 10.0,
|
||||
"unit": "kg"
|
||||
}
|
||||
],
|
||||
"product_name": "Baguette Tradicional",
|
||||
"planned_start_time": "BASE_TS",
|
||||
"planned_end_time": "BASE_TS + 4h",
|
||||
"actual_start_time": "BASE_TS - 1d",
|
||||
"actual_end_time": "BASE_TS - 1d + 4h",
|
||||
"planned_quantity": 100.0,
|
||||
"planned_duration_minutes": 240
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000002",
|
||||
"product_id": "20000000-0000-0000-0000-000000000002",
|
||||
"batch_number": "BATCH-ENT-0002",
|
||||
"status": "completed",
|
||||
"quantity_produced": 150,
|
||||
"quantity_good": 150,
|
||||
"quantity_defective": 0,
|
||||
"production_date": "BASE_TS - 2d",
|
||||
"expiration_date": "BASE_TS + 2d",
|
||||
"production_line": "Linea 2",
|
||||
"shift": "morning",
|
||||
"produced_by": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
|
||||
"approved_by": "80765906-0074-4206-8f58-5867df1975fd",
|
||||
"created_at": "BASE_TS - 2d",
|
||||
"updated_at": "BASE_TS - 2d",
|
||||
"is_active": true,
|
||||
"ingredients": [
|
||||
{
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity_used": 60.0,
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000011",
|
||||
"quantity_used": 12.0,
|
||||
"unit": "kg"
|
||||
}
|
||||
],
|
||||
"product_name": "Croissant de Mantequilla",
|
||||
"planned_start_time": "BASE_TS",
|
||||
"planned_end_time": "BASE_TS + 4h",
|
||||
"actual_start_time": "BASE_TS - 1d",
|
||||
"actual_end_time": "BASE_TS - 1d + 4h",
|
||||
"planned_quantity": 100.0,
|
||||
"planned_duration_minutes": 240
|
||||
},
|
||||
{
|
||||
"id": "40000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"recipe_id": "30000000-0000-0000-0000-000000000003",
|
||||
"product_id": "20000000-0000-0000-0000-000000000003",
|
||||
"batch_number": "BATCH-ENT-0003",
|
||||
"status": "completed",
|
||||
"quantity_produced": 200,
|
||||
"quantity_good": 200,
|
||||
"quantity_defective": 0,
|
||||
"production_date": "BASE_TS - 3d",
|
||||
"expiration_date": "BASE_TS + 1d",
|
||||
"production_line": "Linea 3",
|
||||
"shift": "morning",
|
||||
"produced_by": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
|
||||
"approved_by": "80765906-0074-4206-8f58-5867df1975fd",
|
||||
"created_at": "BASE_TS - 3d",
|
||||
"updated_at": "BASE_TS - 3d",
|
||||
"is_active": true,
|
||||
"ingredients": [
|
||||
{
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity_used": 70.0,
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000011",
|
||||
"quantity_used": 14.0,
|
||||
"unit": "kg"
|
||||
}
|
||||
],
|
||||
"product_name": "Pan de Pueblo con Masa Madre",
|
||||
"planned_start_time": "BASE_TS",
|
||||
"planned_end_time": "BASE_TS + 4h",
|
||||
"actual_start_time": "BASE_TS - 1d",
|
||||
"actual_end_time": "BASE_TS - 1d + 4h",
|
||||
"planned_quantity": 100.0,
|
||||
"planned_duration_minutes": 240
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,62 +1,795 @@
|
||||
{
|
||||
"procurement_plans": [],
|
||||
"procurement_requirements": [],
|
||||
"purchase_orders": [
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000002001",
|
||||
"id": "50000000-0000-0000-0000-0000000000c1",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "ENT-PO-20250115-001",
|
||||
"po_number": "PO-LATE-0001",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000001",
|
||||
"order_date": "BASE_TS - 1d 4h",
|
||||
"expected_delivery_date": "BASE_TS + 1d 4h",
|
||||
"order_date": "BASE_TS - 1d",
|
||||
"status": "confirmed",
|
||||
"priority": "high",
|
||||
"required_delivery_date": "BASE_TS - 4h",
|
||||
"estimated_delivery_date": "BASE_TS - 4h",
|
||||
"expected_delivery_date": "BASE_TS - 4h",
|
||||
"subtotal": 558.0,
|
||||
"tax_amount": 117.18,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 4866.26,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "URGENTE: Entrega en almac\u00e9n trasero",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": true,
|
||||
"sent_to_supplier_at": "BASE_TS - 1d",
|
||||
"supplier_confirmation_date": "BASE_TS - 23h",
|
||||
"supplier_reference": "SUP-REF-LATE-001",
|
||||
"notes": "\u26a0\ufe0f EDGE CASE: Delivery should have arrived 4 hours ago - will trigger red supplier delay alert",
|
||||
"reasoning_data": {
|
||||
"type": "low_stock_detection",
|
||||
"parameters": {
|
||||
"supplier_name": "Harinas del Norte",
|
||||
"product_names": [
|
||||
"Harina de Trigo T55"
|
||||
],
|
||||
"product_count": 1,
|
||||
"current_stock": 15,
|
||||
"required_stock": 150,
|
||||
"days_until_stockout": 1,
|
||||
"threshold_percentage": 20,
|
||||
"stock_percentage": 10
|
||||
},
|
||||
"consequence": {
|
||||
"type": "stockout_risk",
|
||||
"severity": "high",
|
||||
"impact_days": 1,
|
||||
"affected_products": [
|
||||
"Baguette Tradicional",
|
||||
"Pan de Pueblo"
|
||||
],
|
||||
"estimated_lost_orders": 25
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true,
|
||||
"delivery_delayed": true,
|
||||
"delay_hours": 4
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-0000000000c2",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-UPCOMING-0001",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000002",
|
||||
"order_date": "BASE_TS - 1h",
|
||||
"status": "confirmed",
|
||||
"priority": "medium",
|
||||
"required_delivery_date": "BASE_TS + 2h30m",
|
||||
"estimated_delivery_date": "BASE_TS + 2h30m",
|
||||
"expected_delivery_date": "BASE_TS + 2h30m",
|
||||
"subtotal": 324.2,
|
||||
"tax_amount": 68.08,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 2885.96,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Mantener refrigerado",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": true,
|
||||
"sent_to_supplier_at": "BASE_TS - 1h",
|
||||
"supplier_confirmation_date": "BASE_TS - 30m",
|
||||
"supplier_reference": "SUP-REF-UPCOMING-001",
|
||||
"notes": "\u26a0\ufe0f EDGE CASE: Delivery expected in 2.5 hours - will show in upcoming deliveries",
|
||||
"reasoning_data": {
|
||||
"type": "production_requirement",
|
||||
"parameters": {
|
||||
"supplier_name": "L\u00e1cteos Gipuzkoa",
|
||||
"product_names": [
|
||||
"Mantequilla sin Sal",
|
||||
"Leche Entera"
|
||||
],
|
||||
"product_count": 2,
|
||||
"production_batches": 3,
|
||||
"required_by_date": "tomorrow morning"
|
||||
},
|
||||
"consequence": {
|
||||
"type": "production_delay",
|
||||
"severity": "high",
|
||||
"impact": "blocked_production"
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true,
|
||||
"upcoming_delivery": true,
|
||||
"hours_until_delivery": 2.5
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-001",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000001",
|
||||
"status": "completed",
|
||||
"priority": "normal",
|
||||
"subtotal": 801.0,
|
||||
"tax_amount": 168.21,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 6924.47,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Entrega en almac\u00e9n trasero",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": false,
|
||||
"supplier_reference": "SUP-REF-2025-001",
|
||||
"notes": "Pedido habitual semanal de harinas",
|
||||
"reasoning_data": {
|
||||
"type": "safety_stock_replenishment",
|
||||
"parameters": {
|
||||
"supplier_name": "Harinas del Norte",
|
||||
"product_names": [
|
||||
"Harina de Trigo T55",
|
||||
"Harina de Trigo T65",
|
||||
"Harina de Centeno",
|
||||
"Sal Marina Fina"
|
||||
],
|
||||
"product_count": 4,
|
||||
"current_safety_stock": 120,
|
||||
"target_safety_stock": 300,
|
||||
"reorder_point": 150
|
||||
},
|
||||
"consequence": {
|
||||
"type": "stockout_risk",
|
||||
"severity": "medium",
|
||||
"impact": "reduced_buffer"
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true,
|
||||
"recurring_order": true,
|
||||
"schedule": "weekly"
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005",
|
||||
"order_date": "BASE_TS - 7d",
|
||||
"required_delivery_date": "BASE_TS - 2d",
|
||||
"estimated_delivery_date": "BASE_TS - 2d",
|
||||
"expected_delivery_date": "BASE_TS - 2d",
|
||||
"sent_to_supplier_at": "BASE_TS - 7d",
|
||||
"supplier_confirmation_date": "BASE_TS - 6d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-002",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000002",
|
||||
"status": "completed",
|
||||
"priority": "normal",
|
||||
"subtotal": 573.6,
|
||||
"tax_amount": 120.46,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 4998.42,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Mantener refrigerado",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": false,
|
||||
"supplier_reference": "LGIPUZ-2025-042",
|
||||
"notes": "Pedido de l\u00e1cteos para producci\u00f3n semanal",
|
||||
"reasoning_data": {
|
||||
"type": "forecast_demand",
|
||||
"parameters": {
|
||||
"supplier_name": "L\u00e1cteos Gipuzkoa",
|
||||
"product_names": [
|
||||
"Mantequilla sin Sal 82% MG"
|
||||
],
|
||||
"product_count": 1,
|
||||
"forecast_period_days": 7,
|
||||
"total_demand": 80,
|
||||
"forecast_confidence": 88
|
||||
},
|
||||
"consequence": {
|
||||
"type": "insufficient_supply",
|
||||
"severity": "medium",
|
||||
"impact_days": 7
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"forecast_confidence": 0.88,
|
||||
"ai_assisted": true,
|
||||
"perishable_goods": true
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005",
|
||||
"order_date": "BASE_TS - 5d",
|
||||
"required_delivery_date": "BASE_TS - 1d",
|
||||
"estimated_delivery_date": "BASE_TS - 1d",
|
||||
"expected_delivery_date": "BASE_TS - 1d",
|
||||
"sent_to_supplier_at": "BASE_TS - 5d",
|
||||
"supplier_confirmation_date": "BASE_TS - 4d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-003",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000003",
|
||||
"status": "pending_approval",
|
||||
"total_amount": 650.0,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Pedido semanal de harina para producción central",
|
||||
"enterprise_order": true,
|
||||
"contract_reference": "ENT-HARINA-2024-001",
|
||||
"payment_terms": "60_DAYS",
|
||||
"delivery_location": "Central Warehouse - Madrid",
|
||||
"incoterms": "DAP"
|
||||
"priority": "high",
|
||||
"subtotal": 490.0,
|
||||
"tax_amount": 102.9,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 24.5,
|
||||
"total_amount": 4118.8,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Requiere inspecci\u00f3n de calidad",
|
||||
"delivery_contact": "Pedro Calidad",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": true,
|
||||
"notes": "Pedido urgente para nueva l\u00ednea de productos ecol\u00f3gicos - Requiere aprobaci\u00f3n del gerente",
|
||||
"reasoning_data": {
|
||||
"type": "supplier_contract",
|
||||
"parameters": {
|
||||
"supplier_name": "Productos Ecol\u00f3gicos del Norte",
|
||||
"product_names": [
|
||||
"Harina de Espelta Ecol\u00f3gica"
|
||||
],
|
||||
"product_count": 1,
|
||||
"contract_terms": "certified_supplier",
|
||||
"contract_quantity": 200.0,
|
||||
"current_stock": 186.36,
|
||||
"reorder_point": 50.0
|
||||
},
|
||||
"consequence": {
|
||||
"type": "quality_assurance",
|
||||
"severity": "medium",
|
||||
"impact": "new_product_line_delay"
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "manual",
|
||||
"ai_assisted": true
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005",
|
||||
"order_date": "BASE_TS - 3d",
|
||||
"required_delivery_date": "BASE_TS + 1d",
|
||||
"estimated_delivery_date": "BASE_TS + 2d",
|
||||
"expected_delivery_date": "BASE_TS + 2d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000004",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-004-URGENT",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000001",
|
||||
"status": "confirmed",
|
||||
"priority": "urgent",
|
||||
"subtotal": 1130.5,
|
||||
"tax_amount": 237.41,
|
||||
"shipping_cost": 15.0,
|
||||
"discount_amount": 52.0,
|
||||
"total_amount": 9316.3,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "URGENTE - Entrega antes de las 10:00 AM",
|
||||
"delivery_contact": "Isabel Producci\u00f3n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": false,
|
||||
"supplier_reference": "SUP-URGENT-2025-005",
|
||||
"notes": "EDGE CASE: Entrega retrasada - debi\u00f3 llegar hace 4 horas. Stock cr\u00edtico de harina",
|
||||
"reasoning_data": {
|
||||
"type": "low_stock_detection",
|
||||
"parameters": {
|
||||
"supplier_name": "Harinas del Norte",
|
||||
"product_names": [
|
||||
"Harina de Trigo T55",
|
||||
"Levadura Fresca"
|
||||
],
|
||||
"product_count": 2,
|
||||
"current_stock": 0,
|
||||
"required_stock": 1000,
|
||||
"days_until_stockout": 0,
|
||||
"threshold_percentage": 20,
|
||||
"stock_percentage": 0
|
||||
},
|
||||
"consequence": {
|
||||
"type": "stockout_risk",
|
||||
"severity": "critical",
|
||||
"impact_days": 0,
|
||||
"affected_products": [
|
||||
"Baguette Tradicional",
|
||||
"Croissant"
|
||||
],
|
||||
"estimated_lost_orders": 50
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true,
|
||||
"delivery_delayed": true,
|
||||
"delay_hours": 4
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000006",
|
||||
"order_date": "BASE_TS - 0.5d",
|
||||
"required_delivery_date": "BASE_TS - 0.167d",
|
||||
"estimated_delivery_date": "BASE_TS + 0.083d",
|
||||
"expected_delivery_date": "BASE_TS - 0.167d",
|
||||
"sent_to_supplier_at": "BASE_TS - 0.5d",
|
||||
"supplier_confirmation_date": "BASE_TS - 0.4d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000007",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-007",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000004",
|
||||
"status": "completed",
|
||||
"priority": "normal",
|
||||
"subtotal": 488.5,
|
||||
"tax_amount": 102.58,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 4277.63,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Entrega en horario de ma\u00f1ana",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": false,
|
||||
"supplier_reference": "SUP-REF-2025-007",
|
||||
"notes": "Pedido de ingredientes especiales para l\u00ednea premium - Entregado hace 5 d\u00edas",
|
||||
"reasoning_data": {
|
||||
"type": "seasonal_demand",
|
||||
"parameters": {
|
||||
"supplier_name": "Ingredientes Premium del Sur",
|
||||
"product_names": [
|
||||
"Chocolate Negro 70% Cacao",
|
||||
"Almendras Laminadas",
|
||||
"Pasas de Corinto"
|
||||
],
|
||||
"product_count": 3,
|
||||
"season": "winter",
|
||||
"expected_demand_increase_pct": 35
|
||||
},
|
||||
"consequence": {
|
||||
"type": "missed_opportunity",
|
||||
"severity": "medium",
|
||||
"impact": "lost_seasonal_sales"
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true,
|
||||
"premium_line": true,
|
||||
"seasonal": true
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005",
|
||||
"order_date": "BASE_TS - 7d",
|
||||
"required_delivery_date": "BASE_TS - 5d",
|
||||
"estimated_delivery_date": "BASE_TS - 5d",
|
||||
"expected_delivery_date": "BASE_TS - 5d",
|
||||
"sent_to_supplier_at": "BASE_TS - 7d",
|
||||
"supplier_confirmation_date": "BASE_TS - 6d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000005",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-005",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000004",
|
||||
"status": "draft",
|
||||
"priority": "normal",
|
||||
"subtotal": 303.7,
|
||||
"tax_amount": 63.78,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 2712.36,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Llamar antes de entregar",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": false,
|
||||
"notes": "Pedido planificado para reposici\u00f3n semanal",
|
||||
"reasoning_data": {
|
||||
"type": "forecast_demand",
|
||||
"parameters": {
|
||||
"supplier_name": "Ingredientes Premium del Sur",
|
||||
"product_names": [
|
||||
"Specialty ingredients"
|
||||
],
|
||||
"product_count": 1,
|
||||
"forecast_period_days": 7,
|
||||
"total_demand": 280,
|
||||
"forecast_confidence": 82
|
||||
},
|
||||
"consequence": {
|
||||
"type": "insufficient_supply",
|
||||
"severity": "low",
|
||||
"impact_days": 7
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"forecast_confidence": 0.82,
|
||||
"ai_assisted": true,
|
||||
"draft_order": true
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005",
|
||||
"order_date": "BASE_TS",
|
||||
"required_delivery_date": "BASE_TS + 3d",
|
||||
"estimated_delivery_date": "BASE_TS + 3d",
|
||||
"expected_delivery_date": "BASE_TS + 3d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000006",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-006",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000002",
|
||||
"status": "sent_to_supplier",
|
||||
"priority": "high",
|
||||
"subtotal": 219.9,
|
||||
"tax_amount": 46.18,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 2002.56,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Mantener cadena de fr\u00edo - Entrega urgente para producci\u00f3n",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": false,
|
||||
"notes": "\u23f0 EDGE CASE: Entrega esperada en 6 horas - mantequilla para producci\u00f3n de croissants de ma\u00f1ana",
|
||||
"reasoning_data": {
|
||||
"type": "production_requirement",
|
||||
"parameters": {
|
||||
"supplier_name": "L\u00e1cteos Gipuzkoa",
|
||||
"product_names": [
|
||||
"Mantequilla sin Sal 82% MG"
|
||||
],
|
||||
"product_count": 1,
|
||||
"production_batches": 5,
|
||||
"required_by_date": "tomorrow 06:00"
|
||||
},
|
||||
"consequence": {
|
||||
"type": "production_delay",
|
||||
"severity": "high",
|
||||
"impact": "blocked_production"
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true,
|
||||
"urgent_production": true,
|
||||
"hours_until_needed": 12
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000006",
|
||||
"order_date": "BASE_TS - 0.5d",
|
||||
"required_delivery_date": "BASE_TS + 0.25d",
|
||||
"estimated_delivery_date": "BASE_TS + 0.25d",
|
||||
"expected_delivery_date": "BASE_TS + 0.25d",
|
||||
"sent_to_supplier_at": "BASE_TS - 0.5d"
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000000008",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_number": "PO-2025-008",
|
||||
"supplier_id": "40000000-0000-0000-0000-000000000004",
|
||||
"order_date": "BASE_TS - 0.25d",
|
||||
"status": "pending_approval",
|
||||
"priority": "medium",
|
||||
"required_delivery_date": "BASE_TS + 2d",
|
||||
"estimated_delivery_date": "BASE_TS + 2d",
|
||||
"expected_delivery_date": "BASE_TS + 2d",
|
||||
"subtotal": 220.0,
|
||||
"tax_amount": 46.2,
|
||||
"shipping_cost": 20.0,
|
||||
"discount_amount": 0.0,
|
||||
"total_amount": 2003.4,
|
||||
"currency": "EUR",
|
||||
"delivery_address": "Calle Panader\u00eda, 45, 28001 Madrid",
|
||||
"delivery_instructions": "Entrega en almac\u00e9n seco - Zona A",
|
||||
"delivery_contact": "Carlos Almac\u00e9n",
|
||||
"delivery_phone": "+34 910 123 456",
|
||||
"requires_approval": true,
|
||||
"notes": "Reposici\u00f3n de ingredientes b\u00e1sicos - Stock bajo en az\u00facar",
|
||||
"reasoning_data": {
|
||||
"type": "low_stock_detection",
|
||||
"parameters": {
|
||||
"supplier_name": "Distribuciones Alimentarias del Sur",
|
||||
"product_names": [
|
||||
"Az\u00facar Blanco Refinado"
|
||||
],
|
||||
"product_count": 1,
|
||||
"current_stock": 24.98,
|
||||
"required_stock": 120.0,
|
||||
"days_until_stockout": 3,
|
||||
"threshold_percentage": 66,
|
||||
"stock_percentage": 20
|
||||
},
|
||||
"consequence": {
|
||||
"type": "stockout_risk",
|
||||
"severity": "medium",
|
||||
"impact_days": 3,
|
||||
"affected_products": [
|
||||
"Croissants",
|
||||
"Napolitanas",
|
||||
"Pan Dulce"
|
||||
],
|
||||
"estimated_lost_orders": 15
|
||||
},
|
||||
"metadata": {
|
||||
"trigger_source": "orchestrator_auto",
|
||||
"ai_assisted": true
|
||||
}
|
||||
},
|
||||
"created_by": "50000000-0000-0000-0000-000000000005"
|
||||
}
|
||||
],
|
||||
"purchase_order_items": [
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000002101",
|
||||
"id": "51000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_id": "50000000-0000-0000-0000-000000002001",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000001",
|
||||
"quantity": 800.0,
|
||||
"unit_price": 0.8,
|
||||
"total_price": 640.0,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_item": true,
|
||||
"delivery_schedule": [
|
||||
{
|
||||
"delivery_date": "2025-01-16T10:00:00Z",
|
||||
"quantity": 800.0,
|
||||
"location": "Central Warehouse - Madrid"
|
||||
}
|
||||
]
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000001",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000001",
|
||||
"product_name": "Harina de Trigo T55",
|
||||
"product_code": "HAR-T55-001",
|
||||
"ordered_quantity": 500.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 0.85,
|
||||
"line_total": 460.0,
|
||||
"received_quantity": 500.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "50000000-0000-0000-0000-000000002102",
|
||||
"id": "51000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"po_id": "50000000-0000-0000-0000-000000002001",
|
||||
"ingredient_id": "10000000-0000-0000-0000-000000000002",
|
||||
"quantity": 12.5,
|
||||
"unit_price": 4.0,
|
||||
"total_price": 50.0,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_item": true,
|
||||
"delivery_schedule": [
|
||||
{
|
||||
"delivery_date": "2025-01-16T10:00:00Z",
|
||||
"quantity": 12.5,
|
||||
"location": "Central Warehouse - Madrid"
|
||||
}
|
||||
]
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000001",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000002",
|
||||
"product_name": "Harina de Trigo T65",
|
||||
"product_code": "HAR-T65-002",
|
||||
"ordered_quantity": 200.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 0.9,
|
||||
"line_total": 196.0,
|
||||
"received_quantity": 200.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000001",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000005",
|
||||
"product_name": "Harina de Centeno",
|
||||
"product_code": "HAR-CEN-005",
|
||||
"ordered_quantity": 100.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 1.06,
|
||||
"line_total": 115.0,
|
||||
"received_quantity": 100.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000004",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000001",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000031",
|
||||
"product_name": "Sal Marina Fina",
|
||||
"product_code": "BAS-SAL-001",
|
||||
"ordered_quantity": 50.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 0.55,
|
||||
"line_total": 30.0,
|
||||
"received_quantity": 50.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000005",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000002",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000011",
|
||||
"product_name": "Mantequilla sin Sal 82% MG",
|
||||
"product_code": "LAC-MAN-001",
|
||||
"ordered_quantity": 80.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 6.6,
|
||||
"line_total": 573.6,
|
||||
"received_quantity": 80.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000006",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000004",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000001",
|
||||
"product_name": "Harina de Trigo T55",
|
||||
"product_code": "HAR-T55-001",
|
||||
"ordered_quantity": 1000.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 0.84,
|
||||
"line_total": 910.0,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 1000.0,
|
||||
"notes": "URGENTE - Stock cr\u00edtico"
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000007",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000004",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000021",
|
||||
"product_name": "Levadura Fresca de Panader\u00eda",
|
||||
"product_code": "LEV-FRE-001",
|
||||
"ordered_quantity": 50.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 4.06,
|
||||
"line_total": 220.5,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 50.0,
|
||||
"notes": "Stock agotado - prioridad m\u00e1xima"
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000008",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000006",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000011",
|
||||
"product_name": "Mantequilla sin Sal 82% MG",
|
||||
"product_code": "LAC-MAN-001",
|
||||
"ordered_quantity": 30.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 6.74,
|
||||
"line_total": 219.9,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 30.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000009",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000007",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000041",
|
||||
"product_name": "Chocolate Negro 70% Cacao",
|
||||
"product_code": "ESP-CHO-001",
|
||||
"ordered_quantity": 20.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 14.26,
|
||||
"line_total": 310.0,
|
||||
"received_quantity": 20.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000010",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000007",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000042",
|
||||
"product_name": "Almendras Laminadas",
|
||||
"product_code": "ESP-ALM-002",
|
||||
"ordered_quantity": 15.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 8.19,
|
||||
"line_total": 133.5,
|
||||
"received_quantity": 15.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-000000000011",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000007",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000043",
|
||||
"product_name": "Pasas de Corinto",
|
||||
"product_code": "ESP-PAS-003",
|
||||
"ordered_quantity": 10.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 4.14,
|
||||
"line_total": 45.0,
|
||||
"received_quantity": 10.0,
|
||||
"remaining_quantity": 0.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a1",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-0000000000c1",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000001",
|
||||
"product_name": "Harina de Trigo T55",
|
||||
"product_code": "HAR-T55-001",
|
||||
"ordered_quantity": 600.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 0.86,
|
||||
"line_total": 558.0,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 600.0,
|
||||
"notes": "URGENTE - Pedido retrasado 4 horas"
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a2",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-0000000000c2",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000011",
|
||||
"product_name": "Mantequilla sin Sal 82% MG",
|
||||
"product_code": "LAC-MAN-001",
|
||||
"ordered_quantity": 35.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 6.59,
|
||||
"line_total": 250.6,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 35.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a3",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-0000000000c2",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000012",
|
||||
"product_name": "Leche Entera Fresca",
|
||||
"product_code": "LAC-LEC-002",
|
||||
"ordered_quantity": 80.0,
|
||||
"unit_of_measure": "liters",
|
||||
"unit_price": 0.85,
|
||||
"line_total": 73.6,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 80.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a4",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000003",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000006",
|
||||
"product_name": "Harina de Espelta Ecol\u00f3gica",
|
||||
"product_code": "HAR-ESP-006",
|
||||
"ordered_quantity": 200.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 2.25,
|
||||
"line_total": 490.0,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 200.0,
|
||||
"notes": "Ingrediente ecol\u00f3gico certificado para nueva l\u00ednea"
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a5",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000005",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000041",
|
||||
"product_name": "Chocolate Negro 70% Cacao",
|
||||
"product_code": "ESP-CHO-001",
|
||||
"ordered_quantity": 15.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 14.26,
|
||||
"line_total": 232.5,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 15.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a6",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000005",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000042",
|
||||
"product_name": "Almendras Laminadas",
|
||||
"product_code": "ESP-ALM-002",
|
||||
"ordered_quantity": 8.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 8.19,
|
||||
"line_total": 71.2,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 8.0
|
||||
},
|
||||
{
|
||||
"id": "51000000-0000-0000-0000-0000000000a7",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-000000000008",
|
||||
"inventory_product_id": "10000000-0000-0000-0000-000000000032",
|
||||
"product_name": "Az\u00facar Blanco Refinado",
|
||||
"product_code": "BAS-AZU-002",
|
||||
"ordered_quantity": 200.0,
|
||||
"unit_of_measure": "kilograms",
|
||||
"unit_price": 1.01,
|
||||
"line_total": 220.0,
|
||||
"received_quantity": 0.0,
|
||||
"remaining_quantity": 200.0,
|
||||
"notes": "Reposici\u00f3n stock bajo - Nivel cr\u00edtico detectado"
|
||||
}
|
||||
],
|
||||
"deliveries": []
|
||||
]
|
||||
}
|
||||
@@ -1,112 +1,200 @@
|
||||
{
|
||||
"customers": [
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000002001",
|
||||
"id": "A0000000-0000-4000-a000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"customer_code": "ENT-CUST-001",
|
||||
"name": "Grupo Hotelero Mediterráneo",
|
||||
"customer_type": "ENTERPRISE",
|
||||
"contact_person": "Luis Gómez",
|
||||
"email": "compras@grupohotelmed.com",
|
||||
"name": "Madrid - Salamanca",
|
||||
"customer_type": "WHOLESALE",
|
||||
"email": "mad@panaderiaartesana.es",
|
||||
"phone": "+34 910 123 400",
|
||||
"address": "Calle de Serrano, 48",
|
||||
"city": "Madrid",
|
||||
"postal_code": "28001",
|
||||
"created_at": "BASE_TS - 365d",
|
||||
"customer_code": "CUST-0001",
|
||||
"contact_person": "N/A",
|
||||
"total_orders": 0,
|
||||
"total_spent": 0.0,
|
||||
"status": "ACTIVE",
|
||||
"country": "Espa\u00f1a",
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "B0000000-0000-4000-a000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Barcelona - Eixample",
|
||||
"customer_type": "WHOLESALE",
|
||||
"email": "bcn@panaderiaartesana.es",
|
||||
"phone": "+34 911 123 401",
|
||||
"address": "Passeig de Gr\u00e0cia, 92",
|
||||
"city": "Barcelona",
|
||||
"postal_code": "08008",
|
||||
"created_at": "BASE_TS - 365d",
|
||||
"customer_code": "CUST-0001",
|
||||
"contact_person": "N/A",
|
||||
"total_orders": 0,
|
||||
"total_spent": 0.0,
|
||||
"status": "ACTIVE",
|
||||
"country": "Espa\u00f1a",
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "C0000000-0000-4000-a000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Valencia - Ruzafa",
|
||||
"customer_type": "WHOLESALE",
|
||||
"email": "vlc@panaderiaartesana.es",
|
||||
"phone": "+34 912 123 402",
|
||||
"address": "Calle de Sueca, 25",
|
||||
"city": "Valencia",
|
||||
"postal_code": "46006",
|
||||
"created_at": "BASE_TS - 365d",
|
||||
"customer_code": "CUST-0001",
|
||||
"contact_person": "N/A",
|
||||
"total_orders": 0,
|
||||
"total_spent": 0.0,
|
||||
"status": "ACTIVE",
|
||||
"country": "Espa\u00f1a",
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "D0000000-0000-4000-a000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Seville - Triana",
|
||||
"customer_type": "WHOLESALE",
|
||||
"email": "sev@panaderiaartesana.es",
|
||||
"phone": "+34 913 123 403",
|
||||
"address": "Calle Betis, 15",
|
||||
"city": "Seville",
|
||||
"postal_code": "41010",
|
||||
"created_at": "BASE_TS - 365d",
|
||||
"customer_code": "CUST-0001",
|
||||
"contact_person": "N/A",
|
||||
"total_orders": 0,
|
||||
"total_spent": 0.0,
|
||||
"status": "ACTIVE",
|
||||
"country": "Espa\u00f1a",
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "E0000000-0000-4000-a000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"name": "Bilbao - Casco Viejo",
|
||||
"customer_type": "WHOLESALE",
|
||||
"email": "bil@panaderiaartesana.es",
|
||||
"phone": "+34 914 123 404",
|
||||
"address": "Calle Somera, 8",
|
||||
"city": "Bilbao",
|
||||
"postal_code": "48005",
|
||||
"created_at": "BASE_TS - 365d",
|
||||
"customer_code": "CUST-0001",
|
||||
"contact_person": "N/A",
|
||||
"total_orders": 0,
|
||||
"total_spent": 0.0,
|
||||
"status": "ACTIVE",
|
||||
"country": "Espa\u00f1a",
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"customer_code": "CUST-001",
|
||||
"name": "Restaurante El Buen Yantar",
|
||||
"customer_type": "WHOLESALE",
|
||||
"contact_person": "Luis G\u00f3mez",
|
||||
"email": "compras@buenyantar.es",
|
||||
"phone": "+34 912 345 678",
|
||||
"address": "Calle Gran Vía, 45",
|
||||
"address": "Calle Mayor, 45",
|
||||
"city": "Madrid",
|
||||
"postal_code": "28013",
|
||||
"country": "España",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"total_orders": 125,
|
||||
"total_spent": 18500.75,
|
||||
"total_orders": 45,
|
||||
"total_spent": 3250.75,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Cadena hotelera con 15 ubicaciones en España",
|
||||
"contract_type": "national_supply_agreement",
|
||||
"annual_volume_commitment": 25000.0,
|
||||
"enterprise_customer": true,
|
||||
"delivery_locations": [
|
||||
"Madrid Centro",
|
||||
"Barcelona Gràcia",
|
||||
"Valencia Ruzafa",
|
||||
"Sevilla Santa Cruz",
|
||||
"Málaga Centro"
|
||||
]
|
||||
}
|
||||
],
|
||||
"customer_orders": [
|
||||
"notes": "Regular wholesale customer - weekly orders"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000002001",
|
||||
"id": "60000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"order_number": "ENT-ORD-20250115-001",
|
||||
"order_date": "BASE_TS - 1d 5h",
|
||||
"delivery_date": "BASE_TS + 3h",
|
||||
"status": "DELIVERED",
|
||||
"total_amount": 650.5,
|
||||
"customer_code": "CUST-002",
|
||||
"name": "Cafeter\u00eda La Esquina",
|
||||
"customer_type": "WHOLESALE",
|
||||
"contact_person": "Marta Ruiz",
|
||||
"email": "cafeteria@laesquina.com",
|
||||
"phone": "+34 913 456 789",
|
||||
"address": "Plaza del Sol, 12",
|
||||
"city": "Madrid",
|
||||
"postal_code": "28012",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"total_orders": 12,
|
||||
"total_spent": 850.2,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Pedido semanal para 5 hoteles",
|
||||
"enterprise_order": true,
|
||||
"contract_reference": "ENT-HOTEL-2024-001",
|
||||
"delivery_locations": [
|
||||
{
|
||||
"location": "Hotel Mediterráneo Madrid",
|
||||
"quantity": 50.0,
|
||||
"delivery_time": "2025-01-15T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"location": "Hotel Mediterráneo Barcelona",
|
||||
"quantity": 30.0,
|
||||
"delivery_time": "2025-01-15T10:00:00Z"
|
||||
},
|
||||
{
|
||||
"location": "Hotel Mediterráneo Valencia",
|
||||
"quantity": 20.0,
|
||||
"delivery_time": "2025-01-15T11:00:00Z"
|
||||
}
|
||||
]
|
||||
"notes": "Small retail customer - biweekly orders"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"customer_code": "CUST-003",
|
||||
"name": "Hotel Madrid Plaza",
|
||||
"customer_type": "WHOLESALE",
|
||||
"contact_person": "Carlos Fern\u00e1ndez",
|
||||
"email": "compras@hotelmadridplaza.com",
|
||||
"phone": "+34 914 567 890",
|
||||
"address": "Calle Gran V\u00eda, 25",
|
||||
"city": "Madrid",
|
||||
"postal_code": "28013",
|
||||
"country": "Espa\u00f1a",
|
||||
"status": "ACTIVE",
|
||||
"total_orders": 28,
|
||||
"total_spent": 2150.5,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Hotel chain - large volume orders"
|
||||
}
|
||||
],
|
||||
"order_items": [
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000002101",
|
||||
"id": "60000000-0000-0000-0000-000000000101",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"order_id": "60000000-0000-0000-0000-000000002001",
|
||||
"order_id": "60000000-0000-0000-0000-000000000001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"quantity": 100.0,
|
||||
"unit_price": 2.5,
|
||||
"total_price": 250.0,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_item": true
|
||||
"quantity": 250.0,
|
||||
"unit_price": 2.12,
|
||||
"total_price": 125.0,
|
||||
"created_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000002102",
|
||||
"id": "60000000-0000-0000-0000-000000000102",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"order_id": "60000000-0000-0000-0000-000000002001",
|
||||
"order_id": "60000000-0000-0000-0000-000000000002",
|
||||
"product_id": "20000000-0000-0000-0000-000000000002",
|
||||
"quantity": 25.0,
|
||||
"unit_price": 3.75,
|
||||
"total_price": 93.75,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_item": true
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000002103",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"order_id": "60000000-0000-0000-0000-000000002001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000003",
|
||||
"quantity": 20.0,
|
||||
"unit_price": 2.25,
|
||||
"quantity": 60.0,
|
||||
"unit_price": 3.19,
|
||||
"total_price": 45.0,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_item": true
|
||||
"created_at": "BASE_TS"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000002104",
|
||||
"id": "60000000-0000-0000-0000-000000000199",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"order_id": "60000000-0000-0000-0000-000000002001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000004",
|
||||
"quantity": 15.0,
|
||||
"unit_price": 1.75,
|
||||
"total_price": 26.25,
|
||||
"order_id": "60000000-0000-0000-0000-000000000099",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"quantity": 375.0,
|
||||
"unit_price": 2.08,
|
||||
"total_price": 183.75,
|
||||
"created_at": "BASE_TS",
|
||||
"enterprise_item": true
|
||||
"notes": "Urgent delivery - priority processing"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000103",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"order_id": "60000000-0000-0000-0000-000000000100",
|
||||
"product_id": "20000000-0000-0000-0000-000000000003",
|
||||
"quantity": 100.0,
|
||||
"unit_price": 2.76,
|
||||
"total_price": 65.0,
|
||||
"created_at": "BASE_TS"
|
||||
}
|
||||
]
|
||||
],
|
||||
"customer_orders": []
|
||||
}
|
||||
@@ -1,69 +1,3 @@
|
||||
{
|
||||
"sales_data": [
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000002001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"sale_date": "2025-01-14T10:00:00Z",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"quantity_sold": 250.0,
|
||||
"unit_price": 2.5,
|
||||
"total_revenue": 625.0,
|
||||
"sales_channel": "ENTERPRISE",
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Venta a Grupo Hotelero Mediterráneo",
|
||||
"enterprise_sale": true,
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"contract_reference": "ENT-HOTEL-2024-001",
|
||||
"delivery_locations": [
|
||||
"Madrid Centro",
|
||||
"Barcelona Gràcia",
|
||||
"Valencia Ruzafa"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000002002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"sale_date": "2025-01-14T11:00:00Z",
|
||||
"product_id": "20000000-0000-0000-0000-000000000002",
|
||||
"quantity_sold": 50.0,
|
||||
"unit_price": 3.75,
|
||||
"total_revenue": 187.5,
|
||||
"sales_channel": "ENTERPRISE",
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Venta a Grupo Hotelero Mediterráneo",
|
||||
"enterprise_sale": true,
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"contract_reference": "ENT-HOTEL-2024-001"
|
||||
},
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000002003",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"sale_date": "2025-01-14T12:00:00Z",
|
||||
"product_id": "20000000-0000-0000-0000-000000000003",
|
||||
"quantity_sold": 40.0,
|
||||
"unit_price": 2.25,
|
||||
"total_revenue": 90.0,
|
||||
"sales_channel": "ENTERPRISE",
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Venta a Grupo Hotelero Mediterráneo",
|
||||
"enterprise_sale": true,
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"contract_reference": "ENT-HOTEL-2024-001"
|
||||
},
|
||||
{
|
||||
"id": "70000000-0000-0000-0000-000000002004",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"sale_date": "2025-01-14T15:00:00Z",
|
||||
"product_id": "20000000-0000-0000-0000-000000000004",
|
||||
"quantity_sold": 30.0,
|
||||
"unit_price": 1.75,
|
||||
"total_revenue": 52.5,
|
||||
"sales_channel": "ENTERPRISE",
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Venta a Grupo Hotelero Mediterráneo",
|
||||
"enterprise_sale": true,
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"contract_reference": "ENT-HOTEL-2024-001"
|
||||
}
|
||||
]
|
||||
"sales_data": []
|
||||
}
|
||||
@@ -1,80 +1,4 @@
|
||||
{
|
||||
"forecasts": [
|
||||
{
|
||||
"id": "80000000-0000-0000-0000-000000002001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"forecast_date": "BASE_TS + 18h",
|
||||
"predicted_quantity": 300.0,
|
||||
"confidence_score": 0.95,
|
||||
"forecast_horizon_days": 1,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Demanda diaria enterprise para 15 hoteles",
|
||||
"enterprise_forecast": true,
|
||||
"forecast_type": "contractual_commitment",
|
||||
"contract_reference": "ENT-HOTEL-2024-001",
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"delivery_locations": [
|
||||
"Madrid Centro",
|
||||
"Barcelona Gràcia",
|
||||
"Valencia Ruzafa",
|
||||
"Sevilla Santa Cruz",
|
||||
"Málaga Centro"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "80000000-0000-0000-0000-000000002002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000002",
|
||||
"forecast_date": "BASE_TS + 18h",
|
||||
"predicted_quantity": 60.0,
|
||||
"confidence_score": 0.92,
|
||||
"forecast_horizon_days": 1,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Demanda diaria enterprise para desayunos",
|
||||
"enterprise_forecast": true,
|
||||
"forecast_type": "contractual_commitment",
|
||||
"contract_reference": "ENT-HOTEL-2024-001",
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001"
|
||||
},
|
||||
{
|
||||
"id": "80000000-0000-0000-0000-000000002099",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"forecast_date": "BASE_TS + 1d 18h",
|
||||
"predicted_quantity": 450.0,
|
||||
"confidence_score": 0.98,
|
||||
"forecast_horizon_days": 2,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Demanda de fin de semana - evento especial",
|
||||
"enterprise_forecast": true,
|
||||
"forecast_type": "special_event",
|
||||
"contract_reference": "ENT-HOTEL-2024-001",
|
||||
"customer_id": "60000000-0000-0000-0000-000000002001",
|
||||
"reasoning_data": {
|
||||
"type": "special_event",
|
||||
"parameters": {
|
||||
"event_type": "conference",
|
||||
"event_name": "Mediterranean Business Conference 2025",
|
||||
"attendees": 500,
|
||||
"demand_increase_factor": 1.8
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"prediction_batches": [
|
||||
{
|
||||
"id": "80000000-0000-0000-0000-000000002101",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"batch_id": "ENT-FCST-20250116-001",
|
||||
"prediction_date": "BASE_TS",
|
||||
"status": "COMPLETED",
|
||||
"total_forecasts": 3,
|
||||
"created_at": "BASE_TS",
|
||||
"notes": "Predicción diaria para contratos enterprise",
|
||||
"enterprise_batch": true,
|
||||
"forecast_horizon": "48_hours",
|
||||
"model_used": "enterprise_demand_v2"
|
||||
}
|
||||
]
|
||||
"forecasts": [],
|
||||
"prediction_batches": []
|
||||
}
|
||||
185
shared/demo/fixtures/enterprise/parent/11-orchestrator.json
Normal file
185
shared/demo/fixtures/enterprise/parent/11-orchestrator.json
Normal file
@@ -0,0 +1,185 @@
|
||||
{
|
||||
"orchestration_run": {
|
||||
"id": "90000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"run_number": "ENT-ORCH-20250116-001",
|
||||
"status": "completed",
|
||||
"run_type": "daily_enterprise",
|
||||
"started_at": "BASE_TS - 1d 16h",
|
||||
"completed_at": "BASE_TS - 1d 15h30m",
|
||||
"duration_seconds": 1800,
|
||||
"trigger_type": "scheduled",
|
||||
"trigger_source": "system",
|
||||
"created_at": "BASE_TS - 1d 16h",
|
||||
"updated_at": "BASE_TS - 1d 15h30m",
|
||||
"notes": "Enterprise multi-location orchestration - Last successful run",
|
||||
"locations_coordinated": 5
|
||||
},
|
||||
"orchestration_results": {
|
||||
"production_batches_created": 45,
|
||||
"production_batches_completed": 38,
|
||||
"production_batches_in_progress": 7,
|
||||
"purchase_orders_created": 8,
|
||||
"purchase_orders_approved": 6,
|
||||
"purchase_orders_pending_approval": 2,
|
||||
"inventory_updates": 125,
|
||||
"stock_alerts_generated": 5,
|
||||
"quality_checks_performed": 42,
|
||||
"delivery_schedules_updated": 15,
|
||||
"forecasts_generated": 45,
|
||||
"ai_insights_posted": 12,
|
||||
"notifications_sent": 28,
|
||||
"errors_encountered": 0,
|
||||
"warnings_generated": 3,
|
||||
"cross_location_optimizations": 8
|
||||
},
|
||||
"multi_location_coordination": {
|
||||
"distribution_schedules": [
|
||||
{
|
||||
"from_location": "central",
|
||||
"to_location": "madrid-salamanca",
|
||||
"scheduled_delivery": "BASE_TS + 6h",
|
||||
"products": 12,
|
||||
"total_units": 850
|
||||
},
|
||||
{
|
||||
"from_location": "central",
|
||||
"to_location": "barcelona-eixample",
|
||||
"scheduled_delivery": "BASE_TS + 8h",
|
||||
"products": 15,
|
||||
"total_units": 1200
|
||||
},
|
||||
{
|
||||
"from_location": "central",
|
||||
"to_location": "valencia-ruzafa",
|
||||
"scheduled_delivery": "BASE_TS + 7h",
|
||||
"products": 10,
|
||||
"total_units": 650
|
||||
},
|
||||
{
|
||||
"from_location": "central",
|
||||
"to_location": "seville-triana",
|
||||
"scheduled_delivery": "BASE_TS + 10h",
|
||||
"products": 9,
|
||||
"total_units": 550
|
||||
},
|
||||
{
|
||||
"from_location": "central",
|
||||
"to_location": "bilbao-casco-viejo",
|
||||
"scheduled_delivery": "BASE_TS + 12h",
|
||||
"products": 8,
|
||||
"total_units": 480
|
||||
}
|
||||
],
|
||||
"cross_location_alerts": [
|
||||
{
|
||||
"alert_type": "MULTI_LOCATION_LOW_STOCK",
|
||||
"product_name": "Harina de Trigo T55",
|
||||
"affected_locations": [
|
||||
"barcelona-eixample",
|
||||
"valencia-ruzafa"
|
||||
],
|
||||
"severity": "WARNING",
|
||||
"central_action": "Emergency procurement triggered",
|
||||
"priority_delivery_to": "barcelona-eixample"
|
||||
},
|
||||
{
|
||||
"alert_type": "QUALITY_ISSUE_RECALL",
|
||||
"product_name": "Levadura Fresca batch #CENTRAL-LEV-20250115",
|
||||
"affected_locations": [
|
||||
"madrid-salamanca",
|
||||
"seville-triana"
|
||||
],
|
||||
"severity": "CRITICAL",
|
||||
"action_taken": "Recall initiated, replacement batch scheduled"
|
||||
}
|
||||
],
|
||||
"inventory_optimization": {
|
||||
"surplus_transfers": [
|
||||
{
|
||||
"product": "Croissants",
|
||||
"from": "madrid-salamanca",
|
||||
"to": "bilbao-casco-viejo",
|
||||
"quantity": 120,
|
||||
"reason": "Madrid over-production, Bilbao shortage"
|
||||
}
|
||||
],
|
||||
"production_reallocation": [
|
||||
{
|
||||
"original_location": "barcelona-eixample",
|
||||
"new_location": "central",
|
||||
"reason": "Barcelona oven maintenance",
|
||||
"products_affected": [
|
||||
"Pan Rústico",
|
||||
"Baguette"
|
||||
],
|
||||
"quantity": 200
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ai_insights": {
|
||||
"enterprise_optimization": [
|
||||
{
|
||||
"insight_type": "CROSS_LOCATION_DEMAND_PATTERN",
|
||||
"description": "Barcelona demand peaks 2 hours before Madrid - adjust production scheduling",
|
||||
"confidence": 0.91,
|
||||
"potential_savings": "8% waste reduction",
|
||||
"affected_locations": [
|
||||
"barcelona-eixample",
|
||||
"madrid-salamanca"
|
||||
]
|
||||
},
|
||||
{
|
||||
"insight_type": "BULK_PROCUREMENT_OPPORTUNITY",
|
||||
"description": "Consolidate flour orders across all locations for 12% additional volume discount",
|
||||
"confidence": 0.89,
|
||||
"potential_savings": "€2,400/month",
|
||||
"recommended_action": "Increase central procurement by 15%"
|
||||
},
|
||||
{
|
||||
"insight_type": "DISTRIBUTION_ROUTE_OPTIMIZATION",
|
||||
"description": "Combined Valencia-Barcelona route saves 3 hours delivery time",
|
||||
"confidence": 0.94,
|
||||
"potential_savings": "€800/month fuel costs",
|
||||
"recommended_action": "Implement combined route 3x/week"
|
||||
}
|
||||
]
|
||||
},
|
||||
"system_state": {
|
||||
"last_successful_run": "BASE_TS - 1d 16h",
|
||||
"next_scheduled_run": "BASE_TS + 8h",
|
||||
"system_health": "healthy",
|
||||
"api_availability": 99.8,
|
||||
"database_performance": "optimal",
|
||||
"integration_status": "all_connected",
|
||||
"enterprise_features_active": true,
|
||||
"multi_location_sync_status": "synchronized"
|
||||
},
|
||||
"alerts": [
|
||||
{
|
||||
"alert_type": "OVERDUE_BATCH",
|
||||
"severity": "high",
|
||||
"message": "Production should have started 2 hours ago - BATCH-LATE-0001",
|
||||
"created_at": "BASE_TS",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"alert_scope": "enterprise"
|
||||
},
|
||||
{
|
||||
"alert_type": "DELAYED_DELIVERY",
|
||||
"severity": "high",
|
||||
"message": "Supplier delivery 4 hours late - PO-LATE-0001",
|
||||
"created_at": "BASE_TS",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"alert_scope": "enterprise"
|
||||
},
|
||||
{
|
||||
"alert_type": "CRITICAL_STOCK",
|
||||
"severity": "critical",
|
||||
"message": "Harina T55 below reorder point with NO pending PO",
|
||||
"created_at": "BASE_TS",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"alert_scope": "enterprise"
|
||||
}
|
||||
]
|
||||
}
|
||||
172
shared/demo/fixtures/enterprise/parent/12-distribution.json
Normal file
172
shared/demo/fixtures/enterprise/parent/12-distribution.json
Normal file
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"delivery_routes": [
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000001",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"route_number": "MAD-BCN-001",
|
||||
"route_date": "BASE_TS + 2h",
|
||||
"vehicle_id": "VEH-MAD-01",
|
||||
"driver_id": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
|
||||
"total_distance_km": 620.5,
|
||||
"estimated_duration_minutes": 480,
|
||||
"status": "planned",
|
||||
"route_sequence": [
|
||||
{
|
||||
"stop_number": 1,
|
||||
"location_id": "80000000-0000-4000-a000-000000000001",
|
||||
"location_name": "Panadería Central - Madrid",
|
||||
"estimated_arrival": "BASE_TS + 2h",
|
||||
"actual_arrival": null,
|
||||
"latitude": 40.4168,
|
||||
"longitude": -3.7038
|
||||
},
|
||||
{
|
||||
"stop_number": 2,
|
||||
"location_id": "A0000000-0000-4000-a000-000000000001",
|
||||
"location_name": "Madrid Centro",
|
||||
"estimated_arrival": "BASE_TS + 6h",
|
||||
"actual_arrival": null,
|
||||
"latitude": 40.4168,
|
||||
"longitude": -3.7038
|
||||
},
|
||||
{
|
||||
"stop_number": 3,
|
||||
"location_id": "B0000000-0000-4000-a000-000000000001",
|
||||
"location_name": "Barcelona Gràcia",
|
||||
"estimated_arrival": "BASE_TS + 10h",
|
||||
"actual_arrival": null,
|
||||
"latitude": 41.4036,
|
||||
"longitude": 2.1561
|
||||
}
|
||||
],
|
||||
"notes": "Daily delivery route from Madrid to Barcelona with stop at Madrid Centro"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000002",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"route_number": "MAD-VLC-001",
|
||||
"route_date": "BASE_TS + 3h",
|
||||
"vehicle_id": "VEH-MAD-02",
|
||||
"driver_id": "ae38accc-1ad4-410d-adbc-a55630908924",
|
||||
"total_distance_km": 355.3,
|
||||
"estimated_duration_minutes": 300,
|
||||
"status": "planned",
|
||||
"route_sequence": [
|
||||
{
|
||||
"stop_number": 1,
|
||||
"location_id": "80000000-0000-4000-a000-000000000001",
|
||||
"location_name": "Panadería Central - Madrid",
|
||||
"estimated_arrival": "BASE_TS + 3h",
|
||||
"actual_arrival": null,
|
||||
"latitude": 40.4168,
|
||||
"longitude": -3.7038
|
||||
},
|
||||
{
|
||||
"stop_number": 2,
|
||||
"location_id": "C0000000-0000-4000-a000-000000000001",
|
||||
"location_name": "Valencia Ruzafa",
|
||||
"estimated_arrival": "BASE_TS + 7h",
|
||||
"actual_arrival": null,
|
||||
"latitude": 39.4623,
|
||||
"longitude": -0.3645
|
||||
}
|
||||
],
|
||||
"notes": "Daily delivery route from Madrid to Valencia"
|
||||
}
|
||||
],
|
||||
"shipments": [
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000101",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"parent_tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"child_tenant_id": "A0000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-0000000INT01",
|
||||
"delivery_route_id": "60000000-0000-0000-0000-000000000001",
|
||||
"shipment_number": "SHIP-MAD-001",
|
||||
"shipment_date": "BASE_TS + 2h30m",
|
||||
"status": "pending",
|
||||
"items": [
|
||||
{
|
||||
"product_id": "20000000-0000-0000-0000-000000000001",
|
||||
"product_name": "Pan de Cristal",
|
||||
"quantity": 150,
|
||||
"unit": "units",
|
||||
"weight_kg": 30.0
|
||||
},
|
||||
{
|
||||
"product_id": "20000000-0000-0000-0000-000000000002",
|
||||
"product_name": "Baguette Tradicional",
|
||||
"quantity": 200,
|
||||
"unit": "units",
|
||||
"weight_kg": 40.0
|
||||
}
|
||||
],
|
||||
"total_weight_kg": 70.0,
|
||||
"estimated_delivery_time": "BASE_TS + 6h30m",
|
||||
"actual_delivery_time": null,
|
||||
"notes": "Daily bread delivery to Madrid Centro"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000102",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"parent_tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"child_tenant_id": "B0000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-0000000INT02",
|
||||
"delivery_route_id": "60000000-0000-0000-0000-000000000001",
|
||||
"shipment_number": "SHIP-BCN-001",
|
||||
"shipment_date": "BASE_TS + 2h45m",
|
||||
"status": "pending",
|
||||
"items": [
|
||||
{
|
||||
"product_id": "20000000-0000-0000-0000-000000000003",
|
||||
"product_name": "Croissant",
|
||||
"quantity": 300,
|
||||
"unit": "units",
|
||||
"weight_kg": 45.0
|
||||
},
|
||||
{
|
||||
"product_id": "20000000-0000-0000-0000-000000000004",
|
||||
"product_name": "Pain au Chocolat",
|
||||
"quantity": 250,
|
||||
"unit": "units",
|
||||
"weight_kg": 37.5
|
||||
}
|
||||
],
|
||||
"total_weight_kg": 82.5,
|
||||
"estimated_delivery_time": "BASE_TS + 10h30m",
|
||||
"actual_delivery_time": null,
|
||||
"notes": "Pastry delivery to Barcelona Gràcia"
|
||||
},
|
||||
{
|
||||
"id": "60000000-0000-0000-0000-000000000103",
|
||||
"tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"parent_tenant_id": "80000000-0000-4000-a000-000000000001",
|
||||
"child_tenant_id": "C0000000-0000-4000-a000-000000000001",
|
||||
"purchase_order_id": "50000000-0000-0000-0000-0000000INT03",
|
||||
"delivery_route_id": "60000000-0000-0000-0000-000000000002",
|
||||
"shipment_number": "SHIP-VLC-001",
|
||||
"shipment_date": "BASE_TS + 3h30m",
|
||||
"status": "pending",
|
||||
"items": [
|
||||
{
|
||||
"product_id": "20000000-0000-0000-0000-000000000005",
|
||||
"product_name": "Ensaimada",
|
||||
"quantity": 100,
|
||||
"unit": "units",
|
||||
"weight_kg": 25.0
|
||||
},
|
||||
{
|
||||
"product_id": "20000000-0000-0000-0000-000000000006",
|
||||
"product_name": "Tarta de Santiago",
|
||||
"quantity": 50,
|
||||
"unit": "units",
|
||||
"weight_kg": 15.0
|
||||
}
|
||||
],
|
||||
"total_weight_kg": 40.0,
|
||||
"estimated_delivery_time": "BASE_TS + 7h45m",
|
||||
"actual_delivery_time": null,
|
||||
"notes": "Specialty pastry delivery to Valencia Ruzafa"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user