Standardize demo account type naming from inconsistent variants to clean names: - individual_bakery, professional_bakery → professional - central_baker, enterprise_chain → enterprise This eliminates naming confusion that was causing bugs in the demo session initialization, particularly for enterprise demo tenants where different parts of the system used different names for the same concept. Changes: - Updated source of truth in demo_session config - Updated all backend services (middleware, cloning, orchestration) - Updated frontend types, pages, and stores - Updated demo session models and schemas - Removed all backward compatibility code as requested Related to: Enterprise demo session access fix 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
"""
|
|
API Schemas for Demo Session Service
|
|
"""
|
|
|
|
from pydantic import BaseModel, Field
|
|
from typing import Optional, Dict, Any
|
|
from datetime import datetime
|
|
|
|
|
|
class DemoSessionCreate(BaseModel):
|
|
"""Create demo session request"""
|
|
demo_account_type: str = Field(..., description="professional or enterprise")
|
|
subscription_tier: Optional[str] = Field(None, description="Force specific subscription tier (professional/enterprise)")
|
|
user_id: Optional[str] = Field(None, description="Optional authenticated user ID")
|
|
ip_address: Optional[str] = None
|
|
user_agent: Optional[str] = None
|
|
|
|
|
|
class DemoSessionResponse(BaseModel):
|
|
"""Demo session response"""
|
|
session_id: str
|
|
virtual_tenant_id: str
|
|
demo_account_type: str
|
|
status: str
|
|
created_at: datetime
|
|
expires_at: datetime
|
|
demo_config: Dict[str, Any]
|
|
session_token: str
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class DemoSessionExtend(BaseModel):
|
|
"""Extend session request"""
|
|
session_id: str
|
|
|
|
|
|
class DemoSessionDestroy(BaseModel):
|
|
"""Destroy session request"""
|
|
session_id: str
|
|
|
|
|
|
class DemoSessionStats(BaseModel):
|
|
"""Demo session statistics"""
|
|
total_sessions: int
|
|
active_sessions: int
|
|
expired_sessions: int
|
|
destroyed_sessions: int
|
|
avg_duration_minutes: float
|
|
total_requests: int
|
|
|
|
|
|
class DemoAccountInfo(BaseModel):
|
|
"""Public demo account information"""
|
|
account_type: str
|
|
name: str
|
|
email: str
|
|
password: str
|
|
description: str
|
|
features: list[str]
|
|
business_model: str
|
|
|
|
|
|
class CloneDataRequest(BaseModel):
|
|
"""Request to clone tenant data"""
|
|
base_tenant_id: str
|
|
virtual_tenant_id: str
|
|
session_id: str
|
|
|
|
|
|
class CloneDataResponse(BaseModel):
|
|
"""Response from data cloning"""
|
|
session_id: str
|
|
services_cloned: list[str]
|
|
total_records: int
|
|
redis_keys: int
|