feat: refactor candidate loader to encapsulate skill definition retrieval and loading logic
This commit is contained in:
@@ -9,11 +9,17 @@ import (
|
||||
"github.com/mlogclub/simple/sqls"
|
||||
)
|
||||
|
||||
func findManualSkillDefinition(skillCode string) *models.SkillDefinition {
|
||||
func newCandidateLoader() *candidateLoader {
|
||||
return &candidateLoader{}
|
||||
}
|
||||
|
||||
type candidateLoader struct{}
|
||||
|
||||
func (l *candidateLoader) findManualSkillDefinition(skillCode string) *models.SkillDefinition {
|
||||
return repositories.SkillDefinitionRepository.GetByCode(sqls.DB(), skillCode)
|
||||
}
|
||||
|
||||
func loadCandidateSkills(aiAgent *models.AIAgent) []models.SkillDefinition {
|
||||
func (l *candidateLoader) loadCandidateSkills(aiAgent *models.AIAgent) []models.SkillDefinition {
|
||||
if aiAgent == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -17,8 +17,9 @@ type intentTriggerConfig struct {
|
||||
|
||||
// MatchSkill 对单个 SkillDefinition 执行命中判断。
|
||||
func MatchSkill(execCtx context.Context, ctx RuntimeContext, aiAgent *models.AIAgent, aiConfig *models.AIConfig) (*models.SkillDefinition, string, *RouteTrace, error) {
|
||||
loader := newCandidateLoader()
|
||||
if strs.IsNotBlank(ctx.ManualSkillCode) {
|
||||
skill := findManualSkillDefinition(ctx.ManualSkillCode)
|
||||
skill := loader.findManualSkillDefinition(ctx.ManualSkillCode)
|
||||
if skill == nil || skill.Status != enums.StatusOk {
|
||||
return nil, "", nil, errorsx.InvalidParam("Skill 不存在或未启用")
|
||||
}
|
||||
@@ -28,7 +29,7 @@ func MatchSkill(execCtx context.Context, ctx RuntimeContext, aiAgent *models.AIA
|
||||
}, nil
|
||||
}
|
||||
|
||||
candidates := loadCandidateSkills(aiAgent)
|
||||
candidates := loader.loadCandidateSkills(aiAgent)
|
||||
trace := &RouteTrace{
|
||||
Status: "started",
|
||||
CandidateSkillCodes: make([]string, 0, len(candidates)),
|
||||
|
||||
Reference in New Issue
Block a user