feat: 换一批注入用户画像,生成更贴合用户自身的示例问题
CI / 后端测试 (push) Has been cancelled
CI / 前端构建 (push) Has been cancelled

This commit is contained in:
selfrelease
2026-08-31 17:11:41 +08:00
parent a7ef530841
commit 9e8291e8bd
3 changed files with 16 additions and 4 deletions
+10
View File
@@ -312,6 +312,7 @@ class SampleRequest(BaseModel):
scene: str = "legal"
topic: str | None = None
existing: list[str] | None = None # 已展示的示例,避免重复
phone: str | None = None # 用户手机号,用于读取画像个性化推荐
class TopicsRequest(BaseModel):
@@ -461,6 +462,15 @@ def generate_samples(req: SampleRequest):
)
if req.topic:
prompt += f"具体话题:{req.topic}\n\n"
# 注入用户画像,个性化推荐
if req.phone:
try:
profile = profile_store.get(req.phone)
profile_ctx = build_profile_context(profile)
if profile_ctx:
prompt += f"用户画像(请结合画像生成更贴合用户自身情况的问题):\n{profile_ctx}\n\n"
except Exception:
pass
if existing:
prompt += "已展示过的问题(不要重复):\n"
for s in existing:
+4 -2
View File
@@ -38,6 +38,7 @@ import {
DialogTrigger,
} from '@/components/ui/dialog'
import { api } from '@/lib/api'
import { getPhone } from '@/lib/auth'
import { cn } from '@/lib/utils'
import type { AskResponse, EmotionMode, ExpertService, HistoryMessage, KnowledgeDoc, RiskCard, Scene, SessionMode } from '@/types'
@@ -544,11 +545,12 @@ export function ChatPanel({
}, answers.length > 0 ? answers : undefined)
}
/** AI 换一批示例问题 */
/** AI 换一批示例问题(注入用户画像,个性化推荐) */
const handleRefreshSamples = async () => {
setRefreshing(true)
try {
const res = await api.generateSamples(scene, topic, dynamicSamples)
const phone = getPhone() || undefined
const res = await api.generateSamples(scene, topic, dynamicSamples, phone)
setDynamicSamples(res.samples)
} catch {
toast.error('换一批失败,请稍后重试')
+2 -2
View File
@@ -235,9 +235,9 @@ export const api = {
request<{ topics: Array<{ title: string; desc: string; samples: string[] }> }>('/topics', {
method: 'POST', body: JSON.stringify({ scene, existing }),
}),
generateSamples: (scene: Scene = 'legal', topic?: string, existing?: string[]) =>
generateSamples: (scene: Scene = 'legal', topic?: string, existing?: string[], phone?: string) =>
request<{ samples: string[] }>('/samples', {
method: 'POST', body: JSON.stringify({ scene, topic, existing }),
method: 'POST', body: JSON.stringify({ scene, topic, existing, phone }),
}),
// ===== 每日热点问题 =====