新增: AI Chat多项增强(审批去重/编辑重发/导出/实体引用/会话置顶搜索)+任务推进链df-nodes落地
This commit is contained in:
@@ -383,16 +383,15 @@ onBeforeUnmount(() => {
|
||||
const parsed = computed(() => parseResult(props.tc.result))
|
||||
|
||||
/**
|
||||
* id → 项目名映射(覆盖活跃 + 回收站):审批 delete/restore/purge 各阶段都可能引用项目,
|
||||
* 故同时查 projects 与 deletedProjects,无则返回 undefined(调用方走 fallback)。
|
||||
* 复用 project store 已加载列表,不新增网络请求。
|
||||
* 按 id 查项目名(覆盖活跃 + 回收站):审批 delete/restore/purge 各阶段都可能引用项目,
|
||||
* 故先查 projects 再查 deletedProjects,找到即返回(提前退出),无则返回 undefined(调用方走 fallback)。
|
||||
* 复用 project store 已加载列表,不新增网络请求;响应式由 store 数组保证(find 在 computed/渲染上下文中触发依赖追踪)。
|
||||
* 审批卡通常仅 1-2 行引用项目 id,find 比 computed 全量建 Map 更省。
|
||||
*/
|
||||
const projectNameById = computed<Record<string, string>>(() => {
|
||||
const map: Record<string, string> = {}
|
||||
for (const p of projectStore.projects) map[p.id] = p.name
|
||||
for (const p of projectStore.deletedProjects) if (!(p.id in map)) map[p.id] = p.name
|
||||
return map
|
||||
})
|
||||
function projectNameById(id: string): string | undefined {
|
||||
return projectStore.projects.find(p => p.id === id)?.name
|
||||
?? projectStore.deletedProjects.find(p => p.id === id)?.name
|
||||
}
|
||||
|
||||
/** 工具名 → 该工具中代表项目 id 的参数 key(仅项目类工具特化;delete_task 的 id 是任务 id,不在此列) */
|
||||
const PROJECT_ID_TOOL_ARG: Record<string, 'id' | 'project_id'> = {
|
||||
@@ -414,7 +413,7 @@ function displayArgValue(arg: { key: string; val: unknown }): string {
|
||||
if (projectArgKey && arg.key === projectArgKey) {
|
||||
const id = typeof arg.val === 'string' ? arg.val : ''
|
||||
if (id) {
|
||||
const name = projectNameById.value[id]
|
||||
const name = projectNameById(id)
|
||||
if (name) return t('aiTool.projectLabel', { name })
|
||||
return t('aiTool.projectIdNotFound', { id })
|
||||
}
|
||||
@@ -438,7 +437,7 @@ function toolDisplayName(tc: AiToolCallInfo): string {
|
||||
case 'update_project': {
|
||||
const idKey = PROJECT_ID_TOOL_ARG[tc.name]
|
||||
const id = idKey ? argString(tc.args, idKey) : ''
|
||||
const name = id ? projectNameById.value[id] : ''
|
||||
const name = id ? projectNameById(id) : ''
|
||||
const prefixKey = `${tc.name.replace('_project', '')}Prefix` as 'deletePrefix' | 'restorePrefix' | 'purgePrefix' | 'updatePrefix'
|
||||
const fallbackKey = `${tc.name.replace('_project', '')}Fallback` as 'deleteFallback' | 'restoreFallback' | 'purgeFallback' | 'updateFallback'
|
||||
return name ? `${t('aiTool.' + prefixKey)}「${name}」` : t('aiTool.' + fallbackKey)
|
||||
|
||||
Reference in New Issue
Block a user