new:MCP及openapi新增技能特殊属性查询

This commit is contained in:
2026-06-12 13:22:09 +08:00
parent d17d340c20
commit 729e08046d
7 changed files with 91 additions and 15 deletions
+5 -1
View File
@@ -213,7 +213,11 @@ func NewRouter(dep Dependencies) http.Handler {
})
r.Get("/{jobId}/{jobGrowId}/skills/", func(w http.ResponseWriter, r *http.Request) {
data, err := dep.OpenAPIService.SkillsByJob(chi.URLParam(r, "jobId"), chi.URLParam(r, "jobGrowId"))
data, err := dep.OpenAPIService.SkillsByJob(
chi.URLParam(r, "jobId"),
chi.URLParam(r, "jobGrowId"),
r.URL.Query().Get("descSpecial"),
)
if err != nil {
writeError(w, http.StatusNotFound, err)
return
+30 -3
View File
@@ -68,18 +68,45 @@ func (s *OpenAPIService) JobsInfo(jobName string) ([]map[string]string, error) {
return result, nil
}
func (s *OpenAPIService) SkillsByJob(jobID string, jobGrowID string) (any, error) {
func (s *OpenAPIService) SkillsByJob(jobID string, jobGrowID string, descSpecial string) (any, error) {
jobDir, jobGrowDir, err := s.adventure.ResolveDirectories(jobID, jobGrowID)
if err != nil {
return nil, err
}
var data any
var data []map[string]any
path := filepath.Join(s.projectRoot, "openapi", "data", jobDir, jobGrowDir, "cn", "skill_tree.json")
if err := s.readJSON(path, &data); err != nil {
return nil, err
}
return data, nil
detailDir := filepath.Join(s.projectRoot, "openapi", "data", jobDir, jobGrowDir, "cn", "skillDetail")
for _, skill := range data {
skillID, _ := skill["skillId"].(string)
var detail map[string]any
if skillID != "" {
err := s.readJSON(filepath.Join(detailDir, skillID+".json"), &detail)
if err != nil && !os.IsNotExist(err) {
return nil, err
}
}
skill["descSpecial"] = detail["descSpecial"]
}
if descSpecial == "" {
return data, nil
}
filtered := make([]map[string]any, 0)
for _, skill := range data {
items, _ := skill["descSpecial"].([]any)
for _, item := range items {
text, _ := item.(string)
if strings.Contains(text, descSpecial) {
filtered = append(filtered, skill)
break
}
}
}
return filtered, nil
}
func (s *OpenAPIService) SkillDetail(jobID string, jobGrowID string, skillID string, level *int) (any, error) {