|
|
@@ -1,53 +1,44 @@
|
|
|
-from quart import Blueprint, jsonify, request
|
|
|
-from app.ab_test import GetCoverService
|
|
|
-from app.infra.shared.tools import generate_task_trace_id
|
|
|
+from __future__ import annotations
|
|
|
|
|
|
+from quart import Blueprint
|
|
|
+
|
|
|
+from app.api.v1.deps import ApiDependencies
|
|
|
+from app.api.v1.routers import (
|
|
|
+ create_abtest_bp,
|
|
|
+ create_health_bp,
|
|
|
+ create_tasks_bp,
|
|
|
+ create_tokens_bp,
|
|
|
+)
|
|
|
from app.core.config import GlobalConfigSettings
|
|
|
from app.core.database import DatabaseManager
|
|
|
from app.core.observability import LogService
|
|
|
|
|
|
-from app.api.service import TaskScheduler
|
|
|
-from app.api.service import TaskManager
|
|
|
-from app.api.service import GzhCookieManager
|
|
|
|
|
|
+def register_v1_blueprints(deps: ApiDependencies) -> Blueprint:
|
|
|
+ """
|
|
|
+ v1 路由统一注册入口(按领域拆分)。
|
|
|
+
|
|
|
+ - /api/get_cover
|
|
|
+ - /api/run_task
|
|
|
+ - /api/tasks
|
|
|
+ - /api/save_token
|
|
|
+ - /api/health
|
|
|
+ """
|
|
|
+ api = Blueprint("api", __name__, url_prefix="/api")
|
|
|
+
|
|
|
+ api.register_blueprint(create_health_bp())
|
|
|
+ api.register_blueprint(create_tasks_bp(deps))
|
|
|
+ api.register_blueprint(create_tokens_bp(deps))
|
|
|
+ api.register_blueprint(create_abtest_bp(deps))
|
|
|
|
|
|
-server_blueprint = Blueprint("api", __name__, url_prefix="/api")
|
|
|
+ return api
|
|
|
|
|
|
|
|
|
def server_routes(
|
|
|
pools: DatabaseManager, log_service: LogService, config: GlobalConfigSettings
|
|
|
-):
|
|
|
- @server_blueprint.route("/get_cover", methods=["POST"])
|
|
|
- async def get_cover():
|
|
|
- params = await request.get_json()
|
|
|
- task = GetCoverService(pools, params)
|
|
|
- return jsonify(await task.deal())
|
|
|
-
|
|
|
- @server_blueprint.route("/run_task", methods=["POST"])
|
|
|
- async def run_task():
|
|
|
- trace_id = generate_task_trace_id()
|
|
|
- data = await request.get_json()
|
|
|
- task_scheduler = TaskScheduler(data, log_service, pools, trace_id, config)
|
|
|
- response = await task_scheduler.deal()
|
|
|
- return jsonify(response)
|
|
|
-
|
|
|
- @server_blueprint.route("/health", methods=["GET"])
|
|
|
- async def hello_world():
|
|
|
- # data = await request.get_json()
|
|
|
- return jsonify({"message": "hello world"})
|
|
|
-
|
|
|
- @server_blueprint.route("/tasks", methods=["POST"])
|
|
|
- async def task_list():
|
|
|
- data = await request.get_json()
|
|
|
- TMS = TaskManager(pool=pools, data=data, config=config)
|
|
|
- res = await TMS.list_tasks()
|
|
|
- return jsonify(res)
|
|
|
-
|
|
|
- @server_blueprint.route("/save_token", methods=["POST"])
|
|
|
- async def save_token():
|
|
|
- data = await request.get_json()
|
|
|
- GCM = GzhCookieManager(pool=pools, log_client=log_service)
|
|
|
- res = await GCM.deal(data)
|
|
|
- return jsonify(res)
|
|
|
-
|
|
|
- return server_blueprint
|
|
|
+) -> Blueprint:
|
|
|
+ """
|
|
|
+ 兼容旧入口:保留 server_routes 签名,内部转为新的 deps + 统一注册。
|
|
|
+ """
|
|
|
+ deps = ApiDependencies(db=pools, log=log_service, config=config)
|
|
|
+ return register_v1_blueprints(deps)
|