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:
@@ -21,18 +21,21 @@ const getDemoTierForAccountType = (accountType: string | null): SubscriptionTier
|
||||
* Defines appropriate tenant characteristics based on account type
|
||||
*/
|
||||
const getTenantDetailsForAccountType = (accountType: string | null) => {
|
||||
// These details match the fixture files:
|
||||
// professional: shared/demo/fixtures/professional/01-tenant.json
|
||||
// enterprise: shared/demo/fixtures/enterprise/parent/01-tenant.json
|
||||
const details = {
|
||||
professional: {
|
||||
name: 'Panadería Profesional - Demo',
|
||||
name: 'Panadería Artesana Madrid - Demo',
|
||||
business_type: 'bakery',
|
||||
business_model: 'professional',
|
||||
description: 'Demostración de panadería profesional'
|
||||
description: 'Professional tier demo tenant for bakery operations'
|
||||
},
|
||||
enterprise: {
|
||||
name: 'Red de Panaderías - Demo',
|
||||
name: 'Panadería Artesana España - Central',
|
||||
business_type: 'bakery',
|
||||
business_model: 'enterprise',
|
||||
description: 'Demostración de cadena de panaderías enterprise'
|
||||
description: 'Central production facility and parent tenant for Panadería Artesana España multi-location bakery chain'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -127,6 +130,29 @@ export const useTenantInitializer = () => {
|
||||
apiClient.setTenantId(virtualTenantId);
|
||||
console.log('✅ [TenantInitializer] Set API client tenant ID:', virtualTenantId);
|
||||
});
|
||||
|
||||
// For enterprise demos, load the actual tenant list to show child tenants
|
||||
if (demoAccountType === 'enterprise') {
|
||||
console.log('🔄 [TenantInitializer] Loading available tenants for enterprise demo...');
|
||||
// Use a mock user ID for demo mode
|
||||
const mockUserId = 'demo-user';
|
||||
|
||||
// Import tenant service and load user tenants
|
||||
import('../api/services/tenant').then(({ TenantService }) => {
|
||||
const tenantService = new TenantService();
|
||||
tenantService.getUserTenants(mockUserId)
|
||||
.then(tenants => {
|
||||
console.log('📋 [TenantInitializer] Loaded available tenants:', tenants.length);
|
||||
// Update the tenant store with available tenants
|
||||
import('../stores/tenant.store').then(({ useTenantStore }) => {
|
||||
useTenantStore.getState().setAvailableTenants(tenants);
|
||||
});
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('❌ [TenantInitializer] Failed to load available tenants:', error);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [isDemoMode, demoSessionId, demoAccountType, currentTenant, setCurrentTenant]);
|
||||
|
||||
Reference in New Issue
Block a user