1import{c as k,t as D,u as N,j as s,f as S,A as v,U as C,k as L,C as d,a as u,b,d as i,S as m,r as h}from"./index-BGOIdAGT.js";import{C as f}from"./chart-column-CVtoLU6_.js";import{M as I}from"./message-square-BmlSQM0U.js";import{F as q}from"./flame-BQBcHP4c.js";import{T as A}from"./trending-up-5ufrsTXo.js";const j=k("Bell",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);function x({title:e,value:t,icon:o,description:c,loading:l}){return s.jsx(d,{"data-loc":"client/src/pages/Dashboard.tsx:33",children:s.jsx(i,{"data-loc":"client/src/pages/Dashboard.tsx:34",className:"p-5",children:s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:35",className:"flex items-start justify-between",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:36",children:[s.jsx("p",{"data-loc":"client/src/pages/Dashboard.tsx:37",className:"text-sm text-muted-foreground",children:e}),l?s.jsx(m,{"data-loc":"client/src/pages/Dashboard.tsx:39",className:"mt-1 h-8 w-16"}):s.jsx("p",{"data-loc":"client/src/pages/Dashboard.tsx:41",className:"mt-1 text-2xl font-bold",children:t}),c&&s.jsx("p",{"data-loc":"client/src/pages/Dashboard.tsx:44",className:"mt-1 text-xs text-muted-foreground",children:c})]}),s.jsx("div",{"data-loc":"client/src/pages/Dashboard.tsx:47",className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",children:s.jsx(o,{"data-loc":"client/src/pages/Dashboard.tsx:48",className:"h-5 w-5 text-primary"})})]})})})}function M(){const[e,t]=h.useState(typeof Notification<"u"?Notification.permission:"denied");return{permission:e,request:()=>{typeof Notification>"u"||e==="default"&&Notification.requestPermission().then(t)},notify:(l,n)=>{if(e==="granted")try{new Notification(l,{body:n,icon:"/favicon.ico",tag:"kun-hot-lead"})}catch{}}}}function B(){const[,e]=N(),t=M(),{data:o}=D.admin.conversations.useQuery({leadStatus:"hot",limit:5},{refetchInterval:3e4}),[c,l]=h.useState(()=>{try{const a=localStorage.getItem("kun-seen-hot-leads");return a?new Set(JSON.parse(a)):new Set}catch{return new Set}}),n=o?.items||[],r=n.filter(a=>!c.has(a.id)),g=h.useRef(0);h.useEffect(()=>{if(r.length>0&&r.length>g.current){const a=r[0];t.notify(`ð¥ æ°ç±å®¢ï¼Score: ${a.leadScore}`,`${a.customerName||"æªç¥è¨ªå®¢"} · ${a.channel==="line"?"LINE":"ç¶²ç«"}${a.customerContact?" · ð æé»è©±":""}`)}g.current=r.length},[r.length]);const w=()=>{const a=n.map(y=>y.id),p=new Set(Array.from(c).concat(a));l(p),localStorage.setItem("kun-seen-hot-leads",JSON.stringify(Array.from(p)))};return r.length===0?t.permission==="default"?s.jsx(d,{"data-loc":"client/src/pages/Dashboard.tsx:122",className:"border-blue-200 bg-blue-50/50 dark:border-blue-900 dark:bg-blue-950/20",children:s.jsx(i,{"data-loc":"client/src/pages/Dashboard.tsx:123",className:"p-4",children:s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:124",className:"flex items-center justify-between",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:125",className:"flex items-center gap-2 text-blue-700 dark:text-blue-400",children:[s.jsx(j,{"data-loc":"client/src/pages/Dashboard.tsx:126",className:"h-4 w-4"}),s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:127",className:"text-sm",children:"éåç覽å¨éç¥ï¼å³ææ¶å°ç±å®¢æé"})]}),s.jsx("button",{"data-loc":"client/src/pages/Dashboard.tsx:129",onClick:t.request,className:"rounded-md bg-blue-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-blue-700 transition-colors",children:"éåéç¥"})]})})}):null:s.jsx(d,{"data-loc":"client/src/pages/Dashboard.tsx:144",className:"border-orange-200 bg-orange-50/50 dark:border-orange-900 dark:bg-orange-950/20",children:s.jsxs(i,{"data-loc":"client/src/pages/Dashboard.tsx:145",className:"p-4",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:146",className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:147",className:"flex items-center gap-2 text-orange-700 dark:text-orange-400",children:[s.jsx(j,{"data-loc":"client/src/pages/Dashboard.tsx:148",className:"h-4 w-4 animate-[bounce_1s_ease-in-out_3]"}),s.jsxs("span",{"data-loc":"client/src/pages/Dashboard.tsx:149",className:"text-sm font-semibold",children:[r.length," åæ°ç±å®¢æé"]})]}),s.jsx("button",{"data-loc":"client/src/pages/Dashboard.tsx:151",onClick:w,className:"text-xs text-muted-foreground hover:text-foreground transition-colors",children:"å
¨é¨å·²è®"})]}),s.jsx("div",{"data-loc":"client/src/pages/Dashboard.tsx:155",className:"space-y-2",children:r.slice(0,3).map(a=>s.jsxs("button",{"data-loc":"client/src/pages/Dashboard.tsx:157",onClick:()=>e("/admin/conversations"),className:"flex items-center justify-between w-full rounded-lg bg-background/80 p-2.5 text-left hover:bg-background transition-colors",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:162",className:"min-w-0",children:[s.jsxs("p",{"data-loc":"client/src/pages/Dashboard.tsx:163",className:"text-sm font-medium truncate",children:[a.customerName||"æªç¥è¨ªå®¢"," · ",a.channel==="line"?"LINE":"ç¶²ç«"]}),s.jsxs("p",{"data-loc":"client/src/pages/Dashboard.tsx:166",className:"text-xs text-muted-foreground",children:["Lead Score: ",s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:167",className:"font-bold text-orange-600",children:a.leadScore}),a.customerContact&&s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:168",className:"ml-2",children:"ð æé»è©±"})]})]}),s.jsx(v,{"data-loc":"client/src/pages/Dashboard.tsx:171",className:"h-4 w-4 text-muted-foreground shrink-0"})]},a.id))})]})})}function H(){const{data:e,isLoading:t}=D.admin.dashboard.useQuery({}),[,o]=N();return s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:185",className:"space-y-6",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:186",className:"flex items-center justify-between",children:[s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:187",children:[s.jsx("h1",{"data-loc":"client/src/pages/Dashboard.tsx:188",className:"text-xl font-semibold",children:"å表æ¿"}),s.jsx("p",{"data-loc":"client/src/pages/Dashboard.tsx:189",className:"text-sm text-muted-foreground",children:"å´å®¶æ±½è» AI 客æç³»çµ±ç¸½è¦½"})]}),s.jsxs(S,{"data-loc":"client/src/pages/Dashboard.tsx:193",variant:"outline",size:"sm",className:"gap-2",onClick:()=>o("/admin/analytics"),children:[s.jsx(f,{"data-loc":"client/src/pages/Dashboard.tsx:194",className:"h-4 w-4"}),"宿´æ¸æåæ",s.jsx(v,{"data-loc":"client/src/pages/Dashboard.tsx:196",className:"h-3.5 w-3.5"})]})]}),s.jsx(B,{"data-loc":"client/src/pages/Dashboard.tsx:201"}),s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:204",className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[s.jsx(x,{"data-loc":"client/src/pages/Dashboard.tsx:205",title:"總å°è©±æ¸",value:e?.stats?.totalConversations??0,icon:I,loading:t}),s.jsx(x,{"data-loc":"client/src/pages/Dashboard.tsx:211",title:"åæ ¼æ½å®¢",value:e?.stats?.qualifiedLeads??0,icon:C,description:"Lead Score ⥠60",loading:t}),s.jsx(x,{"data-loc":"client/src/pages/Dashboard.tsx:218",title:"é«å質æ½å®¢",value:e?.stats?.hotLeads??0,icon:q,description:"å·²æ¨æéç¥",loading:t}),s.jsx(x,{"data-loc":"client/src/pages/Dashboard.tsx:225",title:"å¨å®è»è¼",value:e?.vehicleCount??0,icon:L,loading:t})]}),s.jsxs(d,{"data-loc":"client/src/pages/Dashboard.tsx:234",children:[s.jsx(u,{"data-loc":"client/src/pages/Dashboard.tsx:235",children:s.jsxs(b,{"data-loc":"client/src/pages/Dashboard.tsx:236",className:"flex items-center gap-2 text-base",children:[s.jsx(f,{"data-loc":"client/src/pages/Dashboard.tsx:237",className:"h-4 w-4"}),"æ¸ éåä½"]})}),s.jsx(i,{"data-loc":"client/src/pages/Dashboard.tsx:241",children:t?s.jsx("div",{"data-loc":"client/src/pages/Dashboard.tsx:243",className:"space-y-3",children:[1,2,3].map(c=>s.jsx(m,{"data-loc":"client/src/pages/Dashboard.tsx:245",className:"h-8 w-full"},c))}):e?.stats?.channelBreakdown?.length?s.jsx("div",{"data-loc":"client/src/pages/Dashboard.tsx:249",className:"space-y-3",children:e.stats.channelBreakdown.map(c=>{const l=e.stats?.totalConversations||1,n=Math.round(Number(c.count)/l*100),r={web:"ç¶²ç«",line:"LINE",facebook:"Facebook",youtube:"YouTube",other:"å
¶ä»"};return s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:261",className:"flex items-center gap-3",children:[s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:262",className:"w-20 text-sm font-medium",children:r[c.channel]||c.channel}),s.jsx("div",{"data-loc":"client/src/pages/Dashboard.tsx:265",className:"flex-1 h-6 rounded-full bg-muted overflow-hidden",children:s.jsx("div",{"data-loc":"client/src/pages/Dashboard.tsx:266",className:"h-full rounded-full bg-primary/80 transition-all",style:{width:`${Math.max(n,5)}%`}})}),s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:271",className:"w-12 text-right text-sm text-muted-foreground",children:c.count})]},c.channel)})}):s.jsx("p",{"data-loc":"client/src/pages/Dashboard.tsx:279",className:"py-8 text-center text-sm text-muted-foreground",children:"å°ç¡å°è©±è³æ"})})]}),s.jsxs(d,{"data-loc":"client/src/pages/Dashboard.tsx:287",children:[s.jsx(u,{"data-loc":"client/src/pages/Dashboard.tsx:288",children:s.jsxs(b,{"data-loc":"client/src/pages/Dashboard.tsx:289",className:"flex items-center gap-2 text-base",children:[s.jsx(A,{"data-loc":"client/src/pages/Dashboard.tsx:290",className:"h-4 w-4"}),"å¹³å Lead 忏"]})}),s.jsx(i,{"data-loc":"client/src/pages/Dashboard.tsx:294",children:t?s.jsx(m,{"data-loc":"client/src/pages/Dashboard.tsx:296",className:"h-16 w-full"}):s.jsxs("div",{"data-loc":"client/src/pages/Dashboard.tsx:298",className:"flex items-center gap-4",children:[s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:299",className:"text-4xl font-bold text-primary",children:Math.round(e?.stats?.avgLeadScore??0)}),s.jsx("span",{"data-loc":"client/src/pages/Dashboard.tsx:302",className:"text-sm text-muted-foreground",children:"/ 100"})]})})]})]})}export{H 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.