feat(commentary): 双 provider 评论 — Angel(Agnes) + 美团大模型(LongCat)
- 新增 articles.commentary_meituan{_status,_model,_error} 4 列 + commentary_engine
- LlmSetting 加 meituan_api_key/base_url/chat_model/interval_sec/enabled/commentary_prompt
- 新 app/services/llm/providers.py 工厂,支持多 provider 客户端
- enrichment 流程改为 commentary_angel + commentary_meituan 并行(asyncio.gather),
任一 provider 失败不影响另一个
- enrichment_loop 状态判定:任一 provider 状态不是 ok 都视为待 enrich
- alembic 0004_dual_commentary 迁移
- 前端 Feed 卡片 + ArticleDetail 详情页各加一条'美团评论'卡
- AdminLlmSettings 加美团 provider 配置卡(独立 api_key 编辑器,不回显明文)
- LlmSettingOut.meituan_api_key_set (bool) 替代直接回传 key
- 默认 URL https://api.longcat.chat/openai/v1 / 默认模型 LongCat-2.0-Preview
This commit is contained in:
@@ -224,20 +224,36 @@ onMounted(async () => {
|
||||
{{ bodyExcerpt(a.body_zh_text || a.summary_zh, 220) }}
|
||||
</div>
|
||||
|
||||
<!-- 评论钩子(淡木色背景 + 木色左边框,与 Android 对齐) -->
|
||||
<!-- 评论钩子(双 provider:Angel + 美团,淡木色背景 + 木色左边框,与 Android 对齐) -->
|
||||
<div
|
||||
v-if="a.commentary"
|
||||
v-if="a.commentary || a.commentary_meituan"
|
||||
class="commentary-box"
|
||||
>
|
||||
<NSpace align="center" :size="6" style="margin-bottom: 6px">
|
||||
<span class="commentary-label">💬 评论</span>
|
||||
<NTag size="tiny" :type="commentaryStatusType(a.commentary_status)" round :bordered="false">
|
||||
{{ a.commentary_status || 'n/a' }}
|
||||
</NTag>
|
||||
</NSpace>
|
||||
<div class="commentary-text">
|
||||
{{ previewCommentary(a.commentary, 140) }}
|
||||
</div>
|
||||
<!-- Angel 评论 -->
|
||||
<template v-if="a.commentary">
|
||||
<NSpace align="center" :size="6" style="margin-bottom: 6px">
|
||||
<span class="commentary-label">💬 Angel 评论</span>
|
||||
<NTag size="tiny" :type="commentaryStatusType(a.commentary_status)" round :bordered="false">
|
||||
{{ a.commentary_status || 'n/a' }}
|
||||
</NTag>
|
||||
</NSpace>
|
||||
<div class="commentary-text">
|
||||
{{ previewCommentary(a.commentary, 140) }}
|
||||
</div>
|
||||
</template>
|
||||
<!-- 美团评论 -->
|
||||
<template v-if="a.commentary_meituan">
|
||||
<div v-if="a.commentary" class="commentary-divider" />
|
||||
<NSpace align="center" :size="6" style="margin-bottom: 6px">
|
||||
<span class="commentary-label commentary-label-meituan">🐱 美团评论</span>
|
||||
<NTag size="tiny" :type="commentaryStatusType(a.commentary_meituan_status)" round :bordered="false">
|
||||
{{ a.commentary_meituan_status || 'n/a' }}
|
||||
</NTag>
|
||||
</NSpace>
|
||||
<div class="commentary-text">
|
||||
{{ previewCommentary(a.commentary_meituan, 140) }}
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</NSpace>
|
||||
</NCard>
|
||||
@@ -277,12 +293,23 @@ onMounted(async () => {
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
.commentary-label-meituan {
|
||||
color: #c2410c; /* 橙色,与 Angel 区分 */
|
||||
}
|
||||
|
||||
.commentary-text {
|
||||
color: var(--color-letter);
|
||||
font-size: 13px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.commentary-divider {
|
||||
height: 1px;
|
||||
background: var(--color-primary-soft);
|
||||
margin: 10px 0;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* ===== 桌面端默认宽度 ===== */
|
||||
.feed-source-select {
|
||||
min-width: 240px;
|
||||
|
||||
Reference in New Issue
Block a user