Improve the demo feature of the project

This commit is contained in:
Urtzi Alfaro
2025-10-12 18:47:33 +02:00
parent dbc7f2fa0d
commit 7556a00db7
168 changed files with 10102 additions and 18869 deletions

View File

@@ -165,24 +165,57 @@ k8s_resource('alert-processor-db', labels=['databases'])
# =============================================================================
# DEMO INITIALIZATION JOBS
# =============================================================================
# Demo seed jobs run in strict order:
# 1. demo-seed-users (creates demo user accounts)
# 2. demo-seed-tenants (creates demo tenant records)
# 3. demo-seed-inventory (creates ingredients & finished products)
# 4. demo-seed-ai-models (creates fake AI model entries)
# Demo seed jobs run in strict order to ensure data consistency across services:
#
# Order & Dependencies:
# 1. demo-seed-users → Creates demo user accounts in auth service
# 2. demo-seed-tenants → Creates demo tenant records (depends on users)
# 3. demo-seed-subscriptions → Creates enterprise subscriptions for demo tenants (depends on tenants)
# 4. demo-seed-inventory → Creates ingredients & finished products (depends on tenants)
# 5. demo-seed-recipes → Creates recipes using ingredient IDs (depends on inventory)
# 6. demo-seed-suppliers → Creates suppliers with price lists for ingredients (depends on inventory)
# 7. demo-seed-sales → Creates historical sales data using finished product IDs (depends on inventory)
# 8. demo-seed-ai-models → Creates fake AI model entries (depends on inventory)
#
# Note: Recipes, Suppliers, and Sales can run in parallel after Inventory completes,
# as they all depend on inventory data but not on each other.
# Step 1: Seed users (auth service)
k8s_resource('demo-seed-users',
resource_deps=['auth-migration'],
labels=['demo-init'])
# Step 2: Seed tenants (tenant service)
k8s_resource('demo-seed-tenants',
resource_deps=['tenant-migration', 'demo-seed-users'],
labels=['demo-init'])
# Step 2.5: Seed subscriptions (creates enterprise subscriptions for demo tenants)
k8s_resource('demo-seed-subscriptions',
resource_deps=['tenant-migration', 'demo-seed-tenants'],
labels=['demo-init'])
# Step 3: Seed inventory - CRITICAL: All other seeds depend on this
k8s_resource('demo-seed-inventory',
resource_deps=['inventory-migration', 'demo-seed-tenants'],
labels=['demo-init'])
# Step 4: Seed recipes (uses ingredient IDs from inventory)
k8s_resource('demo-seed-recipes',
resource_deps=['recipes-migration', 'demo-seed-inventory'],
labels=['demo-init'])
# Step 5: Seed suppliers (uses ingredient IDs for price lists)
k8s_resource('demo-seed-suppliers',
resource_deps=['suppliers-migration', 'demo-seed-inventory'],
labels=['demo-init'])
# Step 6: Seed sales (uses finished product IDs from inventory)
k8s_resource('demo-seed-sales',
resource_deps=['sales-migration', 'demo-seed-inventory'],
labels=['demo-init'])
# Step 7: Seed AI models (creates training/forecasting model records)
k8s_resource('demo-seed-ai-models',
resource_deps=['training-migration', 'demo-seed-inventory'],
labels=['demo-init'])
@@ -252,13 +285,24 @@ k8s_resource('demo-session-service',
resource_deps=['demo-session-migration', 'redis'],
labels=['services'])
# Get the image reference for inventory-service to use in demo clone jobs
inventory_image_ref = str(local('kubectl get deployment inventory-service -n bakery-ia -o jsonpath="{.spec.template.spec.containers[0].image}" 2>/dev/null || echo "bakery/inventory-service:latest"')).strip()
# Apply environment variable patch to demo-session-service with the inventory image
# Note: This fetches the CURRENT image tag dynamically when the resource runs
# Runs after both services are deployed to ensure correct image tag is used
local_resource('patch-demo-session-env',
cmd='kubectl set env deployment/demo-session-service -n bakery-ia CLONE_JOB_IMAGE=' + inventory_image_ref,
resource_deps=['demo-session-service'],
cmd='''
# Wait a moment for deployments to stabilize
sleep 2
# Get current inventory-service image tag
INVENTORY_IMAGE=$(kubectl get deployment inventory-service -n bakery-ia -o jsonpath="{.spec.template.spec.containers[0].image}" 2>/dev/null || echo "bakery/inventory-service:latest")
# Update demo-session-service environment variable
kubectl set env deployment/demo-session-service -n bakery-ia CLONE_JOB_IMAGE=$INVENTORY_IMAGE
echo "✅ Set CLONE_JOB_IMAGE to: $INVENTORY_IMAGE"
''',
resource_deps=['demo-session-service', 'inventory-service'], # Wait for BOTH services
auto_init=True, # Run automatically on Tilt startup
labels=['config'])
# =============================================================================