import assert from 'node:assert/strict'; import { readFile } from 'node:fs/promises'; import test from 'node:test'; const source = (path) => readFile(new URL(path, import.meta.url), 'utf8'); test('实时陪练通过受认证 SDP 代理接入,前端不携带供应商密钥', async () => { const [service, page, backendService] = await Promise.all([ source('../src/services/realtime-practice.ts'), source('../src/pages/user/practice/index.vue'), source('../../backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrRealtimePracticeService.java') ]); assert.match(service, /\/api\/train\/practice\/realtime\/sdp/); assert.match(service, /semantic_vad/); assert.match(service, /conversation\.item\.input_audio_transcription\.completed/); assert.match(service, /response\.audio_transcript\.done/); assert.match(service, /session\.created/); assert.match(service, /session\.updated/); assert.match(service, /activeAttempt/); assert.match(service, /resumeAudio/); assert.doesNotMatch(service, /DASHSCOPE_API_KEY|Authorization:\s*Bearer/); assert.match(backendService, /实时陪练限流暂时不可用/); assert.match(page, /实时陪练 Beta/); assert.match(page, /createRealtimePracticeController/); });