ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SpringBoot+Thymeleaf+AI实战:智能社区服务管理系统开发全解析

SpringBoot+Thymeleaf+AI实战:智能社区服务管理系统开发全解析 如果你正在准备计算机毕业设计又恰好被“AI 大模型”这类字眼吸引那你大概率会卡在同一个问题上AI功能到底怎么落地是接一个现成接口还是要自己训练模型如果只是简单调用一个API论文里怎么写才不像“硬蹭”如果用传统Java技术栈又怎么在答辩时把“智能”两个字讲清楚这篇文章就以一个非常典型的毕业设计课题——基于SpringBoot Thymeleaf AI的智能社区服务管理系统为例把整个项目的选题逻辑、功能设计、环境配置、核心代码、验证方式、答辩准备全部拆开讲一遍。这不是一篇“观感很炫”的泛泛介绍而是一条从零把系统跑通、把论文写厚、把答辩讲明白的完整路径。文章适合三类读者正在选毕业设计题目的在校生已经买好或下载好源码但不知道怎么讲解的开发者以及想用“SpringBoot AI接口”做课程设计但停留在概念阶段的人。读完你会有两个直接收获第一知道这套系统里AI到底应该放在哪些功能点上才算合理第二能照着文章把项目跑起来并理解每一块代码为什么这么写。1. 为什么“SpringBoot Thymeleaf AI”是毕业设计的合理组合先说结论这个组合的价值在于它用最低的工程复杂度覆盖了毕业设计最看重的东西——完整的业务闭环、合理的技术栈、加分的前沿应用。1.1 技术栈难度刚好踩在“能讲清”的位置SpringBoot是Java后端开发的事实标准用它可以快速实现REST接口、事务管理、参数校验、统一异常处理。Thymeleaf是SpringBoot官方推荐的模板引擎它能让页面在后端渲染完成不需要额外搭建Vue或React工程。对大多数计算机专业学生来说这种“后端渲染页面”的模式更容易理解也更容易在论文里画出清晰的请求流程图。AI大模型部分不需要自己训练模型而是通过HTTP接口调用大模型服务把社区的业务数据和大模型的生成能力结合起来。这一点非常重要毕业设计评审老师看的不是你的模型表现而是你有没有用工程手段把AI能力集成进一个真实系统。1.2 它确实解决了社区管理的真实痛点传统社区服务管理通常依赖人工处理报修、投诉、咨询、通知等事务。问题在于报修分类靠人判断投诉内容难以汇总分析居民常见问题反复人工回答。引入AI之后系统可以做三件可以写进论文的事情居民输入一段自然语言描述AI自动识别报修类型并生成工单摘要。居民向社区助手提问AI基于预设的社区知识库给出回答。系统对投诉建议做文本分类和情绪判断帮助管理员优先处理紧急问题。这三件事都围绕“社区服务”场景展开既有业务价值又不需要复杂的模型训练适合在本科阶段完成。1.3 对读者最实用的建议如果你已经有一个现成的源码包不要急着改功能先按“管理员、工作人员、居民”三个角色把系统跑通弄清楚每个角色的核心页面和数据流转。如果你打算自己从零做就按本文第二章的功能清单去拆模块不要一上来就写代码。2. 系统功能结构与模块设计一个合格的智能社区服务管理系统至少要包含两个端居民端和管理端。因为Thymeleaf是服务端渲染所以两个端在同一个SpringBoot工程里通过不同URL路径区分。2.1 功能模块清单模块名称面向角色核心功能AI介入点居民信息管理管理员居民信息增删改查、房屋绑定、家庭成员管理无报修工单管理居民、工作人员提交报修、工单派发、维修进度、完工回访AI识别报修分类、生成工单摘要投诉建议管理居民、管理员提交投诉、处理反馈、历史查询AI文本分类、情绪判断智能问答助手居民社区政策问答、办事流程咨询大模型对话接口公告通知管理管理员发布公告、置顶、过期处理无缴费管理居民、工作人员物业费账单、缴费记录、欠费提醒无数据统计看板管理员工单量、投诉量、处理时长统计无这里的核心判断是AI不要放在所有模块里。只要在报修、投诉、问答三个模块出现论文里就能形成一条“AI应用”主线其他模块负责撑起系统的完整性。2.2 业务流程设计以报修工单为例推荐按这样的流程设计居民在页面提交报修填写问题描述、联系方式和地址。系统调用AI接口对问题描述进行分类如水电维修、设备故障、环境卫生。根据分类结果自动匹配维修人员生成工单记录。工作人员更新处理状态系统记录处理时长。居民查看进度完成后进行评价。这个流程的特点是AI不是“锦上添花”而是参与到了工单创建的前置环节这让“智能”两个字有了具体落点。2.3 数据库表设计思路建议至少设计这些核心表community_resident居民表字段包括id、姓名、手机号、楼栋、房间号、状态。repair_order报修工单表字段包括id、居民id、问题描述、AI分类结果、工单摘要、状态、处理人、创建时间、完成时间。complaint_info投诉建议表字段包括id、居民id、投诉内容、AI情绪标签、处理状态、回复内容。qa_record智能问答记录表字段包括id、居民id、问题内容、回答内容、AI模型标识、创建时间。notice_info公告表字段包括id、标题、内容、发布时间、状态。payment_record缴费表字段包括id、居民id、费用类型、金额、状态、缴费时间。表与表之间用resident_id关联工单和投诉表都要冗余一个AI分析结果字段这样在论文的数据库设计章节里可以专门说明“该字段用于存储AI接口返回的结构化结果”。3. 核心概念与技术选型解析这一节解释整个项目中容易被搞混的几个概念理解了它们你后面调试代码才不会一脸懵。3.1 SpringBoot在项目中到底负责什么SpringBoot负责的是“接住请求、处理业务、返回页面或数据”。当一个居民在浏览器点击“提交报修”请求会经过Controller层调用Service层的业务逻辑再通过Mapper层操作数据库最后把结果返回给Thymeleaf模板渲染成HTML。SpringBoot把这一整套流程用自动配置的方式简化了你不需要自己搭建Tomcat、手动处理Spring容器的XML配置。3.2 Thymeleaf模板引擎的核心逻辑Thymeleaf的核心是在HTML标签里写服务端变量和逻辑。它和传统JSP的区别是Thymeleaf模板本身是合法HTML直接用浏览器打开也能看到静态效果只有通过SpringBoot访问时才会把th:text、th:each这些属性解析成真实数据。在智能社区系统里你会在这些地方用到Thymeleaf工单列表页用th:each遍历工单集合。详情页用th:text显示AI生成的分类结果。新增页面用th:action指定表单提交地址。登录页用th:if判断是否显示错误提示。如果你之前只写过前后端分离项目第一次接触Thymeleaf可能会不适应“页面里混Java变量”的写法。但只要记住一点Thymeleaf可以帮助你在一个SpringBoot工程里完成页面跳转和数据展示不用再单独启动一个前端项目。3.3 AI大模型接入的三种理解层次在毕业设计层面AI接入有三种层次对应不同的论文写法和工作量层次实现方式优点缺点第一层接口调用通过HTTP调用大模型API发送提示词得到返回结果实现简单稳定可靠需要联网可能需要API密钥第二层本地部署轻量模型在本地或服务器部署开源模型通过服务调用不依赖外部服务对硬件有要求部署成本高第三层微调垂直模型用社区语料微调模型效果更贴合场景工作量过大不适合毕设对本科毕业设计来说第一层是性价比最高的选择。论文里你可以这样写“系统通过HTTP协议调用大模型开放接口采用提示词工程引导模型输出结构化结果无需自行训练模型降低了工程实现难度。”这句话既诚实又能体现你理解了大模型应用的基本范式。3.4 为什么不用Vue SpringBoot前后端分离这里想给一个反向判断前后端分离确实更像企业项目但对多数毕业设计来说会引入跨域配置、Token认证、前端打包、接口联调等一系列额外复杂度。如果你论文重点放在AI应用和业务流程上用Thymeleaf做服务端渲染可以节省大量时间。答辩时老师更关心你能不能把系统的核心流程讲清楚而不是你是否用了Vue3。4. 环境准备与项目初始化开始写代码之前先把环境确认一遍。版本号不需要追求最新稳定能跑才是第一位。4.1 推荐环境清单工具版本建议说明JDK1.8 或 11如果你用的是SpringBoot 2.xJDK 1.8完全够用Maven3.6依赖管理工具MySQL5.7 或 8.0数据库字符集用utf8mb4IDEA2021及以上推荐直接用IDEA打开项目Lombok插件最新即可简化实体类代码注意如果你的项目使用SpringBoot 3.xJDK必须使用17及以上。材料里出现了“springboot版本太高”这个热词现实中很多同学确实会遇到版本过高导致javax包找不到的问题。更稳妥的做法是如果你的教材和网上教程大部分是javax开头就用SpringBoot 2.7.x对应的包名是javax如果你希望用jakarta命名空间并体验更新特性再选择SpringBoot 3.x。本文示例按SpringBoot 2.7.x的常见写法来展示这也是当前毕业设计项目中使用最广的版本范围。4.2 创建一个SpringBoot项目使用IDEA新建工程选择Spring Initializr填写项目信息后选择以下依赖Spring WebThymeleafMyBatis FrameworkMySQL DriverLombok创建完成后在pom.xml里确保包含类似下面的依赖版本以你自己的Maven仓库为准!-- 文件路径pom.xml -- dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-thymeleaf/artifactId /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version2.3.1/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency /dependencies4.3 配置文件准备在src/main/resources/application.yml中写入基础配置spring: datasource: url: jdbc:mysql://localhost:3306/community_smart?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver thymeleaf: cache: false prefix: classpath:/templates/ suffix: .html mybatis: mapper-locations: classpath:/mapper/*.xml type-aliases-package: com.example.community.entity configuration: map-underscore-to-camel-case: true这里有两个建议第一thymeleaf.cachefalse在开发阶段一定要开否则修改页面模板后需要重启项目才能看到效果第二map-underscore-to-camel-casetrue可以让数据库字段repair_type自动映射到实体类属性repairType省去大量写ResultMap的时间。4.4 AI接口配置AI能力通过HTTP接口调用不要在代码里硬编码密钥。在配置文件中单独维护ai: api-url: https://your-model-endpoint/v1/chat/completions api-key: your-api-key model: your-model-name timeout-seconds: 30当你在真实项目中接入时只需要把这三项配置替换成你申请到的服务信息。这个小设计在论文里可以写成“系统采用配置化方式管理AI服务参数便于后续更换不同模型供应商”。5. 数据库建表与初始化脚本准备好数据库创建一个名为community_smart的数据库然后执行下面这些核心建表SQL。这里只列出最关键的三张表其他表按同样的风格扩展即可。-- 居民表 CREATE TABLE community_resident ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键id, name varchar(50) NOT NULL COMMENT 姓名, phone varchar(20) DEFAULT NULL COMMENT 手机号, building varchar(20) DEFAULT NULL COMMENT 楼栋, room_number varchar(20) DEFAULT NULL COMMENT 房间号, status tinyint(4) DEFAULT 1 COMMENT 状态 1正常 0禁用, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT居民表; -- 报修工单表 CREATE TABLE repair_order ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键id, resident_id bigint(20) DEFAULT NULL COMMENT 居民id, description text COMMENT 问题描述, ai_category varchar(50) DEFAULT NULL COMMENT AI识别分类, ai_summary varchar(255) DEFAULT NULL COMMENT AI生成摘要, handler varchar(50) DEFAULT NULL COMMENT 处理人, status tinyint(4) DEFAULT 0 COMMENT 状态 0待处理 1处理中 2已完成, create_time datetime DEFAULT NULL COMMENT 创建时间, finish_time datetime DEFAULT NULL COMMENT 完成时间, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT报修工单表; -- 问答记录表 CREATE TABLE qa_record ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键id, resident_id bigint(20) DEFAULT NULL COMMENT 居民id, question text COMMENT 问题内容, answer text COMMENT 回答内容, model_name varchar(100) DEFAULT NULL COMMENT 模型标识, create_time datetime DEFAULT NULL COMMENT 创建时间, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT问答记录表;建表之后插入几条测试数据INSERT INTO community_resident (name, phone, building, room_number, status) VALUES (张三, 13800001111, 1栋, 101, 1); INSERT INTO repair_order (resident_id, description, ai_category, ai_summary, status, create_time) VALUES (1, 厨房水管漏水地面积水严重, 水暖维修, 厨房水管漏水需尽快上门处理, 0, NOW());6. 核心代码实现从AI调用到页面展示这一部分是整篇博文的核心。代码不一定需要完全照抄但理解每一处实现逻辑能帮你应对答辩时的追问。6.1 实体类定义根据数据库表创建实体类。使用Lombok简化getter/setter// 文件路径src/main/java/com/example/community/entity/RepairOrder.java package com.example.community.entity; import lombok.Data; import java.time.LocalDateTime; Data public class RepairOrder { private Long id; private Long residentId; private String description; private String aiCategory; private String aiSummary; private String handler; private Integer status; private LocalDateTime createTime; private LocalDateTime finishTime; }6.2 AI服务调用层编写一个AiService负责调用大模型HTTP接口。这里使用Spring的RestTemplate简单直接容易在论文中解释// 文件路径src/main/java/com/example/community/service/AiService.java package com.example.community.service; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; Service public class AiService { private final RestTemplate restTemplate new RestTemplate(); Value(${ai.api-url}) private String apiUrl; Value(${ai.api-key}) private String apiKey; Value(${ai.model}) private String model; public String chat(String prompt) { HttpHeaders headers new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.setBearerAuth(apiKey); MapString, Object requestBody new HashMap(); requestBody.put(model, model); // 这里构造一个简单的消息列表 MapString, String message new HashMap(); message.put(role, user); message.put(content, prompt); requestBody.put(messages, new Object[]{message}); HttpEntityMapString, Object request new HttpEntity(requestBody, headers); try { MapString, Object response restTemplate.postForObject(apiUrl, request, Map.class); if (response ! null response.get(choices) ! null) { Object choicesObj response.get(choices); if (choicesObj instanceof java.util.List? choices !choices.isEmpty()) { Map?, ? firstChoice (Map?, ?) choices.get(0); Map?, ? msg (Map?, ?) firstChoice.get(message); return (String) msg.get(content); } } } catch (Exception e) { // 在生产项目中应该记录日志并做降级处理 return AI服务暂时不可用请稍后再试; } return AI服务返回为空; } }这个类有两点值得在论文中说明一是通过Value读取配置避免硬编码二是用try-catch做降级保证AI服务故障时主流程不崩溃。6.3 报修工单业务实现AI分类 摘要在居民提交报修时先调用AI把问题描述转成结构化的分类和摘要。提示词设计是这里的关键// 文件路径src/main/java/com/example/community/service/RepairOrderService.java package com.example.community.service; import com.example.community.entity.RepairOrder; import com.example.community.mapper.RepairOrderMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; Service public class RepairOrderService { Resource private RepairOrderMapper repairOrderMapper; Resource private AiService aiService; public void createOrder(RepairOrder order) { // 构造提示词要求模型返回JSON格式 String prompt 你是一个社区报修工单分类助手。请对以下问题描述进行分类 分类结果只能是水暖维修、电力维修、环境卫生、设备故障、其他。 并生成一句不超过20字的工单摘要。 请以JSON格式返回{\category\:\分类\,\summary\:\摘要\}\n 问题描述 order.getDescription(); String aiResult aiService.chat(prompt); // 对AI返回结果做最简单的解析当前仅做演示 try { String category 其他; String summary order.getDescription(); if (aiResult.contains(分类)) { int start aiResult.indexOf(category); if (start 0) { category aiResult.substring(aiResult.indexOf(:, start) 2, aiResult.indexOf(,, start)).replace(\, ); } int summaryIndex aiResult.indexOf(summary); if (summaryIndex 0) { summary aiResult.substring(aiResult.indexOf(:, summaryIndex) 2, aiResult.indexOf(}, summaryIndex)).replace(\, ); } } order.setAiCategory(category); order.setAiSummary(summary); } catch (Exception e) { order.setAiCategory(其他); order.setAiSummary(order.getDescription()); } order.setStatus(0); order.setCreateTime(LocalDateTime.now()); repairOrderMapper.insert(order); } }这里的提示词设计有一个通用原则要求模型输出JSON格式而不是自然语言的自由文本。这样后续解析代码就简单、可控。如果AI返回的格式不对代码会走catch分支兜底保证工单依然能创建成功。毕业设计答辩时老师很可能会问“如果AI接口请求失败怎么办”你可以回答系统在调用AI的环节做了异常捕获和降级处理AI分类失败时工单仍然可以按“其他”分类正常提交AI服务不可用不会阻塞居民的报修流程。这是一个非常加分的工程意识。6.4 智能问答模块智能问答模块的思路更简单接收居民问题拼接提示词调用AI返回答案并把问题和答案保存到qa_record表Controller RequestMapping(/qa) public class QaController { Resource private AiService aiService; Resource private QaRecordMapper qaRecordMapper; PostMapping(/ask) public String ask(String question, Long residentId, Model model) { String prompt 你是一个社区智能助手。请结合社区服务场景回答以下问题 如果问题涉及政策或流程请先说明办理地点和所需材料 如果不确定请建议居民联系社区服务中心。\n 问题 question; String answer aiService.chat(prompt); QaRecord record new QaRecord(); record.setResidentId(residentId); record.setQuestion(question); record.setAnswer(answer); record.setModelName(community-ai-assistant); record.setCreateTime(LocalDateTime.now()); qaRecordMapper.insert(record); model.addAttribute(question, question); model.addAttribute(answer, answer); return qa_result; } }6.5 Thymeleaf页面工单提交页面在src/main/resources/templates/repair_submit.html中写页面。这里只展示核心表单部分!-- 文件路径src/main/resources/templates/repair_submit.html -- !DOCTYPE html html xmlns:thhttp://www.thymeleaf.org head meta charsetUTF-8 title提交报修工单/title /head body h2提交报修工单/h2 form th:action{/repair/submit} methodpost input typehidden nameresidentId value1 / div label问题描述/label textarea namedescription rows4 cols50 required/textarea /div div button typesubmit提交工单/button /div /form /body /html6.6 Controller层整合最后写一个RepairController把页面和Service串起来// 文件路径src/main/java/com/example/community/controller/RepairController.java package com.example.community.controller; import com.example.community.entity.RepairOrder; import com.example.community.service.RepairOrderService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; Controller RequestMapping(/repair) public class RepairController { Resource private RepairOrderService repairOrderService; GetMapping(/submit) public String submitPage() { return repair_submit; } PostMapping(/submit) public String doSubmit(RepairOrder order) { repairOrderService.createOrder(order); return redirect:/repair/list; } GetMapping(/list) public String list(org.springframework.ui.Model model) { // 这里简化处理只查询全部工单实际项目应该分页 model.addAttribute(orders, null); return repair_list; } }实际项目中repair/list应该调用Mapper查询数据库并放入Model。由于不同项目的Mapper实现方式不同这里留出扩展点重点演示的是“Controller - Service - AI调用 - 数据落库”的调用链路。7. 运行验证与效果检查项目写完后按下面的顺序验证不要跳步。7.1 启动项目在IDEA中直接运行启动类CommunityApplication。看到类似下面的日志说明启动成功Tomcat started on port(s): 8080 (http) Started CommunityApplication in 3.2 seconds7.2 验证居民信息功能启动浏览器访问http://localhost:8080/resident/list如果能正常显示居民列表说明数据库连接、MyBatis映射、Thymeleaf模板渲染整条链路是通的。7.3 验证报修工单AI分类访问http://localhost:8080/repair/submit填写“厨房水管漏水地面积水严重”提交后进入工单列表。如果工单状态正常创建说明AI调用和降级逻辑都没有阻塞主流程。如果配置了大模型接口可以在数据库中执行SELECT id, description, ai_category, ai_summary FROM repair_order;正常情况下ai_category应显示“水暖维修”ai_summary应是一句简短摘要。7.4 验证智能问答访问问答页面输入“办理居住证明需要带什么材料”提交后查看返回页面。如果页面有正常回答说明AI接口连通。7.5 排查第一原则如果某一个页面报错优先看IDEA控制台的完整异常堆栈同时检查数据库名、用户名、密码是否和application.yml中一致。大部分SpringBoot项目启动失败都是这三个配置项写得不对。8. 常见问题与排查思路问题现象可能原因排查方式解决方案启动报Failed to configure a DataSource数据库连接配置错误或没有创建数据库检查application.yml中的url、username、password先创建数据库再检查账号密码页面报Whitelabel Error Page请求路径没有匹配到Controller或Controller未返回正确视图查看控制台日志确认请求URL检查RequestMapping路径确认模板文件名Thymeleaf页面修改不生效模板缓存未关闭确认spring.thymeleaf.cachefalse重启项目修改配置并重启或按CtrlF9重新编译AI返回内容无法解析模型返回了自然语言而不是JSON在AiService中打印原始返回结果调整提示词或使用更严格的解析逻辑中文字符乱码数据库字符集不是utf8mb4或连接未指定编码检查数据库建表语句和jdbc-url统一使用utf8mb4并在jdbc-url中加characterEncodingutf8SpringBoot版本过高导致javax包不存在使用了SpringBoot 3.x但代码里用了javax检查pom.xml中spring-boot-starter-parent版本改用2.7.x或者把javax改为jakarta项目能启动但页面样式丢失静态资源路径问题查看浏览器控制台404文件把css/js文件放到src/main/resources/static目录页面用th:href{/css/style.css}引用这里的排查思路可以总结成一个通用模板先看日志再查配置最后看代码。不要一报错就打开搜索引擎搜完整报错先自己定位到具体是哪一层出了问题。9. 最佳实践、论文写作与答辩建议代码跑通只是第一步毕业设计更重要的是把工作转化成论文和答辩语言。9.1 工程层面给代码留出“可讲性”建议在项目里做三件事第一在AI调用的地方加日志。比如打印请求耗时、模型名称、返回结果这样论文里可以写“系统对AI调用耗时进行了监控平均响应时间为xx秒”。第二把AI提示词集中管理。不要散落在各个Service类中可以建一个PromptTemplate类统一维护每个场景的提示词。答辩时可以强调提示词方案是经过多次测试调整的体现了对模型输出稳定性的考虑。第三把AI密钥放到配置文件并使用环境变量注入。不要把真实密钥提交到代码仓库。9.2 论文层面把“调用API”写出工程深度很多同学担心“只是调用API论文会不会显得太浅”。这里给出一个提升深度的思路在“系统设计”章节专门写AI模块设计包括提示词设计、超时处理、失败降级、JSON解析方案。在“系统实现”章节加入报修自动分类的时序图或流程图展示居民提交、AI分析、工单生成、派单处理四个阶段。在“系统测试”章节设计对比测试人工分类和AI分类的准确率对比、AI服务可用和不可用两种场景下的功能表现。这样写出来的论文重点不再是“我调了一个接口”而是“如何把不可控的大模型输出转化为可控的业务数据”。9.3 答辩层面准备高频追问下面这些问题建议提前想好答案为什么选择大模型接口而不是自己训练模型答社区业务对实时性要求高预训练大模型具备通用能力通过提示词约束即可满足需求自训练模型成本高且周期长。AI判断错了怎么办答系统保留人工修改入口工作人员可以修改分类结果同时将AI输出作为辅助参考不直接替代人工决策。如果AI服务不可用系统还能用吗答可以。系统在AI调用处做了异常捕获和降级处理AI故障时工单会以默认分类提交不会影响核心报修流程。如何保证数据安全答数据库中的敏感字段采用参数绑定防止SQL注入AI请求中的密钥通过配置文件管理不暴露在前端代码中。9.4 后续功能扩展方向如果时间充足可以在现有基础上扩展这些功能让项目更有竞争力工单超时提醒定时任务扫描超过48小时未处理的工单自动通知管理员。缴费到期提醒通过定时任务生成待缴费清单。访客预约居民填写访客信息生成访客二维码。数据看板使用ECharts展示每周工单量趋势、投诉类型分布。结语智能社区服务管理系统是一个很适合毕业设计的题目它的业务场景真实、技术栈成熟、AI落点清晰。真正拉开分数差距的地方不在于你用了多新的框架而在于你能不能把“AI能力如何与业务结合”这件事讲透。按照本文的路径你不仅能把系统跑通还能在论文和答辩里回答出每一步设计背后的原因。后续如果你想把AI部分做得更深入可以从提示词工程、模型效果评测、流式输出这三个方向继续探索。建议收藏备用等你要开题或者写论文的时候再回来对照一遍。
返回列表