'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { ArrowLeft, Check, X, CheckSquare, Video, Clock } from 'lucide-react' import { cn } from '@/lib/utils' import { getPlatformInfo } from '@/lib/platforms' import { useToast } from '@/components/ui/Toast' // 模拟待审核内容列表 const mockReviewItems = [ { id: 'review-001', title: '春季护肤新品体验分享', creator: '小美', agency: '代理商A', platform: 'douyin', reviewer: '张三', reviewTime: '2小时前', agencyOpinion: '内容符合Brief要求,卖点覆盖完整,建议通过。', agencyStatus: 'passed', aiScore: 12, aiChecks: [ { label: '合规检测', status: 'passed', description: '未检测到违禁词、竞品Logo等违规内容' }, { label: '卖点覆盖', status: 'passed', description: '核心卖点覆盖率 95%' }, { label: '品牌调性', status: 'passed', description: '视觉风格符合品牌调性' }, ], currentStep: 4, // 1-已提交, 2-AI审核, 3-代理商审核, 4-品牌终审 }, { id: 'review-002', title: '夏日清爽护肤推荐', creator: '小红', agency: '代理商B', platform: 'xiaohongshu', reviewer: '李四', reviewTime: '5小时前', agencyOpinion: '内容质量良好,但部分镜头略暗,建议后期调整后通过。', agencyStatus: 'passed', aiScore: 28, aiChecks: [ { label: '合规检测', status: 'passed', description: '未检测到违规内容' }, { label: '卖点覆盖', status: 'warning', description: '核心卖点覆盖率 78%,建议增加产品特写' }, { label: '品牌调性', status: 'passed', description: '视觉风格符合品牌调性' }, ], currentStep: 4, }, ] // 审核流程进度组件 function ReviewProgressBar({ currentStep }: { currentStep: number }) { const steps = [ { label: '已提交', step: 1 }, { label: 'AI审核', step: 2 }, { label: '代理商审核', step: 3 }, { label: '品牌终审', step: 4 }, ] return (
{steps.map((s, index) => { const isCompleted = s.step < currentStep const isCurrent = s.step === currentStep return (
{isCompleted && } {isCurrent && }
{s.label}
{index < steps.length - 1 && (
)}
) })}
) } export default function FinalReviewPage() { const router = useRouter() const toast = useToast() const [selectedItem, setSelectedItem] = useState(mockReviewItems[0]) const [feedback, setFeedback] = useState('') const [isSubmitting, setIsSubmitting] = useState(false) const platform = getPlatformInfo(selectedItem.platform) const handleApprove = async () => { setIsSubmitting(true) // 模拟提交 await new Promise(resolve => setTimeout(resolve, 1000)) toast.success('已通过审核') setIsSubmitting(false) } const handleReject = async () => { if (!feedback.trim()) { toast.error('请填写驳回原因') return } setIsSubmitting(true) // 模拟提交 await new Promise(resolve => setTimeout(resolve, 1000)) toast.success('已驳回') setIsSubmitting(false) setFeedback('') } return (
{/* 顶部栏 */}

终审台

{platform && ( {platform.icon} {platform.name} )}

{selectedItem.title} · 达人: {selectedItem.creator}

{/* 审核流程进度 */}
审核流程 当前:品牌终审
{/* 主内容区 - 两栏布局 */}
{/* 左侧 - 视频播放器 */}

视频播放器

{/* 右侧 - 分析面板 */}
{/* 代理商初审意见 */}
代理商初审意见 {selectedItem.agencyStatus === 'passed' ? '已通过' : '需修改'}
审核人:{selectedItem.agency} - {selectedItem.reviewer} · {selectedItem.reviewTime}

{selectedItem.agencyOpinion}

{/* AI 分析结果 */}
AI 分析结果 风险评分: {selectedItem.aiScore}
{selectedItem.aiChecks.map((check, index) => (
{check.label} · {check.status === 'passed' ? '通过' : '警告'}

{check.description}

))}
{/* 终审决策 */}

终审决策

{/* 决策按钮 */}
{/* 终审意见 */}