Spring Boot整合AI大模型:智能天气出行服务系统设计与实现
这次来看一个最近在计算机毕业设计圈子里热度很高的题目基于 Spring Boot Thymeleaf AI 大模型的智能天气出行服务系统。很多同学一看到“AI 大模型”和“Spring Boot”放一起第一反应是是不是又要搞一个套壳聊天机器人。这套系统不一样的地方在于大模型不是摆在页面上陪聊的而是真正参与业务决策根据目的地天气、出行场景、出发时间自动生成可执行的出行建议。这个设计点放在答辩里是能讲出技术含量的。先给结论这套系统适合三类人一是准备做 Java 方向毕业设计、想加点 AI 亮点的同学二是想学 Spring Boot 如何对接大模型 API 的后端开发者三是想了解 Thymeleaf 服务端渲染项目怎么和前端异步交互的读者。交付内容里包含源码、LW毕业论文、PPT 和讲解视频但这篇文章不会只讲“项目有什么”而是把系统拆开功能模块怎么划分、数据库怎么设计、大模型怎么接、天气数据怎么取、部署后怎么验证、论文和答辩要注意什么一条线讲清楚。全文内容比较多建议先收藏按章节慢慢看。1. 项目全景与核心能力速览先做一个整体判断。这个系统不是一个单机 Demo而是一个标准的三层 Web 应用浏览器端 Spring Boot 后端 第三方服务天气 API、大模型 API。页面由 Thymeleaf 服务端渲染业务数据通过 MySQL 持久化AI 能力通过 HTTP 接口接入整体结构非常接近企业里常见的“传统业务 AI 能力扩展”形态。能力项说明项目类型基于 Spring Boot 的 Web 业务系统毕业设计课题核心后端框架Spring Boot构建 Spring MVC 三层架构页面模板Thymeleaf服务端渲染 HTML数据持久化MySQL Spring Data JPA 或 MyBatis二选一AI 能力接入调用大模型 HTTP API实现智能出行建议生成天气数据来源第三方天气服务接口如高德天气、和风天气主要功能模块用户登录注册、天气查询、AI 出行建议、历史记录、收藏管理交付物源码、LW论文、PPT、讲解视频扩展性可继续加 Redis 缓存、定时任务、地图服务适合场景计算机毕业设计、Spring Boot AI 入门实践从材料看项目的核心卖点是“AI 天气 出行”三个关键词组合。相比传统的“XX 管理系统”这套系统有两个优势技术栈主流Spring Boot Thymeleaf 是很多高校 Java 课程的标准组合写论文时容易找参考第二个是 AI 集成有真实业务价值不是生硬地挂一个聊天按钮而是让大模型读取结构化天气数据再输出用户真正需要的出行建议。2. 系统功能模块设计一个合格的毕设系统功能不能太多以至于做不完也不能太少导致论文没内容。智能天气出行服务系统从业务角度可以分为五个模块下面逐个说清楚职责和关键实现点。2.1 用户模块用户模块是标准设计包含注册、登录、退出登录、修改个人信息。这里要注意的是密码不能明文存储至少使用 MD5 加盐或 BCrypt 加密。Spring Security 在这个项目中可以不引入全量安全框架但密码加密这一个点必须做答辩时经常被问到。关键表是用户表包含用户 ID、用户名、密码、手机号、头像、注册时间等字段。登录成功后将用户 ID 存入 Session服务端渲染页面时需要根据 Session 判断是否显示“登录/注册”还是“个人中心”。2.2 天气查询模块用户输入城市名系统调用第三方天气 API展示当前天气、温度、湿度、风力、空气质量以及未来几天的天气预报。这个模块的核心不是调用 API而是三件事参数校验、结果格式化、异常兜底。城市名可能是“北京”也可能是“北京市”第三方接口要求 citycode 或经纬度所以后端要做城市名到城市编码的转换或者统一使用城市名参数。天气数据中可能包含几十个字段页面不需要全部展示后端要做一层数据裁剪只把需要的字段传给前端。2.3 AI 出行建议模块这是全系统的亮点模块也是论文里最能写创新性的部分。用户输入目的地、出行日期、出行目的系统自动把当前天气、未来预报、用户出行场景拼接成 Prompt请求大模型生成出行建议。实现上可以分为四个步骤用户提交出行请求。后端调用天气接口获取目的地实时天气和预报数据。后端将天气数据与用户输入组装成结构化 Prompt。调用大模型接口返回建议文本并保存到数据库。这里必须强调大模型返回的内容不能直接原样展示给用户后端要做一层预处理比如过滤空内容、设置最大长度、处理超时异常。如果天气接口调用失败系统应该提示用户天气数据获取失败而不是带着空数据去请求大模型否则 AI 输出的出行建议就是无效的。2.4 历史记录与收藏模块用户每次生成的出行建议都会保存到数据库用户在个人中心可以查看历史记录也可以对某条建议进行收藏、删除。这个模块的价值有两个一是让系统形成闭环用户不只是“用完即走”二是论文中可以作为“系统完备性”的体现数据库设计里也能多两张表。2.5 系统管理模块如果课题要求增加管理端可以加入用户管理、系统日志、建议内容管理等功能。这个模块不是必须的但如果论文需要凑足“系统功能完整”这一章建议保留一个简单的管理员角色实现用户列表查看、状态禁用/启用、后台日志浏览即可。3. 技术选型与依赖配置3.1 技术栈清单后端JDK 8 或 11毕设项目建议 JDK 8兼容性最好。Spring Boot 2.x 或 3.x具体看学校要求和本机环境。如果选 Spring Boot 3JDK 要求 17 以上。Spring MVC处理请求路由。Spring Data JPA 或 MyBatis操作数据库。Lombok减少实体类模板代码。前端Thymeleaf服务端渲染页面。Bootstrap页面样式和响应式布局。jQuery Ajax异步提交和局部刷新。ECharts展示天气趋势图表。第三方服务天气 API高德开放平台、和风天气等。大模型 API智谱、通义千问、DeepSeek、OpenAI 兼容接口等。3.2 pom.xml 核心依赖下面给出一个 Spring Boot 2.x 的依赖参考实际版本号需要根据你的 Spring Boot 父版本调整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.springframework.boot/groupId artifactIdspring-boot-starter-data-jpa/artifactId /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency dependency groupIdcom.squareup.okhttp3/groupId artifactIdokhttp/artifactId version4.12.0/version /dependency dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version2.0.32/version /dependency /dependenciesOkHttp 负责调用第三方天气接口和大模型接口Fastjson 负责解析 JSON。这两项也可以换成 RestTemplate 和 Jackson熟练用哪个就选哪个。3.3 application.yml 配置第三方接口的 Key 不要硬编码到 Java 代码里放到配置文件中再用ConfigurationProperties注入。这样一方面符合工程规范另一方面也方便部署时切换环境。server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/weather_trip?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true thymeleaf: cache: false ai: api-key: sk-xxxxxxxx endpoint: https://your-llm-provider.example.com/v1/chat/completions model: your-model-name weather: api-key: xxxxxxxx city-url: https://your-weather-provider.example.com/api/weather配置文件里的地址都用了示例域名实际开发时替换成你注册平台提供的信息。特别提醒api-key不要提交到公开仓库毕设源码交学校前要检查一遍。4. 数据库设计与核心表结构数据库设计是论文中的核心章节之一也是答辩老师重点看得分的地方。这套系统的核心表有四张用户表、出行记录表、收藏表、系统日志表。下面给出一套可执行的建表方案。4.1 用户表CREATE TABLE t_user ( id bigint(20) NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL COMMENT 用户名, password varchar(200) NOT NULL COMMENT 密码BCrypt加密, phone varchar(20) DEFAULT NULL, avatar varchar(255) DEFAULT NULL, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表;4.2 出行记录表CREATE TABLE t_trip_record ( id bigint(20) NOT NULL AUTO_INCREMENT, user_id bigint(20) NOT NULL COMMENT 用户ID, destination varchar(100) NOT NULL COMMENT 目的地, trip_date varchar(20) DEFAULT NULL COMMENT 出行日期, trip_purpose varchar(50) DEFAULT NULL COMMENT 出行目的旅游/通勤/出差, weather_info text COMMENT 调用天气接口返回的结构化数据, ai_advice text COMMENT 大模型生成的出行建议, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_user_id (user_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT出行记录表;这里把weather_info和ai_advice设计成 text 类型是为了保存完整的原始数据方便论文截图展示。如果后续要统计“哪些天气条件下用户更喜欢出行”可以再单独抽结构化字段。4.3 收藏表CREATE TABLE t_favorite ( id bigint(20) NOT NULL AUTO_INCREMENT, user_id bigint(20) NOT NULL, record_id bigint(20) NOT NULL COMMENT 出行记录ID, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_user (user_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT收藏表;4.4 系统日志表CREATE TABLE t_log ( id bigint(20) NOT NULL AUTO_INCREMENT, user_id bigint(20) DEFAULT NULL, action varchar(100) DEFAULT NULL COMMENT 操作类型, detail text COMMENT 操作详情, ip varchar(50) DEFAULT NULL, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT系统日志表;如果使用 Spring Data JPA可以直接用实体类加注解生成表结构也可以坚持用 sql 脚本初始化。建议用 sql 脚本论文里写数据库设计时更好展示。5. AI 大模型接入设计与实现这是全篇文章最重要的章节也是答辩时最可能被追问的部分。下面分别讲接入方式、代码实现、提示词工程和异常兜底。5.1 接入方式对比方式优点缺点适合情况HTTP 接口直连简单直接不依赖特定框架需要自己处理请求、解析、超时毕设推荐代码可控官方 SDK封装完整参数提示友好引入较多依赖想少写代码可选Spring AI 框架统一抽象未来可切换模型版本迭代快学习成本高追求框架化、想要扩展性从毕设角度推荐使用 HTTP 接口直连因为代码是自己写的论文技术路线好描述出问题也容易排查。5.2 大模型服务层代码实现下面是一个面向 OpenAI 兼容接口的通用调用模板核心思路是把天气数据传入系统提示词要求模型返回结构化出行建议。Service public class AiAdviceService { Value(${ai.api-key}) private String apiKey; Value(${ai.endpoint}) private String endpoint; Value(${ai.model}) private String model; private final OkHttpClient httpClient new OkHttpClient(); public String generateTripAdvice(String destination, String tripDate, String purpose, String weatherJson) throws IOException { String systemPrompt 你是出行助手根据天气信息和用户出行目的生成实用、简短的出行建议。 请使用中文回答不超过200字建议包含穿衣、交通、防护三个角度。; String userPrompt 目的地 destination \n出行日期 tripDate \n出行目的 purpose \n天气数据 weatherJson \n请给出出行建议。; JSONObject body new JSONObject(); body.put(model, model); JSONArray messages new JSONArray(); messages.add(new JSONObject() .fluentPut(role, system) .fluentPut(content, systemPrompt)); messages.add(new JSONObject() .fluentPut(role, user) .fluentPut(content, userPrompt)); body.put(messages, messages); body.put(temperature, 0.7); body.put(max_tokens, 500); Request request new Request.Builder() .url(endpoint) .addHeader(Authorization, Bearer apiKey) .addHeader(Content-Type, application/json) .post(RequestBody.create( MediaType.parse(application/json; charsetutf-8), body.toJSONString())) .build(); try (Response response httpClient.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException(大模型接口调用失败HTTP code: response.code()); } String responseBody response.body().string(); JSONObject result JSON.parseObject(responseBody); return result.getJSONArray(choices) .getJSONObject(0) .getJSONObject(message) .getString(content); } } }这段代码的要点使用temperature控制回答随机性毕设项目建议 0.7 左右既保留一定多样性又不会太失控。max_tokens限制返回长度避免模型输出过长导致页面样式错乱。每次接口调用都判读 HTTP 状态码失败时抛异常由上层统一处理。响应解析路径要看具体大模型的返回格式。上面按 OpenAI 兼容格式写如果你用的平台返回结构不同以官方文档为准。5.3 提示词工程同样的天气数据提示词写得好不好直接决定 AI 输出质量。建议在论文里单独拿出一小节讲提示词设计。推荐的做法是“三段式”角色定义告诉模型“你是出行助手”。约束条件明确“不超过200字”“中文回答”“包含穿衣、交通、防护三个角度”。输入数据把目的地、日期、目的、天气原文拼接进去。这种方式的好处是输出稳定、结构化明显、答辩时容易解释。如果希望输出更规整还可以让模型返回 JSON请严格按以下JSON格式返回 {clothing: 穿衣建议, transport: 交通建议, protection: 防护建议}加了格式约束后后端可以直接解析 JSON 字段分别渲染到页面的三个区块比输出一大段文本更好看。5.4 异常兜底与降级大模型接口不像本地方法调用网络波动、平台限流、Key 余额不足都会导致失败。系统必须做降级方案。超时时间设置为 20-30 秒避免用户无限等待。调用失败时返回友好提示并记录日志。设计一个简单降级如果 AI 接口不可用就根据天气数据用规则生成基础建议例如“今日有雨建议携带雨具注意出行安全”。这样即使 AI 挂了系统核心功能仍然可用答辩时是一个加分项。6. 天气数据获取与出行推荐逻辑AI 建议的质量依赖天气数据天气数据层的代码也要认真设计。6.1 天气数据源选择常见选择有高德开放平台和和风天气两者都提供免费额度支持按城市查询当前天气和预报。注册后获取 API Key阅读官方文档确认请求方式、参数和限流规则。这里不写死 URL因为各平台会调整接口最终以你申请平台的文档为准。6.2 天气服务层代码实现一个标准的天气服务层尽量做到入参校验、调用接口、解析数据、裁剪字段、返回给上层。Service public class WeatherService { Value(${weather.api-key}) private String apiKey; Value(${weather.city-url}) private String cityUrl; private final OkHttpClient httpClient new OkHttpClient(); public WeatherInfo getWeatherByCity(String city) throws IOException { HttpUrl url HttpUrl.parse(cityUrl).newBuilder() .addQueryParameter(city, city) .addQueryParameter(key, apiKey) .build(); Request request new Request.Builder() .url(url) .get() .build(); try (Response response httpClient.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException(天气接口调用失败HTTP code: response.code()); } JSONObject data JSON.parseObject(response.body().string()); // 以和风天气配置为例具体字段以实际返回为准 JSONObject now data.getJSONObject(now); JSONArray forecast data.getJSONArray(daily); WeatherInfo info new WeatherInfo(); info.setCurrent(now.getString(text)); info.setTemp(now.getString(temp)); info.setWind(now.getString(windDir)); info.setHumidity(now.getString(humidity)); info.setForecast(forecast.toJSONString()); return info; } } }这里有两个建议定义一个WeatherInfo实体类字段只包含页面需要的属性和组装 Prompt 需要的属性不要直接把第三方 JSON 原样塞给业务层。未来几天的预报数据转成字符串交给 AI 即可不必为天气单独建表。天气是实时数据入库价值不大反而增加表设计复杂度。6.3 缓存策略天气接口是系统中响应最慢、最不稳定的一环。不加缓存的话用户刷新一次页面就请求一次第三方接口既慢又容易被限流。至少做一层简单的内存缓存用ConcurrentHashMap保存“城市名 - 天气数据 过期时间”有效期设为 30 分钟。如果项目时间充足可以换成 Redis并在论文里写一节“基于 Redis 的天气数据缓存设计”。需要说明内存缓存只适合单实例部署毕设场景完全够用。6.4 调用链路一次完整的“查询出行建议”请求调用链路如下用户点击生成建议 - Controller 接收目的地、日期、目的 - TripService 调用 WeatherService 获取天气 - TripService 组装 Prompt - TripService 调用 AiAdviceService 获取建议 - TripService 保存 TripRecord 到数据库 - 返回数据到 Thymeleaf 模板渲染调用链路的时序很清晰论文里的“系统核心业务时序图”可以直接照这个画。7. 页面渲染与交互实现7.1 Thymeleaf 基础用法Thymeleaf 是服务端渲染模板页面直接通过ModelAndView或Model绑定数据。用户列表页面片段tr th:eachuser : ${userList} td th:text${user.id}1/td td th:text${user.username}admin/td td th:text${#dates.format(user.createTime, yyyy-MM-dd HH:mm)}2025-01-01 00:00/td /tr没有数据渲染时th:text后面的默认文本会展示这个特性对静态页面调试很方便。7.2 出行建议页面布局页面建议分成四个区域查询表单区目的地、出行日期、出行目的。天气展示区当前天气、温度、湿度、风力、未来三天预报。AI 建议区穿衣、交通、防护三个建议卡片。历史记录区近期生成记录列表。AI 建议区单独用橙色或蓝色背景做视觉区分让用户一眼看出“这是一个智能生成的结果”。这个设计细节可以截图写进论文。7.3 Ajax 异步提交建议用 Ajax 异步提交表单局部刷新结果不刷新整页。form idtripForm input typetext iddestination placeholder请输入目的地 / input typedate idtripDate / select idtripPurpose option valuetour旅游/option option valuecommute通勤/option option valuebusiness出差/option /select button typebutton onclickgenerateAdvice()生成出行建议/button /form div idresult/div script function generateAdvice() { const data { destination: document.getElementById(destination).value, tripDate: document.getElementById(tripDate).value, tripPurpose: document.getElementById(tripPurpose).value }; fetch(/trip/generate, { method: POST, headers: {Content-Type: application/json}, body: JSON.stringify(data) }) .then(res res.json()) .then(res { document.getElementById(result).innerHTML div classadvice-card res.data /div; }) .catch(() { document.getElementById(result).innerHTML div classalert alert-warning生成失败请稍后重试/div; }); } /scriptAjax 请求返回 JSON 还是 HTML看项目情况。如果返回 JSON前端用innerHTML拼接如果返回 HTML 片段直接用 jQuery 的load方法。建议返回 JSON结构更清晰。7.4 ECharts 天气趋势图天气趋势图是页面加分项用 ECharts 展示未来三天温度曲线。后端返回一个温度数组前端拉取数据后交给 ECharts 渲染。div idtempChart stylewidth: 600px; height: 300px;/div script srchttps://cdn.jsdelivr.net/npm/echarts5/dist/echarts.min.js/script script function renderTempChart(highTemps, lowTemps, days) { const chart echarts.init(document.getElementById(tempChart)); chart.setOption({ xAxis: {type: category, data: days}, yAxis: {type: value}, series: [ {name: 最高温, type: line, data: highTemps}, {name: 最低温, type: line, data: lowTemps} ] }); } /script8. 本地部署与运行验证8.1 环境准备需要准备的环境如下JDK 8 及以上。Maven 3.6 及以上。MySQL 5.7 或 8.0提前建好数据库。IDEA 或 Eclipse推荐使用 IDEA。第三方平台账号申请大模型 API Key 和天气 API Key。8.2 启动步骤# 1. 建库进入 MySQL 执行 CREATE DATABASE weather_trip DEFAULT CHARACTER SET utf8mb4; # 2. 修改 application.yml 中的数据库账号密码 # 3. 修改 ai.api-key、weather.api-key 为真实密钥 # 4. 启动项目 mvn spring-boot:run启动顺利的话浏览器访问http://localhost:8080看到首页即代表部署成功。如果只想用 IDEA 启动导入项目后运行主启动类即可。8.3 功能验证清单验证点操作预期结果注册登录注册新用户退出后重新登录登录成功页面显示用户名天气查询输入“北京”展示北京天气数据和温度曲线AI 建议生成输入目的地、日期、目的展示 AI 生成的穿衣、交通、防护建议历史记录查看个人中心显示之前生成的所有记录收藏功能收藏一条记录后再取消收藏收藏状态正常切换异常降级断开网络或停掉大模型 Key 后发起请求页面提示服务暂不可用不崩溃截图建议按这个清单逐条做论文的功能测试章节直接有素材。8.4 演示流程演示时不要只点按钮。推荐流程先演示普通天气查询证明系统数据来源可靠。再演示 AI 建议生成重点说 prompt 是怎么设计的。翻到历史记录展示每次生成都被保存。如果现场网络条件允许可以展示连续两次相同参数请求输出建议“文字略有不同”这正好解释temperature参数的作用。9. 常见问题与排查方法毕设开发阶段最容易踩的问题集中列在下面问题现象可能原因排查方式解决方案项目启动失败提示端口占用8080 被其他工具占用查看占用端口的进程在 application.yml 中修改server.port数据库连接失败数据库没启动、账号密码不对查看启动日志中的异常信息检查 MySQL 服务、核对连接配置依赖下载失败Maven 仓库源不稳定查看下载日志配置阿里云 maven 镜像Thymeleaf 页面报模板错误模板路径或语法有误检查控制台模板解析异常核对 templates 目录结构和标签闭合天气接口返回 nullKey 错误或城市名不支持先用浏览器直接请求天气接口确认文档参数增加城市编码转换AI 接口超时网络慢或模型响应慢观察请求耗时、服务端日志延长超时时间增加缓存和降级AI 返回内容为空大模型接口返回格式解析失败打印原始响应 JSON参考文档调整 JSON 解析路径页面样式错乱静态资源路径错误打开浏览器控制台查看 404改用 Thymeleaf 的th:href{/css/style.css}历史记录查不到数据用户登录态丢失查看 Session 是否一致检查拦截器放行的路径配置10. 论文写作与答辩注意事项10.1 LW 写作重点论文的目录结构建议按学校模板来具体内容分配可以参考绪论写课题背景、国内外研究现状、研究意义。相关技术介绍Spring Boot、Thymeleaf、MySQL、大模型 API。这一章不要太长重点是让评委知道你会什么。需求分析从天气查询、出行建议、历史记录、收藏管理四个角色需求展开。系统设计架构设计、模块设计、数据库设计、接口设计。数据库表 SQL 要完整。系统实现分模块贴核心代码配页面截图。AI 接入和提示词工程是重点。系统测试功能测试加用例表。总结与展望写成功做了什么之后还能加什么。一个容易拿高分的做法是在论文里不要只写“调用大模型”要把“为什么选择 HTTP 接口而不是 SDK”“为什么用三段式 Prompt”“怎么做超时降级”讲清楚。这些细节说明你真的做过而不是拼接代码。10.2 PPT 制作思路PPT 控制在 10-15 页第 1 页题目和个人信息。第 2 页系统功能结构图。第 3 页技术栈架构图。第 4 页核心业务流程图。第 5-8 页系统截图每个模块一到两张。第 9 页AI 接入逻辑和 Prompt 设计。第 10 页测试结果和效果分析。第 11 页总结与展望。PPT 上不要堆大段文字截图比文字有效。AI 部分的实现逻辑建议单独画一张流程图。10.3 答辩高频问题准备为什么要选 Spring Boot 和 Thymeleaf大模型 API 调用失败时系统怎么处理天气数据多久更新一次这个系统和其他天气 App 有什么不同提示词是怎么设计的数据库几张表之间是什么关系Session 保存的是什么用户退出后 Session 怎么清理这些问题都能从文章中直接找到答案。建议提前把答辩稿写成“问题 回答”的形式多演练两遍。11. 总结与建议这套系统的价值在于它把一个传统的“天气查询网站”升级成了一个带 AI 决策能力的出行服务平台技术栈覆盖面广、业务逻辑清晰、AI 集成有实际功能非常适合作为计算机毕业设计。最值得优先完成的功能是“天气查询 AI 建议生成”这条主链路先把数据打通再补页面和历史记录。容易踩的坑有三个第一个是第三方接口 Key 申请和参数调整一定要提前一天申请第二个是 AI 返回格式不稳定建议在服务层做 JSON 解析前的日志打印第三个是页面静态资源 404部署后优先检查浏览器控制台。先把这三点处理好整个项目进度会顺很多。这里也提醒一句毕业设计选题允许参考开源项目和技术文章但核心代码一定要自己理解、能跑通、能讲清原理不可直接提交他人源码当作自己的成果。系统用到的天气数据和 AI 接口要遵守各平台的用户协议只用于学习和课程实践不要用作商业用途。API Key 注意保密不要上传到公开代码仓库。后续想继续扩展可以加 Redis 缓存天气数据、引入定时任务每天自动推送天气与出行建议、接入地图服务生成路线规划也可以把登录升级为 Spring Security JWT。把这些方向写进论文的展望部分就是一个完整的项目闭环。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →