8882e24fd4
CI/CD Pipeline / Check if frontend-only change (push) Has been cancelled
CI/CD Pipeline / Validate - Code Quality (push) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (push) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / PR Build API Image (push) Has been cancelled
CI/CD Pipeline / PR Build Web Image (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
Squash merge of PR #968 ## 变更说明 DuplicationDetail 查重详情页三阶段重构,主文件 323→110 行(-66%) ### Phase 1: 常量/工具 - : RISK_DESC / RISK_TAG_VARIANT / RISK_LABEL / ToastState - : formatTime / formatSize / formatDuration / getRiskLevel ### Phase 2: UI 组件 - : 风险评估卡片(圆环 + 查重率 + 描述) - : 基本信息卡片(6 行元数据) - : 重复片段列表区域 - : 单个重复片段卡片 ### Phase 3: 业务 Hook - : 查询 + 重试 + Toast + 导航
36 lines
999 B
TypeScript
36 lines
999 B
TypeScript
import React from "react"
|
|
import { Tag } from "@/components/ui"
|
|
import type { DuplicateSegment } from "@/api/duplication"
|
|
import { SegmentCard } from "./SegmentCard"
|
|
|
|
interface SegmentsSectionProps {
|
|
segments?: DuplicateSegment[]
|
|
}
|
|
|
|
/**
|
|
* 重复片段列表区域
|
|
*/
|
|
export const SegmentsSection: React.FC<SegmentsSectionProps> = ({ segments = [] }) => (
|
|
<div className="dup-checks-section">
|
|
<h3>
|
|
🔍 重复片段详情
|
|
<Tag variant="primary" style={{ marginLeft: 8 }}>
|
|
{segments.length} 个片段
|
|
</Tag>
|
|
</h3>
|
|
|
|
{segments.length > 0 ? (
|
|
<div className="dup-checks-list">
|
|
{segments.map((segment, index) => (
|
|
<SegmentCard key={segment.id} segment={segment} index={index} />
|
|
))}
|
|
</div>
|
|
) : (
|
|
<div className="dup-results-empty" style={{ padding: "32px 0" }}>
|
|
<div className="dup-results-empty-icon">🎉</div>
|
|
<p>未发现重复片段,内容原创度很高</p>
|
|
</div>
|
|
)}
|
|
</div>
|
|
)
|