绑定 ESS 双轨治理,拆分超大 H5 页与 Go 引擎,抽出 membership 服务, 并将 star/fortune 重命名为 outlook(JSON 双写兼容);同时修复 /psy API 代理与首页 + 菜单层级。 Co-authored-by: Cursor <cursoragent@cursor.com>
137 lines
10 KiB
Go
137 lines
10 KiB
Go
package relation
|
||
|
||
import "fmt"
|
||
|
||
func complementarityKey(a, b string) string {
|
||
if a == b {
|
||
return "same"
|
||
}
|
||
// simple buckets by trait family
|
||
drive := map[string]string{
|
||
"稳进探索者": "steady", "细腻分析者": "steady", "守护担当者": "steady", "洞察策略者": "steady",
|
||
"敏锐连接者": "warm", "温和协调者": "warm", "热忱鼓舞者": "warm",
|
||
"果断行动派": "drive", "自由创造者": "drive",
|
||
}
|
||
ak, bk := drive[a], drive[b]
|
||
if ak == "" || bk == "" {
|
||
return "mix"
|
||
}
|
||
if ak == bk {
|
||
return "same_family"
|
||
}
|
||
if (ak == "steady" && bk == "warm") || (ak == "warm" && bk == "steady") {
|
||
return "steady_warm"
|
||
}
|
||
if (ak == "drive" && bk == "steady") || (ak == "steady" && bk == "drive") {
|
||
return "drive_steady"
|
||
}
|
||
if (ak == "drive" && bk == "warm") || (ak == "warm" && bk == "drive") {
|
||
return "drive_warm"
|
||
}
|
||
return "mix"
|
||
}
|
||
|
||
type compCopy struct {
|
||
OneLiner, Overview, Chemistry, DeepOverview, CommDeep, ConflictDeep, IntimacyDeep, GrowthDeep string
|
||
ChemistryPoints, Watchouts, CommTips, ConflictTips, IntimacyTips, GrowthTips, Weekly, Scripts []string
|
||
}
|
||
|
||
func complementarityCopy(key, aName, bName, aLabel, bLabel string) compCopy {
|
||
base := compCopy{
|
||
OneLiner: fmt.Sprintf("%s偏「%s」,%s偏「%s」——差异可以写成相处说明书。", aName, aLabel, bName, bLabel),
|
||
Overview: fmt.Sprintf("双方在表达、节奏与需求上并不相同。把差异看清楚,比急着证明「谁更对」更有用。下面从沟通、冲突、亲密与共同成长几个维度展开。"),
|
||
Chemistry: "互补往往出现在:一方给结构,另一方给温度;或一方推进,另一方稳住质量。",
|
||
Weekly: []string{
|
||
"本周进行一次 20 分钟「非解决问题」闲聊或散步。",
|
||
"各自写三件「我需要你这样支持我」的具体行为,互换阅读。",
|
||
"约定一个冲突停火词,任一方说出即暂停 15 分钟。",
|
||
},
|
||
Scripts: []string{
|
||
fmt.Sprintf("%s可以说:我需要先把事实说清楚,再谈感受。", aName),
|
||
fmt.Sprintf("%s可以说:我希望你先听到我的感受,再给方案。", bName),
|
||
"我们可以先复述对方一句,再表达自己的需要。",
|
||
},
|
||
}
|
||
|
||
switch key {
|
||
case "same":
|
||
base.OneLiner = fmt.Sprintf("你们风格接近(都偏「%s」),默契来得快,也要防止一起陷入同样的盲区。", aLabel)
|
||
base.Chemistry = "同类相吸:理解成本低,推进或回避也可能同步发生。"
|
||
base.DeepOverview = "风格相近意味着你们很容易「懂对方在想什么」,但也可能同时逃避冲突,或同时过度冲刺。建议定期引入外部视角(朋友建议、清单复盘),打破镜像盲区。"
|
||
base.CommDeep = "沟通效率高,但要刻意练习提出不同意见。安排「唱反调」轮值:每周一人专门提出风险点。"
|
||
base.ConflictDeep = "冲突可能被快速和好掩盖,问题未真正处理。用「问题清单」追踪未完成议题。"
|
||
base.IntimacyDeep = "熟悉感强,新鲜感需主动创造:共同学习或小旅行比重复日常更能充电。"
|
||
base.GrowthDeep = "一起设定一个共同小目标,并互相做问责伙伴。"
|
||
base.ChemistryPoints = []string{"理解成本低", "节奏容易对齐", "共同语言多"}
|
||
base.Watchouts = []string{"共享同一盲区", "缺少外部校正", "意见过于一致缺少张力"}
|
||
base.CommTips = []string{"鼓励提出异议", "重要决定写利弊表", "避免默认对方已懂"}
|
||
base.ConflictTips = []string{"追踪未完成议题", "避免假性和好", "冷静后再做决定"}
|
||
base.IntimacyTips = []string{"主动制造新鲜体验", "表达感谢要具体", "保留个人空间"}
|
||
base.GrowthTips = []string{"共同目标 + 问责", "每月复盘一次关系", "引入可信第三方建议"}
|
||
case "steady_warm":
|
||
base.Chemistry = "稳与暖互补:一方提供结构与可靠,另一方提供连接与温度。"
|
||
base.DeepOverview = fmt.Sprintf("%s与%s之间,最常见的张力是「要先讲清楚」还是「要先被看见」。若能轮流满足这两种需求,关系会既安全又有温度。", aName, bName)
|
||
base.CommDeep = "沟通协议:情绪话题先共鸣 2 分钟,再进入事实与方案;事务话题先结论,再补感受。"
|
||
base.ConflictDeep = "稳的一方别用沉默当结束;暖的一方别用追问升级压力。停火后用「我需要…」重开。"
|
||
base.IntimacyDeep = "暖的一方需要回应频率;稳的一方需要可预期的独处。把两者写进约定。"
|
||
base.GrowthDeep = "把互补写成分工:谁更擅长安抚,谁更擅长推进落地。"
|
||
base.ChemistryPoints = []string{"结构 × 温度", "可靠 × 连接", "可形成完整支持系统"}
|
||
base.Watchouts = []string{"一方觉得被冷落", "一方觉得被情绪淹没", "节奏错位积累委屈"}
|
||
base.CommTips = []string{"情绪先共鸣再方案", "事务先结论再感受", "用文字确认关键约定"}
|
||
base.ConflictTips = []string{"禁止用沉默结束话题", "追问前先问是否方便", "停火词机制"}
|
||
base.IntimacyTips = []string{"约定回应窗口", "尊重独处不被解读为冷淡", "每周一次深度连接"}
|
||
base.GrowthTips = []string{"按优势分工", "互相学习对方语言", "月度关系复盘"}
|
||
case "drive_steady":
|
||
base.Chemistry = "推与稳互补:一方破局加速,另一方把关质量与可持续。"
|
||
base.DeepOverview = "行动派容易嫌分析派慢;稳健派容易嫌行动派莽。把「速度」用在试验,「稳健」用在关键承诺,冲突会下降。"
|
||
base.CommDeep = "行动方给时间盒与最小方案;稳健方在时限内给风险清单,而不是无限延期。"
|
||
base.ConflictDeep = "冲突焦点常是节奏。先对齐「这是可逆试验还是重大决定」,再选速度。"
|
||
base.IntimacyDeep = "行动方用陪伴质量弥补碎片时间;稳健方减少用担忧浇灭热情,改用「我支持你试,我们设检查点」。"
|
||
base.GrowthDeep = "共同项目里明确角色:谁启动、谁验收、何时复盘。"
|
||
base.ChemistryPoints = []string{"破局 × 把关", "速度 × 质量", "试验与承诺可分工"}
|
||
base.Watchouts = []string{"节奏互斥", "一方压抑热情", "一方焦虑失控"}
|
||
base.CommTips = []string{"先定义可逆/不可逆", "时间盒决策", "风险清单限时"}
|
||
base.ConflictTips = []string{"争论节奏前先分类问题", "避免人格化指责", "用检查点代替否决"}
|
||
base.IntimacyTips = []string{"质量陪伴", "支持试验+检查点", "庆祝小进展"}
|
||
base.GrowthTips = []string{"项目角色清晰", "复盘节奏", "互相翻译动机"}
|
||
case "drive_warm":
|
||
base.Chemistry = "驱动与连接互补:一方带节奏,另一方维系人心与氛围。"
|
||
base.DeepOverview = "热情与效率碰到一起很有火花,也容易在「推进」与「照顾感受」之间拉扯。约定场景切换:冲刺模式 / 连接模式。"
|
||
base.CommDeep = "冲刺时短讯同步进度;连接时关掉任务话题。不要用效率语言处理情绪时刻。"
|
||
base.ConflictDeep = "驱动方避免「你想太多」;连接方避免「你只在乎结果」。改说具体需求。"
|
||
base.IntimacyDeep = "用共同体验(运动、活动)同时满足推进感与连接感。"
|
||
base.GrowthDeep = "轮流做「本周关系主理人」,负责安排一次连接或一次共同目标。"
|
||
base.ChemistryPoints = []string{"推进力 × 氛围", "行动号召力强", "共同体验易充电"}
|
||
base.Watchouts = []string{"情绪被效率压过", "承诺过多难兑现", "连接变任务化"}
|
||
base.CommTips = []string{"模式切换:冲刺/连接", "情绪时刻禁用效率话术", "进度短讯化"}
|
||
base.ConflictTips = []string{"禁止否定感受", "需求具体化", "修复后再推进"}
|
||
base.IntimacyTips = []string{"共同体验", "兑现小承诺", "非任务陪伴"}
|
||
base.GrowthTips = []string{"轮值关系主理人", "控制并行承诺", "庆祝与复盘并重"}
|
||
case "same_family":
|
||
base.DeepOverview = "你们属于相近气质族,容易互相理解,也要主动制造一点建设性差异,避免舒适区停滞。"
|
||
base.CommDeep = "沟通顺畅时更要确认细节,防止「好像说好了」其实理解不同。"
|
||
base.ConflictDeep = "冲突可能被淡化。强制做一次「最担心的三件事」互换。"
|
||
base.IntimacyDeep = "在舒适之外增加挑战性共同任务,刷新关系动能。"
|
||
base.GrowthDeep = "互相指出对方一个盲区,并约定本月各改一项小行为。"
|
||
base.ChemistryPoints = []string{"气质相近", "理解门槛低", "协作起步快"}
|
||
base.Watchouts = []string{"舒适区停滞", "细节默认错误", "回避尖锐议题"}
|
||
base.CommTips = []string{"确认细节", "书面关键约定", "鼓励异议"}
|
||
base.ConflictTips = []string{"互换担忧清单", "不假性和好", "设讨论截止"}
|
||
base.IntimacyTips = []string{"共同挑战任务", "新鲜体验", "具体感谢"}
|
||
base.GrowthTips = []string{"互指一个盲区", "月改一小行为", "外部输入"}
|
||
default:
|
||
base.DeepOverview = fmt.Sprintf("%s与%s风格路径不同,说明书价值更高。先承认差异合法,再谈协作规则。", aName, bName)
|
||
base.CommDeep = "建立双通道:事实通道与感受通道,讨论前先声明走哪一条。"
|
||
base.ConflictDeep = "冲突时回到共同目标句:我们都希望关系更好/事情做成。"
|
||
base.IntimacyDeep = "用定期同步取代猜测;空间与连接都要有配额。"
|
||
base.GrowthDeep = "把差异写成「我擅长 / 我需要」对照表,贴在看得见的地方。"
|
||
base.ChemistryPoints = []string{"视角多样", "可互补决策", "扩展彼此舒适区"}
|
||
base.Watchouts = []string{"误解成本高", "价值观冲突需早谈", "节奏长期错位"}
|
||
base.CommTips = []string{"声明沟通通道", "复述再回应", "关键约定书面化"}
|
||
base.ConflictTips = []string{"回到共同目标", "停火机制", "一次只谈一个议题"}
|
||
base.IntimacyTips = []string{"定期同步", "空间与连接配额", "具体肯定"}
|
||
base.GrowthTips = []string{"擅长/需要对照表", "月度复盘", "小步共同目标"}
|
||
}
|
||
return base
|
||
}
|