绑定 ESS 双轨治理,拆分超大 H5 页与 Go 引擎,抽出 membership 服务, 并将 star/fortune 重命名为 outlook(JSON 双写兼容);同时修复 /psy API 代理与首页 + 菜单层级。 Co-authored-by: Cursor <cursoragent@cursor.com>
67 lines
1.8 KiB
Go
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
|
|
}
|