"use client"; import type { ArticleCaseInputPayload, ArticleResultVersionPayload, OptimizationResultVersion, } from "../../lib/cases/types"; interface ArticleCaseDetailProps { input: unknown; version: OptimizationResultVersion | null; } const platformLabels: Record = { official_site: "官网文章", media_article: "媒体稿", comparison_review: "对比评测", recommendation_list: "推荐榜单", }; export function ArticleCaseDetail({ input, version }: ArticleCaseDetailProps) { const payload = isArticleInput(input) ? input : null; const result = isArticleResult(version?.payload) ? version.payload : null; return ( <>
文章输入
{payload ? ( <>
0 ? `${payload.image_inputs.length} 条` : "无" } />
{payload.source_body}
{payload.image_inputs.length > 0 ? (
{payload.image_inputs.map((item, index) => ( {item.type === "link" ? "链接" : "描述"}:{item.content} ))}
) : null} ) : (

没有保存输入。

)}
{payload?.fact_card ? (
事实卡
            {JSON.stringify(payload.fact_card, null, 2)}
          
) : null}
优化稿
{result ? ( <>

{result.article.title}

{result.article.summary}

                {result.article.body_markdown}
              

质量报告

{result.qa_report.checks.map((check) => (
{check.rule_id} {check.status}

{check.reason}

{check.evidence}
))}

导出文件

{Object.entries(result.export_paths).map(([name, path]) => ( {name} ))}
) : (

{version?.error_summary ?? "当前版本没有优化稿。"}

)}
); } function MetaItem({ label, value }: { label: string; value: string }) { return (
{label} {value}
); } function isArticleInput(value: unknown): value is ArticleCaseInputPayload { return ( value !== null && typeof value === "object" && "source_body" in value && "publish_platform" in value ); } function isArticleResult(value: unknown): value is ArticleResultVersionPayload { return ( value !== null && typeof value === "object" && "article" in value && "qa_report" in value ); }