File size: 2,432 Bytes
3d015cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c1adf10
3d015cd
 
2a317a3
c1adf10
 
 
2a317a3
c1adf10
 
 
 
2a317a3
c1adf10
 
 
3d015cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""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/<student_id>',
            'text': '/api/analytics/text/<student_id>',
            'score': '/api/analytics/score/<student_id>',
            'leaderboard': '/api/analytics/leaderboard',
            'domain': {
                'available': '/api/analytics/domain/available',
                'submit': '/api/analytics/students/<student_id>/domain-evidence',
                'get': '/api/analytics/students/<student_id>/domain-evidence',
                'delete': '/api/analytics/students/<student_id>/domain-evidence/<domain_type>'
            }
        }
    }

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)