from fastapi import APIRouter, File, Form, UploadFile from app.schemas.common import ApiResponse from app.services.import_task_service import create_import_task, list_import_tasks, retry_import_task from app.services.imports_service import get_import_summary router = APIRouter(tags=["imports"]) @router.get("/imports/summary", response_model=ApiResponse) def imports_summary() -> ApiResponse: return ApiResponse(data=get_import_summary()) @router.get("/imports/tasks", response_model=ApiResponse) def import_tasks() -> ApiResponse: return ApiResponse(data=list_import_tasks()) @router.post("/imports/upload", response_model=ApiResponse) async def upload_import( file: UploadFile = File(...), source_type: int = Form(default=7), ) -> ApiResponse: content = await file.read() task = create_import_task(content, file.filename or "domains.txt", source_type=source_type) return ApiResponse(message="导入任务已创建", data=task) @router.post("/imports/text", response_model=ApiResponse) def upload_import_text(payload: dict) -> ApiResponse: text = str(payload.get("text") or "") filename = str(payload.get("filename") or "manual_domains.txt") source_type = int(payload.get("source_type") or 6) task = create_import_task(text.encode("utf-8"), filename, source_type=source_type) return ApiResponse(message="文本导入任务已创建", data=task) @router.post("/imports/tasks/{task_id}/retry", response_model=ApiResponse) def import_task_retry(task_id: str) -> ApiResponse: task = retry_import_task(task_id) return ApiResponse(message="导入任务已重新加入队列", data=task)