diff --git a/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs b/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs
index 8fb2025..4da2916 100644
--- a/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs
+++ b/apps/desktop/src-tauri/src/presentation/commands/outfit_search_commands.rs
@@ -594,14 +594,7 @@ fn convert_vertex_response_to_search_results(
// 应用相关性阈值过滤
let threshold = request.config.relevance_threshold.to_value();
- if search_result.relevance_score >= threshold {
- results.push(search_result);
- } else {
- eprintln!(
- "结果被过滤: 评分 {:.2} < 阈值 {:.2}",
- search_result.relevance_score, threshold
- );
- }
+ results.push(search_result);
} else {
eprintln!("解析搜索结果失败");
}
@@ -752,11 +745,26 @@ fn parse_vertex_product_info(value: &serde_json::Value) -> Result = styles_array.iter()
+ .filter_map(|v| v.as_str())
+ .map(|s| s.to_string())
+ .collect();
+ if !styles.is_empty() {
+ styles.join("、")
+ } else {
+ "时尚单品".to_string()
+ }
+ } else {
+ "时尚单品".to_string()
+ }
+ } else {
+ "时尚单品".to_string()
+ };
let color_pattern = value
.get("color_pattern")
diff --git a/apps/desktop/src/components/similarity/SimilaritySearchCard.tsx b/apps/desktop/src/components/similarity/SimilaritySearchCard.tsx
index 1e418d8..29c13d8 100644
--- a/apps/desktop/src/components/similarity/SimilaritySearchCard.tsx
+++ b/apps/desktop/src/components/similarity/SimilaritySearchCard.tsx
@@ -15,6 +15,7 @@ import SimilaritySearchService from '../../services/similaritySearchService';
export const SimilaritySearchCard: React.FC = ({
result,
onSelect,
+ onExternalLinkClick,
showScore = true,
compact = false,
}) => {
@@ -22,7 +23,13 @@ export const SimilaritySearchCard: React.FC = ({
const [imageError, setImageError] = useState(false);
// 处理卡片点击
- const handleCardClick = useCallback(() => {
+ const handleCardClick = useCallback((e: React.MouseEvent) => {
+ // 如果点击的是按钮或其子元素,不触发卡片选择
+ const target = e.target as HTMLElement;
+ if (target.closest('button')) {
+ return;
+ }
+
if (onSelect) {
onSelect(result);
}
@@ -30,11 +37,16 @@ export const SimilaritySearchCard: React.FC = ({
// 处理外部链接点击
const handleExternalClick = useCallback((e: React.MouseEvent) => {
+ e.preventDefault();
e.stopPropagation();
if (result.image_url) {
- window.open(result.image_url, '_blank', 'noopener,noreferrer');
+ if (onExternalLinkClick) {
+ onExternalLinkClick(result.image_url);
+ } else {
+ window.open(result.image_url, '_blank', 'noopener,noreferrer');
+ }
}
- }, [result.image_url]);
+ }, [result.image_url, onExternalLinkClick]);
// 处理图片加载
const handleImageLoad = useCallback(() => {
diff --git a/apps/desktop/src/components/similarity/SimilaritySearchResults.tsx b/apps/desktop/src/components/similarity/SimilaritySearchResults.tsx
index d7e9b8d..6cda394 100644
--- a/apps/desktop/src/components/similarity/SimilaritySearchResults.tsx
+++ b/apps/desktop/src/components/similarity/SimilaritySearchResults.tsx
@@ -26,6 +26,7 @@ export const SimilaritySearchResults: React.FC = (
onPageChange,
onPageSizeChange,
onResultSelect,
+ onExternalLinkClick,
}) => {
// 计算分页信息
const totalPages = SimilaritySearchService.getTotalPages(totalResults, maxResultsPerPage);
@@ -164,21 +165,17 @@ export const SimilaritySearchResults: React.FC = (
-
-
-
- 按相关性排序
-
{/* 结果网格 */}
-
+
{results.map((result, index) => (
@@ -197,7 +194,7 @@ export const SimilaritySearchResults: React.FC
= (
{onPageSizeChange && (
-
每页显示:
+
每页