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

47 lines
1.6 KiB
Python
Raw Normal View History

2026-06-10 19:15:24 +08:00
"""风险领域接口。"""
from __future__ import annotations
from flask import Blueprint, request
from app.utils.parser import parse_upload_file
from app.utils.response import error, success
from app.utils.schema_storage import SchemaStorage
from app.utils.storage import DomainStorage
domain_bp = Blueprint("domain", __name__)
@domain_bp.get("/api/domains")
def list_domains():
return success({"domains": DomainStorage().list_domains()}, message="查询成功")
@domain_bp.post("/api/domains")
def save_domains():
payload = request.get_json(silent=True) or {}
rows = payload.get("domains") or payload.get("rows") or []
if not rows:
return error("保存失败:未提供风险领域", 400)
return success({"domains": DomainStorage().save_domains(rows)}, message="保存成功")
@domain_bp.post("/api/domains/upload")
def upload_domains():
file = request.files.get("file")
if not file:
return error("上传失败:缺少上传文件", 400)
rows = parse_upload_file(file.stream, file.filename)
if not rows:
return error("上传失败:未解析到风险领域", 400)
return success({"domains": DomainStorage().save_domains(rows), "total": len(rows)}, message="上传成功")
@domain_bp.delete("/api/domains")
@domain_bp.post("/api/domains/clear")
@domain_bp.delete("/api/domains/clear")
def clear_domains():
deleted_count = DomainStorage().clear_all()
schema_cleared = bool(SchemaStorage().delete_file())
return success({"deleted_count": deleted_count, "schema_cleared": schema_cleared}, message="删除成功")