Spaces:
Sleeping
Sleeping
| /** | |
| * Frontend Configuration for AIMHSA | |
| * Handles API endpoints and environment-specific settings | |
| */ | |
| class AppConfig { | |
| constructor() { | |
| // Detect environment | |
| this.environment = this.detectEnvironment(); | |
| // Set API base URL based on environment | |
| this.apiBaseUrl = this.getApiBaseUrl(); | |
| // API endpoints | |
| this.endpoints = { | |
| // Chat endpoints | |
| ask: '/ask', | |
| session: '/session', | |
| history: '/history', | |
| conversations: '/conversations', | |
| // User endpoints | |
| register: '/register', | |
| login: '/login', | |
| logout: '/logout', | |
| forgotPassword: '/forgot_password', | |
| resetPassword: '/reset_password', | |
| // Professional endpoints | |
| professionalLogin: '/professional/login', | |
| professionalProfile: '/professional/profile', | |
| professionalSessions: '/professional/sessions', | |
| professionalUsers: '/professional/users', | |
| professionalNotifications: '/professional/notifications', | |
| professionalDashboard: '/professional/dashboard-stats', | |
| // Admin endpoints | |
| adminLogin: '/admin/login', | |
| adminProfessionals: '/admin/professionals', | |
| adminBookings: '/admin/bookings', | |
| adminUsers: '/admin/users', | |
| // Utility endpoints | |
| uploadPdf: '/upload_pdf', | |
| clearChat: '/clear_chat', | |
| reset: '/reset', | |
| healthz: '/healthz' | |
| }; | |
| // App settings | |
| this.settings = { | |
| defaultTimeout: 30000, | |
| maxRetries: 3, | |
| debounceDelay: 300, | |
| autoSaveDelay: 1000 | |
| }; | |
| } | |
| detectEnvironment() { | |
| const hostname = window.location.hostname; | |
| const protocol = window.location.protocol; | |
| const port = window.location.port; | |
| if (hostname === 'localhost' || hostname === '127.0.0.1') { | |
| return 'development'; | |
| } else if (hostname.includes('test') || hostname.includes('staging')) { | |
| return 'testing'; | |
| } else { | |
| return 'production'; | |
| } | |
| } | |
| getApiBaseUrl() { | |
| const hostname = window.location.hostname; | |
| const protocol = window.location.protocol; | |
| const port = window.location.port; | |
| // Check if API_BASE_URL is set in environment | |
| if (window.API_BASE_URL) { | |
| return window.API_BASE_URL; | |
| } | |
| // Environment-specific API URLs | |
| switch (this.environment) { | |
| case 'development': | |
| // In development, API might be on different port | |
| if (port === '8000' || port === '3000') { | |
| return `${protocol}//${hostname}:7860`; | |
| } | |
| return ''; // Same origin | |
| case 'testing': | |
| return ''; // Same origin for testing | |
| case 'production': | |
| // In production, use same origin (standard hosting setup) | |
| return ''; | |
| default: | |
| return ''; | |
| } | |
| } | |
| getFullUrl(endpoint) { | |
| const baseUrl = this.apiBaseUrl; | |
| const path = this.endpoints[endpoint] || endpoint; | |
| if (baseUrl) { | |
| return `${baseUrl}${path}`; | |
| } else { | |
| return path; // Relative URL | |
| } | |
| } | |
| // Convenience methods for common endpoints | |
| getChatUrl() { return this.getFullUrl('ask'); } | |
| getLoginUrl() { return this.getFullUrl('login'); } | |
| getRegisterUrl() { return this.getFullUrl('register'); } | |
| getProfessionalLoginUrl() { return this.getFullUrl('professionalLogin'); } | |
| getAdminLoginUrl() { return this.getFullUrl('adminLogin'); } | |
| // Environment checks | |
| isDevelopment() { return this.environment === 'development'; } | |
| isProduction() { return this.environment === 'production'; } | |
| isTesting() { return this.environment === 'testing'; } | |
| } | |
| // Global configuration instance | |
| window.AppConfig = new AppConfig(); | |
| // Debug information in development | |
| if (window.AppConfig.isDevelopment()) { | |
| console.log('🔧 AIMHSA Development Mode'); | |
| console.log('API Base URL:', window.AppConfig.apiBaseUrl); | |
| console.log('Environment:', window.AppConfig.environment); | |
| } | |