|
@@ -461,12 +461,15 @@ class AccountMapper(ContentSupplyConst):
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
async def list_accounts_for_article_crawl(self, *, limit: int) -> List[Dict]:
|
|
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"""
|
|
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
|
|
LIMIT %s
|
|
|
"""
|
|
"""
|
|
|
return await self.pool.fetch(query=query, params=(limit,))
|
|
return await self.pool.fetch(query=query, params=(limit,))
|