Files
MonkeyCode/backend/internal/provider.go
Haoxin Li d00ce49c0d feat: integrate pgvector for semantic search and embedding generation
- Added pgvector-go dependency for vector operations.
- Implemented embedding generation using OpenAI API in a new service.
- Enhanced CodeSnippetRepo to support semantic search using vector similarity.
- Updated CodeSnippetUsecase to generate embeddings during snippet creation.
- Added methods for semantic search by workspace and general semantic search.
- Improved error handling and logging for embedding generation and vector search.
- Removed unnecessary debug logs in socket handlers for cleaner output.

feat: enhance CodeSnippet functionality with workspacePath for improved context and semantic search

feat: add embedding and workspace path fields to CodeSnippet for semantic search functionality

feat: enhance SemanticSearchByWorkspace to include cosine similarity score in results

feat: 优化心跳处理逻辑,支持多种数据类型

refactor: 修复日志记录

feat: add migration for embedding and workspace_path columns in code_snippets table
2025-08-08 15:59:41 +08:00

111 lines
4.7 KiB
Go

package internal
import (
"github.com/google/wire"
billingv1 "github.com/chaitin/MonkeyCode/backend/internal/billing/handler/http/v1"
billingrepo "github.com/chaitin/MonkeyCode/backend/internal/billing/repo"
billingusecase "github.com/chaitin/MonkeyCode/backend/internal/billing/usecase"
codesnippetv1 "github.com/chaitin/MonkeyCode/backend/internal/codesnippet/handler/http/v1"
codesnippetrepo "github.com/chaitin/MonkeyCode/backend/internal/codesnippet/repo"
codesnippetservice "github.com/chaitin/MonkeyCode/backend/internal/codesnippet/service"
codesnippetusecase "github.com/chaitin/MonkeyCode/backend/internal/codesnippet/usecase"
dashv1 "github.com/chaitin/MonkeyCode/backend/internal/dashboard/handler/v1"
dashrepo "github.com/chaitin/MonkeyCode/backend/internal/dashboard/repo"
dashusecase "github.com/chaitin/MonkeyCode/backend/internal/dashboard/usecase"
erepo "github.com/chaitin/MonkeyCode/backend/internal/extension/repo"
eusecase "github.com/chaitin/MonkeyCode/backend/internal/extension/usecase"
"github.com/chaitin/MonkeyCode/backend/internal/middleware"
modelv1 "github.com/chaitin/MonkeyCode/backend/internal/model/handler/http/v1"
modelrepo "github.com/chaitin/MonkeyCode/backend/internal/model/repo"
modelusecase "github.com/chaitin/MonkeyCode/backend/internal/model/usecase"
v1 "github.com/chaitin/MonkeyCode/backend/internal/openai/handler/v1"
openairepo "github.com/chaitin/MonkeyCode/backend/internal/openai/repo"
openai "github.com/chaitin/MonkeyCode/backend/internal/openai/usecase"
"github.com/chaitin/MonkeyCode/backend/internal/proxy"
proxyrepo "github.com/chaitin/MonkeyCode/backend/internal/proxy/repo"
proxyusecase "github.com/chaitin/MonkeyCode/backend/internal/proxy/usecase"
reportrepo "github.com/chaitin/MonkeyCode/backend/internal/report/repo"
reportuse "github.com/chaitin/MonkeyCode/backend/internal/report/usecase"
securityv1 "github.com/chaitin/MonkeyCode/backend/internal/security/handler/http/v1"
securityrepo "github.com/chaitin/MonkeyCode/backend/internal/security/repo"
securityusecase "github.com/chaitin/MonkeyCode/backend/internal/security/usecase"
sockethandler "github.com/chaitin/MonkeyCode/backend/internal/socket/handler"
userV1 "github.com/chaitin/MonkeyCode/backend/internal/user/handler/v1"
userrepo "github.com/chaitin/MonkeyCode/backend/internal/user/repo"
userusecase "github.com/chaitin/MonkeyCode/backend/internal/user/usecase"
workspacehandlerv1 "github.com/chaitin/MonkeyCode/backend/internal/workspace/handler/http/v1"
workspacerepo "github.com/chaitin/MonkeyCode/backend/internal/workspace/repo"
workspaceusecase "github.com/chaitin/MonkeyCode/backend/internal/workspace/usecase"
"github.com/chaitin/MonkeyCode/backend/pkg/version"
)
// NewAPIHandlers 创建 APIHandlers 实例
func NewAPIHandlers(
openaiV1 *v1.V1Handler,
userV1 *userV1.UserHandler,
modelV1 *modelv1.ModelHandler,
dashboardV1 *dashv1.DashboardHandler,
codeSnippetV1 *codesnippetv1.CodeSnippetHandler,
socketH *sockethandler.SocketHandler,
billingV1 *billingv1.BillingHandler,
workspaceFileV1 *workspacehandlerv1.WorkspaceFileHandler,
securityV1 *securityv1.SecurityHandler,
) *APIHandlers {
return &APIHandlers{
OpenAIV1Handler: openaiV1,
UserHandler: userV1,
ModelHandler: modelV1,
DashboardHandler: dashboardV1,
CodeSnippetHandler: codeSnippetV1,
SocketHandler: socketH,
BillingHandler: billingV1,
WorkspaceFileHandler: workspaceFileV1,
SecurityHandler: securityV1,
}
}
var Provider = wire.NewSet(
proxy.NewLLMProxy,
v1.NewV1Handler,
openai.NewOpenAIUsecase,
openairepo.NewOpenAIRepo,
modelv1.NewModelHandler,
proxyusecase.NewProxyUsecase,
proxyrepo.NewProxyRepo,
modelusecase.NewModelUsecase,
modelrepo.NewModelRepo,
dashv1.NewDashboardHandler,
dashusecase.NewDashboardUsecase,
dashrepo.NewDashboardRepo,
middleware.NewProxyMiddleware,
middleware.NewAuthMiddleware,
middleware.NewActiveMiddleware,
middleware.NewReadOnlyMiddleware,
userV1.NewUserHandler,
userrepo.NewUserRepo,
userusecase.NewUserUsecase,
billingv1.NewBillingHandler,
billingrepo.NewBillingRepo,
billingusecase.NewBillingUsecase,
erepo.NewExtensionRepo,
eusecase.NewExtensionUsecase,
workspacerepo.NewWorkspaceRepo,
workspacerepo.NewWorkspaceFileRepo,
workspaceusecase.NewWorkspaceUsecase,
workspaceusecase.NewWorkspaceFileUsecase,
workspacehandlerv1.NewWorkspaceFileHandler,
sockethandler.NewSocketHandler,
version.NewVersionInfo,
reportuse.NewReportUsecase,
reportrepo.NewReportRepo,
codesnippetrepo.NewCodeSnippetRepo,
codesnippetusecase.NewCodeSnippetUsecase,
codesnippetv1.NewCodeSnippetHandler,
NewAPIHandlers,
securityrepo.NewSecurityScanningRepo,
securityusecase.NewSecurityScanningUsecase,
securityv1.NewSecurityHandler,
codesnippetservice.NewOpenAIEmbeddingService,
)