# app.py
import eventlet
eventlet.monkey_patch()
from flask import Flask
from flask_socketio import SocketIO
from routes.auth import auth_bp
from routes.main import main_bp
from routes.line import line_bp
from routes.chat import chat_bp, register_chat_events
from routes.socket_events import init_socket_events
from werkzeug.middleware.proxy_fix import ProxyFix
from utils.db_monitor import start_db_monitor

app = Flask(__name__)
# 讓 Flask 知道它在 /mmwave/ 下執行
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1)
app.config['SECRET_KEY'] = 'mmwave_project_secure_key_2026'

# 初始化 SocketIO
socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')
app.socketio = socketio

# 註冊藍圖
app.register_blueprint(auth_bp)
app.register_blueprint(main_bp)
app.register_blueprint(line_bp)
app.register_blueprint(chat_bp)

# 初始化 WebSocket 事件
init_socket_events(socketio)    # 即時動作座標監聽
register_chat_events(socketio)  # 聊天室監聽

# 在伺服器啟動前，啟動背景監聽
start_db_monitor(socketio)

if __name__ == '__main__':
    socketio.run(app, host='0.0.0.0', port=5000, debug=False, use_reloader=False, log_output=True)