Files
digital-psychology/apps/api/internal/relation/helpers.go
T
jackyu66gitandCursor 19d3cd5945 refactor(ECR-001): 接入 ESS 并完成结构对齐 Phase A–E
绑定 ESS 双轨治理,拆分超大 H5 页与 Go 引擎,抽出 membership 服务,
并将 star/fortune 重命名为 outlook(JSON 双写兼容);同时修复 /psy API 代理与首页 + 菜单层级。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 17:51:40 +08:00

67 lines
1.8 KiB
Go

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
}