From 48c3b0a79886eabeb2918bbcc31485ee0f16afa4 Mon Sep 17 00:00:00 2001 From: ninemine <1371605831@qq.com> Date: Wed, 5 Nov 2025 23:23:42 +0800 Subject: [PATCH] Init --- Application/app.py | 20 ++++++-------------- Application/web.py | 5 ++--- Assets/config.json | 6 ------ CoreModules/database.py | 6 +++--- CoreModules/flags.py | 7 ++++++- CoreModules/plugin_interface.py | 12 ++++++++++-- CoreRouters/health.py | 10 +++++++--- 7 files changed, 34 insertions(+), 32 deletions(-) delete mode 100644 Assets/config.json diff --git a/Application/app.py b/Application/app.py index 3d9e660..184b757 100644 --- a/Application/app.py +++ b/Application/app.py @@ -1,16 +1,19 @@ +from ..Convention.Runtime.Config import * from ..Convention.Runtime.GlobalConfig import ProjectConfig, ConsoleFrontColor -from ..CoreModules.flags import set_internal_verbose +from ..CoreModules.flags import set_internal_verbose, get_internal_debug from .web import app from argparse import ArgumentParser from typing import * import sys -import uvicorn +try: + import uvicorn +except ImportError as ex: + ImportingThrow(ex, "Internal", ["uvicorn"]) def main() -> int: config = ProjectConfig() parser = ArgumentParser() - parser.add_argument("--main-webhook-url", type=str, default=config.FindItem("main_webhook_url", "")) parser.add_argument("--host", type=str, default=config.FindItem("host", "0.0.0.0")) parser.add_argument("--port", type=int, default=config.FindItem("port", 8000)) parser.add_argument("--verbose", type=bool, default=config.FindItem("verbose", False)) @@ -22,17 +25,6 @@ def main() -> int: parser.print_help() return 0 -# region Main Webhook URL - - webhook_url = args.main_webhook_url - if not webhook_url or webhook_url == "": - config.Log("Fatal", f"{ConsoleFrontColor.RED}Main webhook URL is not set{ConsoleFrontColor.RESET}") - return 1 - - config.Log("Info", f"{ConsoleFrontColor.GREEN}Main webhook URL: {webhook_url}{ConsoleFrontColor.RESET}") - -# endregion Main Webhook URL - # region Verbose verbose = args.verbose diff --git a/Application/web.py b/Application/web.py index 2ae0575..1ec7f06 100644 --- a/Application/web.py +++ b/Application/web.py @@ -4,7 +4,7 @@ from fastapi.responses import JSONResponse from contextlib import asynccontextmanager from ..CoreModules.middleware import ConcurrencyLimitMiddleware from ..CoreModules.plugin_interface import ImportPlugins -from ..CoreRouters import callback, health, private +from ..CoreRouters import callback, health from ..Convention.Runtime.GlobalConfig import * from ..Convention.Runtime.Architecture import Architecture @@ -46,8 +46,7 @@ def generate_app(APP_CONFIG: dict) -> FastAPI: # 注册路由 app.include_router(callback.router, prefix="/api", tags=["callback"]) app.include_router(health.router, tags=["health"]) - app.include_router(private.router, prefix="/api", tags=["private"]) - ImportPlugins(app, config.FindItem("plugin_dir", "Plugins")) + ImportPlugins(app, config.FindItem("plugin_dir", "Plugins/")) # 注册至框架中 Architecture.Register(FastAPI, app, lambda: None) diff --git a/Assets/config.json b/Assets/config.json deleted file mode 100644 index 24d29fd..0000000 --- a/Assets/config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "properties": {}, - "find": { - "main_webhook_url": "" - } -} \ No newline at end of file diff --git a/CoreModules/database.py b/CoreModules/database.py index 1996da9..74fb081 100644 --- a/CoreModules/database.py +++ b/CoreModules/database.py @@ -3,9 +3,9 @@ import sqlite3 import json import time from typing import * -from Convention.Runtime.GlobalConfig import ProjectConfig, ConsoleFrontColor -from Convention.Runtime.Architecture import Architecture -from Convention.Runtime.File import ToolFile +from ..Convention.Runtime.GlobalConfig import ProjectConfig, ConsoleFrontColor +from ..Convention.Runtime.Architecture import Architecture +from ..Convention.Runtime.File import ToolFile config = ProjectConfig() DATABASE_PATH = config.GetFile(config.FindItem("database_path", "db.db"), False).GetFullPath() diff --git a/CoreModules/flags.py b/CoreModules/flags.py index d6001f3..0bd2f0b 100644 --- a/CoreModules/flags.py +++ b/CoreModules/flags.py @@ -1,13 +1,16 @@ from ..Convention.Runtime.Architecture import * +from ..Convention.Runtime.GlobalConfig import ProjectConfig from pydantic import * +config = ProjectConfig() + class DebugFlags(BaseModel): debug: bool = Field(default=False) class VerboseFlags(BaseModel): verbose: bool = Field(default=False) -Architecture.Register(DebugFlags, DebugFlags(debug=False), lambda: None) +Architecture.Register(DebugFlags, DebugFlags(debug=config.FindItem("debug", False)), lambda: None) Architecture.Register(VerboseFlags, VerboseFlags(verbose=False), lambda: None) def set_internal_debug(debug:bool) -> None: @@ -20,4 +23,6 @@ def set_internal_verbose(verbose:bool) -> None: def get_internal_verbose() -> bool: return Architecture.Get(VerboseFlags).verbose +config.SaveProperties() + __all__ = ["set_internal_debug", "get_internal_debug", "set_internal_verbose", "get_internal_verbose"] \ No newline at end of file diff --git a/CoreModules/plugin_interface.py b/CoreModules/plugin_interface.py index bd68c01..4941e23 100644 --- a/CoreModules/plugin_interface.py +++ b/CoreModules/plugin_interface.py @@ -1,5 +1,6 @@ from ..Convention.Runtime.GlobalConfig import ProjectConfig from ..Convention.Runtime.Architecture import Architecture +from ..Convention.Runtime.File import ToolFile from ..CoreModules.database import get_db from fastapi import APIRouter, FastAPI from typing import * @@ -82,7 +83,7 @@ class PluginInterface(ABC): ''' return DatabaseModel() -def ImportPlugins(app: FastAPI, plugin_dir:str = "Plugins") -> None: +def ImportPlugins(app: FastAPI, plugin_dir:str = "Plugins/") -> None: ''' 导入插件 @@ -90,7 +91,14 @@ def ImportPlugins(app: FastAPI, plugin_dir:str = "Plugins") -> None: app: FastAPI应用 plugin_dir: 插件目录 ''' - for file in os.listdir(plugin_dir): + plugin_tool_dir = ToolFile(plugin_dir) + if plugin_tool_dir.Exists() == False: + plugin_tool_dir.MustExistsPath() + return + if plugin_tool_dir.IsDir() == False: + config.Log("Error", f"插件目录不是目录: {plugin_tool_dir.GetFullPath()}") + return + for file in plugin_tool_dir.DirIter(): if file.endswith(".py") and not file.startswith("__"): module_name = file[:-3] try: diff --git a/CoreRouters/health.py b/CoreRouters/health.py index 3899a81..35e64c7 100644 --- a/CoreRouters/health.py +++ b/CoreRouters/health.py @@ -1,10 +1,14 @@ """健康检查路由""" -import psutil +from ..Convention.Runtime.Config import * +try: + import psutil +except ImportError: + InternalImportingThrow("Internal", ["psutil"]) import os from fastapi import APIRouter from fastapi.responses import JSONResponse -from CoreModules.database import get_db -from Convention.Runtime.GlobalConfig import ProjectConfig, ConsoleFrontColor +from ..CoreModules.database import get_db +from ..Convention.Runtime.GlobalConfig import ProjectConfig, ConsoleFrontColor config = ProjectConfig()