山东大学创新实训——诈骗克星博客四
一、文件上传功能完善
文件上传是检测页面的核心功能,用户需要能够便捷地选择并上传音视频文件。
音频上传使用小程序的 `chooseMessageFile` API,支持从微信聊天记录中直接选取音频文件。选取后显示文件名、文件大小等基本信息,并提供移除功能。代码中实现了严格的格式校验,仅允许上传 MP3、WAV、M4A、AAC、OGG 等常见音频格式,不符合格式的文件会即时提示用户。上传前还会检查文件大小,确保不超过 10MB 的限制。
视频上传使用 `chooseVideo` API,支持从相册选择或直接拍摄。视频格式限制为 MP4、MOV、AVI、MKV,大小限制 50MB,时长至少 1 秒。选取后会在页面内嵌播放器预览,用户可以确认视频内容后再提交检测。
上传进度反馈通过模拟进度动画提升体验。检测过程中,进度条会从 0% 逐步增长到 90%,待后端返回结果后立即跳转到 100%。这种方式让用户感知到上传正在进行,避免因等待时间不确定而产生焦虑。

二、对话交互优化
模拟诈骗页面的对话体验直接影响用户的学习效果,我进行了多项优化。
消息气泡设计采用左右分布,AI 消息显示在左侧,附带红色头像标识;用户消息显示在右侧,背景色区分明显。消息气泡采用圆角设计,阅读体验更友好。
快捷回复功能是提升交互效率的关键。后端每次回复会附带几个推荐回复选项,用户无需手动打字,点击即可发送。快捷回复以标签形式展示在输入框上方,视觉上清晰易操作。
输入框优化包括:键盘回车直接发送、输入框自动聚焦、页面加载时延迟聚焦等待渲染完成、发送后自动清空输入框内容等细节处理。
消息滚动采用 `scroll-view` 组件实现,每次新消息追加后自动滚动到底部。滚动操作设置 100ms 延迟,确保消息已经渲染完成。
三、流式输出实现
大模型生成回复需要一定时间,实现流式输出(打字机效果)能显著提升用户体验。
打字机效果的核心是逐字显示内容。每次只显示到当前索引位置的文字,用户能看到 AI "正在输入"的过程。打字速度经过调优:汉字 50ms、英文和符号 25ms、标点符号 150ms,使得阅读节奏自然流畅。
流式状态管理通过 `isStreaming` 和 `streamingMessageId` 两个状态变量控制。当用户快速切换页面或发送新消息时,旧的消息流式输出会被中断,直接显示已获取的部分内容,避免显示错乱。
中断处理在 `onHide` 和 `onUnload` 生命周期中调用 `stopStreaming`,确保页面切换时清理定时器,避免内存泄漏。
四、错误处理与用户体验
完善的错误处理是保证用户体验的基础。
全局错误处理在 `app.js` 中封装了多种错误提示方法:`showNetworkError` 用于网络连接失败、`showServiceUnavailable` 用于服务器维护、`showPermissionDenied` 用于权限不足、`confirmAction` 用于需要用户确认的危险操作
操作取消处理针对用户主动取消选择文件、取消支付等操作,不显示错误提示,只记录日志。这种设计避免了"用户取消后反而弹出错误提示"的尴尬体验。
接口降级策略每个接口调用都使用 try/catch 包裹,失败时自动使用本地 Mock 数据兜底。这种设计使得前端开发可以在后端接口未就绪时正常开发和演示,不影响进度。
用户引导通过提示文案引导用户操作,例如"点击上传可疑音频"、"支持 MP3、WAV 格式,最大 10MB"等,让用户明确知道可以做什么、应该怎么做。
// 显示警告提示
showWarning(title) {
wx.showToast({
title,
icon: 'none',
duration: 2500,
});
},
// 显示网络错误提示
showNetworkError() {
wx.showModal({
title: '网络错误',
content: '网络连接失败,请检查网络设置后重试',
confirmText: '重试',
cancelText: '取消',
});
},
// 显示服务不可用提示
showServiceUnavailable() {
wx.showModal({
title: '服务暂不可用',
content: '服务器正在维护中,请稍后再试',
confirmText: '知道了',
showCancel: false,
});
},
// 显示登录提示
showLoginTip() {
wx.showModal({
title: '提示',
content: '请先登录后再进行操作',
confirmText: '去登录',
cancelText: '取消',
success: (res) => {
if (res.confirm) {
wx.navigateTo({
url: '/pages/login/login',
});
}
},
});
},
五、总结
本文完成了文件上传、对话交互、流式输出和错误处理四个方面的优化。这些细节看似微小,却是影响用户体验的关键因素。通过完善的格式校验,用户不会上传无效文件;通过流式输出,用户感知到 AI 的实时响应;通过 Mock 数据兜底,开发流程不依赖后端进度;通过统一的错误处理,用户在任何异常情况下都能得到友好的提示。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)