Refactor demo session architecture: consolidate metadata into fixture files

This commit refactors the demo session architecture to consolidate all demo
configuration data into the fixture files, removing redundant metadata files.

## Changes Made:

### 1. Data Consolidation
- **Removed**: `shared/demo/metadata/demo_users.json`
- **Removed**: `shared/demo/metadata/tenant_configs.json`
- **Updated**: Merged all user data into `02-auth.json` files
- **Updated**: Merged all tenant config data into `01-tenant.json` files

### 2. Enterprise Parent Tenant Updates
- Updated owner name to "Director" (matching auth fixtures)
- Added description field matching tenant_configs.json
- Added `base_tenant_id` to all child tenant entries
- Now includes all 5 child locations (Madrid, Barcelona, Valencia, Seville, Bilbao)

### 3. Professional Tenant Updates
- Added description field from tenant_configs.json
- Ensured consistency with auth fixtures

### 4. Code Updates
- **services/tenant/app/api/internal_demo.py**:
  - Fixed child tenant staff members to use enterprise parent users
  - Changed from professional staff IDs to enterprise staff IDs (Laura López, José Martínez, Francisco Moreno)

- **services/demo_session/app/core/config.py**:
  - Updated DEMO_ACCOUNTS configuration with all 5 child outlets
  - Updated enterprise tenant name and email to match fixtures
  - Added descriptions for all child locations

- **gateway/app/middleware/demo_middleware.py**:
  - Updated comments to reference fixture files as source of truth
  - Clarified that owner IDs come from 01-tenant.json files

- **frontend/src/stores/useTenantInitializer.ts**:
  - Updated tenant names and descriptions to match fixture files
  - Added comments linking to source fixture files

## Benefits:

1. **Single Source of Truth**: All demo data now lives in fixture files
2. **Consistency**: No more sync issues between metadata and fixtures
3. **Maintainability**: Easier to update demo data (one place per tenant type)
4. **Clarity**: Clear separation between template data (fixtures) and runtime config

## Enterprise Demo Fix:

The enterprise owner is now correctly added as a member of all child tenants, fixing
the issue where the tenant switcher didn't show parent/child tenants and the
establishments page didn't load tenants for the demo enterprise user.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Urtzi Alfaro
2025-12-17 15:48:14 +01:00
parent 8bfe4f2dd7
commit d98558ed97
9 changed files with 77 additions and 213 deletions

View File

@@ -1,108 +0,0 @@
{
"owners": {
"professional": {
"id": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6",
"name": "María García López",
"email": "maria.garcia@panaderiaartesana.com",
"role": "owner",
"created_at": "2025-01-15T06:00:00Z"
},
"enterprise": {
"id": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7",
"name": "Carlos Martínez Ruiz",
"email": "carlos.martinez@panaderiacentral.com",
"role": "owner",
"created_at": "2025-01-15T06:00:00Z"
}
},
"staff": {
"professional": [
{
"id": "50000000-0000-0000-0000-000000000001",
"name": "Juan Panadero",
"role": "baker",
"email": "juan.panadero@panaderiaartesana.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000002",
"name": "Ana Ventas",
"role": "sales",
"email": "ana.ventas@panaderiaartesana.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000003",
"name": "Pedro Calidad",
"role": "quality_control",
"email": "pedro.calidad@panaderiaartesana.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000004",
"name": "Laura Admin",
"role": "admin",
"email": "laura.admin@panaderiaartesana.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000005",
"name": "Carlos Almacén",
"role": "warehouse",
"email": "carlos.almacen@panaderiaartesana.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000006",
"name": "Isabel Producción",
"role": "production_manager",
"email": "isabel.produccion@panaderiaartesana.com",
"created_at": "2025-01-15T06:00:00Z"
}
],
"enterprise": [
{
"id": "50000000-0000-0000-0000-000000000011",
"name": "Roberto Producción",
"role": "production_manager",
"email": "roberto.produccion@panaderiacentral.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000012",
"name": "Marta Calidad",
"role": "quality_control",
"email": "marta.calidad@panaderiacentral.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000013",
"name": "Javier Logística",
"role": "logistics",
"email": "javier.logistica@panaderiacentral.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000014",
"name": "Carmen Ventas",
"role": "sales",
"email": "carmen.ventas@panaderiacentral.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000015",
"name": "Luis Compras",
"role": "procurement",
"email": "luis.compras@panaderiacentral.com",
"created_at": "2025-01-15T06:00:00Z"
},
{
"id": "50000000-0000-0000-0000-000000000016",
"name": "Miguel Mantenimiento",
"role": "maintenance",
"email": "miguel.mantenimiento@panaderiacentral.com",
"created_at": "2025-01-15T06:00:00Z"
}
]
}
}

View File

@@ -1,79 +0,0 @@
{
"professional": {
"base_tenant_id": "a1b2c3d4-e5f6-47a8-b9c0-d1e2f3a4b5c6",
"email": "demo.professional@panaderiaartesana.com",
"name": "Panadería Artesana Madrid - Demo",
"subdomain": "demo-artesana",
"subscription_tier": "professional",
"tenant_type": "standalone",
"description": "Professional tier demo tenant for bakery operations",
"created_at": "2025-01-15T06:00:00Z"
},
"enterprise": {
"base_tenant_id": "80000000-0000-4000-a000-000000000001",
"email": "central@panaderiaartesana.es",
"name": "Panadería Artesana España - Central",
"subdomain": "artesana-central",
"subscription_tier": "enterprise",
"tenant_type": "parent",
"description": "Central production facility and parent tenant for Panadería Artesana España multi-location bakery chain",
"created_at": "2024-01-01T00:00:00Z",
"children": [
{
"name": "Madrid - Salamanca",
"base_tenant_id": "A0000000-0000-4000-a000-000000000001",
"location": {
"city": "Madrid",
"zone": "Salamanca",
"latitude": 40.4284,
"longitude": -3.6847
},
"description": "Premium location in upscale Salamanca district"
},
{
"name": "Barcelona - Eixample",
"base_tenant_id": "B0000000-0000-4000-a000-000000000001",
"location": {
"city": "Barcelona",
"zone": "Eixample",
"latitude": 41.3947,
"longitude": 2.1616
},
"description": "High-volume tourist and local area in central Barcelona"
},
{
"name": "Valencia - Ruzafa",
"base_tenant_id": "C0000000-0000-4000-a000-000000000001",
"location": {
"city": "Valencia",
"zone": "Ruzafa",
"latitude": 39.4623,
"longitude": -0.3645
},
"description": "Trendy artisan neighborhood with focus on quality"
},
{
"name": "Seville - Triana",
"base_tenant_id": "D0000000-0000-4000-a000-000000000001",
"location": {
"city": "Seville",
"zone": "Triana",
"latitude": 37.3828,
"longitude": -6.0026
},
"description": "Traditional Andalusian location with local specialties"
},
{
"name": "Bilbao - Casco Viejo",
"base_tenant_id": "E0000000-0000-4000-a000-000000000001",
"location": {
"city": "Bilbao",
"zone": "Casco Viejo",
"latitude": 43.2567,
"longitude": -2.9272
},
"description": "Basque region location with focus on quality and local culture"
}
]
}
}