持久化(P1-c):新建 usePersistedRef composable,Tasks/AuditLog/ProjectDetail 等接入 localStorage
AuditLog(P1-d):后端 list_tool_executions 加 WHERE 筛选+返 {items,total,has_more},前端对接+长列折叠+筛选持久化
数据源解耦(P1-g):ProjectDetail projectTasks 按 project_id 独立加载 + ChatInput @项目联想独立加载(不读 store.tasks 当前页)
GitChanges(12a):后端 get_module_commits 加 git rev-list --count 返 total,前端显真实总数
原12大改:Dashboard 统计卡压底行(1)/Projects 列表卡片视图(2)/project_event 埋点排序(3)/TaskDetail 重设计(4)/IdeaDetail 重设计(5)/KnowledgeDetail 重设计(6)/界面持久化+侧栏Ctrl+B+审批数字键(7)/ProjectDetail 三栏改两栏(10)
P2打磨:文件浏览器(FileTree去重/FilePreview行号.md Diff/selectedFilePath归位)/settings反馈(假保存/端口校验)/AI会话(try-catch/scrollIntoView)/后端计数(move_queue事件/timeline total/workflow分页/import_batch分块)/杂项(TopBar/ConfirmDialog键盘/CIStatus i18n/ToolResultBody/ModuleNode/ApprovalDialog全选)
99 lines
3.1 KiB
TypeScript
99 lines
3.1 KiB
TypeScript
export default {
|
|
knowledge: {
|
|
title: '📚 Knowledge Base',
|
|
add: '+ New Knowledge',
|
|
tab: {
|
|
library: 'Library',
|
|
// inbox = pending items (candidate + pending_review); library is published-only (F-260616-02 decision a)
|
|
inbox: 'Pending',
|
|
},
|
|
searchPlaceholder: 'Search title, tags, content...',
|
|
categoryAll: 'All',
|
|
emptyInbox: '✅ No pending items',
|
|
emptyLibrary: '📭 No matching knowledge',
|
|
edit: '✏️ Edit',
|
|
publish: 'Publish',
|
|
reject: 'Reject',
|
|
archive: 'Archive',
|
|
// ⑤ Operation feedback toast
|
|
savedToast: 'Saved',
|
|
publishedToast: 'Published to library',
|
|
rejectedToast: 'Rejected',
|
|
archivedToast: 'Archived',
|
|
createdToast: 'Created, moved to pending',
|
|
reuseCount: '🔄 Reused {n} times',
|
|
confidenceBadge: 'Confidence: {label}',
|
|
contentLabel: 'Content',
|
|
tagsLabel: 'Tags',
|
|
tagsNone: 'None',
|
|
tagsPlaceholder: 'comma separated',
|
|
traceTitle: '🔍 Provenance',
|
|
traceMethod: 'Origin',
|
|
traceSource: 'Source conversation',
|
|
traceTime: 'Created at',
|
|
originExtracted: '🤖 Extracted by AI',
|
|
originManual: '✍️ Manually added',
|
|
originUnknown: '—',
|
|
reasoningLabel: '🤖 AI Reasoning',
|
|
refTitle: '🔄 References ({n})',
|
|
refEmpty: 'Not referenced yet',
|
|
loadMore: 'Load more ({n} left)',
|
|
lifecycleTitle: '📅 Lifecycle',
|
|
detailEmptyHint: 'Select a knowledge on the left to view its full lifecycle',
|
|
createTitle: 'New Knowledge',
|
|
kindLabel: 'Type',
|
|
titleLabel: 'Title',
|
|
titlePlaceholder: 'Short title',
|
|
contentPlaceholder: 'Reusable content',
|
|
tagsFieldLabel: 'Tags (comma separated)',
|
|
tagsFieldPlaceholder: 'Go, concurrency, context',
|
|
confidenceLabel: 'Confidence',
|
|
confidenceNone: 'Not set',
|
|
create: 'Create',
|
|
timeline: {
|
|
extracted: 'AI extracted',
|
|
created: 'Manually added',
|
|
published: 'Approved',
|
|
archived: 'Archived',
|
|
enterReview: 'Entered review',
|
|
referenced: 'Referenced',
|
|
statusChanged: 'Status → {to}',
|
|
summarySource: 'Source: {title}',
|
|
summaryConv: 'Conversation: {title}',
|
|
},
|
|
status: {
|
|
candidate: 'Pending',
|
|
pending_review: 'Reviewing',
|
|
published: 'Published',
|
|
archived: 'Archived',
|
|
},
|
|
confidence: {
|
|
high: 'High',
|
|
medium: 'Medium',
|
|
low: 'Low',
|
|
},
|
|
kind: {
|
|
review_rule: 'Review Rule',
|
|
prompt_template: 'Prompt Template',
|
|
pitfall: 'Pitfall',
|
|
architecture_pattern: 'Architecture Pattern',
|
|
diagnosis: 'Diagnosis',
|
|
deployment_note: 'Deployment Note',
|
|
workflow_optimization: 'Workflow Optimization',
|
|
},
|
|
// Error fallbacks (user-visible via state.error)
|
|
err: {
|
|
loadFailed: 'Failed to load knowledge base',
|
|
loadInboxFailed: 'Failed to load inbox',
|
|
searchFailed: 'Search failed',
|
|
createFailed: 'Failed to create knowledge',
|
|
updateStatusFailed: 'Failed to update status',
|
|
archiveFailed: 'Failed to archive',
|
|
saveFailed: 'Failed to save',
|
|
loadConfigFailed: 'Failed to load config',
|
|
saveConfigFailed: 'Failed to save config',
|
|
extractFailed: 'Extraction failed',
|
|
},
|
|
},
|
|
}
|