feat: refactor candidate loader to encapsulate skill definition retrieval and loading logic

This commit is contained in:
mlogclub
2026-04-13 19:45:52 +08:00
parent 1f0406ec91
commit 4b7c345d75
2 changed files with 11 additions and 4 deletions
+8 -2
View File
@@ -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
}
+3 -2
View File
@@ -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)),