feat(feed): 首页列表展示分类标签 + LLM 评论预览

- 后端 ArticleListItem schema 加 commentary / commentary_status / image_ai_url
- 后端 articles.list 接口把以上字段写入响应
- 前端 API 类型同步
- 前端 Feed.vue 卡片:
  * 分类 tag(逗号分隔,多 tag)
  * 评论预览(蓝色引线块,140 字截断,带状态点)
  * 用户点进详情页前就能看到 LLM 点评钩子
This commit is contained in:
Mavis
2026-06-09 15:59:48 +08:00
parent 76e95908e8
commit 474299baf9
4 changed files with 64 additions and 1 deletions

View File

@@ -127,6 +127,10 @@ async def list_articles(
published_at=art.published_at,
fetched_at=art.fetched_at,
image_url=art.image_url,
# 列表预览钩子:分类 + LLM 点评 + AI 插图 缩略图
commentary=art.commentary,
commentary_status=art.commentary_status,
image_ai_url=art.image_ai_url,
is_starred=art.id in starred_ids,
)
items.append(item)

View File

@@ -16,7 +16,7 @@ class SourceBrief(BaseModel):
class ArticleListItem(BaseModel):
"""列表项:精简字段。"""
"""列表项:精简字段(首页只露钩子,详细阅读进详情页)"""
model_config = ConfigDict(from_attributes=True)
@@ -31,6 +31,10 @@ class ArticleListItem(BaseModel):
published_at: datetime | None = None
fetched_at: datetime
image_url: str | None = None
# === 列表预览钩子:点击进详情前的"诱导点" ===
commentary: str | None = None # LLM 点评(列表里截断显示)
commentary_status: str | None = None # ok/failed/pending/n/a
image_ai_url: str | None = None # AI 插图(列表里缩略图)
is_starred: bool = False