feat:添加对话情景功能
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "👁️ シーン変化を検出",
|
||||
|
||||
@@ -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": "👁️ 画面变化检测",
|
||||
|
||||
47
frontend/src/lib/scenarios.ts
Normal file
47
frontend/src/lib/scenarios.ts
Normal 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",
|
||||
},
|
||||
];
|
||||
@@ -15,6 +15,7 @@ const DEFAULT_CONFIG: SessionConfig = {
|
||||
ttsEnabled: true,
|
||||
detailLevel: "low",
|
||||
language: "zh-CN",
|
||||
scenario: "free_chat",
|
||||
};
|
||||
|
||||
/** 加载配置,无存储时返回默认值 */
|
||||
|
||||
Reference in New Issue
Block a user