1、立项原因:校园里的时效性信息(二手转让、失物招领、活动通知、拼单代取)大多散落在几十个 QQ 群里,被闲聊淹没,刷屏即失效,想回头找一条信息几乎不可能。学生真正缺的不是又一个论坛,而是一个能自动把群消息沉淀成可检索、可筛选页面的聚合层。
2、业务背景:这类信息群天然是公开性质的(二手交易群、活动信息群),但群消息的形态决定了它无法被检索和筛选——没有分类、没有价格字段、没有时效排序。靠人工搬运到网页完全不现实,没有人愿意长期做这件事。
3、解决方案:搭建一条「群消息 → 结构化信息 → 网页展示」的自动化管道。服务端定时从群聊增量拉取消息,调用大语言模型完成分类与字段抽取(判断是否为二手交易、抽取物品名 / 价格 / 出售或求购 / 物品类型),清洗去重后写入数据库,最终按类别自动路由到校园墙、二手资源、活动信息三个页面。同步范围由白名单控制,仅同步管理员明确授权的群。
面向校园场景的信息聚合与社交平台,包含四个核心模块:
1、群聊自动同步管道:管理员在后台勾选需要同步的群(白名单机制,仅同步授权群),服务端定时按时间窗口增量拉取新消息,调用大模型做分类与结构化抽取,自动去重后入库,全程无需人工搬运。支持分类的增删改,分类名称直接决定内容最终出现在哪个页面。
2、校园墙:帖子发布(支持匿名)、图片上传、评论、点赞、收藏、分享,点击展开弹窗详情,支持无限滚动加载,支持按标题 / 正文 / 作者搜索。
3、二手资源:发布物品(物品名、价格或面议、出售 / 求购、物品类型),支持按买卖属性、物品类型、价格区间多维筛选与搜索,同样支持无限滚动与弹窗详情。
4、个人主页与后台管理:用户可修改用户名、昵称、QQ 号、头像,查看自己发布的帖子以及点赞、收藏的内容;管理员可查看用户列表、封禁违规账号、管理同步群与分类。
弹窗支持 URL 深链,分享出去的链接可直接定位到某条帖子。
我是项目的独立开发者,负责从数据库设计、后端接口、业务逻辑到前端交互与部署的全流程。
技术栈:Next.js 16(App Router)+ React 19 + TypeScript,数据层使用 MySQL(mysql2),会话采用 JWT(jose)写入 httpOnly Cookie,参数校验用 Zod,密码哈希用 bcryptjs,样式为 Tailwind CSS 4,数据写入走 Server Actions,路由守卫在 proxy 层实现。
架构与亮点:
1、定时任务基于 Next.js instrumentation 在服务启动时注册,配合全局锁避免开发环境热重载重复挂载定时器;通过同步游标 + 已处理消息 ID 集合实现增量拉取。
2、消息去重做了三层防线:数据库唯一索引 + INSERT IGNORE 兜底、时间窗口增量、同用户 24 小时内相同正文的启发式过滤,避免重复入库。
3、列表接口使用键集分页(cursor-based)而非 OFFSET,避免深分页性能衰减;作者信息与当前用户的点赞 / 收藏状态用一条 LEFT JOIN 查出,消除了原本逐帖回表的 N+1 查询。
主要难点:上游导出的消息结构与接口文档约定不一致,导致消息被误判为空内容而全部丢弃,我通过新增归一化层统一字段映射解决;批量导入时遇到主键类型溢出(用户表主键为 INT,装不下 10 位 QQ 号),改为独立列存储 QQ 号、主键回归自增引用。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论