Files
machartaa_admin_dist/dist/assets/index-2f00b1da.js
T

2 lines
7.3 KiB
JavaScript

import{_ as T}from"./button.vue_vue_type_style_index_0_lang-c84b0596.js";import{d as j,u as E,i as g,j as C,x as $,o as n,c as a,b as e,t as r,e as R,w as v,f as m,k as d,l as u,F as _,q as z,H as h,n as q}from"./index-88b436a3.js";import{u as F,b as G,c as O,a as V,s as D,e as H,d as U,f as K,G as J}from"./story-4-d4ae0440.js";import{g as P,r as Q}from"./userSegments-cc90ca18.js";import{S as f}from"./index-77cb2497.js";import{T as W}from"./isSymbol-5adcf314.js";import"./Icon-e9d21126.js";import"./_plugin-vue_export-helper-0965689e.js";import"./index-371b21ab.js";import"./vnode-4c3cf924.js";const X={class:"m-2 md:m-5 bg-white p-2 md:p-3 rounded-xl"},Y={class:"flex flex-wrap items-center justify-between gap-3 mb-4"},Z=e("h2",{class:"text-xl font-bold m-0"},"سگمنت کاربران",-1),tt={class:"flex flex-wrap items-center gap-2"},et={class:"text-sm text-gray-600"},st={class:"grid grid-cols-1 md:grid-cols-4 gap-3 mb-4"},ot={class:"rounded-lg border border-gray-100 bg-gray-50 p-3"},nt=e("div",{class:"text-xs text-gray-500"},"سگمنت‌های تعریف‌شده",-1),at={class:"text-lg font-bold mt-1"},rt={class:"rounded-lg border border-gray-100 bg-gray-50 p-3"},lt=e("div",{class:"text-xs text-gray-500"},"سگمنت‌های فعال",-1),it={class:"text-lg font-bold mt-1"},ct={class:"rounded-lg border border-gray-100 bg-gray-50 p-3"},dt=e("div",{class:"text-xs text-gray-500"},"کاربران یکتا در حداقل یک سگمنت",-1),ut={class:"text-lg font-bold mt-1"},_t={class:"rounded-lg border border-gray-100 bg-gray-50 p-3"},mt=e("div",{class:"text-xs text-gray-500"},"عضو چند سگمنت",-1),ft={class:"text-lg font-bold mt-1"},pt={class:"grid grid-cols-1 md:grid-cols-4 gap-3"},gt=["onClick"],vt=["src","alt"],ht={class:"flex flex-col justify-between w-full mr-2 min-w-0"},bt={class:"text-base font-bold block truncate"},xt={class:"text-[11px] text-gray-400"},yt={class:"flex items-center justify-end min-h-[24px]"},St={class:"text-base font-bold"},kt={key:0,class:"mr-1"},Et=j({__name:"index",setup(Ct){const b=[F,G,O,V,D,H,U,K],w=[{code:"raw_registration",title:"ثبت‌نام خام",description:"ثبت‌نام کرده و هیچ چالشی شروع نکرده"},{code:"warm_user",title:"کاربر گرم",description:"چالش رایگان شروع کرده و هنوز خرید نکرده"},{code:"new_customer",title:"مشتری جدید",description:"در ۷ روز اخیر برای اولین بار اشتراک گرفته"},{code:"lost_user",title:"کاربر از دست رفته",description:"بیش از ۳۰ روز وارد اپ نشده"},{code:"active_customer",title:"مشتری فعال",description:"اشتراک فعال و انجام چالش در ۷ روز اخیر"},{code:"inactive_customer",title:"مشتری غیرفعال",description:"اشتراک فعال و عدم انجام چالش در ۷ روز اخیر"},{code:"churn_risk_customer",title:"در معرض ریزش",description:"اشتراک فعال و عدم انجام چالش در ۱۵ روز اخیر"},{code:"expired_user",title:"منقضی‌شده",description:"اشتراک تمام شده و تمدید نکرده"},{code:"never_entered_challenges",title:"وارد چالش‌ها نشده‌اند",description:"کاربرانی که وارد بخش چالش‌ها نشده‌اند"},{code:"challenge1_completed_no_sub",title:"چالش ۱ بدون اشتراک",description:"چالش شماره ۱ را انجام داده‌اند ولی اشتراک نخریده‌اند"},{code:"subscription_intent_no_pay",title:"قصد اشتراک بدون پرداخت",description:"روی اشتراک کلیک کرده‌اند ولی خرید نهایی نکرده‌اند"},{code:"active_subscribers",title:"مشترکین فعال",description:"تمامی مشترکین فعال"}],A=E(),l=g(!0),p=g(!1),i=g({definedCount:0,activeCount:0,uniqueMembers:null,multiSegmentMembers:null,lastSuccessfulRunAt:null,lastRunStatus:"never_run",lastRunStartedAt:null,lastRunFinishedAt:null,lastRunError:null,segments:[]});function x(s){return s==null?"—":s.toLocaleString("fa-IR")}function L(s){return s==="never_run"?"هنوز محاسبه نشده":s==="running"?"در حال محاسبه":s==="failed"?"آخرین محاسبه ناموفق؛ اعداد آخرین اجرای موفق":""}const M=C(()=>{const s=i.value;return s.lastRunStatus==="running"?"وضعیت: در حال اجرا":s.lastRunStatus==="never_run"?"وضعیت: هنوز اجرا نشده":s.lastRunStatus==="failed"?`وضعیت: ناموفق${s.lastSuccessfulRunAt?" · آخرین موفق موجود است":""}`:s.lastSuccessfulRunAt?`آخرین به‌روزرسانی موفق: ${new Date(s.lastSuccessfulRunAt).toLocaleString("fa-IR")}`:"وضعیت: موفق"}),N=C(()=>{const s=(i.value.segments||[]).filter(t=>t.source!=="live"&&t.isActive!==!1);return(s.length>0?[...s].sort((t,o)=>(t.sortOrder??0)-(o.sortOrder??0)):w.map((t,o)=>({...t,version:1,isActive:!0,sortOrder:(o+1)*10,memberCount:null,computationStatus:"never_run",lastComputedAt:null}))).map((t,o)=>{const S=t.memberCount==null?"—":Number(t.memberCount).toLocaleString("fa-IR"),k=L(t.computationStatus);return{code:t.code,title:t.title,value:S,image:b[o%b.length],tooltip:[t.description||t.title,k].filter(Boolean).join(" — ")}})});function B(s){A.push({name:"membersMain_users",query:{segment:s}})}async function y(){var s,c;l.value=!0;try{const t=await P();t&&(i.value=t)}catch(t){h.error(((c=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:c.error)||"خطا در دریافت آمار سگمنت‌ها")}finally{l.value=!1}}async function I(){var s,c;p.value=!0;try{const t=await Q();h.success(`محاسبه انجام شد · وارد: ${((t==null?void 0:t.enteredCount)||0).toLocaleString("fa-IR")} · خارج: ${((t==null?void 0:t.leftCount)||0).toLocaleString("fa-IR")}`),await y()}catch(t){h.error(((c=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:c.error)||"اجرای محاسبه ممکن نشد")}finally{p.value=!1}}return $(()=>{y()}),(s,c)=>{const t=T;return n(),a("div",X,[e("div",Y,[Z,e("div",tt,[e("span",et,r(M.value),1),R(t,{loading:p.value,onClick:I},{default:v(()=>[m("محاسبه مجدد")]),_:1},8,["loading"])])]),e("div",st,[e("div",ot,[nt,e("div",at,[l.value?(n(),d(u(f),{key:0,size:"small"})):(n(),a(_,{key:1},[m(r(i.value.definedCount.toLocaleString("fa-IR")),1)],64))])]),e("div",rt,[lt,e("div",it,[l.value?(n(),d(u(f),{key:0,size:"small"})):(n(),a(_,{key:1},[m(r(i.value.activeCount.toLocaleString("fa-IR")),1)],64))])]),e("div",ct,[dt,e("div",ut,[l.value?(n(),d(u(f),{key:0,size:"small"})):(n(),a(_,{key:1},[m(r(x(i.value.uniqueMembers)),1)],64))])]),e("div",_t,[mt,e("div",ft,[l.value?(n(),d(u(f),{key:0,size:"small"})):(n(),a(_,{key:1},[m(r(x(i.value.multiSegmentMembers)),1)],64))])])]),e("div",pt,[(n(!0),a(_,null,z(N.value,(o,S)=>(n(),d(J,{class:"h-[120px] p-5",key:o.code},{default:v(()=>[R(u(W),{title:o.tooltip,placement:"top"},{default:v(()=>[e("div",{class:"flex cursor-pointer h-full",onClick:k=>B(o.code)},[e("div",null,[e("img",{class:"w-20 h-20",src:o.image,alt:o.code},null,8,vt)]),e("div",ht,[e("div",null,[e("span",bt,r(o.title),1),e("span",xt,r(o.code),1)]),e("div",yt,[l.value?(n(),d(u(f),{key:0,size:"small"})):(n(),a(_,{key:1},[e("span",St,r(o.value),1),o.value!=="—"?(n(),a("span",kt,"نفر")):q("",!0)],64))])])],8,gt)]),_:2},1032,["title"])]),_:2},1024))),128))])])}}});export{Et as default};