feat: connect search and project settings

This commit is contained in:
2026-07-21 17:16:45 +08:00
parent 2275d388a7
commit 000de4bcdb
14 changed files with 698 additions and 141 deletions

View File

@@ -26,13 +26,14 @@ func TestSearchFindsNoteBody(t *testing.T) {
require.Equal(t, "note", results[0].Type)
}
func TestSearchFindsCoreProjectObjects(t *testing.T) {
func TestSearchOnlyReturnsNavigableProjectTaskAndNoteResults(t *testing.T) {
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, models.AutoMigrate(database))
models.DBService = database
require.NoError(t, database.Create(&models.SenlinAgentProject{ID: 1, OwnerID: 7, Name: "支付项目"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentProject{ID: 1, OwnerID: 7, Name: "webhook 支付项目"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentTask{ProjectID: 1, CreatedBy: 7, Title: "回调任务", Description: "检查 webhook"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentNote{ProjectID: 1, CreatedBy: 7, Title: "回调笔记", Markdown: "webhook 流程"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentSource{ProjectID: 1, CreatedBy: 7, Kind: "link", Title: "支付文档", URL: "https://example.com/pay", ContentText: "webhook 签名"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentInboxItem{ProjectID: 1, CreatedBy: 7, SourceType: "text", Title: "收集项", Body: "webhook 待整理"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentAISession{ProjectID: 1, CreatedBy: 7, Title: "AI 分析", Context: "webhook 问答"}).Error)
@@ -45,8 +46,25 @@ func TestSearchFindsCoreProjectObjects(t *testing.T) {
for _, result := range results {
types[result.Type] = true
}
require.True(t, types["task"])
require.True(t, types["source"])
require.True(t, types["inbox"])
require.True(t, types["ai_session"])
require.Equal(t, map[string]bool{"project": true, "task": true, "note": true}, types)
require.Len(t, results, 3)
}
func TestSearchTreatsLikeWildcardsAsLiteralKeywords(t *testing.T) {
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, models.AutoMigrate(database))
models.DBService = database
require.NoError(t, database.Create(&models.SenlinAgentProject{ID: 1, OwnerID: 7, Name: "100%_完成", Identifier: "SPECIAL"}).Error)
require.NoError(t, database.Create(&models.SenlinAgentProject{ID: 2, OwnerID: 7, Name: "普通项目", Identifier: "NORMAL"}).Error)
percentResults, err := NewService().Search(7, "%")
require.NoError(t, err)
require.Len(t, percentResults, 1)
require.Equal(t, "100%_完成", percentResults[0].Title)
underscoreResults, err := NewService().Search(7, "_")
require.NoError(t, err)
require.Len(t, underscoreResults, 1)
require.Equal(t, "100%_完成", underscoreResults[0].Title)
}