山东大学软件学院项目实训团队博客:基于AI大模型的智能考研助手(七)
本周团队聚焦“院校推荐”这一核心特色功能的端到端打通,并同步完善 AI 对话与管理后台等周边能力:架构侧完成院校推荐模块设计,AI 侧落地多通道数据抓取与网页全局 AI 小助手,后端打通 Dialog 与 Admin 两大模块,前端完成院校推荐与 AI 智能匹配页面。系统从“能用”逐步走向“好用”。
一、项目总体进展
1. 架构设计与项目统筹(负责人:邵木凡):完成院校推荐模块设计——单一入口 /school/getSchool、覆盖学业背景与职业期望的 DTO、含招生统计的多层 VO,并产出接口文档与前端 UI 线框。
2. AI 模块开发(负责人:邢越):实现院校数据的 MCP 多通道抓取(官网 → 研招网 → 缓存降级)与基于知识库的网页全局 AI 小助手,并完善帖子个性化推荐与知识图谱 AI 增强。
3. 后端模块开发(负责人:王浩):完成 Dialog 模块(/dialog/text,RabbitMQ 异步 + CompletableFuture + AIResultManager + 30s 超时)与 Admin 模块(11 个后台接口,人工 + AI 协同审核)。
4. 前端开发(负责人:王睿):完成院校推荐与 AI 智能匹配前端页面,模块化设计、交互流畅、体验良好。
二、各模块详细进展
1. 院校推荐模块(架构 + AI 数据)
院校推荐的核心问题不是技术选型,而是“推什么”。最初尝试 FAISS 向量检索,实测发现同一所学校的多个段落都会命中、推荐列表里重复出现同一学校,且部分片段脱离了院校整体;最终改为基于结构化数据的多维度评分方案:院校信息全量存入 MySQL,推荐时直接查库过滤与评分,每所院校只出现一次,结果可解释、可调优。
AI 端实现 MCPSchoolCrawler 多通道抓取,数据源优先级为官网直接爬取 → 研招网 API → 第三方平台(预留)→ 数据库缓存兜底,每个通道失败自动降级;官网爬取用正则从纯文本中提取电话、邮箱、地址。种子数据预置 50+ 所院校,并用 INSERT ... ON DUPLICATE KEY UPDATE 幂等写入。
后端通过 /school/getSchool 接收用户画像,经消息队列转发给 AI 端,返回带近三年招生趋势、招生科目与录取指标的院校列表。
2. AI 对话(Dialog 模块,后端)
DialogController 通过 RabbitMQ 与 Python AI 服务异步通信,采用 CompletableFuture + AIResultManager 实现“异步转同步”:前端只需把文本发入队列,再从结果队列取回数据,30 秒超时机制确保响应及时。
3. 管理后台(Admin 模块,后端)
实现 11 个后台管理接口,包含“人工 + AI 协同”的审核机制:用户封禁 / 解封、帖子与评论审核、用户 / 帖子 / 评论搜索、帖子详情查看、仪表盘统计等。AI 助审通过消息队列将内容发送给 AI,AI 返回结果后修改数据库 status 字段,并支持系统消息通知与动态条件查询。
4. 网页全局 AI 小助手(AI 端)
小助手接入 app_guide 模式:先在本地 APP 功能知识库做关键词检索,再让大模型基于知识库作答,并在回答末尾按固定格式输出跳转标记【跳转:/pages/xxx|按钮文字】,前端解析后渲染成可点击的跳转按钮;一次最多 3 个按钮、只引导知识库中真实存在的页面,知识库没有的功能则礼貌说明暂不支持。
5. 院校推荐前端(前端)
基于 uni-app 完成院校推荐表单页(采集本科层次、GPA、英语水平、专业排名、目标专业与院校层次等画像信息)与 AI 智能匹配结果页(展示匹配度、近三年招生情况、招生科目,以及可展开的 AI 推荐理由与院校简介),卡片化布局、交互流畅。
三、技术亮点与总结
架构决策体现工程思维:院校推荐从向量检索果断转向结构化数据评分,不盲目追逐技术热点,而选择最适合业务场景的方案。
多通道降级保证鲁棒性:MCP 数据抓取通过官网 → 研招网 → 缓存逐级兜底,保障数据获取的可靠性。
异步转同步:CompletableFuture + AIResultManager + 超时机制,兼顾系统响应性能与用户等待体验。
知识库化的 AI 小助手:RAG 检索 + 跳转标记,让助手回答聚焦于真实功能并能直接引导用户操作。
下周团队将进入联调测试与收尾阶段,向项目最终交付稳步迈进。
