Files
YG-Rules/app/routes/rules.py

38 lines
1.2 KiB
Python

"""规则生成接口。"""
from __future__ import annotations
from flask import Blueprint, current_app, request
from app.utils.response import error, success
from app.utils.rule_generation import RuleGenerationService
rules_bp = Blueprint("rules", __name__)
@rules_bp.post("/api/rules/generate")
def generate_rules():
payload = request.get_json(silent=True) or request.form.to_dict() or {}
limit = int(payload.get("limit", 1))
create_sql = bool(payload.get("create_sql", current_app.config.get("CREATE_SQL", False)))
state = RuleGenerationService(create_sql=create_sql).start(limit=limit)
data = {
"task_id": state["task_id"],
"status": state["status"],
"async": True,
"limit": state["limit"],
"status_url": f"/api/rules/status?task_id={state['task_id']}",
}
return success(data, message="规则生成任务创建成功")
@rules_bp.get("/api/rules/status")
def rule_status():
task_id = request.args.get("task_id", "")
if not task_id:
return error("查询失败:缺少 task_id", 400)
state = RuleGenerationService().get_status(task_id)
if not state:
return error("查询失败:任务不存在", 404)
return success(state, message="查询成功")