mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-15 12:15:16 +00:00
fix: formatTree shows root-level knowledge items
Root node items (items without category) were skipped by depth>0 check, causing knowledge_list to always return '(空)'. Also simplified formatTree to avoid redundant child item rendering.
This commit is contained in:
@ -2621,35 +2621,23 @@ func truncateStr(s string, max int) string {
|
|||||||
func formatTree(node *knowledge.TreeIndex, depth int) string {
|
func formatTree(node *knowledge.TreeIndex, depth int) string {
|
||||||
var sb strings.Builder
|
var sb strings.Builder
|
||||||
indent := strings.Repeat(" ", depth)
|
indent := strings.Repeat(" ", depth)
|
||||||
|
// 先渲染子目录
|
||||||
for _, child := range node.Children {
|
for _, child := range node.Children {
|
||||||
sb.WriteString(fmt.Sprintf("%s%s/\n", indent, child.Name))
|
sb.WriteString(fmt.Sprintf("%s%s/\n", indent, child.Name))
|
||||||
if len(child.Items) > 0 {
|
|
||||||
for _, item := range child.Items {
|
|
||||||
preview := item.Preview
|
|
||||||
if len([]rune(preview)) > 60 {
|
|
||||||
preview = string([]rune(preview)[:60]) + "..."
|
|
||||||
}
|
|
||||||
tags := ""
|
|
||||||
if len(item.Tags) > 0 {
|
|
||||||
tags = " [" + strings.Join(item.Tags, ", ") + "]"
|
|
||||||
}
|
|
||||||
sb.WriteString(fmt.Sprintf("%s · %s%s\n %s\n", indent, item.Name, tags, preview))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sb.WriteString(formatTree(child, depth+1))
|
sb.WriteString(formatTree(child, depth+1))
|
||||||
}
|
}
|
||||||
if depth > 0 && len(node.Items) > 0 {
|
// 再渲染当前节点条目(根节点也能显示)
|
||||||
for _, item := range node.Items {
|
for _, item := range node.Items {
|
||||||
preview := item.Preview
|
preview := item.Preview
|
||||||
if len([]rune(preview)) > 60 {
|
if len([]rune(preview)) > 60 {
|
||||||
preview = string([]rune(preview)[:60]) + "..."
|
preview = string([]rune(preview)[:60]) + "..."
|
||||||
}
|
|
||||||
tags := ""
|
|
||||||
if len(item.Tags) > 0 {
|
|
||||||
tags = " [" + strings.Join(item.Tags, ", ") + "]"
|
|
||||||
}
|
|
||||||
sb.WriteString(fmt.Sprintf(" · %s%s\n %s\n", item.Name, tags, preview))
|
|
||||||
}
|
}
|
||||||
|
tags := ""
|
||||||
|
if len(item.Tags) > 0 {
|
||||||
|
tags = " [" + strings.Join(item.Tags, ", ") + "]"
|
||||||
|
}
|
||||||
|
sb.WriteString(fmt.Sprintf("%s· %s%s\n", indent, item.Name, tags))
|
||||||
|
sb.WriteString(fmt.Sprintf("%s %s\n", indent, preview))
|
||||||
}
|
}
|
||||||
if sb.Len() == 0 {
|
if sb.Len() == 0 {
|
||||||
sb.WriteString("(空)")
|
sb.WriteString("(空)")
|
||||||
|
|||||||
Reference in New Issue
Block a user