前言:

本周的任务是完成院校推荐功能模块的设计。这是此系统的最后一个功能模块,主要包含以下内容:用户通过填写自己的个人本科阶段的各种信息(如绩点,校园经历,所修专业)交给AI端进行处理,并且由AI端根据这些信息进行推送相关院校。其具体逻辑为:前端接受到用户提交的信息后传给后端,后端通过消息队列传递给AI端;AI端先通过MCP协议去各大官网爬取数据,如果爬取失败,则使用本地RAG的内容进行推送,具体逻辑图如下:

一.数据库表的设计

本模块不涉及到数据库表的新增设计

二.相关接口的设计

2.1 接口的设计

本功能涉及的接口如下,使用SchoolController存储相关的接口,仅仅设计一个接口,即“/school/getSchool”,用于接受来自前端的信息,然后将此信息通过消息队列转发给AI端,具体接口设计代码如下:

public class SchoolController {

    private final ISchoolService schoolService;

    @PostMapping("/getSchool")
    @Operation(summary = "获取院校推荐")
    public Result<List<SchoolVO>> getSchool(@RequestBody SchoolDTO schoolDTO) {
        log.info("院校推荐请求:{}", schoolDTO);
        List<SchoolVO> schools = schoolService.getSchools(schoolDTO);
        return Result.success(schools);
    }
}

2.2 DTO的设计

DTO用于存储前端传来的数据,此接口涉及到的SchoolDTO如下:

其中涉及到最基本的本科学校名称,本科的学校层次和本科学校专业,其中本科学校层次使用枚举值来代表

然后是此用户本科期间在该学校的表现,包含其平均绩点,英语水平,排名,在校经历等,这些是评判该学生适合哪所学校的必要条件

最后是用户对于目标的期望,包含目标院校层次,目标专业和就业前景等,可以让AI减少搜索范围,给出更加精准的答复。

以下是SchoolDTO的完整代码:

@Schema(description = "挑选学校信息")
@Data
public class SchoolDTO {

    @Schema(description = "本科学校名称")
    private String preSchoolName;

    @Schema(description = "本科学校层次,,枚举值,0双非,1为211,2为985,3为C9")
    private Integer preSchoolLevel;

    @Schema(description = "本科学校专业")
    private String preSchoolMajor;

    @Schema(description = "平均绩点")
    private Double gpa;

    @Schema(description = "英语水平,枚举值,0什么都没过,1四级,2六级")
    private String englishLevel;

    @Schema(description = "平均排名,枚举值")
    private Integer rank;

    @Schema(description = "在校经历")
    private String experience;

    @Schema(description = "目标学校层次(可多选)")
    private List<Integer> targetSchoolLevel;

    @Schema(description = "目标专业")
    private String targetSchoolMajor;

    @Schema(description = "读研目的,就业或者深造等")
    private String target;

    @Schema(description = "期望工作岗位")
    private String job;

    @Schema(description = "期望薪资:年薪,单位万")
    private Integer salary;

    @Schema(description = "是否考虑非全")
    private Integer considerNonFull;



}

2.3 VO的设计

VO是后端用于发给前端的数据类型,SchoolVO是一个学校信息项。由上面的接口得知,传给侵短的是SchoolVO的一个List,主要内容如下:

首先是学校名称,专业,地址等邮箱简介等内容,介绍该学校的具体情况;

其次是一个招生科目的List,对于招生科目,采用SubjectVO来存储,其包含科目序号和科目名称,具体代码如下:

@Schema(description = "科目信息")
@Data
public class SubjectVO {

    @Schema(description = "科目序号,如408,201等")
    private Integer id;

    @Schema(description = "科目名称")
    private String name;

}

然后就是招生数量与往年的招生情况:使用RecruitVO的一个List来存储近三年的招生情况,其包含年份,招生人数,复试线等内容,具体代码设计如下:

RecruitVO {

    @Schema(description = "年份")
    private String year;

    @Schema(description = "招生人数")
    private Integer numbers;

    @Schema(description = "复试线")
    private Integer fushixian;

    @Schema(description = "录取平均分")
    private Integer averageScore;

    @Schema(description = "录取中位数")
    private Integer medianScore;


    @Schema(description = "进入复试人数")
    private Integer inFushiNumbers;

    @Schema(description = "复录比")
    private Double fulubi;






完整的传递学校信息的SchoolVO的代码如下:

@Schema(description = "学校信息")
@Data
public class SchoolVO {

    @Schema(description = "学校名称")
    private String name;

    @Schema(description = "学校专业")
    private String major;

    @Schema(description = "学校地址")
    private String address;

    @Schema(description = "学校电话")
    private String phone;

    @Schema(description = "学校邮箱")
    private String email;

    @Schema(description = "学校简介")
    private String introduction;

    @Schema(description = "招生科目")
    private List<SubjectVO> subjects;

    @Schema(description = "招生数量")
    private Integer number;

    @Schema(description = "近三年招生情况")
    private List<RecruitVO> recentYears;

三.相关文档的编写

3.1 编写接口文档

接下来编写相关的文档,使用markdown进行编写,这是文档局部截图

3.2 编写前端UI逻辑图

编写前端的UI逻辑图,用于指导前端UI的开发,此图如下:

将以上内容分发给相关开发者进行开发。

四.总结

本次院校推荐功能模块作为系统的收官之作,完成了从用户画像采集到 AI 智能决策再到前端结果展示的全链路设计,涵盖了基于 SchoolDTO的结构化输入模型、SchoolVO的多维度招生数据输出模型以及核心接口 /school/getSchool的定义,同时明确了后端通过消息队列与 AI 端解耦、AI 端优先通过 MCP 协议实时抓取官网数据并在失败时降级至本地 RAG 推理的混合推荐机制,配套输出了标准化的 Markdown 接口文档与前端 UI 逻辑图,为前后端与算法团队提供了清晰的协同开发依据,标志着系统在功能完整性、架构合理性与工程可落地性方面迈出了关键一步。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐