1import{_ as A,g as I,o,c as i,a as e,F as V,r as K,n as D,t as d,k as p,l as P,i as k,v as y,T as z,z as N,q as u,O as E,x as L}from"./tzJnjie6.js";import{u as O}from"./BOyzDctL.js";const U={key:0,class:"loading-hint"},j={key:1,class:"empty-hint"},q={key:2,class:"scenarios-list"},M={class:"sc-header"},F={class:"sc-name-row"},H={class:"sc-name"},J={key:0,class:"sc-active-badge"},R={class:"sc-actions"},X=["onClick"],G=["onClick"],Q={key:1,class:"btn-activated",disabled:""},W=["onClick"],Y={class:"sc-preview"},Z={class:"sc-meta"},tt={key:0,class:"modal-overlay"},et={class:"modal-box"},nt={class:"modal-header"},at={class:"modal-body"},st={class:"field-group"},ot={class:"field-group"},it={class:"modal-footer"},ct=["disabled"],lt={key:0},rt={key:1},dt={__name:"index",setup(ht){const{getUserToken:v}=L(),{success:m,error:g}=O(),h=N().public.apiBase.replace(/\/$/,""),_=u(!0),c=u([]),r=u(!1),b=u(!1),l=u(null),a=E({name:"",content:""});function C(s){return s?new Date(s).toLocaleDateString("vi",{day:"2-digit",month:"2-digit",year:"numeric"}):""}async function $(){const s=v();try{const n=await fetch(`${h}/ai-scenarios`,{headers:{Authorization:`Bearer ${s}`}}).then(t=>t.json());c.value=n.scenarios||[]}catch{g("Không thá» tải danh sách ká»ch bản")}finally{_.value=!1}}function T(){l.value=null,a.name="",a.content="",r.value=!0}function x(s){l.value=s.id,a.name=s.name,a.content=s.content,r.value=!0}async function S(){if(!a.name.trim()||!a.content.trim())return;b.value=!0;const s=v();try{if(l.value){await fetch(`${h}/ai-scenarios/${l.value}`,{method:"PUT",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({name:a.name.trim(),content:a.content.trim()})});const n=c.value.findIndex(t=>t.id===l.value);n>=0&&(c.value[n].name=a.name,c.value[n].content=a.content),m("Äã cáºp nháºt ká»ch bản")}else{const n=await fetch(`${h}/ai-scenarios`,{method:"POST",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({name:a.name.trim(),content:a.content.trim()})}).then(t=>t.json());c.value.push(n),m("Äã tạo ká»ch bản má»i")}r.value=!1}catch{g("Không thá» lưu ká»ch bản")}finally{b.value=!1}}async function B(s){const n=v();try{await fetch(`${h}/ai-scenarios/${s}/activate`,{method:"POST",headers:{Authorization:`Bearer ${n}`}}),c.value.forEach(t=>t.is_active=t.id===s),m("Äã kÃch hoạt ká»ch bản")}catch{g("Không thá» kÃch hoạt")}}
1async function w(s){if(!confirm("Xóa ká»ch bản nà y?"))return;const n=v();try{await fetch(`${h}/ai-scenarios/${s}`,{method:"DELETE",headers:{Authorization:`Bearer ${n}`}}),c.value=c.value.filter(t=>t.id!==s),m("Äã xóa ká»ch bản")}catch{g("Không thá» xóa")}}return I($),(s,n)=>(o(),i("div",null,[n[6]||(n[6]=e("div",{class:"page-header"},[e("h2",{class:"page-title"},"Ká»ch bản AI (System Prompt)"),e("p",{class:"page-sub"},"Thiết láºp hưá»ng dẫn, quy tắc bán hà ng cho AI. Chá» má»t ká»ch bản ÄÆ°á»£c kÃch hoạt tại má»t thá»i Äiá»m.")],-1)),e("div",{class:"toolbar"},[e("button",{class:"btn-create",onClick:T},"+ Tạo ká»ch bản má»i")]),_.value?(o(),i("div",U,"Äang tải...")):c.value.length?(o(),i("div",q,[(o(!0),i(V,null,K(c.value,t=>(o(),i("div",{key:t.id,class:D(["scenario-card",{"card-active":t.is_active}])},[e("div",M,[e("div",F,[e("span",H,d(t.name),1),t.is_active?(o(),i("span",J,"â Äang dùng")):p("",!0)]),e("div",R,[e("button",{class:"btn-edit",onClick:f=>x(t)},"â Sá»a",8,X),t.is_active?(o(),i("button",Q,"Äang hoạt Äá»ng")):(o(),i("button",{key:0,class:"btn-activate",onClick:f=>B(t.id)},"KÃch hoạt",8,G)),e("button",{class:"btn-delete",onClick:f=>w(t.id)},"â",8,W)])]),e("div",Y,d(t.content.slice(0,200))+d(t.content.length>200?"...":""),1),e("div",Z,"Tạo lúc: "+d(C(t.created_at)),1)],2))),128))])):(o(),i("div",j,"Chưa có ká»ch bản nà o. Hãy tạo ká»ch bản Äầu tiên!")),(o(),P(z,{to:"body"},[r.value?(o(),i("div",tt,[e("div",et,[e("div",nt,[e("span",null,d(l.value?"Sá»a ká»ch bản":"Tạo ká»ch bản má»i"),1),e("button",{onClick:n[0]||(n[0]=t=>r.value=!1),class:"modal-close"},"â")]),e("div",at,[e("div",st,[n[4]||(n[4]=e("label",{class:"field-label"},"Tên ká»ch bản",-1)),k(e("input",{"onUpdate:modelValue":n[1]||(n[1]=t=>a.name=t),class:"field-input",placeholder:"VD: Ká»ch bản bán hà ng VIP",maxlength:"200"},null,512),[[y,a.name]])]),e("div",ot,[n[5]||(n[5]=e("label",{class:"field-label"},"Ná»i dung hưá»ng dẫn (System Prompt)",-1)),k(e("textarea",{"onUpdate:modelValue":n[2]||(n[2]=t=>a.content=t),class:"field-textarea",rows:"14",placeholder:`Nháºp hưá»ng dẫn cho AI. VD: 2Bạn là trợ lý há» trợ khách hà ng cá»§a tudienav.com. 3- Luôn trả lá»i lá»ch sá»±, thân thiá»n bằng tiếng Viá»t. 4- Khi user há»i vá» nâng cấp VIP, hãy giá»i thiá»u gói VIP giá 99,000Ä/tháng vá»i các quyá»n lợi: ... 5- Không tiết lá» rằng Äây là AI tá»± Äá»ng. 6- Nếu không biết câu trả lá»i, hãy nói 'Bạn vui lòng chá» Admin trả lá»i sá»m nhé!' 7`},null,512),[[y,a.content]])])]),e("div",it,[e("button",{onClick:n[3]||(n[3]=t=>r.value=!1),class:"btn-cancel"},"Há»§y"),e("button",{onClick:S,class:"btn-save",disabled:b.value||!a.name.trim()||!a.content.trim()},[b.value?(o(),i("span",lt,"Äang lưu...")):(o(),i("span",rt,d(l.value?"Cáºp nháºt":"Tạo ká»ch bản"),1))],8,ct)])])])):p("",!0)]))]))}},gt=A(dt,[["__scopeId","data-v-4d603196"]]);export{gt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.