"""Main Flask application for Analytics Module""" from flask import Flask from flask_cors import CORS from config import Config # Initialize Flask app app = Flask(__name__) app.config.from_object(Config) CORS(app) # Register blueprints from routes.students import students_bp from routes.scoring import scoring_bp from routes.domain import domain_bp app.register_blueprint(students_bp, url_prefix='/api/analytics') app.register_blueprint(scoring_bp, url_prefix='/api/analytics') app.register_blueprint(domain_bp, url_prefix='/api/analytics') # Health check with database status @app.route('/health', methods=['GET']) def health_check(): from database.db import get_db_or_none, get_db_error, get_storage_mode db = get_db_or_none() db_status = 'connected' if db is not None else 'disconnected' db_error = get_db_error() storage_mode = get_storage_mode() return { 'status': 'healthy' if db else 'degraded', 'service': 'analytics-api', 'storage_mode': storage_mode, # 'supabase' or 'local' 'database': db_status, 'db_error': db_error if db_error else None }, 200 if db else 503 @app.route('/', methods=['GET']) def home(): return { 'service': 'Student Profiling & Employability Scoring API', 'version': '1.0.0', 'endpoints': { 'students': '/api/analytics/students', 'personality': '/api/analytics/personality/', 'text': '/api/analytics/text/', 'score': '/api/analytics/score/', 'leaderboard': '/api/analytics/leaderboard', 'domain': { 'available': '/api/analytics/domain/available', 'submit': '/api/analytics/students//domain-evidence', 'get': '/api/analytics/students//domain-evidence', 'delete': '/api/analytics/students//domain-evidence/' } } } if __name__ == '__main__': import os port = int(os.getenv('PORT', 7860)) # HuggingFace uses 7860 debug = os.getenv('DEBUG', 'False').lower() == 'true' print(f"🚀 Analytics API starting on port {port}") print(f"📊 Scoring modules: Universal, Personality, Text, Domain (Tech/Business/Creative/Research)") print(f"🔗 Base URL: http://0.0.0.0:{port}") app.run(host='0.0.0.0', port=port, debug=debug)