package relation import "fmt" func relationTypePack(t, aName, bName string) (label, body string, bullets []string) { switch t { case "partner", "恋人", "伴侣": return "伴侣", fmt.Sprintf("%s与%s更适合把差异写成「亲密说明书」:欲望、节奏与安全感都说清楚。", aName, bName), []string{"每周一次情绪复盘,不谈对错", "亲密请求用「我需要」句式", "边界:疲惫时先暂停再继续"} case "family", "家人", "父母", "亲子": return "家人", fmt.Sprintf("家人关系里,%s与%s容易把旧角色带进新对话。试着把对方当「现在的人」而不是旧剧本。", aName, bName), []string{"少用「你总是」句式", "大事拆成可协商的小请求", "保留各自的私人空间"} case "friend", "朋友": return "朋友", fmt.Sprintf("友情里%s与%s可以更轻松地互补:约会期待与回应频率说开即可。", aName, bName), []string{"约见用明确时间,减少猜测", "忙时用短消息保持连结", "冲突后用玩笑或直接道歉都行,别冷处理太久"} default: return "", "", nil } } func starPairNote(a, b string) string { if a == b { return fmt.Sprintf("同为%s:容易共鸣,也要避免同质盲区。", a) } return fmt.Sprintf("%s × %s:节奏不同,适合「我负责启动 / 你负责收尾」式分工。", a, b) } func str(v any) string { s, _ := v.(string) return s } func strSlice(v any) []string { arr, ok := v.([]string) if ok { return arr } raw, ok := v.([]any) if !ok { return nil } out := make([]string, 0, len(raw)) for _, x := range raw { if s, ok := x.(string); ok { out = append(out, s) } } return out } func firstNonEmpty(a, b string) string { if a != "" { return a } return b } func min(a, b int) int { if a < b { return a } return b }