feat:添加对话情景功能

This commit is contained in:
2026-06-14 20:32:30 +08:00
parent c3118dd72a
commit b60e513317
20 changed files with 438 additions and 59 deletions

View File

@@ -3,7 +3,7 @@
// 来源docs/03-接口文档.md §五 错误码
// ============================================================
import type { ErrorCode } from "../types";
// ErrorCode type reserved for future use
/** 将错误码转为用户友好文案(需要传入翻译函数) */
export function getErrorMessage(code: string, translate: (key: string) => string): string {

View File

@@ -26,6 +26,21 @@ export const enUS: TranslationMap = {
"settings.detail.high": "High",
"settings.language": "Language",
"settings.language.desc": "Interaction language preference",
"settings.scenario": "Scenario",
"settings.scenario.desc": "Choose the AI's role",
// Scenarios
"scenario.choose": "Choose a scenario",
"scenario.freeChat": "Free Chat",
"scenario.freeChat.desc": "AI visual assistant, chat freely",
"scenario.interviewer": "Mock Interviewer",
"scenario.interviewer.desc": "AI plays interviewer for practice",
"scenario.englishTeacher": "English Tutor",
"scenario.englishTeacher.desc": "AI English tutor, corrects grammar",
"scenario.debate": "Debate Opponent",
"scenario.debate.desc": "AI challenges your viewpoints",
"scenario.interpreter": "Interpreter",
"scenario.interpreter.desc": "Real-time Chinese-English translation",
// Video indicators
"video.observing": "👁️ Observing",
@@ -63,6 +78,7 @@ export const enUS: TranslationMap = {
"chat.userLabel": "You",
"chat.input.placeholder": "Type a message...",
"chat.send": "Send",
"chat.scenarioSwitched": "Switched to {name} mode",
// Session messages
"session.changeDetected": "👁️ Scene change detected",

View File

@@ -26,6 +26,21 @@ export const jaJP: TranslationMap = {
"settings.detail.high": "高",
"settings.language": "言語",
"settings.language.desc": "インタラクション言語の設定",
"settings.scenario": "シナリオ",
"settings.scenario.desc": "AIの役割を選択",
// Scenarios
"scenario.choose": "シナリオを選択",
"scenario.freeChat": "フリーチャット",
"scenario.freeChat.desc": "AIビジュアルアシスタントと自由に会話",
"scenario.interviewer": "模擬面接官",
"scenario.interviewer.desc": "AIが面接官として模擬面接を実施",
"scenario.englishTeacher": "英語の先生",
"scenario.englishTeacher.desc": "AI英語教師が文法を修正し会話を導く",
"scenario.debate": "ディベート相手",
"scenario.debate.desc": "AIがあなたの观点に反論し論理的思考を鍛える",
"scenario.interpreter": "同時通訳",
"scenario.interpreter.desc": "リアルタイムで中日相互翻訳",
// Video indicators
"video.observing": "👁️ 観察中",
@@ -63,6 +78,7 @@ export const jaJP: TranslationMap = {
"chat.userLabel": "あなた",
"chat.input.placeholder": "メッセージを入力...",
"chat.send": "送信",
"chat.scenarioSwitched": "{name} モードに切り替えました",
// Session messages
"session.changeDetected": "👁️ シーン変化を検出",

View File

@@ -26,6 +26,21 @@ export const zhCN: TranslationMap = {
"settings.detail.high": "高",
"settings.language": "语言",
"settings.language.desc": "交互语言偏好",
"settings.scenario": "对话情景",
"settings.scenario.desc": "选择 AI 扮演的角色",
// Scenarios
"scenario.choose": "选择对话情景",
"scenario.freeChat": "自由对话",
"scenario.freeChat.desc": "AI 视觉助手,自由聊天",
"scenario.interviewer": "模拟面试官",
"scenario.interviewer.desc": "AI 扮演面试官,进行模拟面试",
"scenario.englishTeacher": "英语老师",
"scenario.englishTeacher.desc": "AI 英语外教,纠正语法并引导对话",
"scenario.debate": "辩论对手",
"scenario.debate.desc": "AI 反驳你的观点,锻炼逻辑思维",
"scenario.interpreter": "同声翻译",
"scenario.interpreter.desc": "实时中英互译,口语化翻译",
// Video indicators
"video.observing": "👁️ 观察中",
@@ -63,6 +78,7 @@ export const zhCN: TranslationMap = {
"chat.userLabel": "你",
"chat.input.placeholder": "输入文字对话...",
"chat.send": "发送",
"chat.scenarioSwitched": "已切换到 {name} 模式",
// Session messages
"session.changeDetected": "👁️ 画面变化检测",

View File

@@ -0,0 +1,47 @@
// ============================================================
// scenarios — 对话情景定义
// 职责:定义预置情景的展示数据和交互行为
// 注意system prompt 由后端 scenarios.go 管理,此处仅定义 UI 展示数据
// ============================================================
export interface Scenario {
id: string;
icon: string;
nameKey: string; // i18n key
descKey: string; // i18n key
defaultLanguage?: string; // 可选:切换情景时自动设置的语言
}
export const scenarios: Scenario[] = [
{
id: "free_chat",
icon: "💬",
nameKey: "scenario.freeChat",
descKey: "scenario.freeChat.desc",
},
{
id: "interviewer",
icon: "🎯",
nameKey: "scenario.interviewer",
descKey: "scenario.interviewer.desc",
},
{
id: "english_teacher",
icon: "📚",
nameKey: "scenario.englishTeacher",
descKey: "scenario.englishTeacher.desc",
defaultLanguage: "en-US",
},
{
id: "debate",
icon: "⚔️",
nameKey: "scenario.debate",
descKey: "scenario.debate.desc",
},
{
id: "interpreter",
icon: "🌐",
nameKey: "scenario.interpreter",
descKey: "scenario.interpreter.desc",
},
];

View File

@@ -15,6 +15,7 @@ const DEFAULT_CONFIG: SessionConfig = {
ttsEnabled: true,
detailLevel: "low",
language: "zh-CN",
scenario: "free_chat",
};
/** 加载配置,无存储时返回默认值 */