fix: 换一批每次都调AI注入用户画像生成,新问题追加到池
This commit is contained in:
@@ -285,9 +285,8 @@ export function ChatPanel({
|
||||
const [loading, setLoading] = useState(false)
|
||||
const [dynamicSamples, setDynamicSamples] = useState<string[]>(samples)
|
||||
const [refreshing, setRefreshing] = useState(false)
|
||||
/** 当天热点问题池(从后端加载的全部问题)和当前批次起始索引 */
|
||||
const [dailyPool, setDailyPool] = useState<string[]>([])
|
||||
const [poolIndex, setPoolIndex] = useState(0)
|
||||
/** 当天热点问题池(从后端加载 + AI 追加),用 ref 避免闭包旧值 */
|
||||
const dailyPoolRef = useRef<string[]>([])
|
||||
const BATCH_SIZE = 12
|
||||
|
||||
// ===== 2.0 新增:案卡状态 =====
|
||||
@@ -411,8 +410,7 @@ export function ChatPanel({
|
||||
api.getDailyTopics(scene)
|
||||
.then((res) => {
|
||||
if (res.questions?.length > 0) {
|
||||
setDailyPool(res.questions)
|
||||
setPoolIndex(0)
|
||||
dailyPoolRef.current = res.questions
|
||||
setDynamicSamples(res.questions.slice(0, BATCH_SIZE))
|
||||
}
|
||||
})
|
||||
@@ -551,26 +549,15 @@ export function ChatPanel({
|
||||
}, answers.length > 0 ? answers : undefined)
|
||||
}
|
||||
|
||||
/** 换一批:优先从当天热点池轮换,池用完再调 AI 生成(注入用户画像) */
|
||||
/** 换一批:每次都调 AI 生成(注入用户画像),新问题追加到池中 */
|
||||
const handleRefreshSamples = async () => {
|
||||
// 池里还有未展示的,直接取下一批
|
||||
const nextIndex = poolIndex + BATCH_SIZE
|
||||
if (nextIndex < dailyPool.length) {
|
||||
setPoolIndex(nextIndex)
|
||||
setDynamicSamples(dailyPool.slice(nextIndex, nextIndex + BATCH_SIZE))
|
||||
return
|
||||
}
|
||||
// 池用完,调 AI 生成新问题
|
||||
setRefreshing(true)
|
||||
try {
|
||||
const phone = getPhone() || undefined
|
||||
const res = await api.generateSamples(scene, topic, dynamicSamples, phone)
|
||||
if (res.samples?.length > 0) {
|
||||
// AI 生成的新问题加入池并显示
|
||||
const newPool = [...dailyPool, ...res.samples]
|
||||
const newIndex = dailyPool.length
|
||||
setDailyPool(newPool)
|
||||
setPoolIndex(newIndex)
|
||||
// 新问题追加到池末尾并显示
|
||||
dailyPoolRef.current = [...dailyPoolRef.current, ...res.samples]
|
||||
setDynamicSamples(res.samples)
|
||||
}
|
||||
} catch {
|
||||
|
||||
Reference in New Issue
Block a user