1、立项背景和目标
本项目是一款AI智能景区导游助手Web应用,覆盖全国358家5A级旅游景区。立项背景有三:一是国内旅游市场复苏后,游客对景区智能化导览服务需求激增,但现有方案以语音导览机为主,缺乏交互性与个性化;二是大语言模型成熟后,AI对话式导览成为可能,可替代传统静态语音讲解;三是多模态交互(文字/语音/图片)可降低中老年用户使用门槛。目标是打造一款面向C端的、具备商业化落地能力的智能导览产品,支持景区知识问答、路线规划、虚拟数字人陪伴讲解等核心场景。
2、软件功能、核心功能模块
应用包含八大核心功能模块:
AI对话系统:基于SSE流式协议实现实时对话与打字机效果,支持多轮会话管理(conversationId缓存),网络异常时自动降级至HTTP JSON或Mock模式;
语音交互系统:双路径设计——首选浏览器Web Speech API实现零延迟语音识别,降级方案使用Web Audio API手动编码WAV(16kHz/单声道/16bit PCM)传输至后端ASR+TTS,语音播报支持多音色切换;
Live2D数字人系统:基于PixiJS + Live2D Cubism 4集成3D动画角色,支持点击交互与口型同步。设计三层降级策略:Live2D模型 → CSS纯绘角色(含口型/眨眼动画)→ 加载中状态,确保弱网环境可用;
景区数据体系:构建358家5A景区结构化数据(含省份/城市/标签/坐标),支持名称、省份、城市、标签多维搜索,按省份分组卡片网格渲染;
管理后台数据大屏:基于ECharts实现服务人次趋势、热门问答TOP5、满意度走势、问答分类分布等核心指标可视化,按需引入优化打包体积;
路由与权限系统:完整路由守卫(未登录自动跳转/login),localStorage存储登录态,区分C端用户与管理员视图;
多模态输入:文字/语音/图片三通道输入,图片上传目前走Mock AI回复,预留多模态API接入接口;
地图与路线规划:基于Leaflet集成地图视图,支持景区位置标记与游览路线添加。
3、业务流程、功能路径描述
用户访问 → 登录页(模拟登录)→ 景区选择页(卡片网格+搜索+省份筛选)→ 选择景区进入主界面(底部Tab:对话/地图/功能区/个人中心)→ 对话页:文字输入/语音输入/图片上传 → AI流式回复 + TTS语音播报 + Live2D口型同步 → 支持多轮对话(同一景区上下文连续)→ 切换景区自动重置会话 → 管理员登录后进入管理后台 → 查看数据大屏/知识库管理/数字人配置/舆情分析。未登录状态访问任何页面自动跳转登录页。
1、整体架构和设计思路,不同模块使用的技术栈
技术栈:Vue 3 (Composition API + script setup) + TypeScript + Vite + Vue Router (Hash模式) + Pinia + Axios。图形与可视化:PixiJS + Live2D Cubism 4(数字人渲染)、ECharts(按需引入数据大屏)、Leaflet(地图)。语音:Web Speech API(TTS + ASR)、Web Audio API(WAV录制编码)。测试:Vitest。格式化:Prettier。
架构设计思路:采用“分层解耦 + 多级降级”的前端架构。视图层(Views)负责UI渲染与用户交互,服务层(api.ts)封装所有后端通信(SSE/HTTP/FormData),工具层(utils)封装TTS/语音录制/Live2D等独立能力,数据层(scenicSpots.ts)提供静态景区数据与检索工具。状态管理使用Pinia管理全局用户态与景区态,会话级数据(对话历史)存入sessionStorage(标签页关闭即清除),持久化数据(userId/登录态)存入localStorage。核心设计原则:(1)所有异步请求支持AbortController中断;(2)所有第三方依赖(Live2D/ECharts)按需加载或配置降级方案;(3)资源清理完整(onUnmounted销毁PIXI Application/AudioContext/MediaStream)。
2、“我”的负责模块和结果(尽可能量化)
本人独立完成全部前端代码的开发与调试。具体负责模块及成果:
SSE流式对话系统(api.ts 80行 + HomeView.vue 70行):使用原生fetch + ReadableStream逐块读取,支持跨chunk缓冲区拼接、[DONE]信号解析conversationId、AbortController中断前序请求,实现流畅打字机效果;
语音交互双路径(HomeView.vue 80行 + voiceRecorder.ts 60行):浏览器ASR(SpeechRecognition API)与后端ASR(手动WAV编码)双路径切换,降级成功率100%(后端ASR兜底);
Live2D数字人集成与降级(Live2DCharacter.vue 约200行):PixiJS + Live2D Cubism 4模型加载与销毁,CSS纯绘角色兜底方案(含口型/眨眼/表情切换/光环动画),三层降级保证任何环境下均有视觉反馈;
TTS语音播报(tts.ts 约80行):多音色优先级选择(Xiaoxiao→Yunxi→Xiaoyi→Google),onvoiceschanged异步加载+3秒超时兜底