心动随机产品系统Vibe Coding

我要开发同款
微信用户10055572572026年09月04日
2阅读

技术信息

语言技术
JavaMongoVueTypeScript
系统类型
小程序轻应用
行业分类
社交

作品详情

行业场景

这是一个「MBTI + 兴趣标签」驱动的陌生人社交匹配小程序,跑在微信小程序和 H5两端。玩法很轻:用户先选自己的MBTI(可多选),再从性格、爱好、宠物里挑标签,由管理员一键开启匹配。系统支持纯随机,或按MBTI四维与标签重合度算相似度的智能匹配,每人最多配五个,双方可发文字、图片、语音。还有个「7天倒计时」设定,匹配满七天后数据自动清空,每段关系都带点限时意味;产品也刻意禁止发二维码,防止用户聊熟后转去微信、把流量留在平台内。
立项的根子,是陌生人社交里那个老问题——「该跟谁聊」。用户面对陌生人缺一个判断合不合得来的依据,MBTI和标签恰好是年轻人里流行又好传播的信号,让匹配有依据、可解释,也顺带解决破冰难;7天限时的稀缺感则天然推高活跃和留存。

功能介绍

系统提供两种匹配方式:一是纯随机分配,二是智能匹配——按 MBTI四个维度逐位比对、再结合标签重合度(Jaccard 系数)算出相似度,优先把契合的人配在一起。每人最多配到五个,匹配关系双向对称,不会出现「单相思」。
匹配成功后,双方即可开聊,支持发送文字、图片和语音三类消息。图片会上传并自动生成缩略图,语音附带时长,聊天通过 WebSocket 实时推送,支持已读回执、心跳保活、多设备同时在线和离线消息补推,消息落库保证不丢。会话列表自动汇总最后一条消息和未读数,历史记录可分页加载。产品层刻意禁止发送二维码,防止用户把关系导流到站外。
系统还有两个配套机制:一是「7天限时」,从匹配开始计时,后台每日凌晨两点自动清理七天前的数据,让每段关系带紧迫感;二是管理员后台,负责登录认证、开启或结束匹配、查看已匹配/未匹配用户。

项目实现

技术栈分三段:后端 Spring Boot 3.4 + Java 17 + Maven,数据层 Spring Data MongoDB,实时通信走原生 WebSocket,配 SpringDoc 生成 Swagger、Lombok 削样板、Docker部署;前端 uni-app(Vue 3 + Vite + Pinia),条件编译一套代码同时输出小程序和H5;数据库用 MongoDB,天然契合标签列表、消息元数据这类半结构化数据。
架构上是经典分层:controller → service → repository(声明式仓库,接口签名即查询,零实现代码),config 统一管跨域、静态资源映射和WebSocket 握手。核心设计是「写时聚合 + 对称会话」:消息落库时同步 upsert 一份会话摘要,拉会话列表只需一次查询;conversationId 由两用户 ID字典序拼接、完全确定性,任意一方可推导,查询不必 $or 双向匹配。
难点亮点有四:一是智能匹配,把 MBTI 四维逐位相似度与标签 Jaccard 系数按 0.4/0.6加权,再全局贪心按分数降序分配,保证双向对称、每人上限五、容量平衡;二是实时可靠性,消息先落库再推送、离线补推不丢,ACK 只回源设备,SessionManager 用「用户→设备→会话」二级映射实现多设备共存;三是媒体链路,图片自动缩略图带宽高、语音带时长,上传发送分离,换 CDN只改 URL 前缀;四是限时机制落地为每日凌晨两点定时清理,把「7 天清空」写进系统。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论