diff --git a/backend/app/services/meeting_service.py b/backend/app/services/meeting_service.py index b6424f9..2a6f6ba 100644 --- a/backend/app/services/meeting_service.py +++ b/backend/app/services/meeting_service.py @@ -374,19 +374,16 @@ class MeetingService: async with httpx.AsyncClient(timeout=30.0) as client: # 1. Create Task try: - normalized_hotwords = [] + normalized_hotwords = {} if hotwords: for hw in hotwords: if isinstance(hw, dict): word = hw.get("word") weight = hw.get("weight") if word: - if weight and weight != 1: - normalized_hotwords.append(f"{word}:{weight}") - else: - normalized_hotwords.append(word) + normalized_hotwords[word] = int(weight) if weight is not None else 20 elif isinstance(hw, str): - normalized_hotwords.append(hw) + normalized_hotwords[hw] = 20 payload = { "file_path": audio_path, diff --git a/backend/storage/uploads/222/7b3e6720-3c1e-4670-91ab-2edf13c30738.webm b/backend/storage/uploads/222/7b3e6720-3c1e-4670-91ab-2edf13c30738.webm new file mode 100644 index 0000000..446447e Binary files /dev/null and b/backend/storage/uploads/222/7b3e6720-3c1e-4670-91ab-2edf13c30738.webm differ diff --git a/backend/storage/uploads/224/4b3fdaa0-edd6-40e0-8959-4681317aab9c.webm b/backend/storage/uploads/224/4b3fdaa0-edd6-40e0-8959-4681317aab9c.webm new file mode 100644 index 0000000..a8e93b8 Binary files /dev/null and b/backend/storage/uploads/224/4b3fdaa0-edd6-40e0-8959-4681317aab9c.webm differ diff --git a/backend/storage/uploads/temp/1abe0591-7049-41ed-a7f0-7f0ce426bce1.m4a b/backend/storage/uploads/temp/1abe0591-7049-41ed-a7f0-7f0ce426bce1.m4a new file mode 100644 index 0000000..e648bd6 Binary files /dev/null and b/backend/storage/uploads/temp/1abe0591-7049-41ed-a7f0-7f0ce426bce1.m4a differ diff --git a/frontend/src/pages/MeetingDetail.tsx b/frontend/src/pages/MeetingDetail.tsx index 2bc8924..34741f6 100644 --- a/frontend/src/pages/MeetingDetail.tsx +++ b/frontend/src/pages/MeetingDetail.tsx @@ -263,7 +263,7 @@ const MeetingDetail: React.FC = () => { let timer: any; // Auto-refresh if meeting is in progress (uploaded, transcribing, summarizing) if (meeting && ['uploaded', 'transcribing', 'summarizing'].includes(meeting.status)) { - const allowPolling = meeting.type !== 'live' && !isRecording; + const allowPolling = !isRecording; if (allowPolling) { timer = setInterval(() => { fetchDetail(true); @@ -585,6 +585,9 @@ const MeetingDetail: React.FC = () => { if (meeting.type === 'live') { Toast.success('录音结束,已保存'); + // Trigger status update immediately + setTimeout(() => fetchDetail(true), 1000); + // Upload full audio for backup/processing if needed try { await api.uploadAudioForMeeting(meeting.meeting_id, file);