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"
|
"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)
|
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 {
|
if aiAgent == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,9 @@ type intentTriggerConfig struct {
|
|||||||
|
|
||||||
// MatchSkill 对单个 SkillDefinition 执行命中判断。
|
// MatchSkill 对单个 SkillDefinition 执行命中判断。
|
||||||
func MatchSkill(execCtx context.Context, ctx RuntimeContext, aiAgent *models.AIAgent, aiConfig *models.AIConfig) (*models.SkillDefinition, string, *RouteTrace, error) {
|
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) {
|
if strs.IsNotBlank(ctx.ManualSkillCode) {
|
||||||
skill := findManualSkillDefinition(ctx.ManualSkillCode)
|
skill := loader.findManualSkillDefinition(ctx.ManualSkillCode)
|
||||||
if skill == nil || skill.Status != enums.StatusOk {
|
if skill == nil || skill.Status != enums.StatusOk {
|
||||||
return nil, "", nil, errorsx.InvalidParam("Skill 不存在或未启用")
|
return nil, "", nil, errorsx.InvalidParam("Skill 不存在或未启用")
|
||||||
}
|
}
|
||||||
@@ -28,7 +29,7 @@ func MatchSkill(execCtx context.Context, ctx RuntimeContext, aiAgent *models.AIA
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
candidates := loadCandidateSkills(aiAgent)
|
candidates := loader.loadCandidateSkills(aiAgent)
|
||||||
trace := &RouteTrace{
|
trace := &RouteTrace{
|
||||||
Status: "started",
|
Status: "started",
|
||||||
CandidateSkillCodes: make([]string, 0, len(candidates)),
|
CandidateSkillCodes: make([]string, 0, len(candidates)),
|
||||||
|
|||||||
Reference in New Issue
Block a user