38 lines
1.2 KiB
Python
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="查询成功")
|