"use client"; import {useEffect, useState} from "react"; import {AlertTriangle, CheckCircle2, CircleDashed, Database, MapPin, ShieldAlert} from "lucide-react"; const AI_STATUS:Record={ pass:{label:"未发现异常",note:"AI检查正常,仍需评审员按本章节确认"}, issue:{label:"发现异常",note:"请结合原始数据作出独立判断"}, missing:{label:"资料不足",note:"缺少数据或口径,不能视为检查通过"}, not_run:{label:"尚未检查",note:"请先发起独立评审"}, }; const CHECK_LABEL:Record={pass:"正常",issue:"异常",unknown:"资料不足",error:"执行失败",not_applicable:"不适用"}; function valueText(value:any){ if(value===null||value===undefined||value==="")return "未提供"; if(typeof value==="object")return Object.entries(value).map(([key,item])=>`${key}:${String(item)}`).join(";"); return String(value); } export default function ReviewerWorkspace({topics,reviewed,blocking,busy,opinion,setOpinion,onDecision,onComplete,hasRun}:any){ const total=topics.length; const [returnReason,setReturnReason]=useState(""); const issues=topics.filter((item:any)=>item.ai_status==="issue").length; const incomplete=topics.filter((item:any)=>["missing","not_run"].includes(item.ai_status)).length; const pending=topics.filter((item:any)=>!item.decision).map((item:any)=>item.title); const canApprove=hasRun&&total>0&&reviewed===total&&!blocking.length; return
评审员独立判断

全链路评审

每个结论自动绑定本次数据快照、材料定位和检查规则;AI只提示,最终结论由评审员选择。

{reviewed}/{total}必审领域已确认
{total}必审领域
{issues}AI发现异常
{incomplete}资料不足/未检查
{blocking.length}尚未闭环
{topics.map((topic:any)=>)}
{!hasRun&&
请先在页面上方发起一次独立评审,系统才会冻结本次数据与规则版本。
}
完成全链路核查{pending.length?`待确认:${pending.join("、")}`:blocking.length?`尚未闭环:${blocking.map((item:any)=>item.title).join("、")}`:"所有必审领域均已形成可追溯结论"}