Spaces:
Sleeping
Sleeping
File size: 4,495 Bytes
c024705 818ef98 c024705 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
/**
* 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);
}
|