fix(consultation): decouple reply metadata from prompt

This commit is contained in:
Jesse_Chen
2026-08-14 18:01:30 +08:00
parent 0e0268f611
commit 09f811a79e
6 changed files with 88 additions and 13 deletions
+5 -3
View File
@@ -1,5 +1,7 @@
export type ReplyTheme = "career" | "marriage" | "wealth" | "timing" | "general";
import type { ConsultationReplyMetadata } from "./consultation-reply-metadata.ts";
const fallbackSuggestions: Record<ReplyTheme, readonly [string, string, string]> = {
career: ["我更适合怎样的职业路径?", "未来一年事业上要避开什么?", "我该如何发挥自己的优势?"],
marriage: ["我在关系里容易重复什么模式?", "怎样的伴侣更适合我?", "未来一年关系上要注意什么?"],
@@ -46,12 +48,12 @@ function stripAgentReplyMetadata(value: string) {
return { text, suggestions, title };
}
export function parseAgentReply(value: string, theme: ReplyTheme) {
export function parseAgentReply(value: string, theme: ReplyTheme, metadata?: ConsultationReplyMetadata) {
const parsed = stripAgentReplyMetadata(value);
return {
text: parsed.text,
suggestions: parsed.suggestions.length === 3 ? parsed.suggestions : [...fallbackSuggestions[theme]],
title: parsed.title,
suggestions: metadata?.suggestions ?? (parsed.suggestions.length === 3 ? parsed.suggestions : [...fallbackSuggestions[theme]]),
title: metadata?.title ?? parsed.title,
};
}