Files
MonkeyCode/backend/domain/proxy.go
2025-08-15 10:27:04 +08:00

94 lines
3.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package domain
import (
"context"
"github.com/chaitin/MonkeyCode/backend/consts"
"github.com/chaitin/MonkeyCode/backend/db"
)
type ProxyUsecase interface {
SelectModelWithLoadBalancing(modelName string, modelType consts.ModelType) (*Model, error)
Record(ctx context.Context, record *RecordParam) error
ValidateApiKey(ctx context.Context, key string) (*ApiKey, error)
AcceptCompletion(ctx context.Context, req *AcceptCompletionReq) error
Report(ctx context.Context, req *ReportReq) error
CreateSecurityScanning(ctx context.Context, req *CreateSecurityScanningReq) (string, error)
ListSecurityScanning(ctx context.Context, req *ListSecurityScanningReq) (*ListSecurityScanningBriefResp, error)
ListSecurityDetail(ctx context.Context, req *ListSecurityScanningDetailReq) (*ListSecurityScanningDetailResp, error)
}
type ProxyRepo interface {
Record(ctx context.Context, record *RecordParam) error
UpdateByTaskID(ctx context.Context, taskID string, fn func(*db.TaskUpdateOne)) error
AcceptCompletion(ctx context.Context, req *AcceptCompletionReq) error
Report(ctx context.Context, model *db.Model, req *ReportReq) error
SelectModelWithLoadBalancing(modelName string, modelType consts.ModelType) (*db.Model, error)
ValidateApiKey(ctx context.Context, key string) (*db.ApiKey, error)
}
type VersionInfo struct {
Version string `json:"version"`
URL string `json:"url"`
}
type AcceptCompletionReq struct {
ID string `json:"id"` // 记录ID
Completion string `json:"completion"` // 补全内容
}
type ReportReq struct {
Action consts.ReportAction `json:"action"`
ID string `json:"id"` // task_id or resp_id
Content string `json:"content"` // 内容
Tool string `json:"tool"` // 工具
UserInput string `json:"user_input"` // 用户输入的新文本用于reject action
SourceCode string `json:"source_code"` // 当前文件的原文用于reject action
CursorPosition map[string]any `json:"cursor_position"` // 光标位置用于reject action
Mode string `json:"mode"` // 模式
UserID string `json:"-"`
}
type RecordParam struct {
RequestID string
TaskID string
UserID string
ModelID string
ModelType consts.ModelType
Role consts.ChatRole
Prompt string
ProgramLanguage string
InputTokens int64
OutputTokens int64
IsAccept bool
Completion string
WorkMode string
CodeLines int64
Code string
SourceCode string // 当前文件的原文
CursorPosition map[string]any // 光标位置
UserInput string // 用户实际输入的内容
}
func (r *RecordParam) Clone() *RecordParam {
return &RecordParam{
RequestID: r.RequestID,
TaskID: r.TaskID,
UserID: r.UserID,
ModelID: r.ModelID,
ModelType: r.ModelType,
Role: r.Role,
Prompt: r.Prompt,
ProgramLanguage: r.ProgramLanguage,
InputTokens: r.InputTokens,
OutputTokens: r.OutputTokens,
IsAccept: r.IsAccept,
Completion: r.Completion,
WorkMode: r.WorkMode,
CodeLines: r.CodeLines,
SourceCode: r.SourceCode,
CursorPosition: r.CursorPosition,
UserInput: r.UserInput,
}
}