jihuaqiang 4 месяцев назад
Родитель
Сommit
71a7bda128
3 измененных файлов с 18 добавлено и 17 удалено
  1. 2 11
      src/api/main.py
  2. 15 5
      src/database/models.py
  3. 1 1
      src/tools/scheduler.py

+ 2 - 11
src/api/main.py

@@ -203,7 +203,7 @@ async def get_task(task_id: int):
 
 
 @app.get("/tasks")
-async def get_tasks(status: int = None, limit: int = 100):
+async def get_tasks(status: int = None, page_number: int = 1, page_size: int = 10):
     """
     获取任务列表接口
     
@@ -220,16 +220,7 @@ async def get_tasks(status: int = None, limit: int = 100):
         raise HTTPException(status_code=503, detail="数据库未初始化")
     
     try:
-        if status is not None:
-            tasks = task_dao.get_tasks_by_status(status, limit)
-        else:
-            # 获取所有状态的任务(这里简化处理,实际可能需要更复杂的查询)
-            all_tasks = []
-            for s in [0, 1, 2, 3]:
-                tasks_by_status = task_dao.get_tasks_by_status(s, limit // 4)
-                all_tasks.extend(tasks_by_status)
-            tasks = all_tasks[:limit]
-        
+        tasks = task_dao.get_tasks_by_status(status, page_number, page_size)
         return {
             "tasks": [
                 {

+ 15 - 5
src/database/models.py

@@ -192,21 +192,31 @@ class QueryTaskDAO:
             logger.error(f"获取任务失败: {e}")
             return None
     
-    def get_tasks_by_status(self, status: int, limit: int = 100) -> List[KnowledgeSuggestQuery]:
+    def get_tasks_by_status(self, status: Optional[int] = None, page_number: int = 1, page_size: int = 10) -> List[KnowledgeSuggestQuery]:
         """
         根据状态获取任务列表
         
         Args:
-            status: 任务状态
-            limit: 限制数量
+            status: 任务状态(可选,不传则查询所有状态)
+            page_number: 页码
+            page_size: 每页数量
             
         Returns:
             任务列表
         """
         try:
             with self.db_manager.get_cursor() as cursor:
-                sql = "SELECT * FROM knowledge_suggest_query WHERE status = %s ORDER BY task_id DESC LIMIT %s"
-                cursor.execute(sql, (status, limit))
+                # 计算偏移量
+                offset = (page_number - 1) * page_size
+                
+                # 根据是否传入status动态构建SQL
+                if status is not None:
+                    sql = "SELECT * FROM knowledge_suggest_query WHERE status = %s ORDER BY task_id DESC LIMIT %s OFFSET %s"
+                    cursor.execute(sql, (status, page_size, offset))
+                else:
+                    sql = "SELECT * FROM knowledge_suggest_query ORDER BY task_id DESC LIMIT %s OFFSET %s"
+                    cursor.execute(sql, (page_size, offset))
+                
                 results = cursor.fetchall()
                 
                 return [KnowledgeSuggestQuery.from_dict(row) for row in results]

+ 1 - 1
src/tools/scheduler.py

@@ -67,7 +67,7 @@ class TaskScheduler:
         """处理待执行的任务"""
         try:
             # 获取一条待执行的任务
-            pending_tasks = self.task_dao.get_tasks_by_status(QueryTaskStatus.PENDING, limit=1)
+            pending_tasks = self.task_dao.get_tasks_by_status(QueryTaskStatus.PENDING, page_number=1, page_size=1)
             
             if not pending_tasks:
                 logger.info("没有待执行的任务")