|
|
@@ -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)):
|
|
|
"""手动增量索引"""
|