1 line
3.3 KiB
JavaScript
1 line
3.3 KiB
JavaScript
import{C as e,D as t,E as n,_ as r,a as i,d as a,h as o,l as s,m as c,n as l,p as u,s as d,u as f,v as p,w as m,y as h}from"./index-DzvFzRSs.js";var g={key:0,class:`text-slate-500`},_={key:1},v={class:`flex gap-2 mb-4 flex-wrap`},y=[`onClick`],b={class:`grid grid-cols-1 lg:grid-cols-3 gap-4`},x={class:`space-y-1 lg:col-span-1`},S=[`onClick`],C={class:`flex items-center justify-between`},w={class:`font-medium`},T={key:0,class:`text-xs text-red-500`},E={class:`text-xs text-slate-400 mt-0.5`},D={key:0,class:`lg:col-span-2`},O={class:`bg-white rounded-xl border shadow-sm p-5`},k={class:`flex items-center justify-between mb-3`},A={class:`font-semibold`},j={class:`flex items-center gap-1 text-sm`},M={class:`text-xs text-slate-400 mb-2`},N={class:`mt-3 flex items-center gap-3`},P={key:0,class:`text-sm text-green-600`},F={key:1,class:`lg:col-span-2 text-slate-400 text-center py-12`},I={__name:`Prompts`,setup(I){let L=m([]),R=m(!0),z=m(null),B=m(!1),V=m(``),H=f(()=>[...new Set(L.value.map(e=>e.category))].sort()),U=f(()=>V.value?L.value.filter(e=>e.category===V.value):L.value);r(async()=>{try{let{data:e}=await l.get(`/admin/api/prompts`);L.value=e.prompts,H.value[0]&&(V.value=H.value[0])}finally{R.value=!1}});function W(e){z.value={...e},B.value=!1}async function G(){if(z.value){B.value=!1;try{await l.patch(`/admin/api/prompts/${z.value.key}`,{system_prompt:z.value.system_prompt,model:z.value.model||void 0,is_active:z.value.is_active}),B.value=!0;let e=L.value.findIndex(e=>e.key===z.value.key);e>=0&&Object.assign(L.value[e],z.value),setTimeout(()=>B.value=!1,2e3)}catch(e){alert(e.response?.data?.detail||`Ошибка`)}}}return(r,l)=>(p(),c(`div`,null,[l[4]||=a(`h1`,{class:`text-2xl font-bold mb-6`},`📝 Промпты`,-1),R.value?(p(),c(`div`,g,`Загрузка...`)):(p(),c(`div`,_,[a(`div`,v,[(p(!0),c(s,null,h(H.value,e=>(p(),c(`button`,{key:e,onClick:t=>V.value=e,class:n([`px-3 py-1.5 rounded-lg text-sm`,V.value===e?`bg-indigo-600 text-white`:`bg-white border`])},t(e),11,y))),128))]),a(`div`,b,[a(`div`,x,[(p(!0),c(s,null,h(U.value,e=>(p(),c(`div`,{key:e.key,onClick:t=>W(e),class:n([`p-3 rounded-lg cursor-pointer text-sm`,z.value?.key===e.key?`bg-indigo-50 border border-indigo-200`:`hover:bg-slate-50`])},[a(`div`,C,[a(`span`,w,t(e.icon)+` `+t(e.name),1),e.is_active?u(``,!0):(p(),c(`span`,T,`off`))]),a(`p`,E,t(e.key),1)],10,S))),128))]),z.value?(p(),c(`div`,D,[a(`div`,O,[a(`div`,k,[a(`h3`,A,t(z.value.icon)+` `+t(z.value.name),1),a(`label`,j,[e(a(`input`,{type:`checkbox`,"onUpdate:modelValue":l[0]||=e=>z.value.is_active=e},null,512),[[i,z.value.is_active]]),l[3]||=o(` активен `,-1)])]),a(`p`,M,`key: `+t(z.value.key)+` · model: `+t(z.value.model||`—`),1),e(a(`textarea`,{"onUpdate:modelValue":l[1]||=e=>z.value.system_prompt=e,class:`w-full h-64 md:h-96 px-3 py-2 border rounded-lg font-mono text-xs`},null,512),[[d,z.value.system_prompt]]),a(`div`,N,[e(a(`input`,{"onUpdate:modelValue":l[2]||=e=>z.value.model=e,placeholder:`model (опционально)`,class:`px-2 py-1 border rounded text-sm`},null,512),[[d,z.value.model]]),a(`button`,{onClick:G,class:`px-4 py-1.5 bg-indigo-600 text-white rounded-lg text-sm hover:bg-indigo-700`},` Сохранить `),B.value?(p(),c(`span`,P,`✅ Сохранено`)):u(``,!0)])])])):(p(),c(`div`,F,` Выберите промпт слева `))])]))]))}};export{I as default}; |