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