'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'
// 模拟待审核内容列表
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 [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))
alert('已通过审核')
setIsSubmitting(false)
}
const handleReject = async () => {
if (!feedback.trim()) {
alert('请填写驳回原因')
return
}
setIsSubmitting(true)
// 模拟提交
await new Promise(resolve => setTimeout(resolve, 1000))
alert('已驳回')
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}
))}
{/* 终审决策 */}
终审决策
{/* 决策按钮 */}
{/* 终审意见 */}
)
}