Files
YG_FT/frontend/dist/assets/ModelManageView-DsGIj92Z.js
2026-07-25 21:59:02 +08:00

2 lines
9.3 KiB
JavaScript

import{E as U}from"./index-C7hG1muh.js";import{E as j}from"./el-tag-BZzVQkhP.js";import{a as W,E as Y}from"./el-table-DbW509pw.js";import{v as H}from"./directive-COAzVUTb.js";import{d as Q,D as X,G as Z,c as P,e as k,w as i,y as C,o as b,s as n,q as r,x as s,aa as d,f as c,aN as ee,aO as A,aP as te,g as ae,K as le,z as ie,v as ne,A as N}from"./index-Dq6jPnBF.js";import{E as oe}from"./index-DKiv1Dj5.js";import"./el-scrollbar-DmODyDOE.js";import"./el-popper-DueI9GzG.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-Dq7CoyZi.js";import{D as R}from"./DataTablePage-CcUxd-v9.js";import{g as se,a as re,b as de,c as ue,d as me,e as pe,f as fe}from"./model-CuW7a35u.js";import{s as ce,a as _e,m as ge,b as be}from"./status-Dl1fykxa.js";import{_ as ye}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-DVLNguQR.js";import"./index-VqqV1S6i.js";import"./_baseIteratee-B5ivR0tO.js";import"./castArray-MugqytcL.js";import"./debounce-Hp5uL67z.js";import"./toNumber-D7aw_Sl7.js";import"./index-CVANbXnO.js";import"./raf-BV6Sit1E.js";import"./validator-Dj0EyMKa.js";import"./index-CYRMFLY4.js";import"./clamp-Ixi6GGap.js";import"./index-CGoVXszG.js";import"./scroll-BZwvBC8N.js";import"./index-BBcwoX6C.js";import"./index-czD5JTxt.js";import"./omit-DdM_zsdI.js";import"./el-card-D_O9Zi70.js";import"./el-pagination-CBFqVdBF.js";import"./el-select-BrrEHV9d.js";import"./vnode-mg6izvAi.js";import"./index-dORzQmpw.js";const ve={class:"model-manage-page"},he={class:"capsule-tabs"},we={class:"capsule-tabs"},ke={class:"runtime-panel"},Ce={class:"panel-title"},Me={class:"action-buttons"},xe=Q({__name:"ModelManageView",setup(Ee){const M=ne(),m=C("config"),_=C(!1),v=C([]),h=C([]),x=ie({});function Te(t){return t}function ze(t){return t}function E(t){return String(t.id||t.name)}function g(t){const e=E(t);return x[e]||(x[e]={artifacts:[],lineage:{parents:[],children:[]},exportJobs:[],loading:!1,loaded:!1}),x[e]}function T(t){return t?new Date(t).toLocaleString("zh-CN"):"-"}function S(t){const e=Number(t||0);return e<=0?"-":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`}function J(t){return{fine_tuned_from:"由基座模型微调生成",merged_from_adapter:"由 Adapter 合并导出"}[t||""]||t||"-"}function O(t){return{adapter:"Adapter 权重",merged_model:"合并模型",quantized_model:"量化模型"}[t||""]||t||"-"}async function w(){_.value=!0;try{v.value=await se()||[]}finally{_.value=!1}}async function z(){_.value=!0;try{const t=await re();h.value=(t==null?void 0:t.models)||[]}finally{_.value=!1}}function D(){m.value==="config"?w():z()}async function L(t,e=!1){const l=g(t);if(!(l.loading||l.loaded&&!e)){l.loading=!0;try{const p=t.id||t.name,[f,u,$]=await Promise.all([de(p),ue(p),me(p)]);l.artifacts=f||[],l.lineage={parents:(u==null?void 0:u.parents)||[],children:(u==null?void 0:u.children)||[]},l.exportJobs=$||[],l.loaded=!0}finally{l.loading=!1}}}function V(t,e){e.some(l=>E(l)===E(t))&&L(t)}async function B(t){await pe(t.id),v.value=v.value.filter(e=>e.id!==t.id),await w(),N.success("删除成功")}async function q(t){await oe.confirm(`确定要删除模型“${t.name}”的权重文件吗?合并模型不受影响。`,"确认删除",{type:"warning"}),await fe(t.id||t.name,"lora"),h.value=h.value.filter(e=>e.name!==t.name&&e.id!==t.id),await z(),N.success("权重已删除")}function F(t){var e,l;M.push({path:"/model-manage/merge",query:{model:t.name,method:((l=(e=t.train_methods)==null?void 0:e[0])==null?void 0:l.name)||"lora"}})}function I(t){M.push(`/model-manage/${t.id}/edit`)}function K(){m.value==="config"&&M.push("/model-manage/create")}function G(){m.value==="config"?w():z()}return X(m,D),Z(D),(t,e)=>{const l=Y,p=j,f=U,u=W,$=H;return b(),P("div",ve,[m.value==="config"?(b(),k(R,{key:0,title:"模型",data:v.value,loading:_.value,searchable:"","search-fields":["name","description"],"create-text":"添加模型","delete-fn":B,"row-key":"id",onCreate:K,onRefresh:w},{title:i(()=>[r("div",he,[r("button",{class:"capsule-tab-item active",onClick:e[0]||(e[0]=a=>m.value="config")},"配置模型"),r("button",{class:"capsule-tab-item",onClick:e[1]||(e[1]=a=>m.value="trained")},"训练模型")])]),columns:i(()=>[n(l,{label:"模型名称",prop:"name",align:"center","min-width":"180"}),n(l,{label:"模型类型",align:"center",width:"140"},{default:i(({row:a})=>[n(p,{type:"primary",size:"small"},{default:i(()=>[s(d(c(ee)[a.type]||a.type||"-"),1)]),_:2},1024)]),_:1}),n(l,{label:"用途",align:"center",width:"110"},{default:i(({row:a})=>{var o;return[n(p,{type:((o=c(A)[a.purpose])==null?void 0:o.type)||"info",size:"small"},{default:i(()=>{var y;return[s(d(((y=c(A)[a.purpose])==null?void 0:y.text)||a.purpose||"-"),1)]}),_:2},1032,["type"])]}),_:1}),n(l,{label:"模型来源",align:"center",width:"120"},{default:i(({row:a})=>[s(d(c(te)[a.model_source]||a.model_source||"-"),1)]),_:1}),n(l,{label:"描述",align:"center","show-overflow-tooltip":""},{default:i(({row:a})=>[s(d(a.description||"-"),1)]),_:1}),n(l,{label:"创建时间",align:"center",width:"180"},{default:i(({row:a})=>[s(d(T(a.create_time)),1)]),_:1})]),actions:i(({row:a})=>[n(f,{type:"primary",link:"",size:"small",onClick:o=>I(a)},{default:i(()=>[...e[4]||(e[4]=[r("i",{class:"fa fa-edit"},null,-1),s(" 编辑 ",-1)])]),_:1},8,["onClick"]),n(f,{type:"danger",link:"",size:"small",onClick:o=>B(a)},{default:i(()=>[...e[5]||(e[5]=[r("i",{class:"fa fa-trash-o"},null,-1),s(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1},8,["data","loading"])):(b(),k(R,{key:1,title:"训练模型",data:h.value,loading:_.value,searchable:"","search-fields":["name"],"row-key":"id",onExpandChange:V,onRefresh:G},{title:i(()=>[r("div",we,[r("button",{class:"capsule-tab-item",onClick:e[2]||(e[2]=a=>m.value="config")},"配置模型"),r("button",{class:"capsule-tab-item active",onClick:e[3]||(e[3]=a=>m.value="trained")},"训练模型")])]),columns:i(()=>[n(l,{type:"expand",width:"48"},{default:i(({row:a})=>[le((b(),P("div",ke,[r("section",null,[r("div",Ce,[e[7]||(e[7]=r("strong",null,"模型产物",-1)),n(f,{link:"",type:"primary",size:"small",onClick:o=>L(a,!0)},{default:i(()=>[...e[6]||(e[6]=[s("刷新",-1)])]),_:1},8,["onClick"])]),n(u,{data:g(a).artifacts,size:"small","empty-text":"暂无产物记录"},{default:i(()=>[n(l,{label:"类型",width:"120"},{default:i(({row:o})=>[s(d(O(o.artifact_type)),1)]),_:1}),n(l,{label:"路径",prop:"path","min-width":"280","show-overflow-tooltip":""}),n(l,{label:"大小",width:"110"},{default:i(({row:o})=>[s(d(S(o.size_bytes)),1)]),_:1}),n(l,{label:"Checksum","min-width":"220","show-overflow-tooltip":""},{default:i(({row:o})=>[s(d(o.checksum_sha256||"-"),1)]),_:1})]),_:1},8,["data"])]),r("section",null,[e[8]||(e[8]=r("div",{class:"panel-title"},[r("strong",null,"模型血缘")],-1)),n(u,{data:[...g(a).lineage.parents,...g(a).lineage.children],size:"small","empty-text":"暂无血缘记录"},{default:i(()=>[n(l,{label:"关系",width:"180"},{default:i(({row:o})=>[s(d(J(o.relation_type)),1)]),_:1}),n(l,{label:"父资源","min-width":"220"},{default:i(({row:o})=>[s(d(o.parent_resource_type)+" / "+d(o.parent_resource_id),1)]),_:1}),n(l,{label:"子资源","min-width":"220"},{default:i(({row:o})=>[s(d(o.child_resource_type)+" / "+d(o.child_resource_id),1)]),_:1}),n(l,{label:"Compute Job",prop:"compute_job_id","min-width":"160","show-overflow-tooltip":""})]),_:1},8,["data"])]),r("section",null,[e[9]||(e[9]=r("div",{class:"panel-title"},[r("strong",null,"导出任务")],-1)),n(u,{data:g(a).exportJobs,size:"small","empty-text":"暂无导出任务"},{default:i(()=>[n(l,{label:"任务ID",prop:"id","min-width":"160","show-overflow-tooltip":""}),n(l,{label:"类型",prop:"export_type",width:"100"}),n(l,{label:"状态",width:"100"},{default:i(({row:o})=>[n(p,{type:c(ce)(o.status),size:"small"},{default:i(()=>[s(d(c(_e)(o.status)),1)]),_:2},1032,["type"])]),_:1}),n(l,{label:"输出目录",prop:"output_dir","min-width":"260","show-overflow-tooltip":""}),n(l,{label:"创建时间",width:"180"},{default:i(({row:o})=>[s(d(T(o.create_time)),1)]),_:1})]),_:1},8,["data"])])])),[[$,g(a).loading]])]),_:1}),n(l,{label:"模型名称",prop:"name",align:"center","min-width":"180"}),n(l,{label:"训练方法",align:"center",width:"110"},{default:i(({row:a})=>{var o,y;return[s(d(((y=(o=a.train_methods)==null?void 0:o[0])==null?void 0:y.name)||"-"),1)]}),_:1}),n(l,{label:"基座模型",align:"center","show-overflow-tooltip":""},{default:i(({row:a})=>[s(d(a.base_model_path||"-"),1)]),_:1}),n(l,{label:"合并状态",align:"center",width:"110"},{default:i(({row:a})=>[n(p,{type:c(ge)(a),size:"small"},{default:i(()=>[s(d(c(be)(a)),1)]),_:2},1032,["type"])]),_:1}),n(l,{label:"创建时间",align:"center",width:"180"},{default:i(({row:a})=>[s(d(T(a.create_time)),1)]),_:1})]),actions:i(({row:a})=>[r("div",Me,[!a.merged&&!a.merging?(b(),k(f,{key:0,type:"primary",link:"",size:"small",onClick:o=>F(a)},{default:i(()=>[...e[10]||(e[10]=[r("i",{class:"fa fa-code-fork"},null,-1),s(" 合并权重 ",-1)])]),_:1},8,["onClick"])):a.merging?(b(),k(f,{key:1,type:"info",link:"",size:"small",loading:!0,disabled:""},{default:i(()=>[...e[11]||(e[11]=[s("合并中",-1)])]),_:1})):ae("",!0),n(f,{type:"warning",link:"",size:"small",onClick:o=>q(a)},{default:i(()=>[...e[12]||(e[12]=[r("i",{class:"fa fa-eraser"},null,-1),s(" 删除权重 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading"]))])}}}),ut=ye(xe,[["__scopeId","data-v-cd3c82d5"]]);export{ut as default};