山东大学软件学院项目实训团队博客:基于AI大模型的智能考研助手(六)
本周我组的任务是推进聊天功能、院校推荐、管理员端以及AI对话助手端等多个核心模块的开发与完善。聊天功能、院校推荐模块在上一周部分接口的基础上形成了完整闭环;管理员端和AI对话助手端则完成了数据库表设计、接口定义及消息队列通信架构的搭建。
一、项目总体进展
1.架构设计和项目统筹(负责人:邵木凡):完成管理员端以及AI对话助手端的相关架构的设计,包含相关的数据库表的数据,相关接口的设计和接口文档的撰写。
2.AI模块开发(负责人:邢越):在完成消息队列集成、AI对话与内容审核等核心模块的基础上,聚焦院校推荐和网页全局AI小助手两个功能的开发。
3.后端模块开发(负责人:王浩):在上一周已实现部分聊天功能接口的基础上,进一步实现了其余聊天功能,优化实现逻辑,整理完善已有代码,并完成本地测试。
4.前端开发(负责人:王睿):根据后端接口和用户需求,设计具有模块化设计和用户良好体验的院校推荐和AI智能匹配前端页面。
二、各模块详细进展
1. 聊天功能模块
聊天功能整体架构为:前端通过HTTP(JWT Token认证)请求MessageController,控制器调用IMessageService接口,由MessageServiceImpl完成核心业务逻辑。数据层涉及MySQL中的message、message_list、friend三张表,以及Redis缓存和WebSocket实时推送。所有接口经过JwtTokenUserInterceptor拦截,从请求头Authorization中解析JWT,将userId存入BaseContext(ThreadLocal),后续所有方法通过BaseContext.getCurrentId()获取当前用户。
本周完成的核心功能包括:
(1)发送消息:完整的好友校验→构建Message对象→写入数据库→清除Redis缓存→更新会话列表→WebSocket双路推送流程
(2)获取会话列表和聊天记录:优先读Redis缓存,未命中则查MySQL分页查询,组装MessageVO(含发送者姓名/头像、错题卡片信息),标记已读后写入缓存(TTL 30分钟),支持按用户名模糊过滤和最近时间上限过滤
(3)撤回消息:校验发送者身份与3分钟时限后更新isRetract字段,清除缓存并推送撤回通知
(4)好友请求、反馈与解除好友:完整的发送请求、接受/拒绝、查看好友请求列表功能,双向校验后物理删除好友关系
(5)WebSocket推送体系:通过type字段区分新消息通知、会话列表更新、消息撤回、已读状态更新、好友请求/反馈五种推送类型。
(6)Redis缓存策略:发送消息、撤回消息、标记已读时均清除双方缓存;获取聊天记录时优先读缓存,未命中则查DB后写入。
2. 院校推荐模块
院校推荐的核心问题不是技术选型,而是「推什么」。最初考虑过向量检索(FAISS),将院校描述文本做embedding后语义匹配——实测发现FAISS返回的是文档片段,同一所学校的多个段落都可能命中,推荐列表里重复出现同一学校,且有些片段只描述某个专业,脱离了院校整体。最终放弃向量检索,改为基于结构化数据的多维度评分方案,院校信息全量存入MySQL,推荐时直接查库过滤和评分,每所院校只出现一次,结果可解释、可调优。
数据层设计: AI端在school_data.py中定义了三张表的建表逻辑(school、school_recruit等),服务启动时自动建表,保证部署环境一致性。院校种子数据在SCHOOL_SEEDS列表中预置了50+所院校,从C9到双非全覆盖,写入时使用INSERT ... ON DUPLICATE KEY UPDATE做幂等处理,重复运行不产生脏数据。
MCP多通道数据抓取: 实现了MCPSchoolCrawler,采用多通道降级策略自动抓取和补全院校数据。数据源优先级从高到低依次为:官网直接爬取→研招网API→第三方教育平台API(预留)→数据库历史缓存兜底。每个通道失败不阻断流程,自动降级到下一个。官网爬取的主要难点是各学校网站结构差异大,采用正则表达式从纯文本中提取电话、邮箱、地址等信息。
3. 管理员端与AI对话助手模块
数据库表设计: 设计了AI_audit表,作为管理员端是否开启AI审核的开关。
管理员端接口设计: 通过AdminController实现了用户管理(封禁/解封)、内容审核(AI助审与手动审核)、内容搜索(用户/帖子/评论)、帖子详情查看及仪表盘数据预览等全链路功能。其中AI助审通过消息队列将评论或帖子发送给AI,AI返回结果后修改数据库中的status字段。
AI对话模块: DialogController通过消息队列实现与AI服务的异步通信,只需将输入的文本通过消息队列发给AI端,再从AI端获取数据。
接口文档: 采用Markdown形式撰写接口文档,分发给具体开发人员。
三、技术亮点与总结
本周团队在多个维度取得了实质性进展:
- 聊天功能形成完整闭环:从消息发送、缓存读写、会话管理到WebSocket实时推送,形成了完整的即时通讯能力,代码已通过本地测试。
- 架构决策体现工程思维:院校推荐模块从向量检索方案果断转向结构化数据方案,体现了对实际问题的深入思考——不是盲目追逐技术热点,而是选择最适合业务场景的解决方案。
- 多通道降级策略保证鲁棒性:MCP多通道数据抓取的设计,通过逐级降级保障了数据获取的可靠性。
- 异步通信架构日趋完善:管理员端的AI助审和AI对话模块均通过消息队列实现异步通信,保证了系统的响应性能和可扩展性。
- 团队协作规范化:所有接口定义已整理为Markdown文档并分发至开发团队,为前后端联调奠定了良好基础。
下周团队将继续推进各模块的联调测试与功能完善,向项目最终交付稳步迈进。
更多推荐



所有评论(0)