47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""风险领域接口。"""
|
|
|
|
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="删除成功")
|