2026-04-13 17:23:05 +08:00
|
|
|
package skills
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"cs-agent/internal/models"
|
|
|
|
|
"cs-agent/internal/pkg/enums"
|
|
|
|
|
"cs-agent/internal/pkg/utils"
|
|
|
|
|
"cs-agent/internal/repositories"
|
|
|
|
|
|
|
|
|
|
"github.com/mlogclub/simple/sqls"
|
|
|
|
|
)
|
|
|
|
|
|
2026-04-17 17:23:29 +08:00
|
|
|
var newCandidateLoader = func() *candidateLoader {
|
2026-04-13 19:45:52 +08:00
|
|
|
return &candidateLoader{}
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-17 17:23:29 +08:00
|
|
|
type candidateLoader struct {
|
|
|
|
|
}
|
2026-04-13 19:45:52 +08:00
|
|
|
|
|
|
|
|
func (l *candidateLoader) findManualSkillDefinition(skillCode string) *models.SkillDefinition {
|
2026-04-13 17:23:05 +08:00
|
|
|
return repositories.SkillDefinitionRepository.GetByCode(sqls.DB(), skillCode)
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-17 17:57:01 +08:00
|
|
|
func (l *candidateLoader) loadCandidateSkills(aiAgent models.AIAgent) []models.SkillDefinition {
|
2026-04-13 17:23:05 +08:00
|
|
|
skillIDs := utils.SplitInt64s(aiAgent.SkillIDs)
|
2026-04-17 17:27:33 +08:00
|
|
|
skills := repositories.SkillDefinitionRepository.GetByIDs(sqls.DB(), skillIDs)
|
2026-04-13 17:23:05 +08:00
|
|
|
ret := make([]models.SkillDefinition, 0, len(skillIDs))
|
|
|
|
|
for _, id := range skillIDs {
|
2026-04-17 17:27:33 +08:00
|
|
|
if skill, ok := skills[id]; ok && skill.Status == enums.StatusOk {
|
|
|
|
|
ret = append(ret, skill)
|
2026-04-13 17:23:05 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ret
|
|
|
|
|
}
|