fix: 使用正确的广场接口 /business/square/list

问题根因:
- 一直用 /business/member/square/list(成员广场接口)
- 该接口加了 isPlatformShow=true 和 isAdmin=false 过滤
- 导致大量文章(包括今日最新文章)被过滤掉,只剩124篇
- 正确接口 /business/square/list?type=1 有2504篇文章,今日文章可见

修改内容:
1. 接口地址改为 /business/square/list(4处)
2. 去掉 isPlatformShow 和 isAdmin 参数,只保留 type=1
3. _is_today 时间字段优先用 publishTime(新接口主要返回此字段)
4. 排序和热度权重计算也统一用 publishTime 优先
This commit is contained in:
stefanfeng
2026-04-07 14:32:35 +08:00
parent b6e094c9c0
commit 7d9f5a358b

View File

@@ -401,9 +401,11 @@ class NewsPlatformService:
} | news_service._invalid_ids_cache
def _build(page, size=50):
# Use /business/square/list (not /business/square/list)
# Only type=1 filter — isPlatformShow/isAdmin exclude org-less articles
p = self._build_form({
"pageNum": page, "pageSize": size,
"type": "1", "isPlatformShow": "true", "isAdmin": "false",
"type": "1",
}, cfg)
if org_id:
p["orgId"] = org_id
@@ -421,7 +423,8 @@ class NewsPlatformService:
return items
def _is_today(item):
t = item.get("createTime") or item.get("publishTime") or ""
# API returns publishTime (not createTime) for /business/square/list
t = item.get("publishTime") or item.get("createTime") or item.get("pushTime") or ""
if not t:
return False
try:
@@ -436,7 +439,7 @@ class NewsPlatformService:
async with httpx.AsyncClient(timeout=12) as c:
for page in range(1, 4): # 第1页最新逐页往前
r = await c.get(
f"{biz}/business/member/square/list",
f"{biz}/business/square/list",
headers=self._bearer(token),
params=_build(page),
)
@@ -463,7 +466,7 @@ class NewsPlatformService:
if today_articles:
# 今日文章从新到旧排序createTime 降序)
today_articles.sort(
key=lambda x: x.get("createTime") or x.get("publishTime") or "",
key=lambda x: x.get("publishTime") or x.get("createTime") or x.get("pushTime") or "",
reverse=True
)
# 去重(按 recordId
@@ -502,7 +505,7 @@ class NewsPlatformService:
try:
async with httpx.AsyncClient(timeout=10) as _c:
_r = await _c.get(
f"{biz}/business/member/square/list",
f"{biz}/business/square/list",
headers=self._bearer(token),
params=_build(1),
)
@@ -537,7 +540,7 @@ class NewsPlatformService:
try:
async with httpx.AsyncClient(timeout=15) as c:
r = await c.get(
f"{biz}/business/member/square/list",
f"{biz}/business/square/list",
headers=self._bearer(token),
params=_build(page),
)