From 1422c04b2c43cafdda3a896bc1e3224bb765fb34 Mon Sep 17 00:00:00 2001 From: yuzhiran Date: Sun, 5 Jul 2026 13:04:40 +0800 Subject: [PATCH] fix: sendAnswer await startInterview + stopRecord guard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sendAnswer: await startInterview() 后再发答案,避免面试还没创建 就把用户输入 '你好' 当成答案提交给空 interviewId - stopRecord: 加 !isRecording.value 守卫,防止 user touchend 在 uni.authorize success 回调之前触发 recorder.stop() 导致报错 --- zhiyin-app/src/pages/interview/interview.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zhiyin-app/src/pages/interview/interview.vue b/zhiyin-app/src/pages/interview/interview.vue index 915a933..7427d7d 100644 --- a/zhiyin-app/src/pages/interview/interview.vue +++ b/zhiyin-app/src/pages/interview/interview.vue @@ -301,9 +301,10 @@ const startInterview = async () => { const sendAnswer = async () => { if (!inputText.value.trim() || aiLoading.value || isComplete.value) return if (!token()) { checkLogin(); return } + // 确保面试已创建(startInterview 是 async,必须 await) if (!interviewId.value) { await startInterview() - if (!interviewId.value) return // creation failed, don't discard answer + if (!interviewId.value) return // 创建失败,不丢弃用户输入 } const answer = inputText.value.trim() @@ -412,6 +413,7 @@ function startRecord() { uni.showToast({ title: '录音初始化失败', icon: 'none' }) return } + // 确保在授权通过后才开始录音,避免 stopRecord 先于 startRecord 被调用 recorder.start({ format: 'wav', sampleRate: 16000, @@ -438,6 +440,7 @@ function startRecord() { } function stopRecord() { + if (!isRecording.value) return isRecording.value = false if (!recorder) return recorder.stop()