- 用户域:注册/登录(JWT)/修改密码/个人资料 - 照片/衣橱/身形/化身:上传存储 + 3D 化身模板匹配 - 穿搭生成:天气(高德+和风+缓存) → 规则预筛 → LLM 规划(1次调用) → 规则评分(5维100分制) → 全低分触发 LLM 兜底创作 → 异步任务状态机 - 效果图:选主方案后异步生成 3 视角(mock/wanx 供应商 + 内容 hash 缓存 + 每日限额) - 商业化:合作门店列表(seed 4 家) - 冒烟:全链路端到端验证通过(mock LLM/天气),23 个 API 端点 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
30 lines
720 B
Go
30 lines
720 B
Go
package scoring
|
|
|
|
import "strings"
|
|
|
|
// occasionScore 场合匹配(25 分制):基础 15 + 场合类别匹配项 +5
|
|
var occasionCategory = map[string][]string{
|
|
"通勤": {"西装", "衬衫", "休闲", "通勤"},
|
|
"约会": {"裙装", "连衣裙", "优雅", "约会", "浪漫"},
|
|
"聚会": {"潮流", "时尚", "个性", "派对"},
|
|
"运动": {"运动", "休闲", "T恤", "卫衣"},
|
|
}
|
|
|
|
func occasionScore(o CandidateOutfit, ctx ScoreContext) int {
|
|
score := 15
|
|
allowed := occasionCategory[ctx.Occasion]
|
|
for _, it := range o.Items {
|
|
tags := it.StyleTags
|
|
for _, a := range allowed {
|
|
if a != "" && strings.Contains(tags, a) {
|
|
score += 5
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if score > 25 {
|
|
return 25
|
|
}
|
|
return score
|
|
}
|