用途
该技能用于为戒瘾康复(recovery)类应用构建隐私优先的社交功能。其设计优先考虑匿名性、安全性以及康复社区特有的关系结构,适合处理发起人/受助人关系、康复群组、隐私好友连接、同伴间安全消息、匿名资料系统等场景。
明确不适用于:通用社交媒体模式(请使用标准社交功能文档)、约会或恋爱连接功能(不适合康复场景)、面向公众的资料(康复应用应默认隐私)、内容推荐算法(内容安全请使用 recovery-community-moderator 技能)。
核心原则
隐私默认开启(Privacy by Default):康复应用处理敏感数据,默认采用最大隐私,由用户自行选择公开程度。提供的 PrivacySettings 接口包含 profileVisibility、showSobrietyDate、showProgram、showLocation、allowMessages、anonymousInGroups 等字段,并有 DEFAULT_PRIVACY 常量将默认值设为最私密(如资料仅好友可见、隐藏戒酒日期、允许消息仅好友、群组内匿名)。
匿名支持(Anonymity Support):许多用户需要完全匿名。Profile 接口将私密字段(email、realName)与公开身份字段(displayName、avatarType、avatarIcon)分离,并包含 sobrietyDate、programs(aa/na/cma/smart/refuge/other)、homeGroup 等康复相关字段。
主要能力
发起人/受助人关系
发起人关系是层级化且私密的,只有双方知道。关键概念:基于邀请的连接(发起人生成代码,受助人接受)、邀请码限时 24 小时过期、默认私密无公开可见性、每个项目一位发起人、不受限的受助人数。提供 Hooks:useSponsorInvite()、useSponsorRelationships();组件:GenerateSponsorInvite、AcceptSponsorInvite、SponsorDashboard。完整实现在 references/sponsor-sponsee.md。
基于聚会的群组
群组围绕特定聚会自然形成,默认为临时性(ephemeral),也可设为永久。关键概念:可关联特定聚会或独立存在、临时群组 24 小时后自动删除、可见性选项(public/private/invite)、成员上限防止过载。GroupSettings 接口含 name、meetingId、visibility、ephemeral、maxMembers。可见性规则:public 任何人可见任何人可加入;private 仅成员可见仅邀请可加入;invite 仅成员可见需邀请码加入。提供 Hooks:useMeetingGroup();组件:QuickMeetingGroup。完整实现在 references/groups.md。
好友连接
无层级的对等连接,需双方同意。关键概念:请求/接受流程(无自动关注)、通过 Supabase 订阅实时更新、支持屏蔽(单向且隐蔽)、状态为 pending/accepted/blocked。提供 Hooks:useFriendships();组件:FriendRequestButton、PendingFriendRequests。完整实现在 references/friendships.md。
安全消息
适合康复场景的消息功能,含危机检测与安全特性。关键概念:通过 Supabase 实时投递、危机关键词检测(非阻断,展示资源)、软删除(消息隐藏而非销毁)、默认无已读回执。CRISIS_KEYWORDS 数组涵盖自杀意念(suicide、kill myself、want to die、end it all)、复吸迹象(relapse、using again、fell off the wagon)、自伤(hurt myself、cutting、self-harm)。最佳实践:非阻断——危机提示仅建议资源而不阻断消息;隐私优先——不自动记录或上报危机关键词;语气温和非评判;直达内部资源页而非外部站点;支持离线缓存危机资源。提供 Hooks:useMessages();组件:MessageInput(带危机检测浮层)。完整实现在 references/messaging.md。
共济功能(Accountability)
与信任对象分享康复进展。签到分享:将每日签到分享给选定的发起人、HALT 追踪(Hungry、Angry、Lonely、Tired)、心情与感恩记录。戒酒可见性级别:private(仅自己,最大隐私)、sponsors(自己与发起人,侧重共济)、friends(自己、发起人与好友,同伴支持)、community(所有应用用户,公开里程碑庆祝)。DailyCheckIn 接口含 date、mood(1-5)、halt(hungry/angry/lonely/tired 布尔值)、gratitude、notes。组件:ShareCheckIn、SobrietyVisibility。完整实现在 references/accountability.md。
安全与审核
内容审核与用户屏蔽。审核类别:crisis(自杀意念、自伤,展示资源不阻断)、sourcing(求药、贩毒,阻断并标记复审)、harassment(人身攻击、威胁,阻断并标记复审)、spam(推广内容,阻断)、explicit(色情/露骨内容,阻断)。屏蔽行为:被屏蔽用户无法发消息、无法查看屏蔽者资料、无法在群组中看到屏蔽者、已有消息被隐藏(不删除)、屏蔽为单向(被屏蔽者不知情)。文中给出用于隐藏被屏蔽用户消息的 RLS 策略模式示例。提供 Hooks:useContentModeration()、useBlocking()。完整实现在 references/moderation.md。
使用方式
该技能提供可直接参考的 React Hooks、UI 组件与 Supabase 数据库设计模式。数据库 Schema 见 supabase-admin/references/social-schema.md,包含:带 RLS 的 friendships 表、带邀请码的 sponsorships、groups 与 group members、conversations 与 messages,以及实时订阅模式。
引用文件一览:sponsor-sponsee.md、groups.md、friendships.md、messaging.md、accountability.md、moderation.md,分别对应各自的 Hook 与组件实现。
快速参考(隐私默认与可见范围)
- 资料:默认仅好友,可配置
- 戒酒日期:默认隐藏,可配置
- 发起人关系:私密,仅双方
- 群组成员:群组成员,可按群组配置
- 消息:仅参与者,绝不公开
- 签到:私密,需主动选择分享
限制
资料未提供具体定价、收费、平台支持范围或性能效果等信息。该技能面向戒瘾康复应用的社交功能开发,不适用于通用社交、约会、公开资料或内容推荐场景。