最近帮几个计算机专业的学生看毕业设计,发现 SpringBoot + Thymeleaf + AI大模型 这套组合出现的频率越来越高。最典型的选题就是基于SpringBoot+Thymeleaf+AI的智能社区服务管理系统:一个偏业务的管理系统,叠加上智能客服问答、通知生成这些大模型应用能力,既有传统 Web 开发的完整链路,又有当前热门的 AI 应用元素,用来做本科毕业设计确实能打。
但说实话,这类项目拿到手之后,能不能跑起来、能不能讲清楚、能不能撑住答辩,靠的不是标题里的“夯爆了”,而是你自己对下面这几件事的理解:SpringBoot 在整个项目里到底负责什么,Thymeleaf 为什么不用 Vue 替换掉,AI 大模型是真正跑在业务闭环里,还是只做了一个接口装饰。如果这些概念没理清,源码再完整也经不住评委追问。下面按实际落地的顺序,把技术栈、运行、功能、论文、答辩和踩坑经验完整拆一遍。
1. 这个毕设选题值不值得做,先看它解决的问题和你的技术基础
1.1 智能社区服务管理系统面向的是真实业务场景
智能社区服务管理系统,业务上并不复杂。它模拟的是一个小区或社区服务中心的日常运营场景:居民需要在线报修、查看公告、缴纳物业费、发起投诉建议;物业人员需要处理工单、发布通知、管理楼栋和住户信息、查看缴费统计。再加上一个 AI 助手,用来回答居民常问的问题,比如“停水了怎么办”“物业电话是多少”“今天垃圾分类怎么分”,或者辅助物业人员生成通知公告。
这个选题的聪明之处,是没有硬造一个“伪需求”。社区服务、物业管理是真实存在的信息化场景,数据表设计、状态流转、权限划分都有现成逻辑可以参照。评委能看懂,学生也好解释。
1.2 技术栈搭配决定了这个项目的工作量和答辩难度
这里的核心搭配是 SpringBoot + Thymeleaf + AI大模型。
SpringBoot 负责后端业务,包括用户登录、权限控制、报修工单、缴费记录、公告管理这些 CRUD 和业务状态流转。
Thymeleaf 是服务端模板引擎,负责把后端数据渲染成 HTML 页面。它和 SpringBoot 配合自然,项目整个是单体结构,不用拆前端工程,也不需要 Node.js 环境。
AI 大模型则作为增强能力接入系统,不是拿本地电脑训练模型,而是通过调用模型接口,让系统具备智能问答、内容生成这类功能。
有人会问:现在不是流行 SpringBoot + Vue 前后端分离吗?为什么这个项目用 Thymeleaf?答案很实际:前后端分离意味着要维护 Vue 工程、处理跨域、联调接口,工作量直接翻一倍。Thymeleaf 方案把页面和后端放在同一个工程里,部署简单,演示时打开一个地址就能完整操作,对毕业设计来说更稳。
1.3 适合哪类学生选,我用一张表说清楚
| 学生情况 | 是否适合 | 原因 |
|---|---|---|
| Java 后端基础一般,正在学 SpringBoot | 适合 | 技术栈聚焦,核心是业务 CRUD,容易讲清楚 |
| 不想投入大量时间做前端页面 | 适合 | Thymeleaf 模板开发快,不涉及复杂前端框架 |
| 想在系统里体现 AI 能力却不熟悉算法 | 适合 | AI 部分以调用接口为主,重点在应用集成 |
| 已经熟练 Vue 前后端分离 | 也可以 | 但答辩时要能解释为什么放弃分离式架构 |
| 想冲刺“高并发、分布式”风格项目 | 不太合适 | 这个系统的亮点在业务闭环,不在性能 |
我的建议是,如果你正在准备毕业设计,想稳一点,又希望项目里带点“大模型应用”的热点,这套题目是合理选择。但要注意,它不一定能体现攻坚能力,要靠论文中的分析和演示组织来补足工作量。
2. 把技术栈逐个拆透:SpringBoot、Thymeleaf、AI 大模型到底各管哪一块
2.1 SpringBoot 在这个项目里承担的是完整后端骨架
SpringBoot 的价值是让后端开发更快、更规范。它的自动装配、起步依赖、内嵌容器,让项目不需要繁琐的 XML 配置就能跑起来。在智能社区系统里,SpringBoot 核心是三个层次:
- Controller 层:接收页面请求,返回模板或 JSON。比如“提交报修”“分页查询工单”“删除公告”。
- Service 层:处理业务逻辑,比如工单创建后自动设置状态,AI 调用失败时返回兜底内容。
- Mapper 层:操作 MySQL 数据库,完成增删改查。
这个分层结构,答辩时基本必问。要能说清楚:为什么 Controller 不能直接操作数据库?因为业务逻辑需要复用,比如报修创建和后台上报走同一套规则,放在 Service 里才能控制事务。
2.2 Thymeleaf 并不“老”,而是对单体服务端渲染非常友好
很多同学看到 Thymeleaf 会以为技术过时,这是误解。它的优势恰恰在于和 SpringBoot 无缝集成。页面里可以用th:each循环展示工单列表,用th:if控制按钮是否显示,用th:href拼接动态链接。后端传一个 Model,前端页面直接取值,不需要单独发 Ajax。
对毕设来说,Thymeleaf 还有一个隐藏好处:页面在服务器端渲染,演示时所有操作都在同一个站点里完成,不容易出现“前端环境没起起来”的尴尬。
但要注意,Thymeleaf 也有劣势,如果项目需要复杂交互、实时刷新、地图轨迹,它写起来会比较吃力。所以智能社区系统里的居民报修、公告查询、后台列表管理这类传统页面,用 Thymeleaf 完全够用;AI 问答的实时展示,则需要配合 JavaScript 异步请求,不能完全靠模板渲染。
2.3 AI大模型能力在这个项目里到底以什么形态存在
这是很多同学最模糊的地方。智能社区服务管理系统里的 AI,不是自己训练模型,也不是部署一个开源大模型。最常见、最稳妥的形态是:调用大模型接口,把社区业务数据、提示词和用户输入拼装成请求,让模型返回回答,再在页面里展示。
具体可以做成三类功能:
- 智能问答助手:居民输入“如何报修”,系统调用模型生成回答。
- 通知公告生成:物业输入“提醒居民缴费”,系统生成一份正式通知草稿。
- 工单分类辅助:把居民报修内容发给模型,让它自动判断故障类型,比如“水电”“门禁”“保洁”。
这三类功能都有明确的输入输出,工程量真实,答辩时容易演示,也不会过度依赖模型能力。
2.4 一个 AI 服务类的接口设计示例
下面是一个简化示例,用来理解 AI 模块在项目里的位置。实际源码可能不同,但思路是一致的。
@Service public class AiAssistantService { // 注入模型服务客户端,不同平台实现不同 private final ModelClient modelClient; public AiAssistantService(ModelClient modelClient) { this.modelClient = modelClient; } public String askQuestion(String userQuestion) { String prompt = "你是一个社区物业智能助手。" + "请用简洁、友好的语气回答居民问题。" + "如果问题涉及报修,请说明报修入口。" + "居民问题:" + userQuestion; try { // 超时时间要设置,避免页面一直转圈 return modelClient.call(prompt); } catch (Exception e) { // 失败时返回兜底文案,避免空指针 return "抱歉,智能助手暂时无法回复,请拨打物业电话或通过报修入口提交。"; } } }核心点有三个:拼装提示词、设置超时、失败兜底。答辩时被问“AI接口挂了怎么办”,你只要能说出兜底方案,就已经体现了工程意识。
3. 本地跑起来需要准备什么,第一步又该怎么做
3.1 环境准备清单
拿到源码之后,不要急着改代码,先把环境核对一遍。这类项目最常见的失败原因,不是功能写错,而是环境版本不一致。
| 环境项 | 推荐配置 | 说明 |
|---|---|---|
| JDK | 1.8 或项目 pom 中指定版本 | 不要直接装最新 JDK,部分旧依赖可能不兼容 |
| Maven | 3.6 及以上 | 用 IDEA 内置的也可以 |
| MySQL | 5.7 或 8.0 | 注意 8.0 的驱动和连接串不同 |
| IDEA | 2021 以后版本 | 社区版也可以,但专业版更顺手 |
| 数据库客户端 | Navicat 或 DataGrip | 用于导入 SQL 脚本、查看表数据 |
| 浏览器 | Chrome 或 Edge | 别用兼容性模式奇怪的浏览器 |
特别提醒:如果项目源码的 pom.xml 里写的是 SpringBoot 2.7.x,就不要强行升级成 3.x。SpringBoot 版本太高,可能导致某些配置方式失效,比如WebMvcConfigurer的写法、javax 和 jakarta 包名变化。
3.2 识别项目目录结构
导入 IDEA 后,先看工程结构,不要一上来就点运行。一个规范的毕设项目至少应该包含:
src/main/java:Java 源码,包含 controller、service、mapper、entity、config 等包。src/main/resources:配置文件、静态资源、模板页面。application.yml在这个目录里。src/main/resources/templates:Thymeleaf 模板页面。src/main/resources/static:CSS、JS、图片。sql或db目录:数据库初始化脚本。docs或资料目录:论文、PPT 等文本资料。
如果找不到 SQL 文件,先去 README 里看说明。没有说明就问资源提供方,不要自己猜。
3.3 数据库初始化
在 Navicat 里新建一个数据库,名字最好和项目配置一致,比如community_system,字符集选utf8mb4。然后导入项目里的 SQL 脚本。
导入后不要立刻跑,先检查三张核心表:
- 用户表:是否包含管理员账号。
- 楼栋表和住户表:是否有初始化数据。
- 菜单或角色表:如果是 RBAC 权限模型,角色和菜单关联是否有数据。
这些检查是为了确认登录系统后能看到页面和数据,不是空表。
3.4 配置文件里必改的三处
打开application.yml,重点检查:
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/community_system?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: 你的数据库密码 driver-class-name: com.mysql.cj.jdbc.Driver ai: model: api-key: 你的大模型接口密钥 model-name: 使用的模型名称第一处:端口。8080 被占用就改 8081,但要记得启动后访问地址也要改。
第二处:数据库账号和密码。除了地址,还要确认useUnicode、characterEncoding、serverTimezone这些参数。MySQL 8 一定要配置serverTimezone,否则连接可能报时区错误。
第三处:AI 接口的密钥。如果项目里没有这一项,就要去 AI 服务开放平台申请密钥,或者先找一个模拟接口跑通流程。
3.5 启动验证:看到什么日志才叫成功
点击启动后,不要只看到不报错就认为成功。你要看到:
- Spring Boot 的 Banner 正常打印。
Tomcat started on port(s): 8080这类日志出现。- 数据源初始化成功,没有
Access denied。 - 如果使用了 MyBatis,还要注意 Mapper xml 是否加载成功。
然后打开浏览器,访问http://localhost:8080,看到登录页。尝试用 README 里的默认账号登录,比如管理员admin/admin123。进去之后,随便点几个菜单,确认列表页、新增页、删除操作都能正常执行,才说明项目真正跑通了。
4. 核心功能模块拆解:从居民业务到 AI 问答如何串成完整闭环
4.1 居民侧功能:报修、缴费、投诉、公告
居民是系统的主要使用者,功能设计要贴近日常:
- 在线报修:填写位置、问题描述、期望处理时间,提交后生成工单。
- 缴费查询:查看物业费、水电费账单,支持在线缴费记录留存。
- 投诉建议:提交文字内容,可以附带图片。
- 公告查看:查看物业发布的通知,比如停水停电、活动报名。
- AI 助手:直接在页面提问,获取物业常见问题的答案。
这些功能表面看是 CRUD,但要把状态设计好。比如报修单就应该有“待处理、处理中、已完成、已驳回”几个状态,不能只有一个“提交成功”。
4.2 物业侧功能:工单处理、统计、人员与楼栋管理
物业端是后台管理视角,功能偏重审核和处理:
- 工单列表:按状态筛选、派单给维修人员、填写处理结果。
- 公告管理:发布、编辑、下线通知。
- 楼栋管理:维护楼栋、单元、房间信息。
- 住户管理:关联房间与住户,换房退住记录。
- 缴费管理:查看缴费率、生成催缴公告草稿。
我想强调一个点:后台功能不要只看“页面多不多”,要看状态流转是否完整。比如派单时,工单状态从“待处理”变“处理中”,处理完成后变“已完成”,这就是业务闭环。论文里可以画一张工单状态图,答辩非常加分。
4.3 AI 功能怎么嵌进去,才不会显得生硬
AI 功能不能做成一个孤立的“对话机器人”页面就结束。要嵌到业务流程里:
- 居民报修时,AI 自动分析报修文本,判断故障类型并推荐维修人员。
- 物业发布缴费通知时,AI 根据催缴对象生成不同语气的通知内容。
- 居民提问时,AI 先从常见问题库里匹配;匹配不到时,再调用大模型接口回答。
这样设计之后,AI 就是业务流程的一部分,而不是外挂。评委问“你的 AI 到底有什么用”时,你能举出具体场景。
4.4 数据流转怎么讲,才会让评委觉得完整
答辩时,评委最常问的一句话是:“这个系统从一个用户操作到最终结果,数据是怎么走的?”你要能按一条线索说清楚。
例如居民提交报修:
居民提交报修表单 -> Controller 接收参数 -> Service 创建报修工单,初始状态为“待处理” -> Mapper 写入数据库 -> 页面刷新后显示工单列表。
物业收到工单 -> 点击接单,状态改为“处理中” -> 维修完成后填写结果 -> 状态改为“已完成” -> 居民端能看到处理反馈。
如果 AI 参与,就是“提交报修”时同时调用 AI 服务生成故障分类,并保存到工单字段里。这条链路能讲清楚,项目就立住了。
5. AI 大模型接入方式:API 调用、知识库、本地部署怎么选
5.1 常见接入方式对比
这个项目里的 AI 能力,有几种实现路径,难度和工作量完全不同。
| 接入方式 | 实现难度 | 硬件要求 | 答辩亮点 | 风险 |
|---|---|---|---|---|
| 调用云端大模型 API | 低 | 无 | 应用结合好,有真实效果 | 依赖网络和接口额度 |
| 自建知识库 + API | 中 | 无 | 回答更贴近社区数据 | 需要设计向量化流程 |
| 本地部署开源模型 | 高 | 较高显存 | 体现动手能力 | 硬件不够容易翻车 |
| 写死规则回复 | 低 | 无 | 稳定 | 不被认为是大模型应用 |
对大多数毕设来说,第一种“调用云端大模型 API”性价比最高。你不需要关心模型训练,只需要把“用户问题 + 社区业务提示词”发给模型接口,拿到回答后展示出来即可。
第二种“自建知识库”想做成的话,通常是把社区政策、办事流程整理成文档,做内容切块,再通过向量库做相似度检索,检索结果和用户问题一起交给大模型。工作量明显增加,但答辩时非常有份量。
第三种“本地部署开源模型”不适合作为默认推荐。它需要单独准备显卡,显存不够连模型都加载不出来。如果你想尝试,也应该先把业务系统跑通,再在论文里作为“拓展与展望”来写。
5.2 一个提示词工程示例
AI 功能的体验好坏,主要取决于提示词。同样是“催缴费”,不同提示词效果完全不同。
你是一个社区物业工作人员。 请根据以下信息生成一条缴费提醒公告: 1. 语气要礼貌但不失提醒作用; 2. 控制字数在 100 字以内; 3. 包含缴费方式和截止日期; 4. 不要虚构不存在的政策。 信息:本月物业费缴纳截止日期为 25 日,目前还有部分住户未缴纳。这段提示词包含了角色设定、输出要求、限制条件和输入事实。论文中哪怕只写一个这样的例子,也能体现你对大模型应用的理解。
5.3 本地部署的现实条件,提前说清楚
如果你想做本地部署,需要正视硬件条件。以常见开源模型为例,7B 参数级别通常也要 16GB 以上显存才能比较流畅地推理。个人电脑如果是 8GB 显存,跑量化版本也会比较吃力。
所以我的建议是:本地部署可以作为探索方向,但别把它当系统必需的运行条件。毕设系统里保留接口抽象层,接 API 也能跑,换成本地模型也能跑,才是更灵活的做法。
5.4 同步调用和异步处理的取舍
AI 接口调用有延迟,页面不能一直转圈。要区分场景:
- 智能问答:可以同步调用,但要设置超时时间,失败后给兜底回答。
- 工单批量分类:项目里如果有这个需求,应该设计成异步任务。提交一批工单后,先返回“处理中”,后台慢慢调用 AI 接口更新分类结果。
- 公告生成:用户点击“生成”后,可以同步等待,因为单次生成一般十几秒内能返回。
如果批量任务全部同步调用,页面会因为等待过长被当成“卡死”。这属于设计问题,不是 AI 能力问题。
6. 论文(LW)怎么写,才能让评委觉得工作量足够
6.1 论文目录结构建议
成熟的毕设论文,通常按软件工程标准流程组织。目录可以参考:
- 绪论:背景、意义、国内外研究现状、主要工作。
- 相关技术介绍:SpringBoot、Thymeleaf、MySQL、AI 大模型接口。
- 需求分析:功能性需求、非功能性需求、用例分析。
- 系统设计:总体架构、功能模块设计、数据库设计、接口设计。
- 系统实现:核心功能页面和关键代码说明。
- 系统测试:功能测试、兼容性测试、AI 功能测试。
- 总结与展望。
很多同学只会写“绪论、技术介绍、代码展示”,这是不够的。需求分析和系统设计一定要写扎实。
6.2 需求分析不要只会抄模板
需求分析不是贴几张用例图就结束。你可以围绕这个系统整理几条真实的业务场景:
- 场景一:居民李家发现楼道灯坏了,进入系统提交报修,填写“3栋2单元5楼楼道灯不亮”,系统自动识别为“公共设施”并生成工单。
- 场景二:物业管理员在后台看到新工单,派给维修人员王师傅,王师傅处理完成后填写结果,居民收到状态更新。
- 场景三:居民在 AI 助手里问“办理停车月卡需要什么材料”,系统返回办理流程和咨询电话。
每一条场景都要对应到功能表和数据结构。评委看到的不只是“我画了用例图”,而是“我完整分析过这个业务”。
6.3 数据库设计里,表关系比字段数量更重要
数据库设计是论文重点。至少要画出核心表之间的关联关系:
- 用户表:系统登录用户,包含居民和物业角色。
- 楼栋表、单元表、房屋表:是上下级归属关系。
- 住户表:住户与房屋关联,一个房屋可能有多个成员。
- 报修工单表:关联报修人、关联房屋、关联处理人。
- 缴费记录表:关联住户和账单周期。
- 公告表:发布者和管理状态。
写论文时,每张表都要列出主要字段、数据类型和约束说明,但不要把所有字段都堆在一张表里。重要的是描述“为什么这样设计”,比如“为什么报修状态要单独用枚举常量,而不是直接存文本”。
6.4 测试部分怎么写,才会被评委认可
很多论文测试只写“输入正确数据,功能正常,通过”,这没有任何说服力。
针对智能社区系统,建议至少写三块测试:
- 基础功能测试:登录、权限控制、报修、缴费查询。使用表格列出测试用例、操作步骤、预期结果、实际结果。
- 异常输入测试:比如报修内容为空、手机号格式错误、越权访问后台。要说明系统怎么处理。
- AI 功能测试:用 10 个社区常见问题测试 AI 回答的准确率和兜底效果。可以给一个简单统计表格。
如果时间允许,可以补充一下接口响应时间。比如查询工单列表耗时、AI 问答平均延迟,让测试结果看起来更真实。
7. 答辩 PPT 和演示讲解:3 分钟怎么安排最稳
7.1 PPT 结构:每页只讲一个核心点
PPT 页数建议控制 10 到 15 页。顺序不要完全照搬论文,按演示逻辑来。
- 第 1 页:题目 + 一句话背景,比如“面向社区物业管理场景的智能服务应用”。
- 第 2 页:系统要解决什么问题,用居民报修、公告通知、智能问答三个例子说明。
- 第 3 页:技术栈总览,重点标出 SpringBoot、Thymeleaf、AI 大模型。
- 第 4 页:功能模块图。模块图要分层,居民端、物业端、AI 服务。
- 第 5 页:数据库关系图。时间不够就只放核心表。
- 第 6 到 8 页:运行截图,不要贴太多,选三个场景。
- 第 9 页:AI 接口调用流程或代码片段。
- 第 10 页:测试结果。
- 第 11 页:总结和展望。
PPT 上的字不要多。一句话能说清楚的就不要放三段文字。
7.2 演示路径:先业务,再 AI,再数据流
演示的时候,不要上来就点开 AI 聊天框。要按实际操作节奏走。
第一步,登录系统,展示角色权限。先登录管理员账号进入后台,再切换成居民账号,说明不同角色看到的内容不同。
第二步,走一条核心业务流程。比如居民提交“3 栋 2 单元 5 楼楼道灯不亮”的报修,后台工单列表里立刻出现该工单,点击接单,状态变化,填写处理结果,居民端可以查到“已完成”。
第三步,演示 AI 能力。在 AI 助手里输入一个社区常见问题,展示模型回答。如果可能,再演示“输入报修描述,自动生成工单分类”的效果。
这里要提前准备两到三个可重复的测试数据,不要现场临时打字,避免出错。
7.3 评委最爱问的高频问题和回答思路
要提前准备的问题:
“为什么用 Thymeleaf,不用前后端分离?” 回答角度:单体项目更聚焦业务和部署,减少前端环境依赖,适合中小型管理系统。
“AI 大模型是怎么接进来的?” 回答角度:通过服务封装调用模型接口,拼装提示词,设置超时和兜底,不涉及训练。
“如果 AI 接口没有额度或不能用了,系统还正常吗?” 回答角度:异常捕获后返回兜底文案,业务功能不依赖 AI 也能运行。
“项目的创新点是什么?” 回答角度:把大模型能力嵌入到报修分类、通知生成、居民问答等真实业务节点,而不是单独做一个聊天机器人。
“你自己改了什么?负责哪部分?” 这个问题很难答,但必须提前准备。从数据库表设计、一个状态流转逻辑、一个 AI 调用方法入手,讲清楚自己参与的部分。
8. 踩坑记录:从启动到答辩最容易翻车的几个点
8.1 SpringBoot 版本太高,启动直接失败
这个坑出现频率数一数二。很多同学喜欢在 IDEA 里新建项目时选最新 SpringBoot 3.x,然后把源码依赖升级,结果项目跑不起来。
常见报错是Unable to start web server、包名找不到javax.servlet。原因是 SpringBoot 3 换成了jakarta命名空间,很多旧代码中的javax导入要批量改。
我的建议是:除非你对升级很熟,否则完整保留源码指定的版本。先用项目自带的依赖跑通,再考虑升级。如果你的机器里有多个 Java 环境,还要确认 IDEA 的 Project SDK 和 Maven 使用的 JDK 一致。
8.2 数据库连接失败,多半是密码、时区和字符集
数据库连不上的现象有两种:一种启动日志直接报Access denied for user 'root'@'localhost',这是账号密码错误;另一种是报时区错误,比如The server time zone value ... is unrecognized,这是连接串里没有serverTimezone=Asia/Shanghai。
还有一类特殊问题:项目使用 MyBatis,SQL 脚本里包含中文注释,导入数据库时字符集选错,导致页面查询出来乱码。解决办法是新建数据库时统一选utf8mb4,导入前确认脚本编码是 UTF-8。
8.3 AI 接口调用失败,不一定是你代码问题
AI 接口调用失败,原因很多:网络不通、密钥无效、模型名称错误、请求参数格式不对、额度用完、接口超时。
排查顺序建议:
- 先看后台日志,定位是否进入 AI 调用代码块。
- 单独测试接口:用 Postman 构造一次请求,确认接口本身是否可用。
- 检查密钥和模型名称是否和配置一致。
- 检查请求体格式,特别是提示词参数名。
- 如果接口正常但页面无响应,再查超时配置和前端异步请求处理。
不要一上来就怀疑代码改坏了。先定位是接口问题还是工程问题。
8.4 演示现场翻车,通常是因为“现场输入”
演示最容易翻车的地方,是现场输入测试数据。手一抖打错字,页面报错了,答辩节奏就乱了。
解决方案很简单:提前准备几条测试文案,演示时直接复制。比如报修描述固定为“3栋2单元5楼楼道灯不亮”,AI 问题固定为“如何办理停车月卡”。复制粘贴虽然看起来不够“炫”,但是稳。
如果演示到一半网络波动,AI 接口超时了,不要慌。可以说:“这里网络波动,但系统已经做了兜底,自动返回人工联系方式。”这样既展示了功能,也体现了设计考虑。
8.5 遇到问题,先按这个顺序排查
不管代码还是业务出问题,建议按下面顺序定位:
- 看现象:是启动失败、登录失败、页面 500,还是 AI 没返回。
- 看日志:IDEA 控制台有没有堆栈信息,MyBatis 打印了什么 SQL。
- 看请求:打开浏览器 F12,看请求路径、请求方式、参数是否传到后端。
- 看数据:数据库里对应表有没有数据,状态字段是否被正确更新。
不要上来就翻 pom.xml,也不要一上来就改一大片代码。很多问题不是没人会,而是因为跳过了日志输入和数据检查。
8.6 项目题目里“AI 智能”别过度包装
最后说一个容易被忽略的问题:写论文和做 PPT 时,项目的名字可能会叫“智能社区服务管理系统”,但内容里不要到处空写“智能”“赋能”“大数据”这类词。
评委真正想看到的是:
- 智能体现在哪:AI 回答社区问题、AI 生成公告、工单自动分类。
- 系统解决了什么人工成本:减少了居民咨询物业的重复沟通。
- 有没有明确边界:AI 回答是辅助,关键业务仍靠人工处理。
把“智能”落在具体功能上,答辩才有底气。如果只是做了一个普通管理系统,加上一个聊天界面,却说成“全自动智能社区平台”,反而容易被问倒。
这套项目做下来,我最深的感受是:毕设能不能高分,取决于两件事,一是系统能不能完整跑通,二是你能不能把“业务、技术、AI 应用”串成一条线。只要把这条线理清楚,源码是谁写的都不重要,重要的是你真正理解每一个模块为什么存在。