综合实践
| 这个项目属于哪个课程 | 2025综合设计——多源异构数据采集与融合应用综合实践 |
|---|---|
| 组名、项目简介 | 组名: 项目需求:随着个性化旅游需求的爆发式增长,传统碎片化的信息获取与行程管理方式已无法满足用户对效率与深度的双重追求。同时,旅行结束后的数据资产(如足迹、消费、情感记忆)往往散落在不同平台,缺乏系统的沉淀与分析。 项目目标:构建一个集智能规划、实时地图联动、全生命周期旅行记录与多维数据洞察于一体的 Web 应用平台。 项目开展技术路线: 数据采集层:高德地图API实时地理数据获取 + 旅游信息采集 + AI清洗去重 数据存储层:SQLite/PostgreSQL关系型数据库 + Redis缓存机制 + 结构化行程数据建模 后端逻辑层:Python FastAPI异步框架 + 阿里云Qwen大模型Agent + Pydantic数据验证 算法层:高德地图多模式路线规划API + 旅行人格DNA量化算法 + 经济学模型分析 前端交互层:React 18数据流UI + 高德地图交互式组件 + 生态流光可视化仪表盘 |
| 团队成员学号 | 102302132(组长),102302133,102302134,102302135,102302137,102302145,102302107 |
| 这个项目目标 | 本项目旨在打造一款全生命周期的智能旅行助手,实现以下目标: 1. 智能规划:利用 LLM 实现“一句话生成可执行路书”。 2. 地图联动:实现对话与地图的实时双向交互,所见即所得。 3. 资产沉淀:提供完善的旅行记录功能,覆盖从计划到完成的全过程。 4. 深度分析:通过可视化数据看板,为用户提供上帝视角的旅行行为分析报告。 |
本人在项目中承担的前后端工作内容,这里重点展示Vue3 组合式 API 的实际使用方式、Vite 工程化配置,以及前后端协作的关键实现
一、使用 Vite 搭建前端工程
1.1 项目初始化
npm create vite@latest
cd project
npm install
npm run dev
Vite 提供了:
- 原生 ES Module 加载
- 极快的冷启动
- 高效热更新
1.2 Vite 配置示例
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],server: {port: 5173,proxy: {'/api': {target: 'http://localhost:8000',changeOrigin: true}}}
})
体现前后端协作:
- 前端通过
/api访问后端 - 避免本地开发时的跨域问题
- 前端无需关心后端真实地址
二、Vue3 组合式 API:页面状态与逻辑组织方式
2.1 使用 setup + ref + reactive 组织页面状态
<script setup>
import { ref, reactive, computed } from 'vue'const inputMessage = ref('')
const isLoading = ref(false)const chatList = reactive([])const canSend = computed(() => {return inputMessage.value.trim().length > 0 && !isLoading.value
})
</script>
- 使用
ref管理基础状态 - 使用
reactive管理集合数据 - 使用
computed派生状态,避免模板中写逻辑
2.2 组合式 API 中的事件逻辑封装
<script setup>
import axios from 'axios'const sendMessage = async () => {if (!canSend.value) returnchatList.push({role: 'user',content: inputMessage.value})isLoading.value = truetry {const res = await axios.post('/api/chat', {message: inputMessage.value})chatList.push({role: 'assistant',content: res.data.reply})} finally {isLoading.value = falseinputMessage.value = ''}
}
</script>
- 前端负责请求组织
- 根据返回结构渲染 UI
对应运行截图

三、组合式 API 中的生命周期管理
3.1 使用 onMounted 初始化复杂功能
<script setup>
import { onMounted } from 'vue'
import mapService from '@/services/mapService'onMounted(async () => {const location = await mapService.getCurrentLocation()mapService.initMap('map-container', location)
})
</script>
关键点:
- 地图初始化放在生命周期中
- 避免 DOM 未就绪导致错误
四、地图模块:SDK 调用 + 业务封装
4.1 页面中只做“调用”
<script setup>
import mapService from '@/services/mapService'const addMarker = (point) => {mapService.addMarker(point)
}
</script>
页面完全不知道:
- 如何计算距离
- 如何兜底定位
- 如何处理异常
4.2 地图业务服务层
class MapService {map = nullmarkers = []initMap(containerId, center) {this.map = new AMap.Map(containerId, {zoom: 12,center: [center.lng, center.lat]})}addMarker({ lng, lat }) {const marker = new AMap.Marker({position: [lng, lat],map: this.map})this.markers.push(marker)}calculateDistance(lng1, lat1, lng2, lat2) {const R = 6371const dLat = (lat2 - lat1) * Math.PI / 180const dLon = (lng2 - lng1) * Math.PI / 180const a =Math.sin(dLat / 2) ** 2 +Math.cos(lat1 * Math.PI / 180) *Math.cos(lat2 * Math.PI / 180) *Math.sin(dLon / 2) ** 2return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))}async getCurrentLocation() {return new Promise((resolve) => {navigator.geolocation.getCurrentPosition(pos => {resolve({lng: pos.coords.longitude,lat: pos.coords.latitude})},() => {resolve({ lng: 116.397428, lat: 39.90923 })})})}
}export default new MapService()
对应运行截图
地图搜索功能

路线规划展示

五、本地状态管理:
5.1 数据结构设计
class TravelStore {data = {searchHistory: [],travelStats: {generated: 0,cities: []}}save() {localStorage.setItem('travel_data', JSON.stringify(this.data))}load() {const raw = localStorage.getItem('travel_data')if (raw) this.data = JSON.parse(raw)}
}
5.2 搜索历史管理
addSearch(query) {this.data.searchHistory.unshift({query,time: Date.now()})if (this.data.searchHistory.length > 10) {this.data.searchHistory.length = 10}this.save()
}
5.3 统计数据更新
addPlan(city) {this.data.travelStats.generated += 1if (!this.data.travelStats.cities.includes(city)) {this.data.travelStats.cities.push(city)}this.save()
}
对应运行截图
旅行数据统计

六、前后端协作能力
6.1 前端接口调用统一规范
export const chatAPI = (message) => {return axios.post('/api/chat', { message })
}
页面中:
const res = await chatAPI(inputMessage.value)
- 前端不直接散落 axios
- 接口层统一,方便后期修改
6.2 接口结果只做“消费”,不做业务判断
chatList.push({role: 'assistant',content: res.data.reply
})
前端不关心:
- AI 如何生成
- 后端如何处理
七、总结
通过本项目的开发,我在以下方面获得了明确提升:
- 熟练使用Vue3 组合式 API 组织复杂页面逻辑
- 掌握 Vite 工程化配置与开发流程
- 学会通过接口约定与模块封装提升前后端协作效率
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1098165.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
2025专科生必看!9大AI论文平台测评,写毕业论文还能这么快?
2025专科生必看!9大AI论文平台测评,写毕业论文还能这么快?
2025年专科生论文写作新选择:AI平台测评全面解析
随着人工智能技术的不断进步,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面对市场上…
AI率怎么都降不下去?前五降AI工具真实体验
又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI
官网&…
靠谱的康有利到家理疗小程序公司
靠谱的康有利到家理疗小程序公司引言在互联网技术飞速发展的当下,到家理疗服务借助小程序平台得到了更广泛的推广与应用。康有利到家理疗小程序作为这一领域的新兴力量,其背后靠谱的开发与运营公司显得至关重要,而利民科技便是其中的佼佼者。…
【记录】2025 年终总结
恍惚而逝,不曾记得自己过过这一年。
线
一月
并没有什么明确的记忆。
好像是因为要学画画被拉进了同学建的一个群。
然而直到现在还没动笔。
那个月好像整了挺多 Trance demo 的,不过现在都被删除了。
二月
记忆更加…
Java毕设选题推荐:基于SpringBoot+Vue的具有推荐功能的二手交易基于SpringBoot+Vue的二手数码产品交易平台的开发与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
Java毕设选题推荐:基于SpringBoot社区住户信息管理系统基于web的社区居民信息管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
Alpine.js:轻量级JavaScript框架完全入门指南
Alpine.js:轻量级JavaScript框架完全入门指南 Alpine.js就像是你一直在寻找的那个工具——简单、强大、不出问题。今天我们来看看这个"小而美"的框架如何改变你的开发体验。 🌟 什么是Alpine.js?
Alpine.js是一个轻量级的JavaScript框架,它的设计哲学非常独特:…
网易云音乐ncm加密转mp3格式
背景
继QQ音乐加密格式转mp3后,前文:https://www.cnblogs.com/Comets9224/p/19423567
尝试对网易云的ncm格式进行转换。使用同样的,针对ncm格式,转换成mp3格式
问题介绍网易云音乐的加密不比qq音乐严格,不需要下载…
京东多智能体———多源异构数据采集与融合应用综合实践
这个项目属于哪个课程
2025数据采集与融合技术实践组名、项目简介组名:暴虎
项目简介:基于京东多智能体挑战赛(https://www.xir.cn/competitions/1141),依托 OxyGent 开源框架,构建多智能体系统,实现多模态数据…
MouseClick下载及使用教程:开源鼠标连点器神器:支持热键、自定义间隔、跨平台(windows)
MouseClick下载及使用教程:开源鼠标连点器神器:支持热键、自定义间隔、跨平台(windows) 在日常工作中,你是否遇到过需要重复点击鼠标的繁琐场景?比如批量处理文件、游戏刷怪、自动化测试等。今天给大家分享一款开源的鼠标连点器工具ÿ…
绵阳家长必看!2025年优质实验学校,高中/名办高中/实验中学/中学/高中复读学校/学校/实验学校实验学校哪家好 - 品牌推荐师
引言:在多元与质量中探寻教育最优解
随着教育改革的深化与家长教育观念的升级,选择一所契合孩子个性发展、又能提供坚实升学保障的高中,成为众多家庭的核心关切。实验学校,凭借其创新的办学理念、灵活的机制和多元…
【毕业设计】基于SpringBoot+Vue的二手数码产品交易平台的开发与实现(源码+文档+远程调试,全bao定制等)
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
前五降AI工具实测,好用的都在这里了
又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI
官网&…
计算机Java毕设实战-基于SpringBoot社区住户信息管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
【课程设计/毕业设计】基于web的社区居民信息管理系统基于SpringBoot社区住户信息管理系统【附源码、数据库、万字文档】
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
为什么说Agentic AI的社会价值是提示工程架构师的「职业护城河」?
从「工具驯化者」到「Agent设计师」:为什么Agentic AI的社会价值是提示工程架构师的「职业护城河」?
引言:当AI从「听话的工具」变成「会思考的伙伴」
早上8点,北京中关村的咖啡店里,产品经理小夏正对着电脑发愁——她要为新上线的环保APP写一篇面向Z世代的推广文案。放…
揭秘CopyOnWriteArraySet:读多写少的并发集合利器
文章目录什么是CopyOnWriteArraySet?核心原理深度剖析底层数据结构写时复制机制详解迭代器的弱一致性与其它容器的性能对比实际应用场景1. 配置信息管理2. 在线用户状态收集器3. 事件监听器管理实战案例:高并发在线用户监测局限性及注意事项总结参考文章…
医疗动态风险评估用GNN稳住预警
📝 博客主页:jaxzheng的CSDN主页 医疗数据科学:从数据洪流到精准决策的桥梁目录医疗数据科学:从数据洪流到精准决策的桥梁 引言:数据驱动的医疗革命 核心概念:医疗数据科学的三维支柱 面临的挑战࿱…