luojunhui 6 дней назад
Родитель
Сommit
3d34c25c1d
1 измененных файлов с 8 добавлено и 5 удалено
  1. 8 5
      src/domains/content_supply/_mapper.py

+ 8 - 5
src/domains/content_supply/_mapper.py

@@ -461,12 +461,15 @@ class AccountMapper(ContentSupplyConst):
         )
 
     async def list_accounts_for_article_crawl(self, *, limit: int) -> List[Dict]:
-        """列出有 gh_id 的账号,用于文章抓取(crawl_deep_done=0 优先)"""
+        """列出有 gh_id 的账号,用于文章抓取(crawl_deep_done=0 优先,同状态按最高质量分逆序)"""
         query = f"""
-            SELECT channel_account_id, gh_id, crawl_cursor, crawl_deep_done
-            FROM {self.ACCOUNT_TABLE}
-            WHERE gh_id IS NOT NULL AND gh_id != ''
-            ORDER BY crawl_deep_done ASC, gh_id ASC
+            SELECT a.channel_account_id, a.gh_id, a.crawl_cursor, a.crawl_deep_done,
+                   MAX(r.quality_score) AS max_quality_score
+            FROM {self.ACCOUNT_TABLE} a
+            LEFT JOIN {self.RELATION_TABLE} r ON a.biz = r.biz
+            WHERE a.gh_id IS NOT NULL AND a.gh_id != ''
+            GROUP BY a.channel_account_id, a.gh_id, a.crawl_cursor, a.crawl_deep_done
+            ORDER BY a.crawl_deep_done ASC, max_quality_score DESC, a.gh_id ASC
             LIMIT %s
         """
         return await self.pool.fetch(query=query, params=(limit,))