1.0.4
parent
52e5ea553a
commit
4df2f40e9c
|
|
@ -12,6 +12,7 @@ services:
|
|||
volumes:
|
||||
# 挂载日志目录到宿主机
|
||||
- ./logs:/app/logs
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
restart: unless-stopped
|
||||
container_name: imeeting-frontend
|
||||
extra_hosts:
|
||||
|
|
|
|||
|
|
@ -63,6 +63,12 @@ const Dashboard = ({ user, onLogout }) => {
|
|||
};
|
||||
console.log('💡 Cache debug commands available: window.meetingCache.stats(), window.meetingCache.clear(), window.meetingCache.info()');
|
||||
}
|
||||
|
||||
// 清理函数: 当组件卸载或用户切换时清空缓存
|
||||
return () => {
|
||||
console.log('Dashboard unmounting, clearing meeting cache');
|
||||
meetingCacheService.clearAll();
|
||||
};
|
||||
}, [user.user_id]);
|
||||
|
||||
// 当筛选条件变化时,重新加载第一页
|
||||
|
|
@ -97,8 +103,8 @@ const Dashboard = ({ user, onLogout }) => {
|
|||
|
||||
const fetchMeetings = async (page = 1, isLoadMore = false) => {
|
||||
try {
|
||||
// 生成当前过滤器的键
|
||||
const filterKey = meetingCacheService.generateFilterKey(filterType, searchQuery, selectedTags);
|
||||
// 生成当前过滤器的键(包含user_id)
|
||||
const filterKey = meetingCacheService.generateFilterKey(user.user_id, filterType, searchQuery, selectedTags);
|
||||
|
||||
// 如果不是加载更多,先检查是否有该过滤器的缓存
|
||||
if (!isLoadMore) {
|
||||
|
|
|
|||
|
|
@ -404,17 +404,18 @@ const MeetingDetails = ({ user }) => {
|
|||
},
|
||||
});
|
||||
|
||||
// 上传成功后,刷新整个会议详情数据
|
||||
await fetchMeetingDetails();
|
||||
|
||||
// 清理上传状态
|
||||
setAudioFile(null);
|
||||
setShowUploadConfirm(false);
|
||||
setShowAudioDropdown(false);
|
||||
showToast('音频上传成功,正在进行智能转录...', 'success');
|
||||
|
||||
// Reset file input
|
||||
const fileInput = document.getElementById('audio-file-upload');
|
||||
if (fileInput) fileInput.value = '';
|
||||
|
||||
// Refresh meeting details to get new audio and transcription status
|
||||
await fetchMeetingDetails();
|
||||
showToast('音频上传成功,正在进行智能转录...', 'success');
|
||||
|
||||
} catch (err) {
|
||||
console.error('Upload error:', err);
|
||||
|
|
@ -440,16 +441,36 @@ const MeetingDetails = ({ user }) => {
|
|||
// 调用后端API启动转录
|
||||
const response = await apiClient.post(buildApiUrl(`/api/meetings/${meeting_id}/transcription/start`));
|
||||
|
||||
if (response.data.task_id) {
|
||||
// response 是 {code, message, data},task_id 在 data 中
|
||||
if (response.data && response.data.task_id) {
|
||||
// 立即更新本地状态为新任务的pending状态
|
||||
const newStatus = {
|
||||
task_id: response.data.task_id,
|
||||
status: 'pending',
|
||||
progress: 0,
|
||||
meeting_id: parseInt(meeting_id)
|
||||
};
|
||||
setTranscriptionStatus(newStatus);
|
||||
setTranscriptionProgress(0);
|
||||
|
||||
// 清空现有的转录数据和会议摘要(因为后端已经删除了)
|
||||
setTranscript([]);
|
||||
setSpeakerList([]);
|
||||
setMeeting(prevMeeting => ({
|
||||
...prevMeeting,
|
||||
summary: null
|
||||
}));
|
||||
|
||||
showToast('智能转录已启动', 'success');
|
||||
setShowAudioDropdown(false);
|
||||
// 开始轮询转录状态
|
||||
startStatusPolling(response.data.task_id);
|
||||
} else {
|
||||
showToast('启动转录成功,但未获取到任务ID', 'warning');
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
console.error('Start transcription error:', err);
|
||||
showToast(err.response?.data?.message || '启动转录失败,请重试', 'error');
|
||||
showToast(err.response?.data?.message || err.message || '启动转录失败,请重试', 'error');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -13,14 +13,15 @@ class MeetingCacheService {
|
|||
|
||||
/**
|
||||
* 生成过滤器键(不包含页码)
|
||||
* @param {number} userId - 用户ID
|
||||
* @param {string} filterType - 过滤类型: 'all', 'created', 'attended'
|
||||
* @param {string} searchQuery - 搜索关键词
|
||||
* @param {Array<string>} selectedTags - 选中的标签列表
|
||||
* @returns {string} 过滤器键
|
||||
*/
|
||||
generateFilterKey(filterType, searchQuery = '', selectedTags = []) {
|
||||
generateFilterKey(userId, filterType, searchQuery = '', selectedTags = []) {
|
||||
const tagsStr = selectedTags.length > 0 ? selectedTags.sort().join(',') : '';
|
||||
return `${filterType}|${searchQuery}|${tagsStr}`;
|
||||
return `${userId}|${filterType}|${searchQuery}|${tagsStr}`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue