import { useState } from 'react'; import { motion } from 'motion/react'; import { Facebook, AlertCircle, AlertTriangle, ExternalLink, CheckCircle2, XCircle, ArrowRight, Link2, MessageCircle, TrendingUp, Eye, ImageIcon, Globe, } from 'lucide-react'; import { SectionWrapper } from './ui/SectionWrapper'; import { SeverityBadge } from './ui/SeverityBadge'; import { EvidenceGallery } from './ui/EvidenceGallery'; import type { FacebookAudit as FacebookAuditType, FacebookPage, BrandInconsistency, DiagnosisItem, } from '../../types/report'; function formatNumber(n: number): string { return n.toLocaleString(); } /* ─── Page Card ─── */ function PageCard({ page, index }: { key?: string | number; page: FacebookPage; index: number }) { const isKR = page.language === 'KR'; const langColor = isKR ? 'bg-slate-100 text-slate-700' : 'bg-[#EFF0FF] text-[#3A3F7C]'; const isLogoMismatch = page.logo?.includes('불일치'); const isLowFollowers = page.followers < 500; return ( {/* Header */}
{page.label}
{isKR && isLowFollowers && ( 방치 상태 )} {page.hasWhatsApp && ( WhatsApp 연결 )}

{page.url ? ( {page.pageName} ) : page.pageName}

{page.category}

{/* Metrics grid */}

팔로워

{formatNumber(page.followers)}

리뷰

{page.reviews}

팔로잉

{formatNumber(page.following)}

{/* Detail rows */}
최근 게시물 {page.recentPostAge}
{page.postFrequency && (
게시 빈도 {page.postFrequency}
)} {page.topContentType && (
콘텐츠 유형 {page.topContentType}
)} {page.engagement && (
참여율 {page.engagement}
)}
{/* Logo analysis - the enhanced version */}
{isLogoMismatch ? : }

로고 {page.logo}

{page.logoDescription}

{/* Domain link */}

연결 도메인

{page.linkedDomain || page.link}

{/* Bio */}

Bio

"{page.bio}"

{/* Link moved to page name header */}
); } /* ─── Brand Inconsistency Map ─── */ function BrandConsistencyMap({ inconsistencies }: { inconsistencies: BrandInconsistency[] }) { const [expanded, setExpanded] = useState(0); return (

Brand Consistency Map

전 채널 브랜드 일관성 분석

{inconsistencies.map((item, i) => (
{/* Header - clickable */} {/* Expanded content */} {expanded === i && (
{/* Channel values */}
{item.values.map((v) => (
{v.channel} {v.value} {v.isCorrect ? : }
))}
{/* Impact */}

Impact

{item.impact}

{/* Recommendation */}

Recommendation

{item.recommendation}

)}
))}
); } /* ─── Diagnosis Section ─── */ function DiagnosisSection({ items }: { items: DiagnosisItem[] }) { return (

진단 결과

Facebook 채널 문제점

{items.map((item, i) => (

{item.category}

{item.detail}

{item.evidenceIds && item.evidenceIds.length > 0 && ( )}
))}
); } /* ─── Consolidation Recommendation ─── */ function ConsolidationCard({ text }: { text: string }) { return (

통합 권장 사항

{text}

); } /* ─── Main Component ─── */ export default function FacebookAudit({ data }: { data: FacebookAuditType }) { const hasData = data.pages.length > 0 || data.diagnosis.length > 0; if (!hasData) return null; return ( {/* Page cards side by side */}
{data.pages.map((page, i) => ( ))}
{/* Brand Consistency Map - the new enhanced section */} {data.brandInconsistencies && data.brandInconsistencies.length > 0 && ( )} {/* Diagnosis table */} {data.diagnosis && data.diagnosis.length > 0 && ( )} {/* Consolidation recommendation */} {data.consolidationRecommendation && ( )}
); }