diff --git a/apps/desktop/src/components/OutfitImageGenerationModal.tsx b/apps/desktop/src/components/OutfitImageGenerationModal.tsx index e470f2f..38712ce 100644 --- a/apps/desktop/src/components/OutfitImageGenerationModal.tsx +++ b/apps/desktop/src/components/OutfitImageGenerationModal.tsx @@ -2,20 +2,15 @@ import React, { useEffect } from 'react'; import { createPortal } from 'react-dom'; import { X, Sparkles } from 'lucide-react'; import { Model } from '../types/model'; -import { OutfitImageRecord, OutfitImageGenerationRequest } from '../types/outfitImage'; +import { OutfitImageGenerationRequest } from '../types/outfitImage'; import { OutfitImageGenerator } from './OutfitImageGenerator'; -import { OutfitImageGallery } from './OutfitImageGallery'; interface OutfitImageGenerationModalProps { isOpen: boolean; onClose: () => void; model: Model; - outfitRecords: OutfitImageRecord[]; onGenerate: (request: OutfitImageGenerationRequest) => Promise; - onDeleteRecord: (record: OutfitImageRecord) => Promise; - onRefreshRecords: () => Promise; isGenerating?: boolean; - recordsLoading?: boolean; } /** @@ -26,12 +21,8 @@ export const OutfitImageGenerationModal: React.FC { // 键盘事件处理 useEffect(() => { @@ -93,50 +84,18 @@ export const OutfitImageGenerationModal: React.FC -
+
{/* 穿搭图片生成器 */} -
- -
- - {/* 穿搭图片生成记录 */} -
- -
+
- {/* 底部操作栏(可选) */} -
-
- 共 {outfitRecords.length} 条生成记录 -
- -
- - -
-
+ , modalRoot diff --git a/apps/desktop/src/components/OutfitImageGenerator.tsx b/apps/desktop/src/components/OutfitImageGenerator.tsx index 760614c..2dc9923 100644 --- a/apps/desktop/src/components/OutfitImageGenerator.tsx +++ b/apps/desktop/src/components/OutfitImageGenerator.tsx @@ -7,8 +7,7 @@ import { AlertCircle, Image as ImageIcon, Wand2, - Settings, - Plus + Settings } from 'lucide-react'; import { ModelPhoto, PhotoType } from '../types/model'; import { OutfitImageGenerationRequest } from '../types/outfitImage'; @@ -38,7 +37,6 @@ export const OutfitImageGenerator: React.FC = ({ const [selectedModelImageId, setSelectedModelImageId] = useState(''); const [productImages, setProductImages] = useState([]); const [generationPrompt, setGenerationPrompt] = useState(''); - const [stylePreferences, setStylePreferences] = useState([]); const [error, setError] = useState(null); const [dragOver, setDragOver] = useState(false); @@ -125,17 +123,7 @@ export const OutfitImageGenerator: React.FC = ({ setProductImages(prev => prev.filter((_, i) => i !== index)); }, []); - // 添加风格偏好 - const addStylePreference = useCallback((style: string) => { - if (style.trim() && !stylePreferences.includes(style.trim())) { - setStylePreferences(prev => [...prev, style.trim()]); - } - }, [stylePreferences]); - // 移除风格偏好 - const removeStylePreference = useCallback((index: number) => { - setStylePreferences(prev => prev.filter((_, i) => i !== index)); - }, []); // 处理生成请求 const handleGenerate = useCallback(async () => { @@ -157,21 +145,20 @@ export const OutfitImageGenerator: React.FC = ({ model_image_id: selectedModelImageId, product_image_paths: productImages, generation_prompt: generationPrompt || undefined, - style_preferences: stylePreferences.length > 0 ? stylePreferences : undefined + style_preferences: undefined }; await onGenerate(request); - + // 生成成功后清空表单 setSelectedModelImageId(''); setProductImages([]); setGenerationPrompt(''); - setStylePreferences([]); } catch (error) { console.error('生成穿搭图片失败:', error); setError(`生成穿搭图片失败: ${error}`); } - }, [modelId, selectedModelImageId, productImages, generationPrompt, stylePreferences, onGenerate]); + }, [modelId, selectedModelImageId, productImages, generationPrompt, onGenerate]); const canGenerate = selectedModelImageId && productImages.length > 0 && !isGenerating && !disabled; @@ -323,43 +310,7 @@ export const OutfitImageGenerator: React.FC = ({ /> - {/* 风格偏好 */} -
- -
- {stylePreferences.map((style, index) => ( - - {style} - - - ))} -
- -
- {['时尚', '休闲', '商务', '运动', '甜美', '酷炫'].map((style) => ( - - ))} -
-
+ {/* 错误提示 */} @@ -410,7 +361,7 @@ export const OutfitImageGenerator: React.FC = ({
  • • 选择一张模特的个人形象照片作为基础
  • • 上传要搭配的商品图片(服装、配饰等)
  • -
  • • 可选择添加生成提示词和风格偏好
  • +
  • • 可选择添加生成提示词来指导AI生成
  • • 点击生成按钮,AI将为您创建穿搭效果图
  • • 生成的图片数量与上传的商品图片数量相等
diff --git a/apps/desktop/src/pages/ModelDetail.tsx b/apps/desktop/src/pages/ModelDetail.tsx index 89dbc76..6c295df 100644 --- a/apps/desktop/src/pages/ModelDetail.tsx +++ b/apps/desktop/src/pages/ModelDetail.tsx @@ -44,7 +44,7 @@ const ModelDetail: React.FC = () => { const [dashboardStats, setDashboardStats] = useState(null); const [statsLoading, setStatsLoading] = useState(false); const [outfitRecords, setOutfitRecords] = useState([]); - const [outfitRecordsLoading, setOutfitRecordsLoading] = useState(false); + const [generatingOutfit, setGeneratingOutfit] = useState(false); const [activeTab, setActiveTab] = useState('overview'); const [dynamics] = useState([]); @@ -169,13 +169,10 @@ const ModelDetail: React.FC = () => { if (!id) return; try { - setOutfitRecordsLoading(true); const records = await OutfitImageService.getOutfitImageRecords(id); setOutfitRecords(records); } catch (err) { console.error('加载穿搭图片记录失败:', err); - } finally { - setOutfitRecordsLoading(false); } }; @@ -196,19 +193,7 @@ const ModelDetail: React.FC = () => { } }; - // 删除穿搭图片记录 - const handleDeleteOutfitRecord = async (record: OutfitImageRecord) => { - try { - await OutfitImageService.deleteOutfitImageRecord(record.id); - // 重新加载记录和统计信息 - await loadOutfitRecords(); - await loadDashboardStats(); - } catch (err) { - console.error('删除穿搭图片记录失败:', err); - setError(err as string); - } - }; // 上传照片 const handleUploadPhotos = async () => { @@ -563,12 +548,8 @@ const ModelDetail: React.FC = () => { isOpen={showOutfitModal} onClose={() => setShowOutfitModal(false)} model={model} - outfitRecords={outfitRecords} onGenerate={handleGenerateOutfitImages} - onDeleteRecord={handleDeleteOutfitRecord} - onRefreshRecords={loadOutfitRecords} isGenerating={generatingOutfit} - recordsLoading={outfitRecordsLoading} /> )}