|
|
@@ -100,14 +100,20 @@ class JavaClient:
|
|
|
return {}
|
|
|
|
|
|
async def get_microbiome_articles(self) -> list[dict]:
|
|
|
- """拉取菌群知识库文章(分页,避免单次响应过大导致 Broken pipe)"""
|
|
|
+ """拉取菌群知识库文章(统一数据源 health_knowledge_base,item_type='article')
|
|
|
+
|
|
|
+ 2026-10-20 迁移:microbiome_article 表废弃,809 篇菌群知识统一到
|
|
|
+ health_knowledge_base 管理。分页按 id 升序稳定(ORDER BY id),
|
|
|
+ 避免旧 /api/microbiome/article/list 接口 LIMIT/OFFSET 无稳定排序
|
|
|
+ 导致的跨页重复(曾拉到 30 条重复 → 向量库缺内容)。
|
|
|
+ """
|
|
|
client = await self._get_client()
|
|
|
page = 1
|
|
|
- size = 50
|
|
|
+ size = 100
|
|
|
records = []
|
|
|
while True:
|
|
|
- resp = await client.post("/api/microbiome/article/list",
|
|
|
- json={"page": page, "size": size, "keyword": "", "category": ""})
|
|
|
+ resp = await client.post("/api/health/knowledge/article/list",
|
|
|
+ json={"page": page, "size": size})
|
|
|
data = resp.json()
|
|
|
if data.get("code") != 200:
|
|
|
break
|
|
|
@@ -118,7 +124,24 @@ class JavaClient:
|
|
|
if page * size >= int(total or 0) or not items:
|
|
|
break
|
|
|
page += 1
|
|
|
- return records
|
|
|
+ # health_knowledge_base 字段 → loader/_build_chunks 所需结构
|
|
|
+ mapped = []
|
|
|
+ for r in records:
|
|
|
+ if r.get("id") is None:
|
|
|
+ continue
|
|
|
+ title = r.get("itemName") or ""
|
|
|
+ if not title:
|
|
|
+ continue
|
|
|
+ mapped.append({
|
|
|
+ "id": r.get("id"),
|
|
|
+ "title": title,
|
|
|
+ "content": r.get("description") or "",
|
|
|
+ "category": r.get("category") or "",
|
|
|
+ "tags": "",
|
|
|
+ "source_url": r.get("source") or "",
|
|
|
+ "pub_date": str(r.get("updatedAt") or r.get("updated_at") or ""),
|
|
|
+ })
|
|
|
+ return mapped
|
|
|
|
|
|
async def get_dan_knowledge_base(self) -> list[dict]:
|
|
|
"""拉取知识库内容(dan_knowledge_base 表,仅启用 status=1)"""
|