Selaa lähdekoodia

feat: POST /api/admin/clear-all — clear all problems from DB and disk

nonvioce 3 kuukautta sitten
vanhempi
commit
38bc0ab2fd
1 muutettua tiedostoa jossa 26 lisäystä ja 0 poistoa
  1. 26 0
      tiku-server/app/routers/admin.py

+ 26 - 0
tiku-server/app/routers/admin.py

@@ -69,6 +69,32 @@ def backup_history(request: Request, _=Depends(verify_token)):
     return {"backups": get_backup_history(config)}
 
 
+@router.post("/admin/clear-all")
+def clear_all(request: Request, _=Depends(verify_token)):
+    """清空题库(删除所有题目和数据库索引,保留知识点)"""
+    config = request.app.state.config
+    try:
+        # Delete all docx files
+        for docx in config.problems_dir.glob("*.docx"):
+            docx.unlink()
+        # Delete DB and rebuild schema + knowledge
+        conn = get_connection(config.db_path)
+        conn.execute("DELETE FROM problems")
+        conn.execute("DELETE FROM problems_fts")
+        conn.execute("DELETE FROM cart_items")
+        conn.execute("DELETE FROM import_tasks")
+        conn.commit()
+        conn.close()
+        # Rebuild index
+        from app.services.indexer import incremental_update
+        incremental_update(config)
+        return {"ok": True}
+    except Exception as e:
+        raise HTTPException(status_code=500, detail={
+            "error": {"code": "clear_failed", "message": str(e)}
+        })
+
+
 @router.post("/admin/rebuild-index")
 def rebuild_index(request: Request, _=Depends(verify_token)):
     """手动增量索引"""