feat(keywords): rename brand-question terminology to search-keyword + add entity exclusion

- Rename UI/prompt labels: "品牌主问题" → "优化关键词", "搜索问题" → "搜索词"
- Add brand/competitor entity exclusion filter in question expansion (AI distill path)
- Refactor combination question text normalization, remove manual question-mark appending
- Update prompts to emphasize commercial-intent search queries over editorial phrasing
- Sync prompt changes across server/configs, deploy, and k3s configs
- Update i18n, frontend views (BrandQuestionCreate, TemplateWizard), and test fixtures

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-20 01:27:14 +08:00
parent 28633cf570
commit c89cad6643
19 changed files with 1211 additions and 668 deletions
@@ -29,11 +29,20 @@ type ClassifiedQuestion struct {
}
func normalizeQuestionText(text string) string {
return strings.TrimSpace(text)
trimmed := strings.TrimSpace(text)
if trimmed == "" {
return ""
}
return strings.Map(func(r rune) rune {
if unicode.IsPunct(r) {
return -1
}
return r
}, trimmed)
}
func normalizeQuestionKey(text string) string {
return strings.ToLower(strings.TrimSpace(text))
return strings.ToLower(normalizeQuestionText(text))
}
func isValidQuestionLayer(value string) bool {