Sfoglia il codice sorgente

fix: 修复布局变化后高亮和游走层丢失问题

- 布局变化后重新渲染游走层和高亮状态
- 帖子游走路径扩展不再提前退出,继续找更多路径
- maxSteps 直接作为中间扩展步数,不再减2
- 帖子游走最大步数限制改为10

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
yangxiaohui 1 giorno fa
parent
commit
fd05e3895c

+ 2 - 2
script/visualization/src/components/GraphView.vue

@@ -38,7 +38,7 @@
       <!-- 步数设置 -->
       <div class="flex items-center gap-2">
         <span class="text-base-content/60 w-16">筛选步数:</span>
-        <input type="number" :min="1" :max="10" v-model.number="store.walkSteps" class="input input-xs input-bordered w-16 text-center" />
+        <input type="number" :min="1" :max="5" v-model.number="store.walkSteps" class="input input-xs input-bordered w-16 text-center" />
       </div>
 
       <!-- 分步设置 -->
@@ -69,7 +69,7 @@
     <div v-show="showConfig && isPostWalk" class="px-4 py-2 bg-base-200 border-b border-base-300 text-xs space-y-2">
       <div class="flex items-center gap-2">
         <span class="text-base-content/60 w-20">最大步数:</span>
-        <input type="number" :min="2" :max="6" v-model.number="store.postWalkConfig.maxSteps" class="input input-xs input-bordered w-16 text-center" />
+        <input type="number" :min="2" :max="10" v-model.number="store.postWalkConfig.maxSteps" class="input input-xs input-bordered w-16 text-center" />
       </div>
       <div class="flex items-center gap-2">
         <span class="text-base-content/60 w-20">最后步分数:</span>

+ 4 - 0
script/visualization/src/components/PostTreeView.vue

@@ -1158,6 +1158,10 @@ function handleTransitionEnd(e) {
   if (['width', 'height', 'flex', 'flex-grow', 'flex-shrink'].includes(e.propertyName)) {
     nextTick(() => {
       renderTree()
+      nextTick(() => {
+        renderWalkedLayer()  // 重新渲染游走层
+        nextTick(updateHighlight)  // 重新应用高亮状态
+      })
     })
   }
 }

+ 1 - 0
script/visualization/src/components/TreeView.vue

@@ -358,6 +358,7 @@ function handleTransitionEnd(e) {
   if (['width', 'height', 'flex', 'flex-grow', 'flex-shrink'].includes(e.propertyName)) {
     nextTick(() => {
       renderTree()
+      nextTick(updateSelection)  // 重新应用高亮状态
     })
   }
 }

+ 5 - 4
script/visualization/src/stores/graph.js

@@ -160,7 +160,7 @@ export const useGraphStore = defineStore('graph', () => {
     console.log('直接相遇节点数:', meetingNodes.size)
 
     // ========== 如果没有直接相遇,在人设图谱中扩展 ==========
-    const maxMiddleSteps = postWalkConfig.maxSteps - 2  // 减去首尾两步
+    const maxMiddleSteps = postWalkConfig.maxSteps  // 中间扩展步数
     let currentForward = new Set(forwardFrontier)
     let currentBackward = new Set(backwardFrontier)
 
@@ -175,7 +175,7 @@ export const useGraphStore = defineStore('graph', () => {
       backwardPaths.set(nodeId, backwardNodes.get(nodeId).map(b => b.edge))
     }
 
-    for (let step = 0; step < maxMiddleSteps && meetingNodes.size === 0; step++) {
+    for (let step = 0; step < maxMiddleSteps; step++) {
       // 扩展正向(在人设图谱中)
       const nextForward = new Set()
       const newForwardPaths = new Map()
@@ -208,9 +208,10 @@ export const useGraphStore = defineStore('graph', () => {
         forwardPaths.set(k, v)
       }
       currentForward = nextForward
-      console.log(`正向扩展第${step + 1}步,新增节点:`, nextForward.size)
+      console.log(`正向扩展第${step + 1}步,新增节点:`, nextForward.size, '相遇节点:', meetingNodes.size)
 
-      if (meetingNodes.size > 0) break
+      // 如果没有新节点可扩展,提前退出
+      if (nextForward.size === 0) break
     }
 
     console.log('最终相遇节点数:', meetingNodes.size)