From 4d0af7f3f42afbd59128abd5d8fa236bd4eb4321 Mon Sep 17 00:00:00 2001 From: long <452591453@qq.com> Date: Fri, 9 Oct 2026 16:10:59 +0800 Subject: [PATCH] feat: add scoped read-only audio preview and isolated Dify transport --- admin/src/api/followupAudio.ts | 5 + .../components/FollowupAudioPanel.vue | 57 +++-- .../components/followupAudioState.ts | 15 +- admin/tests/followup-audio.test.cjs | 217 ++++++++++++++++++ deployment/followup-audio-dify/.gitignore | 5 + deployment/followup-audio-dify/README.md | 34 +++ deployment/followup-audio-dify/ROLLBACK.sh | 36 +++ deployment/followup-audio-dify/bridge.py | 165 +++++++++++++ deployment/followup-audio-dify/compose.yaml | 41 ++++ .../followup-audio-dify/dify_operator.py | 119 ++++++++++ .../followup-audio-dify/host_operator.py | 27 +++ .../followup-audio-dify/public_probe.py | 42 ++++ deployment/followup-audio-dify/test_bridge.py | 56 +++++ deployment/followup-audio-runtime/README.md | 40 ++++ docs/plans/followup-audio-deployment.md | 6 + server/.env.followup-audio.example | 27 +++ .../adminapi/logic/tcm/FollowupAudioLogic.php | 18 +- server/app/command/FollowupAudioWork.php | 5 +- .../followupaudio/FollowupAudioAccess.php | 3 +- .../followupaudio/FollowupAudioApply.php | 3 + .../followupaudio/FollowupAudioDify.php | 3 +- .../followupaudio/FollowupAudioGate.php | 69 ++++++ .../followupaudio/FollowupAudioPipeline.php | 81 +++++-- .../FollowupAudioPipelineCheckpoint.php | 9 +- .../FollowupAudioProviderConfig.php | 61 ++++- .../followupaudio/FollowupAudioStore.php | 21 +- .../FollowupAudioStreamTransport.php | 139 +++++++++++ .../followupaudio/FollowupAudioWorker.php | 4 +- server/config/followup_audio.php | 10 + .../tests/FollowupAudioDifyPipelineTest.php | 90 ++++++++ .../FollowupAudioEndpointContractTest.php | 11 +- server/tests/FollowupAudioPreviewTest.php | 125 ++++++++++ .../FollowupAudioProviderIntegrationTest.php | 2 +- .../tests/FollowupAudioStereoDatabaseTest.php | 4 +- server/tests/FollowupAudioWorkerTest.php | 1 + .../followup_audio/dify_pipeline_router.php | 34 +++ 36 files changed, 1517 insertions(+), 68 deletions(-) create mode 100644 deployment/followup-audio-dify/.gitignore create mode 100644 deployment/followup-audio-dify/README.md create mode 100755 deployment/followup-audio-dify/ROLLBACK.sh create mode 100644 deployment/followup-audio-dify/bridge.py create mode 100644 deployment/followup-audio-dify/compose.yaml create mode 100644 deployment/followup-audio-dify/dify_operator.py create mode 100644 deployment/followup-audio-dify/host_operator.py create mode 100644 deployment/followup-audio-dify/public_probe.py create mode 100644 deployment/followup-audio-dify/test_bridge.py create mode 100644 deployment/followup-audio-runtime/README.md create mode 100644 server/app/common/service/followupaudio/FollowupAudioGate.php create mode 100644 server/app/common/service/followupaudio/FollowupAudioStreamTransport.php create mode 100644 server/tests/FollowupAudioDifyPipelineTest.php create mode 100644 server/tests/FollowupAudioPreviewTest.php create mode 100644 server/tests/fixtures/followup_audio/dify_pipeline_router.php diff --git a/admin/src/api/followupAudio.ts b/admin/src/api/followupAudio.ts index c81259762..9cfc481c8 100644 --- a/admin/src/api/followupAudio.ts +++ b/admin/src/api/followupAudio.ts @@ -23,6 +23,10 @@ export interface FollowupTranscriptSegment { export interface FollowupCapabilities { enabled: boolean audio_verified: boolean + preview_only?: boolean + preview_ready?: boolean + can_review?: boolean + test_scope_allowed?: boolean can_upload: boolean can_apply: boolean can_daily: boolean @@ -71,6 +75,7 @@ export interface FollowupTaskSummary { expires_at: number | string can_retry: boolean audio_available: boolean + preview_only?: boolean transcript_available?: boolean pipeline_progress?: { transcribed: number; total: number } } diff --git a/admin/src/views/tcm/diagnosis/components/FollowupAudioPanel.vue b/admin/src/views/tcm/diagnosis/components/FollowupAudioPanel.vue index 2b15ec70a..7c4db5163 100644 --- a/admin/src/views/tcm/diagnosis/components/FollowupAudioPanel.vue +++ b/admin/src/views/tcm/diagnosis/components/FollowupAudioPanel.vue @@ -1,5 +1,5 @@