Version 0.1.1 rise to flask app factory

This commit is contained in:
CakeCN
2025-08-27 19:39:38 +08:00
parent 8dba8688a7
commit 5c0187bc4b
55 changed files with 1708 additions and 613 deletions

59
Html/apps/extensions.py Normal file
View File

@@ -0,0 +1,59 @@
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"))