"use client"; import { useState } from "react"; import type { CandidateFactCard, OptimizationFactCard } from "../lib/domain/types"; interface FactCardEditorProps { factCard: OptimizationFactCard | null; isSaving: boolean; onChange: (factCard: OptimizationFactCard) => void; } const listFields = [ "company_short_names", "brand_names", "product_names", "core_claims", "forbidden_claims", "image_topics", ] as const; const fieldLabels: Record<(typeof listFields)[number], string> = { company_short_names: "公司简称", brand_names: "品牌名称", product_names: "产品名称", core_claims: "核心事实/主张", forbidden_claims: "禁止使用的主张", image_topics: "图片主题", }; type UncertainItemResolutionTarget = | "core_claims" | "forbidden_claims" | "image_topics" | "ignore"; const uncertainItemActions: { label: string; target: UncertainItemResolutionTarget; }[] = [ { label: "采纳为核心事实", target: "core_claims" }, { label: "标记为禁止主张", target: "forbidden_claims" }, { label: "采纳为图片主题", target: "image_topics" }, { label: "忽略", target: "ignore" }, ]; export function FactCardEditor({ factCard, isSaving, onChange, }: FactCardEditorProps) { const [isEditing, setIsEditing] = useState(false); if (!factCard) { return (
事实卡 待生成
); } const hasUncertainItems = factCard.uncertain_items.length > 0; function update( key: K, value: OptimizationFactCard[K], ) { if (!factCard) return; onChange({ ...factCard, [key]: value, confirmed_by_user: false, is_ready_for_optimization: key === "uncertain_items" ? (value as string[]).length === 0 : factCard.uncertain_items.length === 0, }); } function resolveItem( itemIndex: number, target: UncertainItemResolutionTarget, ) { if (!factCard) return; onChange(resolveUncertainItem(factCard, itemIndex, target)); } return (
事实卡
{hasUncertainItems ? "待复核" : "可用"}
公司 {factCard.company_full_name || "待补充"}
行业 {factCard.target_industry || "待补充"}
受众 {factCard.target_audience || "待补充"}
经验 {factCard.experience_years === null ? "待补充" : `${factCard.experience_years} 年`}
{factCard.core_claims.length > 0 && (
核心事实
{factCard.core_claims.slice(0, 4).map((claim) => ( {claim} ))}
)} {hasUncertainItems && (
待确认事项
{factCard.uncertain_items.slice(0, 4).map((item) => ( {item} ))}
)} {isEditing && (
{listFields.map((field) => (