- 重新构建 frontend/dist(新版 hash 替换旧版) - 更新 docker 前端 Dockerfile 及 docker-compose 配置 - 新增 docs/team-development-plan.md 团队开发计划文档 - 更新 README、系统开发计划等文档 - 更新 LoginView 组件 Co-Authored-By: Claude <noreply@anthropic.com>
2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
import{E as J}from"./index-TFUf94PZ.js";import{E as K}from"./index-BjEW7-SA.js";import{E as M}from"./index-BDEF353-.js";import{a as j,E as q}from"./el-select-Dl-FRZQd.js";import{E as A}from"./el-pagination-DOPYW-qb.js";import{E as G}from"./el-progress-DuOxpLST.js";import{a as H,E as Q}from"./el-table-D8K5zLyz.js";import{d as W,e as T,a$ as X,w as i,j as c,o as u,q as t,aa as a,s as o,c as r,x as _,f as x,g as k,M as L,ad as Y,n as Z,v as h,y as C,ac as tt}from"./index-BKKvzUDD.js";import"./el-scrollbar-ClJnvz-9.js";import"./el-popper-D6_hxRbQ.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-qGZ2-RM2.js";import{P as lt}from"./PageCard-BoKXOzst.js";import{_ as et}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-VFIQNBU2.js";import{_ as at}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./raf-C-x62Pcl.js";import"./index-DLzof2Fz.js";import"./index-GAnQrJsQ.js";import"./index-CWUnzf90.js";import"./castArray-5uErZEc3.js";import"./vnode-78qeDweP.js";import"./index-D5ryD3I5.js";import"./scroll-BkzZKETR.js";import"./clamp-CbbY8h6F.js";import"./toNumber-Dkj3QRv9.js";import"./_baseIteratee-BAilevJ_.js";import"./_baseClone-B5RBzbh5.js";import"./debounce-ByXPNh5F.js";import"./omit-BTSq4AYh.js";import"./el-card-CApHJ1Gj.js";const st={class:"detail-heading"},nt={class:"heading-row"},ot={class:"heading-meta"},ut={key:0,class:"not-found-state"},it={class:"metric-grid","aria-label":"处理结果概览"},rt={class:"metric-card"},dt={class:"metric-card"},pt={class:"metric-card"},vt={class:"metric-card is-primary"},mt={key:0,class:"failure-alert",role:"alert"},ct={class:"detail-grid"},gt={class:"detail-section","aria-labelledby":"runtime-title"},ft={class:"info-list"},bt={key:1},Ct={class:"detail-section","aria-labelledby":"statistics-title"},yt={class:"statistics-grid"},wt={class:"detail-section config-section","aria-labelledby":"config-title"},Dt={class:"config-grid"},Tt={class:"detail-section result-section","aria-labelledby":"result-title"},_t={class:"result-toolbar"},kt={key:0,class:"result-filters"},Et={key:1,class:"result-empty"},St={key:2,class:"result-pagination"},xt=W({__name:"DataProcessDetailView",setup(Lt){const V={183921:{id:"183921",name:"客服问答数据清洗",status:"completed",description:"清洗客服对话中的无效记录、重复问答和格式异常内容,生成可用于模型训练的标准数据集。",processType:"结构化数据",sourceDataset:"客服对话原始集",outputDataset:"客服对话清洗集",outputDatasetId:7,creator:"管理员",createTime:"2026-07-08 14:23:00",startTime:"2026-07-08 14:23:18",completeTime:"2026-07-08 14:28:42",duration:"5 分 24 秒",progress:100,inputCount:19068,outputCount:18240,filteredCount:186,duplicateCount:642,errorCount:0,config:[{label:"预处理规则",value:"清理无效数据、结构检测、内容去重、格式标准化"},{label:"输出格式",value:"Alpaca JSONL"},{label:"数据集划分",value:"训练集 80% / 验证集 10% / 测试集 10%"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[{id:"result-001",instruction:"用户询问如何修改订单收货地址,应如何回复?",input:"订单已经提交,但还没有发货。",output:"您好,订单发货前可以在订单详情中申请修改收货地址,提交后请等待系统审核。",status:"valid"},{id:"result-002",instruction:"概括用户的退款诉求。",input:"商品收到后发现破损,希望尽快退货退款。",output:"用户因商品破损申请退货退款,并希望尽快处理。",status:"modified"},{id:"result-003",instruction:"判断咨询所属业务类型。",input:"会员积分什么时候到账?",output:"会员权益 / 积分到账咨询",status:"valid"},{id:"result-004",instruction:"生成简洁的客服回复。",input:"优惠券显示已过期,但昨天还能使用。",output:"您好,请提供优惠券名称和订单信息,我们将为您核实有效期及使用记录。",status:"valid"}]},492015:{id:"492015",name:"指令微调数据构造",status:"running",description:"从通用语料中构造指令微调训练样本。",processType:"非结构化数据",sourceDataset:"通用语料库",outputDataset:"SFT 指令集",outputDatasetId:8,creator:"管理员",createTime:"2026-07-09 09:10:00",startTime:"2026-07-09 09:10:21",duration:"处理中",progress:68,inputCount:18500,outputCount:8568,filteredCount:425,duplicateCount:192,errorCount:8,config:[{label:"切分方式",value:"语义切分"},{label:"切片长度",value:"800 Tokens,重叠 80 Tokens"},{label:"生成数量",value:"每个切片生成 2 组问答"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[]},731948:{id:"731948",name:"敏感信息脱敏处理",status:"pending",description:"识别并脱敏用户反馈数据中的敏感字段。",processType:"结构化数据",sourceDataset:"用户反馈数据",outputDataset:"用户反馈脱敏集",outputDatasetId:9,creator:"管理员",createTime:"2026-07-09 16:45:00",duration:"等待执行",progress:0,inputCount:9340,outputCount:0,filteredCount:0,duplicateCount:0,errorCount:0,config:[{label:"脱敏范围",value:"姓名、手机号、身份证号、地址"},{label:"替换方式",value:"掩码替换"},{label:"输出格式",value:"JSONL"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[]},582012:{id:"582012",name:"多轮对话拼接",status:"failed",description:"将单轮问答按会话标识拼接为多轮对话数据。",processType:"结构化数据",sourceDataset:"单轮问答集",creator:"管理员",createTime:"2026-07-10 08:30:00",startTime:"2026-07-10 08:30:16",completeTime:"2026-07-10 08:31:04",duration:"48 秒",progress:37,inputCount:7520,outputCount:2780,filteredCount:24,duplicateCount:0,errorCount:1,config:[{label:"会话字段",value:"conversation_id"},{label:"排序字段",value:"message_time"},{label:"最大轮次",value:"20 轮"},{label:"处理引擎",value:"DataFlow Engine v2.3"}],results:[],failureReason:"第 2 个源文件缺少 conversation_id 字段,无法继续执行会话拼接。"}},R=tt(),E=h(),y=C(""),g=C(""),f=C(1),b=C(10),I=c(()=>String(R.params.id||"")),e=c(()=>V[I.value]),P=c(()=>{var n;return(n=e.value)!=null&&n.inputCount?Number((e.value.outputCount/e.value.inputCount*100).toFixed(1)):0}),p=c(()=>{var l;const n=y.value.trim().toLowerCase();return(((l=e.value)==null?void 0:l.results)||[]).filter(d=>{const w=!g.value||d.status===g.value,D=!n||[d.instruction,d.input,d.output].some(v=>v.toLowerCase().includes(n));return w&&D})}),$=c(()=>{const n=(f.value-1)*b.value;return p.value.slice(n,n+b.value)});function F(n){return n==="valid"?"有效":n==="modified"?"已修改":"无效"}function z(n){return n==="valid"?"success":n==="modified"?"warning":"danger"}function S(){f.value=1}return(n,l)=>{const d=K,w=G,D=J,v=j,N=q,m=Q,B=M,U=H,O=A;return u(),T(lt,{class:"data-process-detail-page"},X({default:i(()=>[e.value?(u(),r(L,{key:1},[t("section",it,[t("div",rt,[l[13]||(l[13]=t("span",null,"处理耗时",-1)),t("strong",null,a(e.value.duration||"尚未开始"),1),t("small",null,a(e.value.completeTime?`完成于 ${e.value.completeTime}`:`当前进度 ${e.value.progress}%`),1)]),t("div",dt,[l[14]||(l[14]=t("span",null,"输入数据",-1)),t("strong",null,a(e.value.inputCount.toLocaleString()),1),t("small",null,"来源:"+a(e.value.sourceDataset),1)]),t("div",pt,[l[15]||(l[15]=t("span",null,"输出结果",-1)),t("strong",null,a(e.value.outputCount.toLocaleString()),1),t("small",null,a(e.value.outputDataset||"尚未生成输出数据集"),1)]),t("div",vt,[l[16]||(l[16]=t("span",null,"数据保留率",-1)),t("strong",null,a(e.value.inputCount?`${P.value}%`:"-"),1),o(w,{percentage:e.value.progress,"show-text":!1,"stroke-width":5},null,8,["percentage"])])]),e.value.failureReason?(u(),r("div",mt,[l[18]||(l[18]=t("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)),t("div",null,[l[17]||(l[17]=t("strong",null,"处理任务执行失败",-1)),t("p",null,a(e.value.failureReason),1)])])):k("",!0),t("div",ct,[t("section",gt,[l[26]||(l[26]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"runtime-title"},"运行信息"),t("p",null,"查看任务执行时间与数据流向")])],-1)),t("dl",ft,[t("div",null,[l[19]||(l[19]=t("dt",null,"创建时间",-1)),t("dd",null,a(e.value.createTime),1)]),t("div",null,[l[20]||(l[20]=t("dt",null,"开始时间",-1)),t("dd",null,a(e.value.startTime||"尚未开始"),1)]),t("div",null,[l[21]||(l[21]=t("dt",null,"完成时间",-1)),t("dd",null,a(e.value.completeTime||"尚未完成"),1)]),t("div",null,[l[22]||(l[22]=t("dt",null,"处理耗时",-1)),t("dd",null,a(e.value.duration||"-"),1)]),t("div",null,[l[23]||(l[23]=t("dt",null,"源数据集",-1)),t("dd",null,a(e.value.sourceDataset),1)]),t("div",null,[l[25]||(l[25]=t("dt",null,"输出数据集",-1)),t("dd",null,[e.value.outputDataset&&e.value.status==="completed"?(u(),T(d,{key:0,type:"primary",link:"",onClick:l[1]||(l[1]=s=>x(E).push(`/dataset/${e.value.outputDatasetId}/preview`))},{default:i(()=>[_(a(e.value.outputDataset)+" ",1),l[24]||(l[24]=t("i",{class:"fa fa-external-link"},null,-1))]),_:1})):(u(),r("span",bt,a(e.value.outputDataset||"尚未生成"),1))])])])]),t("section",Ct,[l[33]||(l[33]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"statistics-title"},"处理统计"),t("p",null,"查看数据清洗、过滤和输出情况")])],-1)),t("div",yt,[t("div",null,[l[27]||(l[27]=t("span",null,"原始数据",-1)),t("strong",null,a(e.value.inputCount.toLocaleString()),1)]),t("div",null,[l[28]||(l[28]=t("span",null,"成功输出",-1)),t("strong",null,a(e.value.outputCount.toLocaleString()),1)]),t("div",null,[l[29]||(l[29]=t("span",null,"过滤数据",-1)),t("strong",null,a(e.value.filteredCount.toLocaleString()),1)]),t("div",null,[l[30]||(l[30]=t("span",null,"重复数据",-1)),t("strong",null,a(e.value.duplicateCount.toLocaleString()),1)]),t("div",null,[l[31]||(l[31]=t("span",null,"异常数据",-1)),t("strong",null,a(e.value.errorCount.toLocaleString()),1)]),t("div",null,[l[32]||(l[32]=t("span",null,"执行进度",-1)),t("strong",null,a(e.value.progress)+"%",1)])])])]),t("section",wt,[l[34]||(l[34]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"config-title"},"处理配置"),t("p",null,"任务执行时使用的规则与参数")])],-1)),t("dl",Dt,[(u(!0),r(L,null,Y(e.value.config,s=>(u(),r("div",{key:s.label},[t("dt",null,a(s.label),1),t("dd",null,a(s.value),1)]))),128))])]),t("section",Tt,[t("div",_t,[l[36]||(l[36]=t("div",{class:"section-heading"},[t("div",null,[t("h2",{id:"result-title"},"结果明细"),t("p",null,"查看处理完成后的数据内容与校验状态")])],-1)),e.value.results.length?(u(),r("div",kt,[o(D,{modelValue:y.value,"onUpdate:modelValue":l[2]||(l[2]=s=>y.value=s),clearable:"",placeholder:"搜索指令、输入或输出",onInput:S},{prefix:i(()=>[...l[35]||(l[35]=[t("i",{class:"fa fa-search","aria-hidden":"true"},null,-1)])]),_:1},8,["modelValue"]),o(N,{modelValue:g.value,"onUpdate:modelValue":l[3]||(l[3]=s=>g.value=s),clearable:"",placeholder:"全部状态",onChange:S},{default:i(()=>[o(v,{label:"有效",value:"valid"}),o(v,{label:"已修改",value:"modified"}),o(v,{label:"无效",value:"invalid"})]),_:1},8,["modelValue"])])):k("",!0)]),p.value.length?(u(),T(U,{key:0,data:$.value,"row-key":"id","table-layout":"fixed"},{default:i(()=>[o(m,{type:"index",label:"#",width:"56",align:"center"}),o(m,{label:"指令","min-width":"210","show-overflow-tooltip":"",prop:"instruction"}),o(m,{label:"输入","min-width":"190","show-overflow-tooltip":"",prop:"input"}),o(m,{label:"输出","min-width":"260","show-overflow-tooltip":"",prop:"output"}),o(m,{label:"状态",width:"90",align:"center"},{default:i(({row:s})=>[o(B,{type:z(s.status),size:"small"},{default:i(()=>[_(a(F(s.status)),1)]),_:2},1032,["type"])]),_:1})]),_:1},8,["data"])):(u(),r("div",Et,[t("i",{class:Z(["fa",e.value.status==="failed"?"fa-exclamation-circle":"fa-hourglass-half"]),"aria-hidden":"true"},null,2),t("strong",null,a(e.value.status==="completed"?"没有符合条件的结果":e.value.status==="failed"?"任务失败,未生成结果明细":"处理完成后将在这里展示结果明细"),1),t("span",null,a(e.value.status==="completed"?"请调整搜索或筛选条件":`当前任务状态:${e.value.status==="running"?"运行中":"等待中"}`),1)])),p.value.length?(u(),r("div",St,[t("span",null,"共 "+a(p.value.length)+" 条结果",1),o(O,{"current-page":f.value,"onUpdate:currentPage":l[4]||(l[4]=s=>f.value=s),"page-size":b.value,"onUpdate:pageSize":l[5]||(l[5]=s=>b.value=s),layout:"prev, pager, next",total:p.value.length},null,8,["current-page","page-size","total"])])):k("",!0)])],64)):(u(),r("div",ut,[l[10]||(l[10]=t("i",{class:"fa fa-exclamation-circle","aria-hidden":"true"},null,-1)),l[11]||(l[11]=t("h2",null,"未找到数据处理任务",-1)),l[12]||(l[12]=t("p",null,"任务可能已被删除,或当前链接已失效。",-1)),o(d,{type:"primary",onClick:l[0]||(l[0]=s=>x(E).push("/data-process"))},{default:i(()=>[...l[9]||(l[9]=[_("返回任务列表",-1)])]),_:1})]))]),_:2},[e.value?{name:"header",fn:i(()=>[t("div",st,[t("div",nt,[t("h1",null,a(e.value.name),1),o(et,{status:e.value.status},null,8,["status"])]),t("p",null,a(e.value.description),1),t("dl",ot,[t("div",null,[l[6]||(l[6]=t("dt",null,"任务 ID",-1)),t("dd",null,a(e.value.id),1)]),t("div",null,[l[7]||(l[7]=t("dt",null,"处理类型",-1)),t("dd",null,a(e.value.processType),1)]),t("div",null,[l[8]||(l[8]=t("dt",null,"创建人",-1)),t("dd",null,a(e.value.creator),1)])])])]),key:"0"}:void 0]),1024)}}}),ul=at(xt,[["__scopeId","data-v-2959b892"]]);export{ul as default};
|