ux(flow): remove facebook/line channel everywhere (scenario chosen at chat); clarify 'how to start chatting'

- Removed channel + initiation displays: Training card, Personas card, GroupEdit card,
  Chat header, and the channel select in PersonaForm (scenario now determines who opens).
- Clarified the start-training flow: GroupEdit guide now says go to the Training tab ->
  pick product -> pick a customer -> Chat -> choose scenario -> talk; Personas guide
  spells out the Chat + scenario step.
Rebuilt dist.
This commit is contained in:
Macky
2026-08-09 11:08:14 +07:00
parent 5b167b4546
commit f8719d77e3
38 changed files with 49 additions and 60 deletions

View File

@@ -1,4 +1,4 @@
import{c as k,_ as h,p as b,a as r,b as e,l as m,u as o,m as l,t as n,i as u,w as p,v,H as U,g as f,F as V,x as C,y as w,r as y,o as i,C as M}from"./index-CvsGOA4u.js";import{U as z}from"./users-Cs9RtsVY.js";/** import{c as k,_ as h,p as b,a as r,b as e,l as m,u as o,m as l,t as n,i as u,w as p,v,H as U,g as f,F as V,x as C,y as w,r as y,o as i,C as M}from"./index-D72MDfqC.js";import{U as z}from"./users-CHXJwc1N.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as x,_ as L,p as M,a as p,b as s,l as i,u as a,m as c,t as e,i as n,q as w,w as f,v as b,s as U,g as N,F as R,x as j,y as A,z as B,r as m,h as E,o as y}from"./index-CvsGOA4u.js";import{U as P}from"./users-Cs9RtsVY.js";import{P as S}from"./plus-BSRzoT5b.js";/** import{c as x,_ as L,p as M,a as p,b as s,l as i,u as a,m as c,t as e,i as n,q as w,w as f,v as b,s as U,g as N,F as R,x as j,y as A,z as B,r as m,h as E,o as y}from"./index-D72MDfqC.js";import{U as P}from"./users-CHXJwc1N.js";import{P as S}from"./plus-BI5BRyQZ.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -0,0 +1 @@
.thread[data-v-dd1df48f]{background:#eceff4;border:1px solid var(--border);border-radius:var(--radius);padding:16px;min-height:320px;max-height:52vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.bubble[data-v-dd1df48f]{max-width:72%;padding:10px 14px;white-space:pre-wrap;word-break:break-word}.msg-system[data-v-dd1df48f]{align-self:center;background:#fef3c7;color:#92400e;font-size:12px;max-width:88%;border-radius:999px}.composer[data-v-dd1df48f]{display:flex;gap:8px;margin-top:12px}.task[data-v-dd1df48f]{margin-bottom:12px;background:#fff7ed;border-color:#fed7aa}.debrief[data-v-dd1df48f]{margin-top:16px}button.danger[data-v-dd1df48f]{background:var(--red);color:#fff;border:none}.guide[data-v-dd1df48f]{background:#eef2ff;border-color:#c7d2fe;margin-bottom:12px}.scenario[data-v-dd1df48f]{border:2px solid var(--border);border-radius:12px;padding:12px 14px;margin:10px 0;cursor:pointer;transition:border-color .15s ease,background .15s ease}.scenario[data-v-dd1df48f]:hover{border-color:var(--accent)}.scenario.sel[data-v-dd1df48f]{border-color:var(--accent);background:#eef2ff}.reveal-grid[data-v-dd1df48f]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.rev[data-v-dd1df48f]{display:flex;flex-direction:column;background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:8px 10px}.rk[data-v-dd1df48f]{font-size:12px;color:var(--muted)}.rv[data-v-dd1df48f]{font-size:13px;color:var(--ink);margin-top:2px}@media (max-width: 640px){.reveal-grid[data-v-dd1df48f]{grid-template-columns:1fr}}

View File

@@ -1 +0,0 @@
.thread[data-v-19840301]{background:#eceff4;border:1px solid var(--border);border-radius:var(--radius);padding:16px;min-height:320px;max-height:52vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.bubble[data-v-19840301]{max-width:72%;padding:10px 14px;white-space:pre-wrap;word-break:break-word}.msg-system[data-v-19840301]{align-self:center;background:#fef3c7;color:#92400e;font-size:12px;max-width:88%;border-radius:999px}.composer[data-v-19840301]{display:flex;gap:8px;margin-top:12px}.task[data-v-19840301]{margin-bottom:12px;background:#fff7ed;border-color:#fed7aa}.debrief[data-v-19840301]{margin-top:16px}button.danger[data-v-19840301]{background:var(--red);color:#fff;border:none}.guide[data-v-19840301]{background:#eef2ff;border-color:#c7d2fe;margin-bottom:12px}.scenario[data-v-19840301]{border:2px solid var(--border);border-radius:12px;padding:12px 14px;margin:10px 0;cursor:pointer;transition:border-color .15s ease,background .15s ease}.scenario[data-v-19840301]:hover{border-color:var(--accent)}.scenario.sel[data-v-19840301]{border-color:var(--accent);background:#eef2ff}.reveal-grid[data-v-19840301]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.rev[data-v-19840301]{display:flex;flex-direction:column;background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:8px 10px}.rk[data-v-19840301]{font-size:12px;color:var(--muted)}.rv[data-v-19840301]{font-size:13px;color:var(--ink);margin-top:2px}@media (max-width: 640px){.reveal-grid[data-v-19840301]{grid-template-columns:1fr}}

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
import{c as v,_ as M,a as k,l as u,q as z,b as e,u as l,m as o,t as r,i,w as g,v as y,H as V,g as C,z as A,r as m,y as x,j as B,o as w}from"./index-CvsGOA4u.js";import{A as q}from"./arrow-left-DF5NIPgR.js";/** import{c as v,_ as M,a as k,l as u,q as z,b as e,u as l,m as o,t as r,i,w as g,v as y,H as V,g as C,z as A,r as m,y as x,j as B,o as w}from"./index-D72MDfqC.js";import{A as q}from"./arrow-left-BuPfyTxu.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.sec[data-v-cef61bd8]{margin-top:20px}.sec h4[data-v-cef61bd8]{margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border)}.row[data-v-cef61bd8]{display:flex;gap:12px;flex-wrap:wrap}.f[data-v-cef61bd8]{flex:1;min-width:140px}label[data-v-cef61bd8]{font-size:13px;color:var(--muted);display:block;margin:10px 0 4px}input[data-v-cef61bd8],select[data-v-cef61bd8],textarea[data-v-cef61bd8]{width:100%}.actions[data-v-cef61bd8]{margin-top:20px}.locked[data-v-cef61bd8]{background:#fffaf5;border:1px dashed #d6c7a1;border-radius:12px;padding:12px 14px}.locked h4[data-v-cef61bd8]{color:#b45309}.grid[data-v-5517bbc4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.pcard[data-v-5517bbc4]{display:flex;flex-direction:column}.edit-btn[data-v-5517bbc4]{margin-top:auto;display:inline-flex;align-items:center;gap:6px}.star[data-v-5517bbc4]{color:#d8dbe3}.star.on[data-v-5517bbc4]{color:#f59e0b}.badge.tier-a[data-v-5517bbc4]{background:#dcfce7;color:#166534}.badge.tier-b[data-v-5517bbc4]{background:#fef9c3;color:#854d0e}.badge.tier-c[data-v-5517bbc4]{background:#fee2e2;color:#991b1b}.guide[data-v-5517bbc4]{background:#eef2ff;border-color:#c7d2fe;margin-bottom:16px}.modal-backdrop[data-v-5517bbc4]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;justify-content:center;align-items:flex-start;padding:40px 16px;z-index:50;overflow:auto}.modal[data-v-5517bbc4]{background:#fff;border-radius:14px;padding:24px;width:100%;max-width:720px;box-shadow:0 20px 50px #00000040}

View File

@@ -0,0 +1 @@
.sec[data-v-f420bfd6]{margin-top:20px}.sec h4[data-v-f420bfd6]{margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border)}.row[data-v-f420bfd6]{display:flex;gap:12px;flex-wrap:wrap}.f[data-v-f420bfd6]{flex:1;min-width:140px}label[data-v-f420bfd6]{font-size:13px;color:var(--muted);display:block;margin:10px 0 4px}input[data-v-f420bfd6],select[data-v-f420bfd6],textarea[data-v-f420bfd6]{width:100%}.actions[data-v-f420bfd6]{margin-top:20px}.locked[data-v-f420bfd6]{background:#fffaf5;border:1px dashed #d6c7a1;border-radius:12px;padding:12px 14px}.locked h4[data-v-f420bfd6]{color:#b45309}.grid[data-v-fcca87f1]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.pcard[data-v-fcca87f1]{display:flex;flex-direction:column}.edit-btn[data-v-fcca87f1]{margin-top:auto;display:inline-flex;align-items:center;gap:6px}.star[data-v-fcca87f1]{color:#d8dbe3}.star.on[data-v-fcca87f1]{color:#f59e0b}.badge.tier-a[data-v-fcca87f1]{background:#dcfce7;color:#166534}.badge.tier-b[data-v-fcca87f1]{background:#fef9c3;color:#854d0e}.badge.tier-c[data-v-fcca87f1]{background:#fee2e2;color:#991b1b}.guide[data-v-fcca87f1]{background:#eef2ff;border-color:#c7d2fe;margin-bottom:16px}.modal-backdrop[data-v-fcca87f1]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;justify-content:center;align-items:flex-start;padding:40px 16px;z-index:50;overflow:auto}.modal[data-v-fcca87f1]{background:#fff;border-radius:14px;padding:24px;width:100%;max-width:720px;box-shadow:0 20px 50px #00000040}

View File

@@ -1,4 +1,4 @@
import{c as e,a as o,b as l,l as n,u as i,m as s,t as r,i as a,G as u,o as d}from"./index-CvsGOA4u.js";import{B as g}from"./book-open-BPDJkLfy.js";import{L as p}from"./layout-dashboard-k0A07o6y.js";import{T as m}from"./target-BHq78myU.js";import{S as y}from"./sparkles-BfSk-aam.js";/** import{c as e,a as o,b as l,l as n,u as i,m as s,t as r,i as a,G as u,o as d}from"./index-D72MDfqC.js";import{B as g}from"./book-open-hzON0xcx.js";import{L as p}from"./layout-dashboard-DnOEx-ds.js";import{T as m}from"./target-BHkg_ns5.js";import{S as y}from"./sparkles-PhamuQBi.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as k,_ as x,a as y,b as e,t as l,u as a,i as n,w as h,v as M,d as w,e as B,f as _,g as E,r,h as f,j as S,k as V,o as s}from"./index-CvsGOA4u.js";/** import{c as k,_ as x,a as y,b as e,t as l,u as a,i as n,w as h,v as M,d as w,e as B,f as _,g as E,r,h as f,j as S,k as V,o as s}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1 +1 @@
import{_ as f,p as x,y as v,a as r,b as t,l as b,u as e,m as k,t as s,i as a,g as _,w as B,A as N,F as D,x as S,r as m,B as c,o as i,C as T}from"./index-CvsGOA4u.js";import{L as V}from"./layout-dashboard-k0A07o6y.js";const C={style:{margin:"0"}},L={key:0,class:"row stat-row"},M={class:"card stat"},z={class:"card stat won"},F={class:"card stat lost"},j={class:"card stat"},A={key:1,class:"card"},E={key:2,class:"card empty-state"},G={class:"card",style:{"margin-top":"20px"}},I={style:{"margin-top":"0"}},q={__name:"MyBoard",setup(H){const o=m([]),u=m([]),p=m(!0),y=c(()=>o.value.length),g=c(()=>o.value.filter(n=>n.my_outcome==="won").length),h=c(()=>o.value.filter(n=>n.my_outcome==="lost").length),w=c(()=>o.value.filter(n=>n.my_outcome==="not_tried").length);return x(async()=>{try{o.value=(await v.myBoard()).board||[],u.value=(await v.mySessions()).sessions||[]}finally{p.value=!1}}),(n,l)=>(i(),r("div",null,[t("div",null,[t("h2",C,[b(e(V),{size:22,"stroke-width":1.8,style:{"vertical-align":"-4px"}}),k(" "+s(e(a).t("myDashboard")),1)]),l[0]||(l[0]=t("div",{class:"muted",style:{"margin-top":"4px","margin-bottom":"16px"}},"สรุปผลการฝึกของตัวคุณเอง — ดูว่าปิดการขายได้กี่ครั้ง ยังฝึกกับใครบ้าง",-1))]),p.value?_("",!0):(i(),r("div",L,[t("div",M,[t("span",null,s(e(a).t("total")),1),t("strong",null,s(y.value),1)]),t("div",z,[t("span",null,s(e(a).t("won")),1),t("strong",null,s(g.value),1)]),t("div",F,[t("span",null,s(e(a).t("lost")),1),t("strong",null,s(h.value),1)]),t("div",j,[t("span",null,s(e(a).t("notTried")),1),t("strong",null,s(w.value),1)])])),p.value?(i(),r("div",A,[...l[1]||(l[1]=[t("div",{class:"skeleton",style:{height:"50px"}},null,-1)])])):o.value.length===0?(i(),r("div",E,[...l[2]||(l[2]=[t("strong",null,"No practice yet",-1),t("span",null,"Go to Training and try closing a sale with a persona.",-1)])])):_("",!0),B(t("div",G,[t("h3",I,s(e(a).t("mySessions")),1),(i(!0),r(D,null,S(u.value,d=>(i(),r("div",{key:d.id,style:{display:"flex","justify-content":"space-between",padding:"8px 0","border-bottom":"1px solid var(--border)"}},[t("span",null,s(d.persona_name),1),t("span",{class:T(["badge",d.outcome])},s(d.outcome==="won"?e(a).t("won"):e(a).t("lost")),3)]))),128))],512),[[N,u.value.length]])]))}},O=f(q,[["__scopeId","data-v-6767b6b8"]]);export{O as default}; import{_ as f,p as x,y as v,a as r,b as t,l as b,u as e,m as k,t as s,i as a,g as _,w as B,A as N,F as D,x as S,r as m,B as c,o as i,C as T}from"./index-D72MDfqC.js";import{L as V}from"./layout-dashboard-DnOEx-ds.js";const C={style:{margin:"0"}},L={key:0,class:"row stat-row"},M={class:"card stat"},z={class:"card stat won"},F={class:"card stat lost"},j={class:"card stat"},A={key:1,class:"card"},E={key:2,class:"card empty-state"},G={class:"card",style:{"margin-top":"20px"}},I={style:{"margin-top":"0"}},q={__name:"MyBoard",setup(H){const o=m([]),u=m([]),p=m(!0),y=c(()=>o.value.length),g=c(()=>o.value.filter(n=>n.my_outcome==="won").length),h=c(()=>o.value.filter(n=>n.my_outcome==="lost").length),w=c(()=>o.value.filter(n=>n.my_outcome==="not_tried").length);return x(async()=>{try{o.value=(await v.myBoard()).board||[],u.value=(await v.mySessions()).sessions||[]}finally{p.value=!1}}),(n,l)=>(i(),r("div",null,[t("div",null,[t("h2",C,[b(e(V),{size:22,"stroke-width":1.8,style:{"vertical-align":"-4px"}}),k(" "+s(e(a).t("myDashboard")),1)]),l[0]||(l[0]=t("div",{class:"muted",style:{"margin-top":"4px","margin-bottom":"16px"}},"สรุปผลการฝึกของตัวคุณเอง — ดูว่าปิดการขายได้กี่ครั้ง ยังฝึกกับใครบ้าง",-1))]),p.value?_("",!0):(i(),r("div",L,[t("div",M,[t("span",null,s(e(a).t("total")),1),t("strong",null,s(y.value),1)]),t("div",z,[t("span",null,s(e(a).t("won")),1),t("strong",null,s(g.value),1)]),t("div",F,[t("span",null,s(e(a).t("lost")),1),t("strong",null,s(h.value),1)]),t("div",j,[t("span",null,s(e(a).t("notTried")),1),t("strong",null,s(w.value),1)])])),p.value?(i(),r("div",A,[...l[1]||(l[1]=[t("div",{class:"skeleton",style:{height:"50px"}},null,-1)])])):o.value.length===0?(i(),r("div",E,[...l[2]||(l[2]=[t("strong",null,"No practice yet",-1),t("span",null,"Go to Training and try closing a sale with a persona.",-1)])])):_("",!0),B(t("div",G,[t("h3",I,s(e(a).t("mySessions")),1),(i(!0),r(D,null,S(u.value,d=>(i(),r("div",{key:d.id,style:{display:"flex","justify-content":"space-between",padding:"8px 0","border-bottom":"1px solid var(--border)"}},[t("span",null,s(d.persona_name),1),t("span",{class:T(["badge",d.outcome])},s(d.outcome==="won"?e(a).t("won"):e(a).t("lost")),3)]))),128))],512),[[N,u.value.length]])]))}},O=f(q,[["__scopeId","data-v-6767b6b8"]]);export{O as default};

View File

@@ -1 +0,0 @@
.grid[data-v-46d50c99]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.pcard[data-v-46d50c99]{display:flex;flex-direction:column;min-height:190px}.diff[data-v-46d50c99]{margin:8px 0}.star[data-v-46d50c99]{color:#d8dbe3}.star.on[data-v-46d50c99]{color:#f59e0b}.badge.won[data-v-46d50c99]{background:#dcfce7;color:#166534}.badge.lost[data-v-46d50c99]{background:#fee2e2;color:#991b1b}.badge.not_tried[data-v-46d50c99]{background:#eef2ff;color:#4338ca}.guide[data-v-46d50c99]{background:#eef2ff;border-color:#c7d2fe;margin:12px 0 16px}

View File

@@ -1 +0,0 @@
import{_ as T,p as $,a as r,l as d,q as m,b as t,t as s,u as e,i as n,h as f,m as _,g as w,F as y,x as p,k as L,y as N,z as V,r as b,o as a,S as I,C as h,f as A}from"./index-CvsGOA4u.js";import{T as S}from"./target-BHq78myU.js";import{A as F}from"./arrow-left-DF5NIPgR.js";const j={class:"row",style:{"align-items":"center"}},q={style:{margin:"0"}},D={class:"muted",style:{"margin-left":"auto"}},E={key:0,class:"card guide"},M={key:1,class:"row",style:{margin:"12px 0",gap:"10px"}},R={class:"primary"},G={class:"grid"},H={class:"row",style:{"justify-content":"space-between"}},J={class:"diff"},K={class:"muted"},O={class:"muted"},Q={class:"muted"},U={class:"muted",style:{"margin-top":"6px"}},W={class:"primary",style:{width:"100%"}},X={class:"primary",style:{width:"100%"}},Y={key:1,class:"muted",style:{"margin-top":"auto","font-size":"12px"}},Z={__name:"Personas",setup(tt){const c=L().params.gid,k=b([]),C=b(!0);async function B(){try{k.value=(await N.listPersonas(c)).personas}finally{C.value=!1}}function z(l){return k.value.filter(i=>i.tier===l)}function P(l){return n.t(l==="A"?"tierA":l==="B"?"tierB":"tierC")}function v(l){return l==="won"?n.t("won"):l==="lost"?n.t("lost"):n.t("notTried")}return $(B),(l,i)=>{const u=V("router-link");return a(),r("div",null,[d(u,{to:"/training",class:"btn-back"},{default:m(()=>[d(e(F),{size:16,"stroke-width":2}),_(" "+s(e(n).t("training")),1)]),_:1}),t("div",j,[t("h2",q,s(e(n).t("personas")),1),t("span",D,s(e(n).t("selectPersona")),1)]),e(f).isAdmin?w("",!0):(a(),r("div",E,[t("strong",null,[d(e(S),{size:17,"stroke-width":1.8,style:{"vertical-align":"-3px"}}),i[0]||(i[0]=_(" วิธีฝึก",-1))]),i[1]||(i[1]=t("ol",{style:{margin:"8px 0 0","padding-left":"20px","line-height":"1.8"}},[t("li",null,"เลือกลูกค้าจำลอง (บุคคลต้นแบบ) คนหนึ่งที่อยากฝึกด้วย"),t("li",null,"ระดับ A ง่ายสุด → ระดับ C ยากสุด (ดูจากดาว ★ ความยาก)"),t("li",null,"กดปุ่มสำหรับฝึกแชทกับลูกค้าคนนั้น (ฝึกได้คนละครั้งเท่านั้น)")],-1))])),e(f).isAdmin?(a(),r("div",M,[d(u,{to:`/admin/groups/${e(c)}/edit`},{default:m(()=>[t("button",R,[d(e(I),{size:18,"stroke-width":1.8}),_(" "+s(e(n).t("managePersonas")),1)])]),_:1},8,["to"]),i[2]||(i[2]=t("span",{class:"muted"},"Admin: จัดการรายละเอียดบุคคลต้นแบบได้ที่นี่",-1))])):w("",!0),(a(),r(y,null,p(["A","B","C"],g=>t("div",{key:g,style:{margin:"20px 0"}},[t("h4",null,s(P(g)),1),t("div",G,[(a(!0),r(y,null,p(z(g),o=>(a(),r("div",{key:o.id,class:"card pcard lift"},[t("div",H,[t("strong",null,s(o.name),1),t("span",{class:h(["badge",o.my_outcome])},s(v(o.my_outcome)),3)]),t("div",J,[(a(),r(y,null,p(5,x=>t("span",{key:x,class:h(["star",{on:x<=(o.difficulty||1)}])},"★",2)),64)),t("span",K,s(e(n).t("difficulty"))+" "+s(o.difficulty||1)+"/5",1)]),t("div",O,[_(s(o.profession)+" · "+s(o.age_group)+" · "+s(o.location),1),i[3]||(i[3]=t("br",null,null,-1)),t("span",{class:h(["badge",o.channel])},s(o.channel),3),t("span",Q," · "+s(o.initiation_mode==="seller"?e(n).t("sellerInitiated"):e(n).t("customerInitiated")),1)]),t("div",U,s(o.product_context),1),e(f).isAdmin?(a(),A(u,{key:0,to:`/groups/${e(c)}/chat/${o.id}`,style:{"margin-top":"auto"}},{default:m(()=>[t("button",W,s(e(n).t("chat")),1)]),_:1},8,["to"])):(a(),r(y,{key:1},[o.my_outcome==="not_tried"?(a(),A(u,{key:0,to:`/groups/${e(c)}/chat/${o.id}`,style:{"margin-top":"auto"}},{default:m(()=>[t("button",X,s(e(n).t("chat")),1)]),_:1},8,["to"])):(a(),r("div",Y,"✓ "+s(e(n).t("trained"))+" ("+s(v(o.my_outcome))+")",1))],64))]))),128))])])),64))])}}},at=T(Z,[["__scopeId","data-v-46d50c99"]]);export{at as default};

View File

@@ -0,0 +1 @@
.grid[data-v-eb0948ac]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.pcard[data-v-eb0948ac]{display:flex;flex-direction:column;min-height:190px}.diff[data-v-eb0948ac]{margin:8px 0}.star[data-v-eb0948ac]{color:#d8dbe3}.star.on[data-v-eb0948ac]{color:#f59e0b}.badge.won[data-v-eb0948ac]{background:#dcfce7;color:#166534}.badge.lost[data-v-eb0948ac]{background:#fee2e2;color:#991b1b}.badge.not_tried[data-v-eb0948ac]{background:#eef2ff;color:#4338ca}.guide[data-v-eb0948ac]{background:#eef2ff;border-color:#c7d2fe;margin:12px 0 16px}

View File

@@ -0,0 +1 @@
import{_ as T,p as $,a as l,l as u,q as _,b as t,t as s,u as e,i as n,h as g,m as d,g as x,F as y,x as p,k as L,y as N,z as V,r as w,o as a,S,C as b,f as A}from"./index-D72MDfqC.js";import{T as F}from"./target-BHkg_ns5.js";import{A as j}from"./arrow-left-BuPfyTxu.js";const q={class:"row",style:{"align-items":"center"}},D={style:{margin:"0"}},E={class:"muted",style:{"margin-left":"auto"}},I={key:0,class:"card guide"},M={key:1,class:"row",style:{margin:"12px 0",gap:"10px"}},R={class:"primary"},G={class:"grid"},H={class:"row",style:{"justify-content":"space-between"}},J={class:"diff"},K={class:"muted"},O={class:"muted"},Q={class:"muted"},U={class:"muted",style:{"margin-top":"6px"}},W={class:"primary",style:{width:"100%"}},X={class:"primary",style:{width:"100%"}},Y={key:1,class:"muted",style:{"margin-top":"auto","font-size":"12px"}},Z={__name:"Personas",setup(tt){const c=L().params.gid,h=w([]),C=w(!0);async function B(){try{h.value=(await N.listPersonas(c)).personas}finally{C.value=!1}}function z(r){return h.value.filter(i=>i.tier===r)}function P(r){return n.t(r==="A"?"tierA":r==="B"?"tierB":"tierC")}function k(r){return r==="won"?n.t("won"):r==="lost"?n.t("lost"):n.t("notTried")}return $(B),(r,i)=>{const m=V("router-link");return a(),l("div",null,[u(m,{to:"/training",class:"btn-back"},{default:_(()=>[u(e(j),{size:16,"stroke-width":2}),d(" "+s(e(n).t("training")),1)]),_:1}),t("div",q,[t("h2",D,s(e(n).t("personas")),1),t("span",E,s(e(n).t("selectPersona")),1)]),e(g).isAdmin?x("",!0):(a(),l("div",I,[t("strong",null,[u(e(F),{size:17,"stroke-width":1.8,style:{"vertical-align":"-3px"}}),i[0]||(i[0]=d(" วิธีฝึก",-1))]),i[1]||(i[1]=t("ol",{style:{margin:"8px 0 0","padding-left":"20px","line-height":"1.8"}},[t("li",null,"เลือกลูกค้าจำลอง (บุคคลต้นแบบ) คนหนึ่งที่อยากฝึกด้วย"),t("li",null,"ระดับ A ง่ายสุด → ระดับ C ยากสุด (ดูจากดาว ★ ความยาก)"),t("li",null,[d("กด "),t("strong",null,"แชท"),d(" → เลือกสถานการณ์ (โซเชียล / พบหน้า-โทร / กลับมาติดต่อ) → เริ่มคุยกับลูกค้า")]),t("li",null,"ลูกค้าจะตัดสินใจเองว่าซื้อหรือไม่ซื้อ (ฝึกได้คนละครั้งเท่านั้น)")],-1))])),e(g).isAdmin?(a(),l("div",M,[u(m,{to:`/admin/groups/${e(c)}/edit`},{default:_(()=>[t("button",R,[u(e(S),{size:18,"stroke-width":1.8}),d(" "+s(e(n).t("managePersonas")),1)])]),_:1},8,["to"]),i[2]||(i[2]=t("span",{class:"muted"},"Admin: จัดการรายละเอียดบุคคลต้นแบบได้ที่นี่",-1))])):x("",!0),(a(),l(y,null,p(["A","B","C"],f=>t("div",{key:f,style:{margin:"20px 0"}},[t("h4",null,s(P(f)),1),t("div",G,[(a(!0),l(y,null,p(z(f),o=>(a(),l("div",{key:o.id,class:"card pcard lift"},[t("div",H,[t("strong",null,s(o.name),1),t("span",{class:b(["badge",o.my_outcome])},s(k(o.my_outcome)),3)]),t("div",J,[(a(),l(y,null,p(5,v=>t("span",{key:v,class:b(["star",{on:v<=(o.difficulty||1)}])},"★",2)),64)),t("span",K,s(e(n).t("difficulty"))+" "+s(o.difficulty||1)+"/5",1)]),t("div",O,[d(s(o.profession)+" · "+s(o.age_group)+" · "+s(o.location),1),i[3]||(i[3]=t("br",null,null,-1)),t("span",Q,s(e(n).t("difficulty"))+" "+s(o.difficulty||1)+"/5",1)]),t("div",U,s(o.product_context),1),e(g).isAdmin?(a(),A(m,{key:0,to:`/groups/${e(c)}/chat/${o.id}`,style:{"margin-top":"auto"}},{default:_(()=>[t("button",W,s(e(n).t("chat")),1)]),_:1},8,["to"])):(a(),l(y,{key:1},[o.my_outcome==="not_tried"?(a(),A(m,{key:0,to:`/groups/${e(c)}/chat/${o.id}`,style:{"margin-top":"auto"}},{default:_(()=>[t("button",X,s(e(n).t("chat")),1)]),_:1},8,["to"])):(a(),l("div",Y,"✓ "+s(e(n).t("trained"))+" ("+s(k(o.my_outcome))+")",1))],64))]))),128))])])),64))])}}},at=T(Z,[["__scopeId","data-v-eb0948ac"]]);export{at as default};

View File

@@ -1,4 +1,4 @@
import{c as U,_ as T,r as c,h as u,a as h,b as e,l as k,u as a,S as $,m as v,t as o,i as s,w as b,v as x,g as V,C as S,y as M,o as g}from"./index-CvsGOA4u.js";import{L as D}from"./lock-Lq5iEyDR.js";/** import{c as U,_ as T,r as c,h as u,a as h,b as e,l as k,u as a,S as $,m as v,t as o,i as s,w as b,v as x,g as V,C as S,y as M,o as g}from"./index-D72MDfqC.js";import{L as D}from"./lock-BM8eMwHW.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1 +1 @@
import{_ as U,a as v,b as e,l as K,u as s,m,t as a,i as l,h as _,w,v as b,d as h,n as N,g as T,r,j as B,o as f}from"./index-CvsGOA4u.js";import{L as C}from"./lock-Lq5iEyDR.js";const M={class:"setup-wrap"},D={class:"card setup-card"},L={class:"muted"},P={class:"terms"},j={key:0,class:"error",role:"alert"},z=["disabled"],E={key:0,class:"spinner"},I={key:1},V="/legal",R={__name:"Setup",setup(q){const S=B(),i=r(""),o=r(""),p=r(""),y=r(!1),u=r(""),d=r(!1);async function c(){if(u.value="",o.value.length<4){u.value=l.t("passwordTooShort");return}if(o.value!==p.value){u.value=l.t("passwordMismatch");return}d.value=!0;try{await _.finishSetup(i.value.trim(),o.value,!0),S.push("/")}catch(k){u.value=k.message}finally{d.value=!1}}return(k,t)=>{var g,x;return f(),v("div",M,[e("div",D,[e("h1",null,[K(s(C),{size:22,"stroke-width":1.8,style:{"vertical-align":"-4px"}}),m(" "+a(s(l).t("setupTitle")),1)]),e("p",L,[m(a(s(l).t("setupSubtitle"))+" ",1),e("strong",null,a(((g=s(_).user)==null?void 0:g.name)||((x=s(_).user)==null?void 0:x.username)),1)]),e("label",null,a(s(l).t("email")),1),w(e("input",{"onUpdate:modelValue":t[0]||(t[0]=n=>i.value=n),type:"email",autocomplete:"email",class:"wide",onKeyup:h(c,["enter"])},null,544),[[b,i.value]]),e("label",null,a(s(l).t("newPassword")),1),w(e("input",{"onUpdate:modelValue":t[1]||(t[1]=n=>o.value=n),type:"password",autocomplete:"new-password",class:"wide",onKeyup:h(c,["enter"])},null,544),[[b,o.value]]),e("label",null,a(s(l).t("confirmPassword")),1),w(e("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>p.value=n),type:"password",autocomplete:"new-password",class:"wide",onKeyup:h(c,["enter"])},null,544),[[b,p.value]]),e("label",P,[w(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>y.value=n),type:"checkbox"},null,512),[[N,y.value]]),e("span",null,[t[4]||(t[4]=m("ฉันยอมรับ ",-1)),e("a",{href:V,target:"_blank",rel:"noopener"},"ข้อกำหนดการใช้งาน"),t[5]||(t[5]=m(" และ ",-1)),e("a",{href:V,target:"_blank",rel:"noopener"},"นโยบายความเป็นส่วนตัว")])]),u.value?(f(),v("div",j,a(u.value),1)):T("",!0),e("button",{class:"primary",style:{width:"100%","margin-top":"16px"},disabled:d.value||!i.value||!o.value||o.value!==p.value||!y.value,onClick:c},[d.value?(f(),v("span",E)):(f(),v("span",I,a(s(l).t("save")),1))],8,z)])])}}},G=U(R,[["__scopeId","data-v-a3748c0a"]]);export{G as default}; import{_ as U,a as v,b as e,l as K,u as s,m,t as a,i as l,h as _,w,v as b,d as h,n as N,g as T,r,j as B,o as f}from"./index-D72MDfqC.js";import{L as C}from"./lock-BM8eMwHW.js";const M={class:"setup-wrap"},D={class:"card setup-card"},L={class:"muted"},P={class:"terms"},j={key:0,class:"error",role:"alert"},z=["disabled"],E={key:0,class:"spinner"},I={key:1},V="/legal",R={__name:"Setup",setup(q){const S=B(),i=r(""),o=r(""),p=r(""),y=r(!1),u=r(""),d=r(!1);async function c(){if(u.value="",o.value.length<4){u.value=l.t("passwordTooShort");return}if(o.value!==p.value){u.value=l.t("passwordMismatch");return}d.value=!0;try{await _.finishSetup(i.value.trim(),o.value,!0),S.push("/")}catch(k){u.value=k.message}finally{d.value=!1}}return(k,t)=>{var g,x;return f(),v("div",M,[e("div",D,[e("h1",null,[K(s(C),{size:22,"stroke-width":1.8,style:{"vertical-align":"-4px"}}),m(" "+a(s(l).t("setupTitle")),1)]),e("p",L,[m(a(s(l).t("setupSubtitle"))+" ",1),e("strong",null,a(((g=s(_).user)==null?void 0:g.name)||((x=s(_).user)==null?void 0:x.username)),1)]),e("label",null,a(s(l).t("email")),1),w(e("input",{"onUpdate:modelValue":t[0]||(t[0]=n=>i.value=n),type:"email",autocomplete:"email",class:"wide",onKeyup:h(c,["enter"])},null,544),[[b,i.value]]),e("label",null,a(s(l).t("newPassword")),1),w(e("input",{"onUpdate:modelValue":t[1]||(t[1]=n=>o.value=n),type:"password",autocomplete:"new-password",class:"wide",onKeyup:h(c,["enter"])},null,544),[[b,o.value]]),e("label",null,a(s(l).t("confirmPassword")),1),w(e("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>p.value=n),type:"password",autocomplete:"new-password",class:"wide",onKeyup:h(c,["enter"])},null,544),[[b,p.value]]),e("label",P,[w(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>y.value=n),type:"checkbox"},null,512),[[N,y.value]]),e("span",null,[t[4]||(t[4]=m("ฉันยอมรับ ",-1)),e("a",{href:V,target:"_blank",rel:"noopener"},"ข้อกำหนดการใช้งาน"),t[5]||(t[5]=m(" และ ",-1)),e("a",{href:V,target:"_blank",rel:"noopener"},"นโยบายความเป็นส่วนตัว")])]),u.value?(f(),v("div",j,a(u.value),1)):T("",!0),e("button",{class:"primary",style:{width:"100%","margin-top":"16px"},disabled:d.value||!i.value||!o.value||o.value!==p.value||!y.value,onClick:c},[d.value?(f(),v("span",E)):(f(),v("span",I,a(s(l).t("save")),1))],8,z)])])}}},G=U(R,[["__scopeId","data-v-a3748c0a"]]);export{G as default};

View File

@@ -0,0 +1 @@
.grid[data-v-10820ca0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.train-card[data-v-10820ca0]{display:flex;flex-direction:column;height:100%}.badge.ready[data-v-10820ca0]{background:#dcfce7;color:#166534}.badge.draft[data-v-10820ca0]{background:#fef9c3;color:#854d0e}button.soft[data-v-10820ca0]{background:#f1f3f9;border-color:transparent}.badge.facebook[data-v-10820ca0]{background:#e0f2fe;color:#0369a1}.badge.line[data-v-10820ca0]{background:#dcfce7;color:#15803d}.del-btn[data-v-10820ca0]{background:transparent;border:1px solid var(--border);border-radius:8px;min-height:32px;width:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer}.del-btn[data-v-10820ca0]:hover{background:#fee2e2;border-color:#fecaca;color:var(--red)}

View File

@@ -1,6 +0,0 @@
import{c as b,_ as C,p as A,y as f,h as l,a as d,b as e,l as c,u as t,m,t as o,i,q as _,f as z,g as h,F as M,x as T,r as v,z as B,o as r,C as k,D as N}from"./index-CvsGOA4u.js";import{T as P}from"./target-BHq78myU.js";import{B as V}from"./book-open-BPDJkLfy.js";import{P as $}from"./plus-BSRzoT5b.js";/**
* @license lucide-vue-next v1.0.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const j=b("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]),G={class:"row",style:{"align-items":"center","margin-bottom":"16px"}},L={style:{margin:"0"}},D={class:"row",style:{"margin-left":"auto",gap:"10px"}},F={class:"soft"},I={class:"primary"},S={class:"muted"},q={key:0,class:"card",style:{"min-height":"80px"}},E={key:1,class:"card empty-state"},H={key:0},O={key:1},J={class:"grid"},K={class:"row",style:{"justify-content":"space-between"}},Q={class:"row",style:{gap:"6px","align-items":"center"}},R=["onClick"],U={class:"muted",style:{margin:"6px 0 12px"}},W={class:"row",style:{gap:"8px"}},X={class:"muted"},Y={class:"primary",style:{width:"100%","margin-top":"12px"}},Z={__name:"Training",setup(tt){const u=v([]),y=v(!0);function g(s){return s.sales_kit&&s.sales_kit.productName||s.input&&s.input.product||""}function w(s){return s.personas||s.persona_count||0}async function x(s){if(confirm(`ลบกลุ่ม "${s.title}" และบุคคลต้นแบบทั้งหมด? (ติดลบถาวร)`))try{await f.deleteGroup(s.id),u.value=u.value.filter(n=>n.id!==s.id)}catch(n){alert(n.message)}}return A(async()=>{try{const s=(await f.listGroups()).groups||[];u.value=l.isAdmin?s:s.filter(n=>n.status==="ready")}finally{y.value=!1}}),(s,n)=>{const p=B("router-link");return r(),d("div",null,[e("div",G,[e("h2",L,[c(t(P),{size:22,"stroke-width":1.8,style:{"vertical-align":"-4px"}}),m(" "+o(t(i).t("training")),1)]),e("div",D,[c(p,{to:"/guide"},{default:_(()=>[e("button",F,[c(t(V),{size:18,"stroke-width":1.8}),n[0]||(n[0]=m(" คู่มือ",-1))])]),_:1}),t(l).isAdmin?(r(),z(p,{key:0,to:"/admin/new-group"},{default:_(()=>[e("button",I,[c(t($),{size:18,"stroke-width":2}),m(" "+o(t(i).t("addProduct")),1)])]),_:1})):h("",!0)])]),e("p",S,o(t(i).t("trainingSubtitle")),1),y.value?(r(),d("div",q,[...n[1]||(n[1]=[e("div",{class:"skeleton",style:{height:"50px"}},null,-1)])])):u.value.length===0?(r(),d("div",E,[e("strong",null,o(t(i).t("noTraining")),1),t(l).isAdmin?(r(),d("span",H,'Click "'+o(t(i).t("addProduct"))+'" to create a persona group.',1)):(r(),d("span",O,"Ask an admin to create a persona group first."))])):h("",!0),e("div",J,[(r(!0),d(M,null,T(u.value,a=>(r(),d("div",{key:a.id,class:"card lift train-card"},[e("div",K,[c(p,{to:t(l).isAdmin?`/admin/groups/${a.id}/edit`:`/groups/${a.id}/personas`,style:{"text-decoration":"none",color:"inherit","min-width":"0"}},{default:_(()=>[e("strong",null,o(a.title),1)]),_:2},1032,["to"]),e("div",Q,[e("span",{class:k(["badge",a.status==="ready"?"ready":"draft"])},o(a.status),3),t(l).isAdmin?(r(),d("button",{key:0,class:"del-btn",title:"ลบกลุ่มนี้ (ติดลบถาวร)",onClick:N(et=>x(a),["prevent","stop"])},[c(t(j),{size:16,"stroke-width":1.8})],8,R)):h("",!0)])]),c(p,{to:t(l).isAdmin?`/admin/groups/${a.id}/edit`:`/groups/${a.id}/personas`,style:{"text-decoration":"none",color:"inherit"}},{default:_(()=>[e("div",U,o(g(a)),1),e("div",W,[e("span",{class:k(["badge",a.channel||"line"])},o(a.channel||"line"),3),e("span",X,o(w(a))+" "+o(t(i).t("personas").toLowerCase()),1)]),e("button",Y,o(t(l).isAdmin?a.status==="ready"?t(i).t("managePersonas"):t(i).t("analyze"):t(i).t("selectPersona")),1)]),_:2},1032,["to"])]))),128))])])}}},it=C(Z,[["__scopeId","data-v-b1b30fec"]]);export{it as default};

View File

@@ -0,0 +1,6 @@
import{c as x,_ as b,p as C,y as f,h as l,a as d,b as s,l as c,u as t,m,t as o,i as n,q as _,f as A,g as h,F as z,x as M,r as v,z as T,o as r,C as B,D as N}from"./index-D72MDfqC.js";import{T as P}from"./target-BHkg_ns5.js";import{B as V}from"./book-open-hzON0xcx.js";import{P as $}from"./plus-BI5BRyQZ.js";/**
* @license lucide-vue-next v1.0.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const j=x("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]),G={class:"row",style:{"align-items":"center","margin-bottom":"16px"}},L={style:{margin:"0"}},D={class:"row",style:{"margin-left":"auto",gap:"10px"}},F={class:"soft"},I={class:"primary"},S={class:"muted"},q={key:0,class:"card",style:{"min-height":"80px"}},E={key:1,class:"card empty-state"},H={key:0},O={key:1},J={class:"grid"},K={class:"row",style:{"justify-content":"space-between"}},Q={class:"row",style:{gap:"6px","align-items":"center"}},R=["onClick"],U={class:"muted",style:{margin:"6px 0 12px"}},W={class:"row",style:{gap:"8px"}},X={class:"muted"},Y={class:"primary",style:{width:"100%","margin-top":"12px"}},Z={__name:"Training",setup(tt){const u=v([]),y=v(!0);function k(e){return e.sales_kit&&e.sales_kit.productName||e.input&&e.input.product||""}function g(e){return e.personas||e.persona_count||0}async function w(e){if(confirm(`ลบกลุ่ม "${e.title}" และบุคคลต้นแบบทั้งหมด? (ติดลบถาวร)`))try{await f.deleteGroup(e.id),u.value=u.value.filter(i=>i.id!==e.id)}catch(i){alert(i.message)}}return C(async()=>{try{const e=(await f.listGroups()).groups||[];u.value=l.isAdmin?e:e.filter(i=>i.status==="ready")}finally{y.value=!1}}),(e,i)=>{const p=T("router-link");return r(),d("div",null,[s("div",G,[s("h2",L,[c(t(P),{size:22,"stroke-width":1.8,style:{"vertical-align":"-4px"}}),m(" "+o(t(n).t("training")),1)]),s("div",D,[c(p,{to:"/guide"},{default:_(()=>[s("button",F,[c(t(V),{size:18,"stroke-width":1.8}),i[0]||(i[0]=m(" คู่มือ",-1))])]),_:1}),t(l).isAdmin?(r(),A(p,{key:0,to:"/admin/new-group"},{default:_(()=>[s("button",I,[c(t($),{size:18,"stroke-width":2}),m(" "+o(t(n).t("addProduct")),1)])]),_:1})):h("",!0)])]),s("p",S,o(t(n).t("trainingSubtitle")),1),y.value?(r(),d("div",q,[...i[1]||(i[1]=[s("div",{class:"skeleton",style:{height:"50px"}},null,-1)])])):u.value.length===0?(r(),d("div",E,[s("strong",null,o(t(n).t("noTraining")),1),t(l).isAdmin?(r(),d("span",H,'Click "'+o(t(n).t("addProduct"))+'" to create a persona group.',1)):(r(),d("span",O,"Ask an admin to create a persona group first."))])):h("",!0),s("div",J,[(r(!0),d(z,null,M(u.value,a=>(r(),d("div",{key:a.id,class:"card lift train-card"},[s("div",K,[c(p,{to:t(l).isAdmin?`/admin/groups/${a.id}/edit`:`/groups/${a.id}/personas`,style:{"text-decoration":"none",color:"inherit","min-width":"0"}},{default:_(()=>[s("strong",null,o(a.title),1)]),_:2},1032,["to"]),s("div",Q,[s("span",{class:B(["badge",a.status==="ready"?"ready":"draft"])},o(a.status),3),t(l).isAdmin?(r(),d("button",{key:0,class:"del-btn",title:"ลบกลุ่มนี้ (ติดลบถาวร)",onClick:N(st=>w(a),["prevent","stop"])},[c(t(j),{size:16,"stroke-width":1.8})],8,R)):h("",!0)])]),c(p,{to:t(l).isAdmin?`/admin/groups/${a.id}/edit`:`/groups/${a.id}/personas`,style:{"text-decoration":"none",color:"inherit"}},{default:_(()=>[s("div",U,o(k(a)),1),s("div",W,[s("span",X,o(g(a))+" "+o(t(n).t("personas").toLowerCase()),1)]),s("button",Y,o(t(l).isAdmin?a.status==="ready"?t(n).t("managePersonas"):t(n).t("analyze"):t(n).t("selectPersona")),1)]),_:2},1032,["to"])]))),128))])])}}},nt=b(Z,[["__scopeId","data-v-10820ca0"]]);export{nt as default};

View File

@@ -1 +0,0 @@
.grid[data-v-b1b30fec]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.train-card[data-v-b1b30fec]{display:flex;flex-direction:column;height:100%}.badge.ready[data-v-b1b30fec]{background:#dcfce7;color:#166534}.badge.draft[data-v-b1b30fec]{background:#fef9c3;color:#854d0e}button.soft[data-v-b1b30fec]{background:#f1f3f9;border-color:transparent}.badge.facebook[data-v-b1b30fec]{background:#e0f2fe;color:#0369a1}.badge.line[data-v-b1b30fec]{background:#dcfce7;color:#15803d}.del-btn[data-v-b1b30fec]{background:transparent;border:1px solid var(--border);border-radius:8px;min-height:32px;width:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer}.del-btn[data-v-b1b30fec]:hover{background:#fee2e2;border-color:#fecaca;color:var(--red)}

View File

@@ -1,4 +1,4 @@
import{c as e}from"./index-CvsGOA4u.js";/** import{c as e}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as a}from"./index-CvsGOA4u.js";/** import{c as a}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
import{c as t}from"./index-CvsGOA4u.js";/** import{c as t}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as e}from"./index-CvsGOA4u.js";/** import{c as e}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as e}from"./index-CvsGOA4u.js";/** import{c as e}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as a}from"./index-CvsGOA4u.js";/** import{c as a}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c}from"./index-CvsGOA4u.js";/** import{c}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -1,4 +1,4 @@
import{c as e}from"./index-CvsGOA4u.js";/** import{c as e}from"./index-D72MDfqC.js";/**
* @license lucide-vue-next v1.0.0 - ISC * @license lucide-vue-next v1.0.0 - ISC
* *
* This source code is licensed under the ISC license. * This source code is licensed under the ISC license.

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sales Trainer</title> <title>Sales Trainer</title>
<script type="module" crossorigin src="/assets/index-CvsGOA4u.js"></script> <script type="module" crossorigin src="/assets/index-D72MDfqC.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-B9WjPRES.css"> <link rel="stylesheet" crossorigin href="/assets/index-B9WjPRES.css">
</head> </head>
<body> <body>

View File

@@ -57,18 +57,9 @@
<label>กรอบเวลาในการตดสนใจ</label><input v-model="d.decision_timeline" /> <label>กรอบเวลาในการตดสนใจ</label><input v-model="d.decision_timeline" />
</div> </div>
<!-- Section: องทาง/โหมด --> <!-- Section: องทาง/โหมด (removed scenario chosen at chat time) -->
<div class="sec"> <div v-if="auth.isSuperAdmin && d.special" class="sec">
<h4>📡 องทาง & โหมด</h4> <label class="muted">เศษ: {{ d.special }}</label>
<div class="row">
<div class="f"><label>องทาง</label>
<select v-model="d.channel"><option value="line">LINE</option><option value="facebook">Facebook</option></select>
</div>
<div class="f"><label>ใครเรมคยกอน</label>
<select v-model="d.initiation_mode"><option value="customer">ลูกค้าทักก่อน</option><option value="seller">เราต้องเริ่มขาย (เชิงรุก)</option></select>
</div>
</div>
<label class="muted" v-if="auth.isSuperAdmin && d.special">พิเศษ: {{ d.special }}</label>
</div> </div>
<div class="row actions"> <div class="row actions">

View File

@@ -35,7 +35,6 @@
<div class="row" style="align-items:center;margin-bottom:12px"> <div class="row" style="align-items:center;margin-bottom:12px">
<h2 style="margin:0">{{ persona ? persona.name : '...' }}</h2> <h2 style="margin:0">{{ persona ? persona.name : '...' }}</h2>
<span class="badge" :class="persona && persona.channel">{{ persona ? persona.channel : '' }}</span>
<span class="muted" v-if="persona">{{ persona.profession }} · {{ persona.age_group }}</span> <span class="muted" v-if="persona">{{ persona.profession }} · {{ persona.age_group }}</span>
<span v-if="phase === 'done'" class="badge" :class="debrief && debrief.outcome"> <span v-if="phase === 'done'" class="badge" :class="debrief && debrief.outcome">
{{ debrief && debrief.outcome === 'won' ? i18n.t('won') : i18n.t('lost') }} {{ debrief && debrief.outcome === 'won' ? i18n.t('won') : i18n.t('lost') }}

View File

@@ -20,7 +20,7 @@
<li>ระบบสรางบคคลตนแบบ (กคาจำลอง) ใหตโนมแล หลงกดสราง</li> <li>ระบบสรางบคคลตนแบบ (กคาจำลอง) ใหตโนมแล หลงกดสราง</li>
<li>แตละการดคอลกคาจำลอง 1 คน กด <strong> แกไข</strong> เพอปรบรายละเอยดใหตรงใจ</li> <li>แตละการดคอลกคาจำลอง 1 คน กด <strong> แกไข</strong> เพอปรบรายละเอยดใหตรงใจ</li>
<li>อยากไดกคาจำลองเพ กด <strong>สรางบคคลตนแบบเพมเต</strong></li> <li>อยากไดกคาจำลองเพ กด <strong>สรางบคคลตนแบบเพมเต</strong></li>
<li>เมอพอมใหใช กด <strong>เปดใชงาน</strong> (งทำในขนถดไป)</li> <li><strong>มฝ:</strong> ไปทแท <strong>การฝ</strong> เลอกสนคาน เลอกลกคาจำลอง 1 คน กด <strong>แชท</strong> เลอกสถานการณ เรมค</li>
</ol> </ol>
</div> </div>
@@ -42,7 +42,7 @@
<span v-for="n in 5" :key="n" class="star" :class="{ on: n <= (p.difficulty || 1) }"></span> <span v-for="n in 5" :key="n" class="star" :class="{ on: n <= (p.difficulty || 1) }"></span>
</div> </div>
<div class="muted">{{ p.profession }} · {{ p.age_group }} · {{ p.location }}</div> <div class="muted">{{ p.profession }} · {{ p.age_group }} · {{ p.location }}</div>
<div class="muted">{{ p.channel }} · {{ p.initiation_mode === 'seller' ? 'เริ่มขายเอง' : 'ลูกค้าทักก่อน' }}</div> <div class="muted">{{ p.personality }}</div>
<button class="edit-btn" @click="openEdit(p)"><Pencil :size="15" :stroke-width="1.8" /> {{ i18n.t('edit') }}</button> <button class="edit-btn" @click="openEdit(p)"><Pencil :size="15" :stroke-width="1.8" /> {{ i18n.t('edit') }}</button>
</div> </div>
</div> </div>

View File

@@ -10,7 +10,8 @@
<ol style="margin:8px 0 0;padding-left:20px;line-height:1.8"> <ol style="margin:8px 0 0;padding-left:20px;line-height:1.8">
<li>เลอกลกคาจำลอง (คคลตนแบบ) คนหนงทอยากฝกดวย</li> <li>เลอกลกคาจำลอง (คคลตนแบบ) คนหนงทอยากฝกดวย</li>
<li>ระด A ายส ระด C ยากส (จากดาว ความยาก)</li> <li>ระด A ายส ระด C ยากส (จากดาว ความยาก)</li>
<li>กดมสำหรบฝกแชทกกคาคนน (กไดคนละครงเทาน)</li> <li>กด <strong>แชท</strong> เลอกสถานการณ (โซเช / พบหน-โทร / กลบมาตดต) เรมคยกบลกค</li>
<li>กคาจะตดสนใจเองวาซอหรอไม (กไดคนละครงเทาน)</li>
</ol> </ol>
</div> </div>
@@ -34,8 +35,7 @@
</div> </div>
<div class="muted"> <div class="muted">
{{ p.profession }} · {{ p.age_group }} · {{ p.location }}<br /> {{ p.profession }} · {{ p.age_group }} · {{ p.location }}<br />
<span class="badge" :class="p.channel">{{ p.channel }}</span> <span class="muted">{{ i18n.t('difficulty') }} {{ p.difficulty || 1 }}/5</span>
<span class="muted"> · {{ p.initiation_mode === 'seller' ? i18n.t('sellerInitiated') : i18n.t('customerInitiated') }}</span>
</div> </div>
<div class="muted" style="margin-top:6px">{{ p.product_context }}</div> <div class="muted" style="margin-top:6px">{{ p.product_context }}</div>

View File

@@ -46,7 +46,6 @@
> >
<div class="muted" style="margin:6px 0 12px">{{ productName(g) }}</div> <div class="muted" style="margin:6px 0 12px">{{ productName(g) }}</div>
<div class="row" style="gap:8px"> <div class="row" style="gap:8px">
<span class="badge" :class="g.channel || 'line'">{{ g.channel || 'line' }}</span>
<span class="muted">{{ personaCount(g) }} {{ i18n.t('personas').toLowerCase() }}</span> <span class="muted">{{ personaCount(g) }} {{ i18n.t('personas').toLowerCase() }}</span>
</div> </div>
<button class="primary" style="width:100%;margin-top:12px"> <button class="primary" style="width:100%;margin-top:12px">