3 lines
7.5 KiB
JavaScript
3 lines
7.5 KiB
JavaScript
import{E as H}from"./el-alert-GKLeF-ml.js";import{a as Q,E as W}from"./el-form-item-DFlzM9g_.js";import{E as X}from"./index-Bl2Fsjov.js";import{E as Y}from"./index-COtHB4lx.js";import{E as Z,b as ee}from"./el-radio-group-BiLi-iPp.js";import{E as te}from"./el-switch-DgzwIqYS.js";import{E as ae}from"./el-upload-BRvKDXy4.js";import{v as le}from"./directive-BNrYmpdY.js";import{d as oe,G as se,K as ne,e as U,w as l,y as f,j,z as ie,o as _,s as a,x as m,c as V,M as z,g as k,q as u,ad as ue,aa as b,A as g,v as re,ac as de}from"./index-DS73WiJW.js";import"./el-progress-CHMIHz3t.js";import{P as me}from"./PageCard-CXygDeSp.js";import{b as pe,u as A,c as F,e as ce}from"./dataset-DL0YrzrD.js";import{_ as fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-HiBZolW-.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./omit-BHigcQFy.js";import"./validator-B_WzUu_x.js";import"./el-card-DPafZG_Z.js";const _e={style:{width:"100%"}},ve={class:"file-info"},ye={class:"file-name"},ge={class:"file-size"},we={key:1,class:"record-count"},Ve=".json,.jsonl",ke=oe({__name:"DatasetCreateView",setup(be){const D=de(),N=re(),x=f(),E=f(!1),C=f(!1),w=j(()=>!!D.params.id),y=j(()=>D.params.id),t=ie({name:"",description:"",dataset_type:"train",storage:"local",minio_endpoint:"",minio_bucket:"",minio_access_key:"",minio_secret_key:"",minio_ssl:!1}),r=f([]),d=f(0),v=f(null),p=f(""),M={name:[{required:!0,message:"请输入数据集名称",trigger:"blur"},{max:20,message:"不超过 20 字符",trigger:"blur"}],description:[{max:50,message:"不超过 50 字符",trigger:"blur"}]};async function O(i){var o;const e=i.raw;if(!e)return;const n=(o=e.name.split(".").pop())==null?void 0:o.toLowerCase();if(n!=="json"&&n!=="jsonl"){g.warning("仅支持 JSON/JSONL 格式");return}if(e.size>200*1024*1024){g.warning("单文件不能超过 200MB");return}r.value=[e],await R(e)}async function R(i){try{const n=(await i.text()).trim().split(`
|
||
`).filter(Boolean);d.value=n.length;let o=0;for(const c of n)try{JSON.parse(c).instruction!==void 0&&o++}catch{}o>0&&o===n.length?(v.value=!0,p.value="符合 Alpaca 格式(含 instruction 字段)"):o>0?(v.value=!0,p.value=`部分符合 Alpaca 格式(${o}/${n.length})`):(v.value=!1,p.value="未检测到标准 Alpaca 格式(缺少 instruction 字段),仍可上传")}catch{d.value=0,v.value=null,p.value="文件解析失败"}}function I(){return Promise.resolve()}function K(){r.value=[],d.value=0,v.value=null,p.value=""}async function L(){if(y.value){E.value=!0;try{const i=await pe(y.value);Object.assign(t,{name:i.name||"",description:i.description||"",dataset_type:i.type==="eval"?"eval":"train",storage:i.storage_type||"local"}),d.value=i.count||0}catch{}finally{E.value=!1}}}async function h(){x.value&&await x.value.validate(async i=>{if(i){if(!w.value&&r.value.length===0){g.warning("请至少上传一个数据集文件");return}C.value=!0;try{const e={name:t.name,type:t.dataset_type,storage_type:t.storage,description:t.description,count:d.value};if(t.storage==="minio"&&(e.minio_config={endpoint:t.minio_endpoint,bucket:t.minio_bucket,access_key:t.minio_access_key,secret_key:t.minio_secret_key,ssl:t.minio_ssl}),w.value&&y.value)await A(y.value,e),r.value.length>0&&await F(y.value,r.value),g.success("更新成功");else{const n=await ce(e),o=(n==null?void 0:n.id)||n;r.value.length>0&&(await F(o,r.value),await A(o,{count:d.value})),g.success("上传成功")}N.push("/dataset")}catch{}finally{C.value=!1}}})}function J(){N.back()}return se(L),(i,e)=>{const n=X,o=Q,c=ee,S=Z,q=te,P=ae,B=Y,G=H,T=W,$=le;return ne((_(),U(me,{title:w.value?"编辑数据集":"上传数据集"},{default:l(()=>[a(T,{ref_key:"formRef",ref:x,model:t,rules:M,"label-width":"120px",style:{"max-width":"640px"}},{default:l(()=>[a(o,{label:"数据集名称",prop:"name"},{default:l(()=>[a(n,{modelValue:t.name,"onUpdate:modelValue":e[0]||(e[0]=s=>t.name=s),placeholder:"请输入数据集名称",maxlength:"20","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(o,{label:"数据集描述"},{default:l(()=>[a(n,{modelValue:t.description,"onUpdate:modelValue":e[1]||(e[1]=s=>t.description=s),type:"textarea",rows:2,maxlength:"50","show-word-limit":"",placeholder:"选填"},null,8,["modelValue"])]),_:1}),a(o,{label:"数据集类型"},{default:l(()=>[a(S,{modelValue:t.dataset_type,"onUpdate:modelValue":e[2]||(e[2]=s=>t.dataset_type=s)},{default:l(()=>[a(c,{value:"train"},{default:l(()=>[...e[9]||(e[9]=[m("训练集",-1)])]),_:1}),a(c,{value:"eval"},{default:l(()=>[...e[10]||(e[10]=[m("评测集",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(o,{label:"上传方式"},{default:l(()=>[a(S,{modelValue:t.storage,"onUpdate:modelValue":e[3]||(e[3]=s=>t.storage=s)},{default:l(()=>[a(c,{value:"local"},{default:l(()=>[...e[11]||(e[11]=[m("本地",-1)])]),_:1}),a(c,{value:"cloud"},{default:l(()=>[...e[12]||(e[12]=[m("云平台",-1)])]),_:1}),a(c,{value:"minio"},{default:l(()=>[...e[13]||(e[13]=[m("MinIO",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t.storage==="minio"?(_(),V(z,{key:0},[a(o,{label:"Endpoint"},{default:l(()=>[a(n,{modelValue:t.minio_endpoint,"onUpdate:modelValue":e[4]||(e[4]=s=>t.minio_endpoint=s),placeholder:"如:http://minio:9000"},null,8,["modelValue"])]),_:1}),a(o,{label:"Bucket"},{default:l(()=>[a(n,{modelValue:t.minio_bucket,"onUpdate:modelValue":e[5]||(e[5]=s=>t.minio_bucket=s),placeholder:"请输入 Bucket 名称"},null,8,["modelValue"])]),_:1}),a(o,{label:"Access Key"},{default:l(()=>[a(n,{modelValue:t.minio_access_key,"onUpdate:modelValue":e[6]||(e[6]=s=>t.minio_access_key=s),placeholder:"请输入 Access Key"},null,8,["modelValue"])]),_:1}),a(o,{label:"Secret Key"},{default:l(()=>[a(n,{modelValue:t.minio_secret_key,"onUpdate:modelValue":e[7]||(e[7]=s=>t.minio_secret_key=s),type:"password","show-password":"",placeholder:"请输入 Secret Key"},null,8,["modelValue"])]),_:1}),a(o,{label:"启用 SSL"},{default:l(()=>[a(q,{modelValue:t.minio_ssl,"onUpdate:modelValue":e[8]||(e[8]=s=>t.minio_ssl=s)},null,8,["modelValue"])]),_:1})],64)):k("",!0),t.storage==="local"?(_(),U(o,{key:1,label:"上传文件"},{default:l(()=>[u("div",_e,[a(P,{drag:"",accept:Ve,"auto-upload":!1,"show-file-list":!1,"http-request":I,"on-change":O},{tip:l(()=>[...e[14]||(e[14]=[u("div",{class:"el-upload__tip"},"仅支持 JSON/JSONL 格式,单文件不超过 200MB",-1)])]),default:l(()=>[e[15]||(e[15]=u("i",{class:"fa fa-cloud-upload",style:{"font-size":"32px",color:"#1890ff"}},null,-1)),e[16]||(e[16]=u("div",{class:"el-upload__text"},[m(" 将文件拖到此处,或"),u("em",null,"点击上传")],-1))]),_:1}),(_(!0),V(z,null,ue(r.value,s=>(_(),V("div",{key:s.name,class:"file-item"},[u("div",ve,[e[17]||(e[17]=u("i",{class:"fa fa-file-code-o"},null,-1)),u("span",ye,b(s.name),1),u("span",ge,b((s.size/1024).toFixed(1))+" KB",1)]),a(B,{link:"",type:"danger",size:"small",onClick:K},{default:l(()=>[...e[18]||(e[18]=[u("i",{class:"fa fa-times"},null,-1)])]),_:1})]))),128)),p.value?(_(),U(G,{key:0,title:p.value,type:v.value?"success":"warning",closable:!1,"show-icon":"",style:{"margin-top":"8px"}},null,8,["title","type"])):k("",!0),d.value?(_(),V("div",we,"解析到 "+b(d.value)+" 条记录",1)):k("",!0)])]),_:1})):k("",!0),a(o,null,{default:l(()=>[a(B,{type:"primary",loading:C.value,onClick:h},{default:l(()=>[m(b(w.value?"保存":"上传"),1)]),_:1},8,["loading"]),a(B,{onClick:J},{default:l(()=>[...e[19]||(e[19]=[m("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])),[[$,E.value]])}}}),Ge=fe(ke,[["__scopeId","data-v-9270ca02"]]);export{Ge as default};
|