Files
hsa/Html/apps/extensions.py
2025-08-27 19:39:38 +08:00

59 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os, sys
from flask_sqlalchemy import SQLAlchemy
from flask_socketio import SocketIO
from flask_cors import CORS
from db.user_list import UserList
from db.course_list import CourseList
from .services.my_function import MyFunction
db = SQLAlchemy()
socketio = SocketIO(cors_allowed_origins="*") # 不直接传 app
cors = CORS()
# ===== 你的全局对象 =====
# Backboard
from backboardManager import BackBoardManager # 你已有的类
backboard_manager = BackBoardManager()
# 用户映射(全局内存结构)
userid_recorder = {} # 你代码里有使用
users_list = UserList()
uuid2username = {} # 你的映射,或换成数据库访问层
username2uuid = {}
course_list = CourseList()
user_id2UserClass = {}
from AlgoriAgent.projects.algoriAgent.agent_manager import AgentManager
agent_manager = AgentManager()
def init_extensions(app):
db.init_app(app)
# 第三方
socketio.init_app(
app,
cors_allowed_origins='*',#app.config["VSCODE_WEB_URL"],
ping_timeout=app.config["SOCKETIO_PING_TIMEOUT"],
ping_interval=app.config["SOCKETIO_PING_INTERVAL"],
)
cors.init_app(
app,
resources={r"/*": {"origins": app.config["VSCODE_WEB_URL"]}},
supports_credentials=True,
)
# 把自定义对象挂到 app.extensions供各处通过 current_app 访问
app.extensions["users_list"] = users_list
app.extensions["course_list"] = course_list
app.extensions["backboard_manager"] = backboard_manager
app.extensions["uuid2username"] = uuid2username
app.extensions["username2uuid"] = username2uuid
app.extensions["userid_recorder"] = userid_recorder
app.extensions["user_id2UserClass"] = user_id2UserClass
app.extensions["agent_manager"] = agent_manager
app.extensions["my_function"] = MyFunction()
def register_namespaces(app):
"""把所有 Socket.IO namespaces 注册到 socketio"""
# 延迟导入以避免循环
from .sockets.namespaces import VSCodeNamespace, AgentNamespace
socketio.on_namespace(VSCodeNamespace("/vscode"))
socketio.on_namespace(AgentNamespace("/agent"))