feat: 实现会话配置与多轮上下文
- 新增 ConfigPanel 组件:TTS 开关、detail level、语言选择 - 新增 storage.ts:配置持久化到 localStorage - useVisionSession:连接后自动发送 config,维护最近 10 轮对话历史 - App:齿轮按钮展开配置面板,HD 角标,TTS 播放联动 ttsEnabled Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
35
frontend/src/lib/storage.ts
Normal file
35
frontend/src/lib/storage.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
// ============================================================
|
||||
// Storage — localStorage 封装
|
||||
// 职责:会话配置持久化
|
||||
// ============================================================
|
||||
|
||||
import type { SessionConfig } from "../types";
|
||||
|
||||
const CONFIG_KEY = "camtalk:config";
|
||||
|
||||
const DEFAULT_CONFIG: SessionConfig = {
|
||||
ttsEnabled: true,
|
||||
detailLevel: "low",
|
||||
language: "zh-CN",
|
||||
};
|
||||
|
||||
/** 加载配置,无存储时返回默认值 */
|
||||
export function loadConfig(): SessionConfig {
|
||||
try {
|
||||
const raw = localStorage.getItem(CONFIG_KEY);
|
||||
if (!raw) return DEFAULT_CONFIG;
|
||||
const parsed = JSON.parse(raw) as Partial<SessionConfig>;
|
||||
return { ...DEFAULT_CONFIG, ...parsed };
|
||||
} catch {
|
||||
return DEFAULT_CONFIG;
|
||||
}
|
||||
}
|
||||
|
||||
/** 保存配置到 localStorage */
|
||||
export function saveConfig(config: SessionConfig): void {
|
||||
try {
|
||||
localStorage.setItem(CONFIG_KEY, JSON.stringify(config));
|
||||
} catch {
|
||||
// localStorage 不可用时静默失败
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user