feat: add profile management page with full CRUD UI
- Add frontend API layer, Pinia store, and 5 components (ProfileCard, ProfilesPanel, ProfileCreateModal, ProfileRenameModal, ProfileImportModal) - Add ProfilesView page with card grid layout and expandable details - Modify export endpoint to stream file as browser download instead of returning server path - Add sidebar nav entry, router route, and i18n translations (en/zh) - Support create, rename, delete, switch (with gateway restart), export, and import profiles Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -31,6 +31,9 @@ export default {
|
||||
disable: 'Disable',
|
||||
configured: 'Configured',
|
||||
notConfigured: 'Not configured',
|
||||
confirm: 'Confirm',
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
},
|
||||
|
||||
// Sidebar
|
||||
@@ -38,6 +41,7 @@ export default {
|
||||
chat: 'Chat',
|
||||
jobs: 'Jobs',
|
||||
models: 'Models',
|
||||
profiles: 'Profiles',
|
||||
skills: 'Skills',
|
||||
memory: 'Memory',
|
||||
logs: 'Logs',
|
||||
@@ -197,6 +201,50 @@ export default {
|
||||
fetchFailed: 'Failed to fetch models',
|
||||
},
|
||||
|
||||
// Profiles
|
||||
profiles: {
|
||||
title: 'Profiles',
|
||||
create: 'Create Profile',
|
||||
import: 'Import',
|
||||
export: 'Export',
|
||||
rename: 'Rename',
|
||||
delete: 'Delete',
|
||||
switchTo: 'Switch to',
|
||||
switchConfirm: 'Switching to profile "{name}" will restart the gateway. Continue?',
|
||||
switchSuccess: 'Switched to profile "{name}"',
|
||||
switchFailed: 'Failed to switch profile. Gateway may need manual restart.',
|
||||
createSuccess: 'Profile "{name}" created',
|
||||
createFailed: 'Failed to create profile',
|
||||
renameSuccess: 'Profile renamed',
|
||||
renameFailed: 'Failed to rename profile',
|
||||
deleteConfirm: 'Are you sure you want to delete profile "{name}"?',
|
||||
deleteSuccess: 'Profile deleted',
|
||||
deleteFailed: 'Failed to delete profile',
|
||||
exportSuccess: 'Profile exported',
|
||||
exportFailed: 'Failed to export profile',
|
||||
importSuccess: 'Profile imported',
|
||||
importFailed: 'Failed to import profile',
|
||||
name: 'Profile Name',
|
||||
namePlaceholder: 'Enter profile name',
|
||||
newName: 'New Name',
|
||||
newNamePlaceholder: 'Enter new name',
|
||||
cloneFromCurrent: 'Clone from current profile',
|
||||
archivePath: 'Archive Path',
|
||||
archivePathPlaceholder: 'Server path to archive file',
|
||||
importName: 'Profile Name (optional)',
|
||||
importNamePlaceholder: 'Leave empty to use archive name',
|
||||
active: 'Active',
|
||||
model: 'Model',
|
||||
gateway: 'Gateway',
|
||||
alias: 'Alias',
|
||||
provider: 'Provider',
|
||||
path: 'Path',
|
||||
skills: 'Skills',
|
||||
hasEnv: 'Has .env',
|
||||
hasSoulMd: 'Has soul.md',
|
||||
noProfiles: 'No profiles found. Create one to get started.',
|
||||
},
|
||||
|
||||
// Logs
|
||||
logs: {
|
||||
title: 'Logs',
|
||||
|
||||
@@ -31,6 +31,9 @@ export default {
|
||||
disable: '禁用',
|
||||
configured: '已配置',
|
||||
notConfigured: '未配置',
|
||||
confirm: '确定',
|
||||
expand: '展开',
|
||||
collapse: '收起',
|
||||
},
|
||||
|
||||
// 侧边栏
|
||||
@@ -38,6 +41,7 @@ export default {
|
||||
chat: '对话',
|
||||
jobs: '任务',
|
||||
models: '模型',
|
||||
profiles: '配置',
|
||||
skills: '技能',
|
||||
memory: '记忆',
|
||||
logs: '日志',
|
||||
@@ -197,6 +201,50 @@ export default {
|
||||
fetchFailed: '获取模型失败',
|
||||
},
|
||||
|
||||
// 配置
|
||||
profiles: {
|
||||
title: '配置',
|
||||
create: '创建配置',
|
||||
import: '导入',
|
||||
export: '导出',
|
||||
rename: '重命名',
|
||||
delete: '删除',
|
||||
switchTo: '切换到',
|
||||
switchConfirm: '切换到配置 "{name}" 将重启网关,是否继续?',
|
||||
switchSuccess: '已切换到配置 "{name}"',
|
||||
switchFailed: '切换配置失败,网关可能需要手动重启',
|
||||
createSuccess: '配置 "{name}" 已创建',
|
||||
createFailed: '创建配置失败',
|
||||
renameSuccess: '配置已重命名',
|
||||
renameFailed: '重命名配置失败',
|
||||
deleteConfirm: '确定删除配置 "{name}" 吗?',
|
||||
deleteSuccess: '配置已删除',
|
||||
deleteFailed: '删除配置失败',
|
||||
exportSuccess: '配置已导出',
|
||||
exportFailed: '导出配置失败',
|
||||
importSuccess: '配置已导入',
|
||||
importFailed: '导入配置失败',
|
||||
name: '配置名称',
|
||||
namePlaceholder: '输入配置名称',
|
||||
newName: '新名称',
|
||||
newNamePlaceholder: '输入新名称',
|
||||
cloneFromCurrent: '从当前配置克隆',
|
||||
archivePath: '归档路径',
|
||||
archivePathPlaceholder: '归档文件的服务器路径',
|
||||
importName: '配置名称(可选)',
|
||||
importNamePlaceholder: '留空则使用归档名称',
|
||||
active: '活跃',
|
||||
model: '模型',
|
||||
gateway: '网关',
|
||||
alias: '别名',
|
||||
provider: 'Provider',
|
||||
path: '路径',
|
||||
skills: '技能',
|
||||
hasEnv: '有 .env',
|
||||
hasSoulMd: '有 soul.md',
|
||||
noProfiles: '暂无配置,创建一个开始吧。',
|
||||
},
|
||||
|
||||
// 日志
|
||||
logs: {
|
||||
title: '日志',
|
||||
|
||||
Reference in New Issue
Block a user