import{E as ye}from"./index-CunlXsH6.js";import{d as X,o as g,c as w,q as e,s as k,n as J,aa as C,g as D,j as U,x as L,w as M,M as B,ad as Z,e as z,A,y as V,D as te,t as Re,aL as Me,P as Te,z as Ie,ag as _t,aQ as Et,H as Pt,G as Ut,f as ne,aB as Lt,v as Vt}from"./index-_T_ZwAU8.js";import{A as Rt}from"./AppConfirmDialog-DbeDAiGo.js";import{E as ze,a as Ne}from"./index-DOmj2wT1.js";import{E as de}from"./index-DOTsJDGF.js";import{a as Ae,E as Se}from"./index-dqKVgrM4.js";import{E as ke}from"./index-CY01E5yO.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as be,a as we}from"./index-uEvcRnhb.js";import{E as Ft}from"./index-D66mAHHw.js";import{E as Dt}from"./index-EyGoQLQM.js";import{E as Be}from"./index-B6oDFOyL.js";import{E as qt}from"./index-TpqWJw9W.js";import{E as zt}from"./index-C6BYR-GL.js";import{u as Nt}from"./models-Dqw0oSno.js";import"./castArray-BlzMMKhq.js";import"./_baseClone-BuLLSdZ_.js";import"./raf-BSHx3Xj9.js";import"./index-I-t9u_Se.js";import"./index-CaL9AHzU.js";import"./omit-BNuYgpQl.js";import"./index-BcpD6ypP.js";import"./index-DPr6SX3u.js";import"./vnode-BBSgohgu.js";import"./index-DrL-DdXi.js";import"./index-CnFjh-NG.js";import"./index-jXIxALr6.js";import"./index-LblaQ-sT.js";import"./scroll-xdnWlbe1.js";import"./clamp-eKDmixUu.js";import"./toNumber-B7ieOfxs.js";import"./_baseIteratee-C37ZLjhl.js";import"./debounce-CtiCYe7I.js";import"./validator-CXbrKCjC.js";import"./model-CmuYoHXd.js";const At={class:"generation-option-row dataset-split-row"},Bt={class:"dataset-split-config"},jt={class:"dataset-split-grid"},Gt={class:"dataset-split-field"},Qt={class:"dataset-split-input"},Jt={class:"dataset-split-field"},Ht={class:"dataset-split-input"},Kt={class:"dataset-split-field"},Zt={class:"dataset-split-input"},Wt={key:0,role:"alert"},Xt=X({__name:"DatasetSplitEditor",props:{modelValue:{},ariaLabelPrefix:{default:""}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,s=U(()=>{const{train:S,validation:u,test:a}=o.modelValue;return S+u+a});function d(S,u){n("update:modelValue",{...o.modelValue,[S]:Math.min(100,Math.max(0,Number(u)||0))})}function r(S){return`${o.ariaLabelPrefix}${S}比例`}return(S,u)=>{const a=ke;return g(),w("div",At,[u[9]||(u[9]=e("div",{class:"generation-option-copy"},[e("strong",null,"数据集划分"),e("small",null,"按比例将生成后的问答对随机划分为训练集、验证集和测试集")],-1)),e("div",Bt,[e("div",jt,[e("label",Gt,[u[4]||(u[4]=e("span",null,"训练集",-1)),e("span",Qt,[k(a,{"model-value":t.modelValue.train,min:0,max:100,step:1,precision:0,"controls-position":"right","aria-label":r("训练集"),"onUpdate:modelValue":u[0]||(u[0]=h=>d("train",h))},null,8,["model-value","aria-label"]),u[3]||(u[3]=e("span",null,"%",-1))])]),e("label",Jt,[u[6]||(u[6]=e("span",null,"验证集",-1)),e("span",Ht,[k(a,{"model-value":t.modelValue.validation,min:0,max:100,step:1,precision:0,"controls-position":"right","aria-label":r("验证集"),"onUpdate:modelValue":u[1]||(u[1]=h=>d("validation",h))},null,8,["model-value","aria-label"]),u[5]||(u[5]=e("span",null,"%",-1))])]),e("label",Kt,[u[8]||(u[8]=e("span",null,"测试集",-1)),e("span",Zt,[k(a,{"model-value":t.modelValue.test,min:0,max:100,step:1,precision:0,"controls-position":"right","aria-label":r("测试集"),"onUpdate:modelValue":u[2]||(u[2]=h=>d("test",h))},null,8,["model-value","aria-label"]),u[7]||(u[7]=e("span",null,"%",-1))])])]),e("div",{class:J(["dataset-split-summary",{"is-invalid":s.value!==100}])},[e("span",null,"总计 "+C(s.value)+"%",1),s.value!==100?(g(),w("span",Wt," 训练集、验证集和测试集比例总和必须为 100% ")):D("",!0)],2)])])}}}),je=Y(Xt,[["__scopeId","data-v-f479d5fe"]]),Yt={key:0,class:"generation-config-group model-config-group"},en={class:"model-field"},tn={class:"model-option"},nn={class:"model-field"},ln={class:"advanced-settings-grid"},sn={class:"config-field"},on={class:"config-field"},an={class:"unit-input"},un={class:"json-mode-row"},rn={key:0,class:"generation-validation-message",role:"alert"},dn={key:1,class:"generation-config-group quality-config-group"},cn={class:"quality-switch-row"},pn={key:0,class:"quality-rule-panel"},mn={key:0,class:"minimum-length-field"},vn={class:"minimum-length-input"},fn={key:1,class:"quality-rule-warning",role:"alert"},gn={key:1,class:"generation-validation-message",role:"alert"},yn=X({__name:"GenerationOptionsPanel",props:{options:{},models:{},section:{},validationMessage:{}},emits:["update:options"],setup(t,{emit:l}){const o=t,n=l;function s(u,a){n("update:options",{...o.options,[u]:a})}function d(u){const a=u.filter(h=>typeof h=="string");n("update:options",{...o.options,filterLowQuality:a.includes("low_quality"),filterShortContent:a.includes("short_content")})}const r=()=>[o.options.filterLowQuality?"low_quality":"",o.options.filterShortContent?"short_content":""].filter(Boolean);function S(){if(!o.validationMessage)return"";const u=o.validationMessage.includes("数据生成模型");return o.section==="model"?u?o.validationMessage:"":u?"":o.validationMessage}return(u,a)=>{const h=we,c=be,p=de,i=Ft,P=ke,$=Dt,b=Se,x=Ae;return t.section==="model"?(g(),w("div",Yt,[e("div",en,[a[8]||(a[8]=e("div",{class:"field-copy"},[e("strong",null,[L("数据生成模型 "),e("em",null,"*")]),e("small",null,"选择负责生成问答、指令或结构化内容的大模型")],-1)),k(c,{class:"model-select","model-value":t.options.generationModelId,filterable:"",placeholder:"请选择用于生成数据的模型","aria-label":"数据生成模型","onUpdate:modelValue":a[0]||(a[0]=O=>s("generationModelId",O))},{empty:M(()=>[...a[7]||(a[7]=[e("div",{class:"model-empty"},"暂无可用的大模型,请先在模型管理中添加",-1)])]),default:M(()=>[(g(!0),w(B,null,Z(t.models||[],O=>(g(),z(h,{key:O.id,label:O.name,value:O.id},{default:M(()=>[e("div",tn,[e("span",null,C(O.name),1),e("small",null,C(O.model_source==="api"?"在线模型":"本地模型"),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["model-value"])]),e("div",nn,[a[9]||(a[9]=e("div",{class:"field-copy"},[e("strong",null,"默认提示语"),e("small",null,"用于约束生成内容的格式、语气和完整性,可按任务需要修改")],-1)),k(p,{class:"prompt-input","model-value":t.options.generationPrompt,type:"textarea",rows:4,maxlength:"500","show-word-limit":"",resize:"vertical",placeholder:"请输入模型生成内容时需要遵循的要求","aria-label":"模型默认提示语","onUpdate:modelValue":a[1]||(a[1]=O=>s("generationPrompt",O))},null,8,["model-value"]),a[10]||(a[10]=e("div",{class:"prompt-variables-hint"},[L(" 提示:可在文本中通过 "),e("code",{textContent:"{{ content }}"}),L(" 引用当前正在处理的数据内容。 ")],-1))]),e("div",ln,[e("label",sn,[a[11]||(a[11]=e("span",{class:"config-field-label"},"生成温度 (Temperature)",-1)),k(i,{"model-value":t.options.temperature,min:0,max:1,step:.1,"show-input":"","onUpdate:modelValue":a[2]||(a[2]=O=>s("temperature",Number(O)||0))},null,8,["model-value"]),a[12]||(a[12]=e("small",null,"较低值输出更确定、保守,较高值输出更多样、有创造性",-1))]),e("label",on,[a[14]||(a[14]=e("span",{class:"config-field-label"},"最大输出长度 (Max Tokens)",-1)),e("span",an,[k(P,{"model-value":t.options.maxTokens,min:100,max:8192,step:256,"controls-position":"right","onUpdate:modelValue":a[3]||(a[3]=O=>s("maxTokens",Number(O)||1024))},null,8,["model-value"]),a[13]||(a[13]=e("span",null,"Token",-1))]),a[15]||(a[15]=e("small",null,"限制单次生成的最大内容长度,防止过度发散",-1))])]),e("div",un,[a[16]||(a[16]=e("div",{class:"field-copy"},[e("strong",null,"强制 JSON 格式输出"),e("small",null,"要求大模型返回纯 JSON 对象,有助于提高下游结构化提取的稳定性")],-1)),k($,{"model-value":t.options.jsonMode,"inline-prompt":"","active-text":"开","inactive-text":"关","onUpdate:modelValue":a[4]||(a[4]=O=>s("jsonMode",!!O))},null,8,["model-value"])]),S()?(g(),w("p",rn,C(S()),1)):D("",!0)])):(g(),w("div",dn,[e("div",cn,[a[17]||(a[17]=e("div",{class:"config-group-heading"},[e("div",null,[e("h4",null,"质量筛选"),e("p",null,"生成后自动过滤不符合要求的内容,不影响源数据预处理")])],-1)),k($,{"model-value":t.options.qualityFilterEnabled,"inline-prompt":"","active-text":"开","inactive-text":"关","aria-label":"质量筛选","onUpdate:modelValue":a[5]||(a[5]=O=>s("qualityFilterEnabled",!!O))},null,8,["model-value"])]),t.options.qualityFilterEnabled?(g(),w("div",pn,[k(x,{"model-value":r(),class:"quality-rule-list","onUpdate:modelValue":d},{default:M(()=>[k(b,{value:"low_quality"},{default:M(()=>[...a[18]||(a[18]=[e("span",{class:"rule-copy"},[e("strong",null,"过滤低质量内容"),e("small",null,"按相关性、完整性和可读性过滤明显不合格的生成结果")],-1)])]),_:1}),k(b,{value:"short_content"},{default:M(()=>[...a[19]||(a[19]=[e("span",{class:"rule-copy"},[e("strong",null,"过滤过短内容"),e("small",null,"过滤正文长度低于指定字数的生成结果")],-1)])]),_:1})]),_:1},8,["model-value"]),t.options.filterShortContent?(g(),w("label",mn,[a[21]||(a[21]=e("span",null,"最少字数",-1)),e("span",vn,[k(P,{"model-value":t.options.minOutputLength,min:1,max:1e3,step:5,precision:0,"controls-position":"right","aria-label":"生成内容最少字数","onUpdate:modelValue":a[6]||(a[6]=O=>s("minOutputLength",Number(O)||1))},null,8,["model-value"]),a[20]||(a[20]=e("span",null,"字",-1))]),a[22]||(a[22]=e("small",null,"少于该字数的生成结果将被过滤",-1))])):D("",!0),!t.options.filterLowQuality&&!t.options.filterShortContent?(g(),w("p",fn," 请至少选择一项质量筛选规则 ")):D("",!0)])):D("",!0),S()?(g(),w("p",gn,C(S()),1)):D("",!0)]))}}}),_e=Y(yn,[["__scopeId","data-v-76ef5602"]]),kn={class:"form-section structured-options-section"},hn={class:"preprocess-option-copy"},Sn={class:"form-section generation-options-section"},bn={class:"generation-option-list"},wn={class:"generation-option-row"},xn=X({__name:"StructuredOptionsPanel",props:{options:{},validationAttempted:{type:Boolean},qualityValidationMessage:{}},emits:["update:options"],setup(t,{emit:l}){const o=t,n=l,s=[{value:"clean_invalid",label:"清理无效数据",description:"处理空行、空列和残缺行"},{value:"detect_structure",label:"识别表格结构",description:"识别表头、多级表头和合并单元格"},{value:"deduplicate",label:"重复数据去重",description:"删除完全重复或关键字段重复的数据"},{value:"normalize_format",label:"数据格式标准化",description:"统一日期、数字、单位和枚举值格式"},{value:"filter_anomaly",label:"异常数据过滤",description:"过滤乱码、无效内容和异常记录"},{value:"desensitize",label:"敏感信息脱敏",description:"处理姓名、手机号、邮箱等敏感信息"}];function d(u,a){n("update:options",{...o.options,[u]:a})}function r(u){n("update:options",{...o.options,...u})}function S(u){const a=new Set(s.map(c=>c.value)),h=u.filter(c=>typeof c=="string"&&a.has(c));d("preprocessOptions",h)}return(u,a)=>{const h=Se,c=Ae,p=ke;return g(),w(B,null,[e("div",kn,[a[2]||(a[2]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"预处理选项"),e("p",null,"选择在生成问答对之前需要执行的数据处理方式")])],-1)),k(c,{"model-value":t.options.preprocessOptions,class:"preprocess-option-grid","onUpdate:modelValue":S},{default:M(()=>[(g(),w(B,null,Z(s,i=>k(h,{key:i.value,value:i.value,class:"preprocess-option"},{default:M(()=>[e("span",hn,[e("strong",null,C(i.label),1),e("small",null,C(i.description),1)])]),_:2},1032,["value"])),64))]),_:1},8,["model-value"])]),e("div",Sn,[a[4]||(a[4]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"生成选项"),e("p",null,"配置每条结构化记录生成问答对的方式和数量")])],-1)),e("div",bn,[k(_e,{options:t.options,section:"quality","validation-message":t.validationAttempted?t.qualityValidationMessage:"","onUpdate:options":r},null,8,["options","validation-message"]),e("div",wn,[a[3]||(a[3]=e("div",{class:"generation-option-copy"},[e("strong",null,"每行生成数量"),e("small",null,"每行结构化数据生成的问答对数量")],-1)),k(p,{"model-value":t.options.qaPairsPerRow,min:1,max:5,step:1,"controls-position":"right","onUpdate:modelValue":a[0]||(a[0]=i=>d("qaPairsPerRow",Number(i)||1))},null,8,["model-value"])]),k(je,{"model-value":t.options.datasetSplit,"onUpdate:modelValue":a[1]||(a[1]=i=>d("datasetSplit",i))},null,8,["model-value"])])])],64)}}}),$n=Y(xn,[["__scopeId","data-v-c8b9fa91"]]),On={class:"form-section unstructured-options-section"},Cn={class:"preprocess-option-grid"},Mn={class:"form-section chunk-options-section"},In={class:"chunk-settings-grid is-basic"},Tn={class:"config-field"},_n={class:"config-field"},En={class:"unit-input"},Pn={class:"config-field"},Un={class:"unit-input"},Ln={class:"config-field"},Vn={class:"unit-input"},Rn={key:0,class:"config-field"},Fn={key:0,class:"option-validation-message",role:"alert"},Dn={class:"form-section generation-options-section"},qn={class:"generation-option-list"},zn={class:"generation-option-row"},Nn=X({__name:"UnstructuredOptionsPanel",props:{options:{},validationAttempted:{type:Boolean},qualityValidationMessage:{},chunkValidationMessage:{}},emits:["update:options"],setup(t,{expose:l,emit:o}){const n=t,s=o,d=["clean_invalid_content","detect_document_structure","merge_short_content","filter_low_quality","deduplicate_content","preserve_context"],r=[{value:"semantic",label:"自动语义切分"},{value:"heading",label:"按标题和段落"},{value:"fixed",label:"按固定长度"},{value:"custom",label:"自定义分隔符"}],S={chunkSize:{min:200,max:2e3},chunkOverlap:{min:0,max:500},minChunkSize:{min:20,max:500},qaPairsPerChunk:{min:1,max:3}},u=U(()=>d.every(O=>n.options.preprocessOptions.includes(O))),a=U(()=>n.options.preprocessOptions.includes("desensitize")),h=U(()=>n.options.preserveTables&&n.options.preserveCodeBlocks&&n.options.preserveLists);function c(O,f){s("update:options",{...n.options,[O]:f})}function p(O){s("update:options",{...n.options,...O})}function i(O){const f=!!O,R=n.options.preprocessOptions.filter(F=>!d.includes(F));c("preprocessOptions",f?[...d,...R]:R)}function P(O){const f=n.options.preprocessOptions.filter(R=>R!=="desensitize");O&&f.push("desensitize"),c("preprocessOptions",f)}function $(O){const f=!!O;s("update:options",{...n.options,preserveTables:f,preserveCodeBlocks:f,preserveLists:f})}function b(O,f){const R=S[O],F=Number(f),W=Number.isFinite(F)?F:R.min;c(O,Math.min(R.max,Math.max(R.min,W)))}function x(){}return l({revealValidation:x}),(O,f)=>{const R=Se,F=we,W=be,m=ke,I=de;return g(),w(B,null,[e("div",On,[f[10]||(f[10]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"预处理选项"),e("p",null,"默认使用推荐策略,只需决定是否需要脱敏")])],-1)),e("div",Cn,[e("label",{class:J(["preprocess-option",{"is-checked":u.value}])},[k(R,{"model-value":u.value,"onUpdate:modelValue":i},null,8,["model-value"]),f[7]||(f[7]=e("span",{class:"preprocess-option-copy"},[e("strong",null,"智能预处理"),e("small",null,"自动清理、解析、去重及保留上下文")],-1))],2),e("label",{class:J(["preprocess-option",{"is-checked":a.value}])},[k(R,{"model-value":a.value,"onUpdate:modelValue":P},null,8,["model-value"]),f[8]||(f[8]=e("span",{class:"preprocess-option-copy"},[e("strong",null,"敏感信息脱敏"),e("small",null,"处理姓名、手机号等隐私信息")],-1))],2),e("label",{class:J(["preprocess-option",{"is-checked":h.value}])},[k(R,{"model-value":h.value,"onUpdate:modelValue":$},null,8,["model-value"]),f[9]||(f[9]=e("span",{class:"preprocess-option-copy"},[e("strong",null,"保护表格、代码和列表"),e("small",null,"避免切分点破坏特殊内容块的完整性")],-1))],2)])]),e("div",Mn,[f[24]||(f[24]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"切分选项"),e("p",null,"以语义完整为优先,将长文档拆成可独立生成问答的内容块")])],-1)),e("div",In,[e("label",Tn,[f[11]||(f[11]=e("span",{class:"config-field-label"},"切分方式",-1)),k(W,{"model-value":t.options.chunkMethod,"aria-label":"切分方式","onUpdate:modelValue":f[0]||(f[0]=T=>c("chunkMethod",T))},{default:M(()=>[(g(),w(B,null,Z(r,T=>k(F,{key:T.value,label:T.label,value:T.value},null,8,["label","value"])),64))]),_:1},8,["model-value"]),f[12]||(f[12]=e("small",null,"推荐使用自动语义切分,在长度限制内优先保留完整句段",-1))]),e("label",_n,[f[14]||(f[14]=e("span",{class:"config-field-label"},"切片长度",-1)),e("span",En,[k(m,{"model-value":t.options.chunkSize,min:200,max:2e3,step:50,precision:0,"controls-position":"right","aria-label":"切片长度","onUpdate:modelValue":f[1]||(f[1]=T=>b("chunkSize",T))},null,8,["model-value"]),f[13]||(f[13]=e("span",null,"Token",-1))]),f[15]||(f[15]=e("small",null,"单个切片的目标上限,默认 800 Token",-1))]),e("label",Pn,[f[17]||(f[17]=e("span",{class:"config-field-label"},"重叠长度",-1)),e("span",Un,[k(m,{"model-value":t.options.chunkOverlap,min:0,max:500,step:10,precision:0,"controls-position":"right","aria-label":"重叠长度","onUpdate:modelValue":f[2]||(f[2]=T=>b("chunkOverlap",T))},null,8,["model-value"]),f[16]||(f[16]=e("span",null,"Token",-1))]),f[18]||(f[18]=e("small",null,"在相邻切片中最多重复保留的上下文,默认 100 Token",-1))]),e("label",Ln,[f[20]||(f[20]=e("span",{class:"config-field-label"},"最小切片长度",-1)),e("span",Vn,[k(m,{"model-value":t.options.minChunkSize,min:20,max:500,step:10,precision:0,"controls-position":"right","aria-label":"最小切片长度","onUpdate:modelValue":f[3]||(f[3]=T=>b("minChunkSize",T))},null,8,["model-value"]),f[19]||(f[19]=e("span",null,"Token",-1))]),f[21]||(f[21]=e("small",null,"过短的尾部内容会尽量并入前一个切片",-1))]),t.options.chunkMethod==="custom"?(g(),w("label",Rn,[f[22]||(f[22]=e("span",{class:"config-field-label"},"自定义分隔符",-1)),k(I,{"model-value":t.options.customDelimiter,maxlength:"40","show-word-limit":"",placeholder:"例如:--- 或 ###","aria-label":"自定义分隔符","onUpdate:modelValue":f[4]||(f[4]=T=>c("customDelimiter",T))},null,8,["model-value"]),f[23]||(f[23]=e("small",null,"系统会优先在分隔符位置结束当前切片",-1))])):D("",!0)]),f[25]||(f[25]=e("p",{class:"chunk-estimation-note"}," Token 数为轻量估算值,实际长度以训练使用的模型分词器为准。 ",-1)),t.chunkValidationMessage?(g(),w("p",Fn,C(t.chunkValidationMessage),1)):D("",!0)]),e("div",Dn,[f[27]||(f[27]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"生成选项"),e("p",null,"只保留会直接影响输出的核心设置")])],-1)),e("div",qn,[k(_e,{options:t.options,section:"quality","validation-message":t.validationAttempted?t.qualityValidationMessage:"","onUpdate:options":p},null,8,["options","validation-message"]),e("div",zn,[f[26]||(f[26]=e("div",{class:"generation-option-copy"},[e("strong",null,"每个切片生成数量"),e("small",null,"每个内容切片最多生成 3 个不同角度的问答对")],-1)),k(m,{"model-value":t.options.qaPairsPerChunk,min:1,max:3,step:1,precision:0,"controls-position":"right","aria-label":"每个切片生成数量","onUpdate:modelValue":f[5]||(f[5]=T=>b("qaPairsPerChunk",T))},null,8,["model-value"])]),k(je,{"model-value":t.options.datasetSplit,"aria-label-prefix":"非结构化","onUpdate:modelValue":f[6]||(f[6]=T=>c("datasetSplit",T))},null,8,["model-value"])])])],64)}}}),An=Y(Nn,[["__scopeId","data-v-314bed26"]]),Bn={class:"task-setup-step"},jn={class:"form-section"},Gn={class:"basic-grid"},Qn={class:"form-section"},Jn={class:"type-options"},Hn=X({__name:"TaskSetupStep",props:{name:{},description:{},processType:{},structuredOptions:{},unstructuredOptions:{}},emits:["update:name","update:description","update:processType","update:structuredOptions","update:unstructuredOptions"],setup(t,{expose:l,emit:o}){const n=t,s=o,d=V(),r=V(),S=V(!1),u=U(()=>({name:n.name,processType:n.processType})),a=U(()=>{const{train:b,validation:x,test:O}=n.structuredOptions.datasetSplit;return b+x+O}),h=U(()=>{const{train:b,validation:x,test:O}=n.unstructuredOptions.datasetSplit;return b+x+O}),c=U(()=>n.processType==="structured"?n.structuredOptions:n.processType==="unstructured"?n.unstructuredOptions:null),p=U(()=>{const b=c.value;return b?b.qualityFilterEnabled&&!b.filterLowQuality&&!b.filterShortContent?"开启质量筛选后,请至少选择一项筛选规则":b.qualityFilterEnabled&&b.filterShortContent&&b.minOutputLength<1?"最少字数必须大于 0":"":""}),i=U(()=>n.unstructuredOptions.chunkOverlap>=n.unstructuredOptions.chunkSize?"重叠长度必须小于切片长度":n.unstructuredOptions.minChunkSize>n.unstructuredOptions.chunkSize?"最小切片长度不能大于切片长度":n.unstructuredOptions.chunkOverlap+n.unstructuredOptions.minChunkSize>n.unstructuredOptions.chunkSize?"重叠长度与最小切片长度之和不能大于切片长度":n.unstructuredOptions.chunkMethod==="custom"&&!n.unstructuredOptions.customDelimiter.trim()?"请输入自定义分隔符":""),P={name:[{required:!0,message:"请输入任务名称",trigger:"blur"},{max:50,message:"任务名称不能超过 50 个字符",trigger:"blur"}],processType:[{required:!0,message:"请选择数据处理类型",trigger:"change"}]};async function $(){var b;if(S.value=!0,!d.value)return!1;try{if(await d.value.validate(),n.processType==="structured"&&a.value!==100)return A.error("结构化数据处理:数据集划分比例总和必须为 100%"),!1;if(n.processType==="unstructured"){if(h.value!==100)return A.error("非结构化数据处理:数据集划分比例总和必须为 100%"),!1;if(i.value)return(b=r.value)==null||b.revealValidation(),A.error(i.value),!1}return p.value?(A.error(p.value),!1):!0}catch{return A.error("请完善标红的必填项"),!1}}return l({validate:$}),(b,x)=>{const O=de,f=Ne,R=ze;return g(),w("section",Bn,[k(R,{ref_key:"formRef",ref:d,model:u.value,rules:P,"label-position":"top","scroll-to-error":""},{default:M(()=>[e("div",jn,[x[7]||(x[7]=e("h3",null,"基本信息",-1)),e("div",Gn,[k(f,{label:"任务名称",prop:"name",required:""},{default:M(()=>[k(O,{"model-value":t.name,maxlength:"50","show-word-limit":"",placeholder:"例如:金融问答清洗任务","onUpdate:modelValue":x[0]||(x[0]=F=>s("update:name",F))},null,8,["model-value"])]),_:1}),k(f,{label:"任务描述(选填)"},{default:M(()=>[k(O,{"model-value":t.description,type:"textarea",rows:3,maxlength:"200","show-word-limit":"",placeholder:"简要说明本次数据处理目标","onUpdate:modelValue":x[1]||(x[1]=F=>s("update:description",F))},null,8,["model-value"])]),_:1})])]),e("div",Qn,[x[11]||(x[11]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",null,"处理类型"),e("p",null,"类型会影响下一步支持的数据源格式和后续预览方式")])],-1)),k(f,{prop:"processType",class:"type-form-item"},{default:M(()=>[e("div",Jn,[e("button",{type:"button",class:J(["type-option",{"is-active":t.processType==="structured"}]),onClick:x[2]||(x[2]=F=>s("update:processType","structured"))},[...x[8]||(x[8]=[e("span",{class:"type-icon"},[e("i",{class:"fa fa-table"})],-1),e("span",null,[e("strong",null,"结构化数据"),e("small",null,"适用于 CSV、Excel、JSONL 等固定字段数据")],-1),e("i",{class:"fa fa-check-circle selection-mark"},null,-1)])],2),e("button",{type:"button",class:J(["type-option",{"is-active":t.processType==="unstructured"}]),onClick:x[3]||(x[3]=F=>s("update:processType","unstructured"))},[...x[9]||(x[9]=[e("span",{class:"type-icon"},[e("i",{class:"fa fa-file-text-o"})],-1),e("span",null,[e("strong",null,"非结构化数据"),e("small",null,"适用于文档、文本、问答等需要切分的数据")],-1),e("i",{class:"fa fa-check-circle selection-mark"},null,-1)])],2),e("button",{type:"button",class:J(["type-option",{"is-active":t.processType==="external"}]),onClick:x[4]||(x[4]=F=>s("update:processType","external"))},[...x[10]||(x[10]=[e("span",{class:"type-icon"},[e("i",{class:"fa fa-cloud-download"})],-1),e("span",null,[e("strong",null,"外来数据源拉取"),e("small",null,"适用于数据库、API 接口等需远程拉取的外部数据")],-1),e("i",{class:"fa fa-check-circle selection-mark"},null,-1)])],2)])]),_:1})]),t.processType==="structured"?(g(),z($n,{key:0,options:t.structuredOptions,"validation-attempted":S.value,"quality-validation-message":p.value,"onUpdate:options":x[5]||(x[5]=F=>s("update:structuredOptions",F))},null,8,["options","validation-attempted","quality-validation-message"])):D("",!0),t.processType==="unstructured"?(g(),z(An,{key:1,ref_key:"unstructuredOptionsPanelRef",ref:r,options:t.unstructuredOptions,"validation-attempted":S.value,"quality-validation-message":p.value,"chunk-validation-message":i.value,"onUpdate:options":x[6]||(x[6]=F=>s("update:unstructuredOptions",F))},null,8,["options","validation-attempted","quality-validation-message","chunk-validation-message"])):D("",!0)]),_:1},8,["model"])])}}}),Kn=Y(Hn,[["__scopeId","data-v-d4ef10ff"]]),Zn={class:"model-selection-step","aria-labelledby":"model-selection-title"},Wn={class:"form-section"},Xn={class:"model-form-content"},Yn=X({__name:"ModelSelectionStep",props:{options:{},models:{}},emits:["update:options"],setup(t,{expose:l,emit:o}){const n=t,s=o,d=V(!1),r=U(()=>n.options.generationModelId===""?"请选择数据生成模型":"");function S(){return d.value=!0,r.value?(A.error(r.value),!1):!0}return l({validate:S}),(u,a)=>(g(),w("section",Zn,[e("div",Wn,[a[1]||(a[1]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",{id:"model-selection-title"},"大模型选择"),e("p",null,"选择本次数据生成使用的模型,并设置统一的输出要求")])],-1)),e("div",Xn,[k(_e,{options:t.options,models:t.models,section:"model","validation-message":d.value?r.value:"","onUpdate:options":a[0]||(a[0]=h=>s("update:options",h))},null,8,["options","models","validation-message"])])])]))}}),el=Y(Yn,[["__scopeId","data-v-77825278"]]),tl={class:"source-upload-step","aria-labelledby":"source-upload-title"},nl={key:0,class:"form-section external-section"},ll={class:"external-form"},sl={class:"external-actions"},ol={key:0,class:"external-status is-connected",role:"status"},al={key:0,class:"uploaded-file-list","aria-label":"已拉取数据列表"},il={class:"uploaded-file-list-header"},ul={class:"uploaded-file-items"},rl={class:"file-main"},dl=["title"],cl={key:1,class:"form-section upload-section"},pl={class:"section-title-row"},ml={class:"el-upload__tip"},vl={key:1,class:"uploaded-file-list","aria-label":"已上传文件列表"},fl={class:"uploaded-file-list-header"},gl={class:"continue-upload"},yl={class:"uploaded-file-items"},kl={class:"file-main"},hl=["title"],ae=10,Sl=X({__name:"SourceUploadStep",props:{processType:{},uploadedFiles:{},externalSource:{},externalPulling:{type:Boolean},externalConnected:{type:Boolean}},emits:["update:externalSource","file-change","remove-file","use-sample","test-connection","pull-data"],setup(t,{emit:l}){const o=t,n=l,s=[{value:"mysql",label:"MySQL"},{value:"postgresql",label:"PostgreSQL"},{value:"mongodb",label:"MongoDB"},{value:"api",label:"REST API"}],d=[{value:"none",label:"免鉴权"},{value:"basic",label:"账号密码"},{value:"token",label:"Token"}],r=V(1),S=U(()=>o.processType==="external"),u=U(()=>o.processType==="unstructured"?".txt,.md,.pdf,.docx,.doc,.json,.jsonl":".json,.jsonl,.csv,.xlsx,.xls"),a=U(()=>{const p=(r.value-1)*ae;return o.uploadedFiles.slice(p,p+ae)});te(()=>o.uploadedFiles.length,(p,i)=>{const P=Math.max(1,Math.ceil(p/ae));if(p>i){r.value=P;return}r.value=Math.min(r.value,P)}),te(()=>o.processType,()=>{r.value=1});function h(p,i){n("update:externalSource",{...o.externalSource,[p]:i})}function c(p){return p?p>=1024*1024?`${(p/1024/1024).toFixed(1)} MB`:`${(p/1024).toFixed(1)} KB`:"0 KB"}return(p,i)=>{const P=we,$=be,b=Ne,x=de,O=ke,f=ze,R=ye,F=Be,W=qt;return g(),w("section",tl,[S.value?(g(),w("div",nl,[i[18]||(i[18]=e("div",{class:"section-title-row"},[e("div",null,[e("h3",{id:"source-upload-title"},"数据源配置"),e("p",null,"配置并验证外部数据源,拉取成功后可在下一步预览数据内容")])],-1)),e("div",ll,[k(f,{"label-position":"top",class:"external-grid"},{default:M(()=>[k(b,{label:"数据源类型"},{default:M(()=>[k($,{"model-value":t.externalSource.type,placeholder:"请选择数据源类型","aria-label":"数据源类型","onUpdate:modelValue":i[0]||(i[0]=m=>h("type",m))},{default:M(()=>[(g(),w(B,null,Z(s,m=>k(P,{key:m.value,label:m.label,value:m.value},null,8,["label","value"])),64))]),_:1},8,["model-value"])]),_:1}),k(b,{label:"地址 / URL"},{default:M(()=>[k(x,{"model-value":t.externalSource.url,placeholder:"例如:mysql://host:3306/db 或 https://api.example.com/data","aria-label":"数据源地址或 URL","onUpdate:modelValue":i[1]||(i[1]=m=>h("url",m))},null,8,["model-value"])]),_:1}),k(b,{label:"鉴权方式"},{default:M(()=>[k($,{"model-value":t.externalSource.authMode,"aria-label":"鉴权方式","onUpdate:modelValue":i[2]||(i[2]=m=>h("authMode",m))},{default:M(()=>[(g(),w(B,null,Z(d,m=>k(P,{key:m.value,label:m.label,value:m.value},null,8,["label","value"])),64))]),_:1},8,["model-value"])]),_:1}),t.externalSource.authMode==="basic"?(g(),z(b,{key:0,label:"账号"},{default:M(()=>[k(x,{"model-value":t.externalSource.username,autocomplete:"username",placeholder:"请输入账号","aria-label":"数据源账号","onUpdate:modelValue":i[3]||(i[3]=m=>h("username",m))},null,8,["model-value"])]),_:1})):D("",!0),t.externalSource.authMode==="basic"?(g(),z(b,{key:1,label:"密码"},{default:M(()=>[k(x,{"model-value":t.externalSource.password,type:"password","show-password":"",autocomplete:"current-password",placeholder:"请输入密码","aria-label":"数据源密码","onUpdate:modelValue":i[4]||(i[4]=m=>h("password",m))},null,8,["model-value"])]),_:1})):D("",!0),t.externalSource.authMode==="token"?(g(),z(b,{key:2,label:"Token"},{default:M(()=>[k(x,{"model-value":t.externalSource.token,type:"password","show-password":"",autocomplete:"off",placeholder:"请输入访问 Token","aria-label":"数据源访问 Token","onUpdate:modelValue":i[5]||(i[5]=m=>h("token",m))},null,8,["model-value"])]),_:1})):D("",!0),k(b,{label:"拉取条数"},{default:M(()=>[k(O,{"model-value":t.externalSource.limit,min:1,max:1e5,step:100,"controls-position":"right","aria-label":"数据拉取条数","onUpdate:modelValue":i[6]||(i[6]=m=>h("limit",Number(m)||0))},null,8,["model-value"])]),_:1})]),_:1}),e("div",sl,[k(R,{loading:t.externalPulling&&!t.externalConnected,disabled:t.externalPulling,plain:"",onClick:i[7]||(i[7]=m=>n("test-connection"))},{default:M(()=>[...i[12]||(i[12]=[L(" 测试连接 ",-1)])]),_:1},8,["loading","disabled"]),k(R,{type:"primary",loading:t.externalPulling,disabled:t.externalPulling,onClick:i[8]||(i[8]=m=>n("pull-data"))},{default:M(()=>[...i[13]||(i[13]=[L(" 拉取数据 ",-1)])]),_:1},8,["loading","disabled"]),t.externalConnected?(g(),w("span",ol,[...i[14]||(i[14]=[e("i",{class:"fa fa-check-circle","aria-hidden":"true"},null,-1),L(" 连接正常 ",-1)])])):D("",!0)]),t.uploadedFiles.length?(g(),w("section",al,[e("div",il,[e("span",null,"已拉取 "+C(t.uploadedFiles.length)+" 个数据集",1)]),e("div",ul,[(g(!0),w(B,null,Z(a.value,m=>(g(),w("div",{key:m.uid,class:"uploaded-file"},[i[16]||(i[16]=e("span",{class:"file-icon"},[e("i",{class:"fa fa-cloud-download","aria-hidden":"true"})],-1)),e("div",rl,[e("strong",{title:m.name},C(m.name),9,dl),e("span",null,[L(C(c(m.size))+" ",1),m.count?(g(),w(B,{key:0},[L(" · "+C(m.count.toLocaleString())+" 条",1)],64)):D("",!0)])]),i[17]||(i[17]=e("span",{class:"file-status"},[e("i",{class:"fa fa-check-circle","aria-hidden":"true"}),L(" 拉取成功")],-1)),k(R,{link:"",type:"danger","aria-label":`删除数据集 ${m.name}`,onClick:I=>n("remove-file",m.uid)},{default:M(()=>[...i[15]||(i[15]=[L(" 删除 ",-1)])]),_:1},8,["aria-label","onClick"])]))),128))]),t.uploadedFiles.length>ae?(g(),z(F,{key:0,"current-page":r.value,"onUpdate:currentPage":i[9]||(i[9]=m=>r.value=m),"page-size":ae,total:t.uploadedFiles.length,"pager-count":5,small:"",background:"",layout:"prev, pager, next",class:"uploaded-file-pagination","aria-label":"已拉取数据分页"},null,8,["current-page","total"])):D("",!0)])):D("",!0)])])):(g(),w("div",cl,[e("div",pl,[i[20]||(i[20]=e("div",null,[e("h3",{id:"source-upload-title"},"源数据上传"),e("p",null,"上传后可在下一步检查内容和切分效果,支持同时添加多个文件")],-1)),t.uploadedFiles.length===0?(g(),z(R,{key:0,link:"",type:"primary",onClick:i[10]||(i[10]=m=>n("use-sample"))},{default:M(()=>[...i[19]||(i[19]=[L(" 使用示例数据 ",-1)])]),_:1})):D("",!0)]),t.uploadedFiles.length===0?(g(),z(W,{key:0,drag:"",multiple:"",accept:u.value,"auto-upload":!1,"show-file-list":!1,"on-change":m=>n("file-change",m),"aria-label":"选择或拖拽源数据文件"},{tip:M(()=>[e("div",ml,C(t.processType==="unstructured"?"支持 TXT、Markdown、PDF、Word、JSON、JSONL,单文件不超过 200MB":"支持 JSON、JSONL、CSV、Excel,单文件不超过 200MB"),1)]),default:M(()=>[i[21]||(i[21]=e("i",{class:"fa fa-cloud-upload upload-icon","aria-hidden":"true"},null,-1)),i[22]||(i[22]=e("div",{class:"el-upload__text"},[L("拖拽文件到此处,或"),e("em",null,"点击选择文件")],-1))]),_:1},8,["accept","on-change"])):(g(),w("section",vl,[e("div",fl,[e("span",null,"已添加 "+C(t.uploadedFiles.length)+" 个文件",1),e("div",gl,[k(W,{multiple:"",accept:u.value,"auto-upload":!1,"show-file-list":!1,"on-change":m=>n("file-change",m),"aria-label":"继续添加源数据文件"},{default:M(()=>[k(R,{size:"small",type:"primary"},{default:M(()=>[...i[23]||(i[23]=[L("继续上传",-1)])]),_:1})]),_:1},8,["accept","on-change"])])]),e("div",yl,[(g(!0),w(B,null,Z(a.value,m=>(g(),w("div",{key:m.uid,class:"uploaded-file"},[i[25]||(i[25]=e("span",{class:"file-icon"},[e("i",{class:"fa fa-file-text-o","aria-hidden":"true"})],-1)),e("div",kl,[e("strong",{title:m.name},C(m.name),9,hl),e("span",null,[L(C(c(m.size))+" ",1),m.count?(g(),w(B,{key:0},[L(" · "+C(m.count.toLocaleString())+" 条",1)],64)):D("",!0)])]),i[26]||(i[26]=e("span",{class:"file-status"},[e("i",{class:"fa fa-check-circle","aria-hidden":"true"}),L(" 校验通过")],-1)),k(R,{link:"",type:"danger","aria-label":`删除文件 ${m.name}`,onClick:I=>n("remove-file",m.uid)},{default:M(()=>[...i[24]||(i[24]=[L(" 删除 ",-1)])]),_:1},8,["aria-label","onClick"])]))),128))]),t.uploadedFiles.length>ae?(g(),z(F,{key:0,"current-page":r.value,"onUpdate:currentPage":i[11]||(i[11]=m=>r.value=m),"page-size":ae,total:t.uploadedFiles.length,"pager-count":5,small:"",background:"",layout:"prev, pager, next",class:"uploaded-file-pagination","aria-label":"已上传文件分页"},null,8,["current-page","total"])):D("",!0)]))]))])}}}),bl=Y(Sl,[["__scopeId","data-v-125e3e33"]]),pe=["问:如何看待当前的通货膨胀风险?","答:当前通胀水平总体可控,但仍需关注能源价格与供给扰动。","问:美联储下一次议息会议何时召开?","答:会议时间以美联储官方日历为准,市场会重点关注利率路径指引。","问:人民币汇率未来走势如何?","答:人民币汇率取决于中美利差、经济基本面与政策预期。","问:银行理财产品收益率为何持续走低?","答:主要与市场利率下行、资产端收益下降以及风险偏好变化有关。","问:什么是复利?","答:复利是指在计算利息时,将上一期利息加入本金,再计算下一期利息。","问:如何评估股票的投资价值?","答:评估股票投资价值可以从以下几个方面进行:","1. 公司基本面:分析公司的财务状况、盈利能力、成长性等。","2. 行业前景:考察公司所处行业的发展趋势和竞争格局。","3. 估值水平:通过市盈率、市净率等指标判断估值是否合理。","4. 财务健康:关注公司的负债情况、现金流状况等。","5. 管理团队:评估管理层的能力和过往业绩。","此外,还需要关注宏观经济环境、政策变化等因素对股票市场的影响。","问:债券和股票的主要区别是什么?","答:债券收益相对稳定但上行有限,股票波动更大且承担更高风险。","问:什么是市盈率?","答:市盈率是股票价格与每股收益的比值,常用于衡量估值水平。","问:如何进行资产配置?","答:应根据投资目标、风险承受能力和市场环境合理分配资产。"].join(` `);function Ee(t){const l=t.split(` `);let o=0;return l.map((n,s)=>{const d=o,r=d+n.length;return o=r+(sn&&/\s/.test(t[s-1]);)s-=1;return{start:n,end:s}}function Cl(t){return(t??"").replace(/\\n/g,` `).replace(/\\t/g," ")}function Ml(t,l){return t.startl.start}function fe(t,l){return l.some(o=>Ml(t,o))}function Il(t,l){const o=[];let n=null;for(const s of l){const d=s.content.match(/^\s*(`{3,}|~{3,})/);if(!d)continue;const r=d[1][0];if(!n){n={start:s.start,marker:r,length:d[1].length};continue}r===n.marker&&d[1].length>=n.length&&(o.push({start:n.start,end:s.end,kind:"code"}),n=null)}return n&&o.push({start:n.start,end:t.length,kind:"code"}),o}function Tl(t){const o=t.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(n=>n.trim());return o.length>=2&&o.every(n=>/^:?-{3,}:?$/.test(n))}function _l(t,l){const o=[];for(let n=0;n=2&&(o.push({start:t[n].start,end:t[s].end,kind:"list"}),n=s)}return o}function Ul(t){return t.sort((l,o)=>l.start-o.start||l.end-o.end).reduce((l,o)=>{const n=l[l.length-1];return n&&o.starto.startl&&s.start>=o?s.start:s.end:t}function Fl(t,l,o,n){const s={...t},d=ge(n,s.start);d&&l<=d.start&&(s.start=d.start);const r=ge(n,s.end);return r&&o>=r.end&&(s.end=r.end),s}function Dl(t,l,o){const n=[];return[` `,` `,"。","!","?",";",".","!","?",";"].forEach(d=>{const r=t.lastIndexOf(d,l-d.length),S=r===-1?-1:r+d.length;S>=o&&S<=l&&n.push(S)}),n.length?Math.max(...n):null}function ql(t,l,o,n){const s=t.slice(l,o),d=/^(?:#{1,6}\s+|第[一二三四五六七八九十百]+[章节篇部分]|\d+(?:\.\d+)*[、.\s])/gm;let r=null,S;for(;S=d.exec(s);){const u=l+S.index;u>=n&&(r=u)}return r}function zl(t,l,o,n,s){const d=(s==null?void 0:s.chunkMethod)??"semantic";if(d==="fixed")return o;if(d==="custom"){const r=Cl(s==null?void 0:s.customDelimiter);if(!r)return o;const S=t.lastIndexOf(r,o-r.length),u=S===-1?-1:S+r.length;return u>=n?u:o}if(d==="heading"){const r=ql(t,l,o,n);if(r!==null)return r}return Dl(t,o,n)??o}function Nl(t,l){const o=ve(l==null?void 0:l.chunkSize,wl,1)*2,n=Math.min(o,ve(l==null?void 0:l.minChunkSize,$l,1)*2),s=ve(l==null?void 0:l.chunkOverlap,xl,0)*2,d=Ll(t,l),r=[];let S=0;for(;S=t.length)break;const a=Math.min(t.length,u+o),h=Math.min(a,u+n);let c=a===t.length?a:zl(t,u,a,h,l);c=Rl(c,u,h,d),c<=u&&(c=Math.min(t.length,u+o));let p=Ol(t,u,c);if(p=Fl(p,u,c,d),c=t.length;if(i&&p.end-p.startu?b:p.end}return r}function De(t,l){if(!t.length)return null;let o=0,n=t.length-1,s=0;for(;o<=n;){const d=Math.floor((o+n)/2);t[d].start<=l?(s=d,o=d+1):n=d-1}return t[s].number}function Al(t,l,o,n,s){const d=t.slice(o.start,o.end);return{id:`preview-${n}-${s+1}`,sourceFileId:n,originalContent:d,editedContent:d,sourceStart:o.start,sourceEnd:o.end,sourceStartLine:De(l,o.start),sourceEndLine:De(l,Math.max(o.start,o.end-1)),tokenCount:Math.max(1,Math.ceil(d.length/2)),status:"original"}}function Bl(t,l,o="default-source",n){const s=Ee(t);if(l==="unstructured")return Nl(t,n).map((u,a)=>Al(t,s,u,o,a));const d=s.filter(u=>u.content.trim()),r=l==="structured"?1:3,S=[];for(let u=0;u{if(l!=null&&l.qualityFilterEnabled&&l.filterLowQuality&&(s.status==="invalid"||!s.editedContent.trim()))return[];const[r="",...S]=s.editedContent.split(` `),u=S.join(` `).trim()||s.editedContent.trim(),a=r.replace(/^问[::]\s*/,"").trim()||`数据条目 ${d+1}`;return Array.from({length:o},(h,c)=>{const p=l!=null&&l.semanticEnrichment?`${jl[c]}${a}`:c===0?a:`${a}(问法 ${c+1})`;return{id:o===1?`result-${d+1}`:`result-${d+1}-${c+1}`,instruction:p,input:"",output:u,originalInstruction:p,originalInput:"",originalOutput:u,status:"valid"}})});return l!=null&&l.qualityFilterEnabled?n.filter(s=>!(l.filterLowQuality&&(!s.instruction.trim()||!s.output.trim())||l.filterShortContent&&s.output.trim().lengthEe(o.sourceText)),h=U(()=>o.items.find(m=>m.id===o.selectedId)??o.items[0]),c=U(()=>o.items.find(m=>m.id===S.value)),p=U(()=>o.items.filter((m,I)=>!d.value.trim()||m.editedContent.toLowerCase().includes(d.value.trim().toLowerCase())||String(I+1).includes(d.value.trim()))),i=U(()=>{const m=(r.value-1)*me;return p.value.slice(m,m+me)});function P(m,I){const T=h.value;return!T||T.sourceStart==null||T.sourceEnd==null?!1:I>=T.sourceStart&&m<=T.sourceEnd}function $(m){n("update:selectedId",m)}function b(m){$(m.id),S.value=m.id,u.value=m.editedContent}function x(){S.value=null,u.value=""}function O(){c.value&&(n("update:item-content",c.value.id,u.value),x())}function f(m){$(m.id),n("remove:item",m.id)}function R(){x()}te(d,()=>{r.value=1,x()}),te(()=>o.selectedFileId,x),te(h,async m=>{var j,K;if(!m)return;const I=p.value.findIndex(N=>N.id===m.id);if(I>=0&&(r.value=Math.floor(I/me)+1),m.sourceStart==null)return;await Te();const T=((j=s.value)==null?void 0:j.querySelector(`[data-source-start="${m.sourceStart}"]`))??((K=s.value)==null?void 0:K.querySelector(".source-line.is-highlighted"));T==null||T.scrollIntoView({block:"center",behavior:"smooth"})},{immediate:!0});function F(m){return o.items.findIndex(I=>I.id===m.id)+1}function W(m){return m.sourceStartLine==null||m.sourceEndLine==null?"手动新增,无源文件定位":m.sourceStartLine===m.sourceEndLine?`来源:第 ${m.sourceStartLine} 行`:`来源:第 ${m.sourceStartLine}–${m.sourceEndLine} 行`}return(m,I)=>{const T=we,j=be,K=de,N=ye,ie=Be;return g(),w("section",Ql,[e("div",Jl,[e("div",Hl,[I[4]||(I[4]=e("span",null,"当前文件",-1)),k(j,{"model-value":t.selectedFileId,filterable:"",placeholder:"选择文件","aria-label":"选择当前预览文件","onUpdate:modelValue":I[0]||(I[0]=_=>n("update:selectedFileId",_))},{default:M(()=>[(g(!0),w(B,null,Z(t.files,_=>(g(),z(T,{key:_.id,label:_.name,value:_.id},{default:M(()=>[e("div",Kl,[e("strong",{title:_.name},C(_.name),9,Zl),e("span",null,C(_.count.toLocaleString())+" "+C(t.processType==="unstructured"?"个切片":"条记录"),1),_.modifiedCount?(g(),w("em",Wl,C(_.modifiedCount)+" 处已修改",1)):D("",!0)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["model-value"])]),e("span",Xl,C(t.files.length)+" 个文件 · 当前文件 "+C(t.items.length.toLocaleString())+" "+C(t.processType==="unstructured"?"个切片":"条记录"),1)]),e("div",Yl,[e("div",es,[e("div",ts,[e("div",null,[e("strong",null,"源文件 · "+C(t.fileName),1)])]),e("div",{ref_key:"sourceViewerRef",ref:s,class:"source-viewer",tabindex:"0","aria-label":"源文件内容"},[(g(!0),w(B,null,Z(a.value,_=>(g(),w("div",{key:_.number,class:J(["source-line",{"is-highlighted":P(_.start,_.end)}]),"data-source-start":_.start},[e("span",ls,C(_.number),1),e("span",ss,C(_.content||" "),1)],10,ns))),128))],512)]),e("div",os,[e("div",as,[e("strong",null,C(t.processType==="unstructured"?"切片内容":"记录内容"),1),e("span",null,"共 "+C(t.items.length.toLocaleString())+" 条",1)]),c.value?(g(),w("div",vs,[e("div",fs,[e("div",null,[e("strong",null,C(t.processType==="unstructured"?"切片":"记录")+" #"+C(String(F(c.value)).padStart(3,"0"))+" 正文",1),e("small",null,C(W(c.value)),1)])]),k(K,{modelValue:u.value,"onUpdate:modelValue":I[3]||(I[3]=_=>u.value=_),type:"textarea",rows:7,resize:"none"},null,8,["modelValue"]),e("div",gs,[e("div",null,[k(N,{onClick:x},{default:M(()=>[...I[8]||(I[8]=[L("取消",-1)])]),_:1}),k(N,{type:"primary",onClick:O},{default:M(()=>[...I[9]||(I[9]=[L("保存修改",-1)])]),_:1})])])])):(g(),w(B,{key:0},[e("div",is,[k(K,{modelValue:d.value,"onUpdate:modelValue":I[1]||(I[1]=_=>d.value=_),clearable:"",placeholder:"搜索编号或内容",size:"small"},{prefix:M(()=>[...I[5]||(I[5]=[e("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"])]),e("div",us,[(g(!0),w(B,null,Z(i.value,_=>{var H;return g(),w("div",{key:_.id,class:J(["preview-item",{"is-active":_.id===((H=h.value)==null?void 0:H.id)}]),role:"button",tabindex:"0",onClick:ue=>$(_.id),onKeydown:[Re(ue=>$(_.id),["enter"]),Re(Me(ue=>$(_.id),["prevent"]),["space"])]},[e("span",ds,C(t.processType==="unstructured"?"切片":"记录")+" #"+C(String(F(_)).padStart(3,"0")),1),e("span",cs,C(W(_)),1),e("span",ps,[k(N,{link:"","aria-label":"编辑切片",title:"编辑",onClick:Me(ue=>b(_),["stop"])},{default:M(()=>[...I[6]||(I[6]=[e("i",{class:"fa fa-pencil"},null,-1)])]),_:1},8,["onClick"]),k(N,{link:"",type:"danger","aria-label":"删除切片",title:"删除",onClick:Me(ue=>f(_),["stop"])},{default:M(()=>[...I[7]||(I[7]=[e("i",{class:"fa fa-trash-o"},null,-1)])]),_:1},8,["onClick"])])],42,rs)}),128)),p.value.length?D("",!0):(g(),w("div",ms,"没有符合条件的内容"))]),p.value.length>me?(g(),z(ie,{key:0,"current-page":r.value,"onUpdate:currentPage":I[2]||(I[2]=_=>r.value=_),"page-size":me,total:p.value.length,"pager-count":5,small:"",background:"",layout:"prev, pager, next",class:"preview-pagination",onCurrentChange:R},null,8,["current-page","total"])):D("",!0)],64))])])])}}}),ks=Y(ys,[["__scopeId","data-v-f1d613ac"]]),hs={class:"generation-step"},Ss={class:"generation-layout"},bs={class:"summary-panel"},ws={class:"run-icon"},xs={key:0,class:"fa fa-check"},$s={key:1,class:"fa fa-exclamation"},Os={key:2,class:"fa fa-cog fa-spin"},Cs={key:3,class:"fa fa-play"},Ms=X({__name:"GenerationStep",props:{taskName:{},processType:{},fileName:{},previewCount:{},modifiedCount:{},generation:{}},emits:["stop","retry"],setup(t,{emit:l}){const o=l;return(n,s)=>{const d=zt,r=ye;return g(),w("section",hs,[e("div",Ss,[e("div",bs,[s[7]||(s[7]=e("div",{class:"panel-heading"},[e("strong",null,"任务摘要"),e("span",null,"已完成预览确认")],-1)),e("dl",null,[e("div",null,[s[2]||(s[2]=e("dt",null,"任务名称",-1)),e("dd",null,C(t.taskName),1)]),e("div",null,[s[3]||(s[3]=e("dt",null,"数据类型",-1)),e("dd",null,C(t.processType==="unstructured"?"非结构化数据":t.processType==="external"?"外来数据源拉取":"结构化数据"),1)]),e("div",null,[s[4]||(s[4]=e("dt",null,"源文件",-1)),e("dd",null,C(t.fileName),1)]),e("div",null,[s[5]||(s[5]=e("dt",null,"预览条目",-1)),e("dd",null,C(t.previewCount.toLocaleString())+" 条",1)]),e("div",null,[s[6]||(s[6]=e("dt",null,"已修改",-1)),e("dd",null,C(t.modifiedCount.toLocaleString())+" 条",1)])])]),e("div",{class:J(["run-panel",`is-${t.generation.status}`])},[e("div",ws,[t.generation.status==="success"?(g(),w("i",xs)):t.generation.status==="failed"?(g(),w("i",$s)):t.generation.status==="running"?(g(),w("i",Os)):(g(),w("i",Cs))]),e("h3",null,C(t.generation.status==="idle"?"准备开始处理":t.generation.status==="running"?"正在生成数据":t.generation.status==="success"?"数据生成完成":"生成已停止"),1),e("p",null,C(t.generation.message),1),t.generation.status!=="idle"?(g(),z(d,{key:0,percentage:t.generation.progress,"stroke-width":10,status:t.generation.status==="success"?"success":void 0},null,8,["percentage","status"])):D("",!0),s[10]||(s[10]=e("div",{class:"run-meta"},[e("span",null,"解析源数据"),e("span",null,"应用预览修改"),e("span",null,"生成标准结果")],-1)),t.generation.status==="running"?(g(),z(r,{key:1,plain:"",type:"warning",onClick:s[0]||(s[0]=S=>o("stop"))},{default:M(()=>[...s[8]||(s[8]=[L(" 停止生成 ",-1)])]),_:1})):D("",!0),t.generation.status==="failed"?(g(),z(r,{key:2,plain:"",type:"primary",onClick:s[1]||(s[1]=S=>o("retry"))},{default:M(()=>[...s[9]||(s[9]=[L(" 重新生成 ",-1)])]),_:1})):D("",!0)],2)])])}}}),Is=Y(Ms,[["__scopeId","data-v-94e8b875"]]),Ts={class:"result-step"},_s={class:"result-workspace"},Es={class:"result-list-pane"},Ps={class:"pane-header"},Us={class:"result-toolbar"},Ls={class:"result-list"},Vs=["onClick"],Rs={class:"result-index"},Fs={class:"result-copy"},Ds={key:0,class:"result-editor-pane"},qs={class:"pane-header"},zs={key:0,class:"modified-label"},Ns={class:"field-editor"},As={class:"field-editor"},Bs={class:"field-editor"},js={key:0,class:"validation-error"},Gs={key:1,class:"validation-success"},Qs={class:"editor-pagination"},Js=X({__name:"ResultEditorStep",props:{items:{},selectedId:{}},emits:["update:selectedId","update:field","restore:item"],setup(t,{emit:l}){const o=t,n=l,s=V(""),d=V(!1),r=U(()=>o.items.find(h=>h.id===o.selectedId)??o.items[0]),S=U(()=>o.items.findIndex(h=>{var c;return h.id===((c=r.value)==null?void 0:c.id)})),u=U(()=>o.items.filter((h,c)=>{const p=s.value.trim().toLowerCase();return(!p||h.instruction.toLowerCase().includes(p)||h.output.toLowerCase().includes(p)||String(c+1).includes(p))&&(!d.value||h.status==="invalid")}));function a(h){if(!o.items.length)return;const c=Math.min(Math.max(S.value+h,0),o.items.length-1);n("update:selectedId",o.items[c].id)}return(h,c)=>{const p=de,i=Se,P=ye;return g(),w("section",Ts,[e("div",_s,[e("aside",Es,[e("div",Ps,[c[8]||(c[8]=e("strong",null,"生成结果",-1)),e("span",null,"共 "+C(t.items.length)+" 条",1)]),e("div",Us,[k(p,{modelValue:s.value,"onUpdate:modelValue":c[0]||(c[0]=$=>s.value=$),clearable:"",size:"small",placeholder:"搜索结果"},{prefix:M(()=>[...c[9]||(c[9]=[e("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue"]),k(i,{modelValue:d.value,"onUpdate:modelValue":c[1]||(c[1]=$=>d.value=$)},{default:M(()=>[...c[10]||(c[10]=[L("仅看错误",-1)])]),_:1},8,["modelValue"])]),e("div",Ls,[(g(!0),w(B,null,Z(u.value,$=>{var b;return g(),w("button",{key:$.id,type:"button",class:J(["result-item",{"is-active":$.id===((b=r.value)==null?void 0:b.id)}]),onClick:x=>n("update:selectedId",$.id)},[e("span",Rs,"#"+C(String(t.items.findIndex(x=>x.id===$.id)+1).padStart(3,"0")),1),e("span",Fs,[e("strong",null,C($.instruction||"未填写指令"),1),e("small",null,C($.output||"未填写输出"),1)]),e("i",{class:J(["fa",$.status==="invalid"?"fa-exclamation-circle is-error":"fa-check-circle is-valid"])},null,2)],10,Vs)}),128))])]),r.value?(g(),w("div",Ds,[e("div",qs,[e("div",null,[e("strong",null,"结果 #"+C(String(S.value+1).padStart(3,"0")),1),r.value.status==="modified"?(g(),w("span",zs,"已修改")):D("",!0)]),k(P,{link:"",onClick:c[2]||(c[2]=$=>n("restore:item",r.value.id))},{default:M(()=>[...c[11]||(c[11]=[e("i",{class:"fa fa-undo"},null,-1),L(" 恢复生成结果",-1)])]),_:1})]),e("div",Ns,[c[12]||(c[12]=e("label",null,[L("Instruction "),e("em",null,"必填")],-1)),k(p,{"model-value":r.value.instruction,type:"textarea",rows:3,"onUpdate:modelValue":c[3]||(c[3]=$=>n("update:field",r.value.id,"instruction",$))},null,8,["model-value"])]),e("div",As,[c[13]||(c[13]=e("label",null,[L("Input "),e("span",null,"选填")],-1)),k(p,{"model-value":r.value.input,type:"textarea",rows:2,"onUpdate:modelValue":c[4]||(c[4]=$=>n("update:field",r.value.id,"input",$))},null,8,["model-value"])]),e("div",Bs,[c[14]||(c[14]=e("label",null,[L("Output "),e("em",null,"必填")],-1)),k(p,{"model-value":r.value.output,type:"textarea",rows:7,"onUpdate:modelValue":c[5]||(c[5]=$=>n("update:field",r.value.id,"output",$))},null,8,["model-value"])]),r.value.error?(g(),w("div",js,[c[15]||(c[15]=e("i",{class:"fa fa-exclamation-circle"},null,-1)),L(" "+C(r.value.error),1)])):(g(),w("div",Gs,[...c[16]||(c[16]=[e("i",{class:"fa fa-check-circle"},null,-1),L(" 字段校验通过 ",-1)])])),e("div",Qs,[k(P,{disabled:S.value<=0,onClick:c[6]||(c[6]=$=>a(-1))},{default:M(()=>[...c[17]||(c[17]=[L("上一条",-1)])]),_:1},8,["disabled"]),e("span",null,C(S.value+1)+" / "+C(t.items.length),1),k(P,{disabled:S.value>=t.items.length-1,onClick:c[7]||(c[7]=$=>a(1))},{default:M(()=>[...c[18]||(c[18]=[L("下一条",-1)])]),_:1},8,["disabled"])])])):D("",!0)])])}}}),Hs=Y(Js,[["__scopeId","data-v-330f8783"]]),Ge="你是一名专业的数据生成助手。请根据输入内容生成准确、完整、可直接用于模型训练的问答数据。仅输出符合目标格式的内容,答案应事实清晰、语言自然,不要添加分析过程、说明或无关内容。";function Ks(){return{preprocessOptions:["clean_invalid","detect_structure","deduplicate","normalize_format"],semanticEnrichment:!1,qaPairsPerRow:1,datasetSplit:{train:80,validation:10,test:10},generationModelId:"",generationPrompt:Ge,temperature:.7,maxTokens:1024,jsonMode:!1,qualityFilterEnabled:!1,filterLowQuality:!0,filterShortContent:!0,minOutputLength:20}}function Zs(){return{preprocessOptions:["clean_invalid_content","detect_document_structure","merge_short_content","filter_low_quality","deduplicate_content","preserve_context"],chunkMethod:"semantic",chunkSize:800,chunkOverlap:100,minChunkSize:100,customDelimiter:"",preserveTables:!0,preserveCodeBlocks:!0,preserveLists:!0,semanticEnrichment:!1,qaPairsPerChunk:1,datasetSplit:{train:80,validation:10,test:10},generationModelId:"",generationPrompt:Ge,temperature:.7,maxTokens:1024,jsonMode:!1,qualityFilterEnabled:!1,filterLowQuality:!0,filterShortContent:!0,minOutputLength:20}}const he="yg-data-process-create-draft",Ws=6;function qe(t){return{type:typeof t.type=="string"?t.type:"mysql",url:typeof t.url=="string"?t.url:"",authMode:typeof t.authMode=="string"?t.authMode:"none",username:typeof t.username=="string"?t.username:"",limit:Number.isFinite(t.limit)?Number(t.limit):1e3}}function Xs(t){return!!(t&&typeof t=="object")}function Ys(t){function l(){return{schemaVersion:Ws,currentStepId:t.currentStepId.value,task:{...t.task},processType:t.processType.value,structuredOptions:{...t.structuredOptions.value,preprocessOptions:[...t.structuredOptions.value.preprocessOptions],datasetSplit:{...t.structuredOptions.value.datasetSplit}},unstructuredOptions:{...t.unstructuredOptions.value,preprocessOptions:[...t.unstructuredOptions.value.preprocessOptions],datasetSplit:{...t.unstructuredOptions.value.datasetSplit}},externalSource:qe(t.externalSource)}}function o(d){try{localStorage.setItem(he,JSON.stringify(l()))}catch{d&&A.warning("草稿保存失败,请检查浏览器存储空间")}}function n(){t.restoringDraft.value||o(!0)}function s(){var d,r;try{const S=localStorage.getItem(he);if(!S)return;const u=JSON.parse(S);if(!Xs(u))return;t.restoringDraft.value=!0,t.goToStep("create"),t.task.name=((d=u.task)==null?void 0:d.name)||"",t.task.description=((r=u.task)==null?void 0:r.description)||"",t.processType.value=u.processType==="unstructured"||u.processType==="external"?u.processType:"structured",u.structuredOptions&&(t.structuredOptions.value={...t.structuredOptions.value,...u.structuredOptions,preprocessOptions:Array.isArray(u.structuredOptions.preprocessOptions)?u.structuredOptions.preprocessOptions:t.structuredOptions.value.preprocessOptions,datasetSplit:{...t.structuredOptions.value.datasetSplit,...u.structuredOptions.datasetSplit}}),u.unstructuredOptions&&(t.unstructuredOptions.value={...t.unstructuredOptions.value,...u.unstructuredOptions,preprocessOptions:Array.isArray(u.unstructuredOptions.preprocessOptions)?u.unstructuredOptions.preprocessOptions:t.unstructuredOptions.value.preprocessOptions,datasetSplit:{...t.unstructuredOptions.value.datasetSplit,...u.unstructuredOptions.datasetSplit}}),Object.assign(t.externalSource,qe(u.externalSource||{}),{password:"",token:""}),t.dirty.value=!1,Te(()=>{t.restoringDraft.value=!1,o(!1)}),A.info("已恢复上次的任务配置,请重新上传或拉取源数据")}catch{localStorage.removeItem(he)}}return{draftSnapshot:l,persistDraft:n,restoreDraft:s}}function eo(t){const l=V([]),o=V(null),n=Ie({status:"idle",progress:0,message:"确认摘要后即可开始生成,过程中可查看实时进度。"});let s=null;function d(){s&&clearInterval(s),s=null}function r(){d(),n.status="idle",n.progress=0,n.message="确认摘要后即可开始生成,过程中可查看实时进度。",l.value=[],o.value=null}function S(){d(),n.status="running",n.progress=0,n.message="正在应用预览修改并生成标准化结果,请稍候。",s=setInterval(()=>{var p;n.progress=Math.min(100,n.progress+8),!(n.progress<100)&&(d(),n.status="success",l.value=Gl(t.previewItems.value,t.processType.value==="structured"?t.structuredOptions.value:t.processType.value==="unstructured"?t.unstructuredOptions.value:void 0),n.message=`已完成 ${l.value.length.toLocaleString()} 条数据处理,可进入结果页检查。`,o.value=((p=l.value[0])==null?void 0:p.id)??null,t.dirty.value=!0,A.success("数据处理完成"))},180)}function u(){d(),n.status="failed",n.message="任务已停止,预览修改仍然保留,可以重新生成。"}function a(p,i,P){const $=l.value.find(O=>O.id===p);if(!$)return;$[i]=P;const b=$.instruction.trim()&&$.output.trim();$.error=b?void 0:"Instruction 和 Output 不能为空";const x=$.instruction!==$.originalInstruction||$.input!==$.originalInput||$.output!==$.originalOutput;$.status=$.error?"invalid":x?"modified":"valid",t.dirty.value=!0}function h(p){const i=l.value.find(P=>P.id===p);i&&(i.instruction=i.originalInstruction,i.input=i.originalInput,i.output=i.originalOutput,i.error=void 0,i.status="valid",t.dirty.value=!0)}function c(){let p=null;for(const i of l.value)(!i.instruction.trim()||!i.output.trim())&&(i.error="Instruction 和 Output 不能为空",i.status="invalid",p??(p=i.id));return p&&(o.value=p),p==null}return{generation:n,results:l,selectedResultId:o,resetDownstream:r,restoreResult:h,startGeneration:S,stopGeneration:u,stopGenerationTimer:d,updateResultField:a,validateResults:c}}const to={class:"create-wizard-layout"},no={class:"wizard-main"},lo={class:"wizard-main-inner"},so={class:"wizard-steps-container"},oo={class:"custom-wizard-steps"},ao=["aria-current"],io={class:"step-node"},uo={class:"step-icon"},ro={key:0,class:"fa fa-check"},co={key:1},po={class:"step-text"},mo={class:"step-title"},vo={class:"wizard-content"},fo={class:"wizard-footer"},go={class:"footer-left"},yo={class:"footer-right"},ko="document-chunk-v2",ho=X({__name:"DataProcessCreateView",setup(t){const l=Vt(),o=Nt(),{list:n}=_t(o),s=U(()=>n.value.filter(y=>y.type==="LLM")),d=V(),r=V(),S=V(),u=[{id:"create",title:"创建任务",desc:"填写任务信息与处理配置"},{id:"model",title:"大模型选择",desc:"选择生成模型并设置输出要求"},{id:"upload",title:"上传文件",desc:"上传或接入待处理的源数据"},{id:"preview",title:"数据预览",desc:"核对源文件与预览内容"},{id:"generate",title:"开始生成",desc:"确认摘要并启动处理"},{id:"results",title:"结果编辑与保存",desc:"检查、修改并保存结果"}],a=V(0),h=U(()=>{var y;return((y=u[a.value])==null?void 0:y.id)??"create"}),c=Ie({name:"",description:""}),p=V("structured"),i=V(Ks()),P=V(Zs()),$=U(()=>p.value==="unstructured"?P.value:i.value),b=V([]),x=Ie({type:"mysql",url:"",authMode:"none",username:"",password:"",token:"",limit:1e3}),O=V(!1),f=V(!1);let R=null,F=null;const W=U(()=>b.value.map(y=>y.name).join(", ")),m=V(""),I=V([]),T=V(null),j=V(null),K=V({}),N=V(!1),ie=V(!1);let _=!1;const{generation:H,results:ue,selectedResultId:xe,resetDownstream:le,restoreResult:Qe,startGeneration:Pe,stopGeneration:Je,stopGenerationTimer:He,updateResultField:Ke,validateResults:Ze}=eo({previewItems:I,processType:p,structuredOptions:i,unstructuredOptions:P,dirty:N}),We=U(()=>I.value.filter(y=>y.status!=="original").length),Ue=U(()=>{const y=new Map;for(const v of I.value){const E=y.get(v.sourceFileId)||[];E.push(v),y.set(v.sourceFileId,E)}return y}),Le=U(()=>b.value.find(y=>String(y.uid)===T.value)),ce=U(()=>Ue.value.get(T.value||"")||[]),Xe=U(()=>{var y;return((y=Le.value)==null?void 0:y.content)??""}),Ye=U(()=>b.value.map(y=>{const v=Ue.value.get(String(y.uid))||[];return{id:String(y.uid),name:y.name,count:v.length,modifiedCount:v.filter(E=>E.status!=="original").length}})),et=U(()=>h.value==="create"?"继续:选择大模型":h.value==="model"?"继续:上传文件":h.value==="upload"?"继续:数据预览":h.value==="preview"?"确认预览并继续":h.value==="results"?"保存任务":H.status==="running"?"正在生成":H.status==="success"?"查看生成结果":H.status==="failed"?"重新生成":"开始生成"),tt=U(()=>h.value==="results"?"fa-check":h.value==="generate"&&H.status!=="success"?"fa-play":"fa-arrow-right"),nt=U(()=>a.value>0?u[a.value-1].title:"");function re(y){const v=u.findIndex(E=>E.id===y);v>=0&&(a.value=v)}function lt(y){if(p.value==="unstructured"){P.value={...P.value,...y};return}i.value={...i.value,...y}}const{persistDraft:st,restoreDraft:ot}=Ys({currentStepId:h,task:c,processType:p,structuredOptions:i,unstructuredOptions:P,externalSource:x,restoringDraft:ie,dirty:N,goToStep:re});function at(){if(p.value==="structured")return{preprocessOptions:i.value.preprocessOptions};if(p.value==="unstructured"){const{preprocessOptions:y,chunkMethod:v,chunkSize:E,chunkOverlap:G,minChunkSize:q,customDelimiter:Q,preserveTables:oe,preserveCodeBlocks:se,preserveLists:ee}=P.value;return{preprocessOptions:y,chunkMethod:v,chunkSize:E,chunkOverlap:G,minChunkSize:q,customDelimiter:v==="custom"?Q:"",preserveTables:oe,preserveCodeBlocks:se,preserveLists:ee}}return null}function it(){if(p.value==="structured"){const{semanticEnrichment:y,qaPairsPerRow:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}=i.value;return{semanticEnrichment:y,qaPairsPerRow:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}}if(p.value==="unstructured"){const{semanticEnrichment:y,qaPairsPerChunk:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}=P.value;return{semanticEnrichment:y,qaPairsPerChunk:v,datasetSplit:E,generationModelId:G,generationPrompt:q,temperature:Q,maxTokens:oe,jsonMode:se,qualityFilterEnabled:ee,filterLowQuality:$e,filterShortContent:Oe,minOutputLength:Ce}}return null}const ut=U(()=>JSON.stringify(it()));function rt(){const y=b.value.map(v=>`${v.uid}:${v.name}:${v.size}:${v.count}`).join("|");return`${ko}:${p.value}:${JSON.stringify(at())}:${y}`}te([()=>c.name,()=>c.description,p,i,P,x],()=>{ie.value||(N.value=!0)},{deep:!0}),te(p,(y,v)=>{ie.value||y===v||b.value.length===0||(yt(),A.info("处理类型已变更,请重新上传或拉取匹配的源数据"))}),te(ut,(y,v)=>{ie.value||y===v||le()}),te([c,p,i,P,x],st,{deep:!0});function dt(){var y;(y=document.querySelector(".layout-content"))==null||y.scrollTo({top:0,behavior:"smooth"})}te(a,()=>Te(dt));async function ct(y){var se;const v=y.raw;if(!v)return;if(v.size>200*1024*1024){A.warning("单文件不能超过 200MB");return}const E=((se=v.name.split(".").pop())==null?void 0:se.toLowerCase())??"",G=["txt","md","json","jsonl","csv"];let q="";if(G.includes(E))try{q=await v.text()}catch{q=""}const Q=q.trim()?q:pe,oe=Q.split(` `).filter(ee=>ee.trim()).length;b.value.some(ee=>ee.name===v.name&&ee.size===v.size)||b.value.push({uid:y.uid||Date.now()+Math.random(),name:v.name,size:v.size,count:oe,content:Q}),N.value=!0}function pt(){b.value=[{uid:"sample-1",name:"finance_qa.jsonl",size:128*1024*1024,count:pe.split(` `).filter(y=>y.trim()).length,content:pe}],N.value=!0}function mt(y){Object.assign(x,y),f.value=!1}function vt(){if(!x.url.trim()){A.warning("请先填写数据源地址");return}R&&clearTimeout(R),O.value=!0,R=setTimeout(()=>{R=null,O.value=!1,f.value=!0,A.success("数据源连接测试成功")},1500)}function ft(){if(!x.url.trim()){A.warning("请先填写数据源地址");return}F&&clearTimeout(F),O.value=!0,F=setTimeout(()=>{F=null,O.value=!1,f.value=!0;const y=x.type.toUpperCase(),v=`external-${Date.now()}`;b.value.push({uid:v,name:`${y} 拉取数据 ${new Date().toLocaleString("zh-CN")}`,size:Math.min(x.limit,5e3)*64,count:Math.min(x.limit,pe.split(` `).filter(E=>E.trim()).length),content:pe}),N.value=!0,A.success(`已成功拉取 ${b.value[b.value.length-1].count.toLocaleString()} 条数据`)},2e3)}function gt(y){const v=b.value.findIndex(E=>E.uid===y);v>-1&&(b.value.splice(v,1),m.value="",I.value=[],j.value=null,le(),N.value=!0)}function yt(){b.value=[],m.value="",I.value=[],T.value=null,j.value=null,K.value={},f.value=!1,le()}async function kt(){var v;await((v=d.value)==null?void 0:v.validate())&&re("model")}async function ht(){var v;await((v=r.value)==null?void 0:v.validate())&&re("upload")}function St(){var v,E;if(b.value.length===0){A.warning(p.value==="external"?"请先拉取至少一个数据源":"请上传至少一个源数据文件");return}const y=rt();y!==m.value&&(I.value=b.value.flatMap(G=>Bl(G.content,p.value,String(G.uid),p.value==="unstructured"?P.value:void 0)),T.value=String(((v=b.value[0])==null?void 0:v.uid)??"")||null,j.value=((E=ce.value[0])==null?void 0:E.id)??null,K.value=j.value&&T.value?{[T.value]:j.value}:{},m.value=y,le()),re("preview")}function bt(y){var v;T.value&&j.value&&(K.value[T.value]=j.value),T.value=y,j.value=K.value[y]||((v=ce.value[0])==null?void 0:v.id)||null}function Ve(y){j.value=y,T.value&&(K.value[T.value]=y)}function wt(y,v){const E=I.value.find(G=>G.id===y);E&&(E.editedContent=v,E.tokenCount=Math.max(1,Math.ceil(v.length/2)),E.status=v===E.originalContent?"original":E.sourceStart==null?"manual":"modified",le(),N.value=!0)}function xt(y){const v=I.value.find(E=>E.id===y);!v||v.sourceStart==null||(v.editedContent=v.originalContent,v.tokenCount=Math.max(1,Math.ceil(v.originalContent.length/2)),v.status="original",le(),N.value=!0)}function $t(){if(!T.value)return;const y=`manual-${Date.now()}`;I.value.push({id:y,sourceFileId:T.value,originalContent:"",editedContent:"",sourceStart:null,sourceEnd:null,sourceStartLine:null,sourceEndLine:null,tokenCount:1,status:"manual"}),Ve(y),le(),N.value=!0}async function Ot(y){var G,q;if(!await((G=S.value)==null?void 0:G.open({title:"删除预览内容?",message:"删除只影响本次处理,不会修改源文件。删除后可重新从源文件生成预览。",confirmText:"删除",cancelText:"取消",tone:"danger"})))return;const E=I.value.findIndex(Q=>Q.id===y);E<0||(I.value.splice(E,1),j.value=((q=ce.value[Math.min(E,ce.value.length-1)])==null?void 0:q.id)??null,T.value&&j.value&&(K.value[T.value]=j.value),le(),N.value=!0)}async function Ct(){if(h.value==="create"){await kt();return}if(h.value==="model"){await ht();return}if(h.value==="upload"){St();return}if(h.value==="preview"){if(!I.value.length){A.warning("当前没有可生成的预览内容");return}re("generate");return}if(h.value==="generate"){H.status==="success"?re("results"):H.status!=="running"&&Pe();return}await It()}function Mt(){if(H.status==="running"){A.warning("请先停止当前生成任务");return}a.value>0&&(a.value-=1)}async function It(){if(!Ze()){A.warning("请先修正校验失败的结果");return}N.value=!1,localStorage.removeItem(he),_=!0,A.success("数据处理任务已保存"),await l.push("/data-process")}async function Tt(){var v;if(!N.value){_=!0,l.back();return}await((v=S.value)==null?void 0:v.open({title:"确认离开当前页面?",message:"当前存在未保存修改,离开后这些修改将不会保留。",confirmText:"放弃修改",cancelText:"继续编辑",tone:"danger"}))&&(_=!0,l.back())}return Et(async()=>{var v;if(_||!N.value)return!0;const y=await((v=S.value)==null?void 0:v.open({title:"确认离开当前页面?",message:"当前存在未保存修改,离开后这些修改将不会保留。",confirmText:"放弃修改",cancelText:"继续编辑",tone:"danger"}));return y&&(_=!0),!!y}),Pt(()=>{He(),R&&clearTimeout(R),F&&clearTimeout(F)}),Ut(()=>{ot(),o.load()}),(y,v)=>{var G;const E=ye;return g(),w(B,null,[e("div",to,[e("main",no,[e("div",lo,[e("div",so,[e("div",oo,[(g(),w(B,null,Z(u,(q,Q)=>(g(),w(B,{key:q.id},[Q!==0?(g(),w("div",{key:0,class:J(["step-connector",{"is-active":a.value>=Q}])},null,2)):D("",!0),e("div",{class:J(["step-item",{"is-active":a.value===Q,"is-completed":a.value>Q}]),"aria-current":a.value===Q?"step":void 0},[e("div",io,[e("div",uo,[a.value>Q?(g(),w("i",ro)):(g(),w("span",co,C(Q+1),1))]),e("div",po,[e("div",mo,C(q.title),1)])])],10,ao)],64))),64))])]),e("div",vo,[h.value==="create"?(g(),z(Kn,{key:0,ref_key:"taskSetupRef",ref:d,name:c.name,"onUpdate:name":v[0]||(v[0]=q=>c.name=q),description:c.description,"onUpdate:description":v[1]||(v[1]=q=>c.description=q),"process-type":p.value,"onUpdate:processType":v[2]||(v[2]=q=>p.value=q),"structured-options":i.value,"onUpdate:structuredOptions":v[3]||(v[3]=q=>i.value=q),"unstructured-options":P.value,"onUpdate:unstructuredOptions":v[4]||(v[4]=q=>P.value=q)},null,8,["name","description","process-type","structured-options","unstructured-options"])):h.value==="model"?(g(),z(el,{key:1,ref_key:"modelSelectionRef",ref:r,options:$.value,models:s.value,"onUpdate:options":lt},null,8,["options","models"])):h.value==="upload"?(g(),z(bl,{key:2,"process-type":p.value,"uploaded-files":b.value,"external-source":x,"external-pulling":O.value,"external-connected":f.value,"onUpdate:externalSource":mt,onFileChange:ct,onRemoveFile:gt,onUseSample:pt,onTestConnection:vt,onPullData:ft},null,8,["process-type","uploaded-files","external-source","external-pulling","external-connected"])):h.value==="preview"?(g(),z(ks,{key:3,"selected-id":j.value,"selected-file-id":T.value,"source-text":Xe.value,items:ce.value,"process-type":p.value,"file-name":((G=Le.value)==null?void 0:G.name)??"",files:Ye.value,"onUpdate:selectedId":Ve,"onUpdate:selectedFileId":bt,"onUpdate:itemContent":wt,"onRestore:item":xt,"onAdd:item":$t,"onRemove:item":Ot},null,8,["selected-id","selected-file-id","source-text","items","process-type","file-name","files"])):h.value==="generate"?(g(),z(Is,{key:4,"task-name":c.name,"process-type":p.value,"file-name":W.value,"preview-count":I.value.length,"modified-count":We.value,generation:ne(H),onStop:ne(Je),onRetry:ne(Pe)},null,8,["task-name","process-type","file-name","preview-count","modified-count","generation","onStop","onRetry"])):h.value==="results"?(g(),z(Hs,{key:5,"selected-id":ne(xe),"onUpdate:selectedId":v[5]||(v[5]=q=>Lt(xe)?xe.value=q:null),items:ne(ue),"onUpdate:field":ne(Ke),"onRestore:item":ne(Qe)},null,8,["selected-id","items","onUpdate:field","onRestore:item"])):D("",!0)])])]),e("footer",fo,[e("div",go,[a.value>0?(g(),z(E,{key:0,onClick:Mt},{default:M(()=>[v[6]||(v[6]=e("i",{class:"fa fa-arrow-left",style:{"margin-right":"6px"}},null,-1)),L(" 返回:"+C(nt.value),1)]),_:1})):(g(),z(E,{key:1,onClick:Tt},{default:M(()=>[...v[7]||(v[7]=[L("取消",-1)])]),_:1}))]),v[8]||(v[8]=e("div",{class:"footer-center"},null,-1)),e("div",yo,[k(E,{class:"wizard-primary-action",type:"primary",loading:ne(H).status==="running",disabled:h.value==="generate"&&ne(H).status==="running",onClick:Ct},{default:M(()=>[L(C(et.value)+" ",1),e("i",{class:J(["fa",tt.value]),style:{"margin-left":"6px"}},null,2)]),_:1},8,["loading","disabled"])])])]),k(Rt,{ref_key:"confirmDialogRef",ref:S},null,512)],64)}}}),ta=Y(ho,[["__scopeId","data-v-11176621"]]);export{ta as default};