diff --git a/apps/desktop/src/pages/tools/OmniHumanDetectionTool.tsx b/apps/desktop/src/pages/tools/OmniHumanDetectionTool.tsx index 78a3ec3..e6be351 100644 --- a/apps/desktop/src/pages/tools/OmniHumanDetectionTool.tsx +++ b/apps/desktop/src/pages/tools/OmniHumanDetectionTool.tsx @@ -12,12 +12,14 @@ import { import { open } from '@tauri-apps/plugin-dialog'; import { useNotifications } from '../../components/NotificationSystem'; import videoGenerationService from '../../services/videoGenerationService'; +import fileUploadService from '../../services/fileUploadService'; import { RealmanAvatarPictureCreateRoleOmniResponse } from '../../types/videoGeneration'; const OmniHumanDetectionTool: React.FC = () => { const [selectedImage, setSelectedImage] = useState(''); const [imagePreview, setImagePreview] = useState(''); const [isProcessing, setIsProcessing] = useState(false); + const [uploadProgress, setUploadProgress] = useState(0); const [result, setResult] = useState(null); const [errorMessage, setErrorMessage] = useState(''); @@ -63,16 +65,31 @@ const OmniHumanDetectionTool: React.FC = () => { setIsProcessing(true); setErrorMessage(''); setResult(null); + setUploadProgress(0); try { - // 这里需要先上传图片到云端获取URL - // 为了演示,我们假设图片已经上传到云端 - const imageUrl = selectedImage; // 实际应用中需要上传到云端 + // 1. 先上传图片到云端 + setUploadProgress(10); + const uploadResult = await fileUploadService.uploadFileToCloud( + selectedImage, + undefined, + (progress) => { + setUploadProgress(10 + progress * 0.6); // 上传占 60% 进度 + } + ); - const response = await videoGenerationService.realmanAvatarPictureCreateRoleOmniSubmitTask(imageUrl); - + if (uploadResult.status !== 'success' || !uploadResult.url) { + throw new Error(uploadResult.error || '图片上传失败'); + } + + setUploadProgress(70); + + // 2. 使用云端 URL 调用识别 API + const response = await videoGenerationService.realmanAvatarPictureCreateRoleOmniSubmitTask(uploadResult.url); + + setUploadProgress(100); setResult(response); - + if (response.code === 10000) { success('主体识别任务提交成功'); } else { @@ -178,7 +195,7 @@ const OmniHumanDetectionTool: React.FC = () => { ) : ( )} - {isProcessing ? '识别中...' : '开始识别'} + {isProcessing ? `处理中... ${uploadProgress}%` : '开始识别'}