1import{d as st,q as at,r as m,v as nt,E as rt,o as d,c,a as e,n as v,l as o,t as i,b as S,j as it,C as x,G as U,x as A,k as O,F,h as N,D as y,e as w,z as G,A as k,J as lt}from"./SyGe6PDx.js";import{_ as dt}from"./CS0hHkMD.js";const ct={class:"w-full"},ut={class:"flex h-14 items-center justify-between border-b border-gray-200 bg-white px-5"},pt={class:"flex items-center gap-3"},mt=["disabled"],xt={key:0,class:"flex justify-center py-20"},gt={key:1,class:"mx-auto max-w-5xl space-y-5 p-5"},bt={class:"rounded-2xl border border-gray-200 bg-white p-5"},vt={class:"flex flex-wrap items-center justify-between gap-3"},yt={class:"mt-4 grid grid-cols-2 gap-3 lg:grid-cols-4"},ft={class:"rounded-xl bg-gray-50 px-3 py-2.5"},_t={class:"mt-0.5 text-lg font-black text-gray-900"},ht={class:"rounded-xl bg-gray-50 px-3 py-2.5"},wt={class:"mt-0.5 text-lg font-black text-gray-900"},kt={class:"rounded-xl bg-gray-50 px-3 py-2.5"},Pt={class:"mt-0.5 text-lg font-black text-gray-900"},Vt={class:"rounded-xl bg-gray-50 px-3 py-2.5"},$t={key:0,class:"flex h-56 items-center justify-center"},Dt={key:1,class:"flex h-56 items-center justify-center text-center text-sm text-gray-400"},jt={key:2,class:"mt-4 h-64"},Rt={key:3,class:"mt-5 border-t border-gray-100 pt-4"},Ct={class:"mt-3 h-48"},Mt={class:"rounded-2xl border border-gray-200 bg-white p-5"},St={class:"flex items-start justify-between gap-4"},At=["aria-pressed"],Ft={class:"rounded-2xl border border-gray-200 bg-white p-5"},Nt={class:"flex flex-wrap items-start justify-between gap-3"},Bt={class:"text-xs text-gray-400"},qt={class:"mt-4 flex flex-wrap items-end gap-2 rounded-xl bg-gray-50 p-3"},zt=["value"],Ht=["value"],Ut=["min"],Gt={class:"mt-4 grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-4"},Lt={class:"w-12 shrink-0 font-mono text-xs text-gray-500"},Tt=["onUpdate:modelValue","min"],Et={class:"mt-4 rounded-xl border border-gray-100 bg-gray-50 p-3"},Ot={class:"mt-0.5 text-[11px] text-gray-400"},It={class:"mt-3 space-y-2"},Jt={class:"min-w-0 flex-1"},Qt={class:"truncate text-xs font-semibold text-gray-900"},Xt={class:"truncate text-[10px] text-gray-400"},Kt={class:"shrink-0 text-right"},Wt={class:"text-xs font-bold text-gray-900"},Yt={class:"text-[10px] text-gray-400"},Zt={class:"mt-3 flex items-center justify-between border-t border-gray-200 pt-2"},te={class:"text-sm font-black text-gray-900"},ee={class:"rounded-2xl border border-gray-200 bg-white p-5"},oe={class:"mt-4 grid gap-4 sm:grid-cols-2"},se={class:"block"},ae={class:"dica"},ne={class:"text-gray-600"},re={class:"block"},ie={class:"dica"},le={class:"block"},de=["max"],ce={class:"block"},ue={class:"dica"},pe=st({__name:"boost",setup(me){const P=at(),B=m(!0),V=m(!1),b=m(""),$=m(!1),n=G({vagasPorGenero:3,maxPorDia:5,maxConsecutivos:2,minAnuncios:20,ativo:!1}),p=m(Array(24).fill(50)),D=G({precoMinimo:500,precoMaximo:5e5}),j=G({grupos:0,cidades:0}),f=m(18),_=m(23),R=m(100),q=s=>`${String(s).padStart(2,"0")}:00`,C=s=>(Number(s||0)/100).toFixed(2).replace(".",","),I=s=>{const t=p.value[s]||0,r=Math.max(...p.value,1);return t>=r?"border-[#f6cede] bg-[#fdf2f8]":t>=r*.7?"border-purple-100 bg-purple-50/60":"border-blue-100 bg-blue-50/50"},z=k(()=>p.value.reduce((s,t)=>s+(t||0)*100*2*n.vagasPorGenero,0)),J=s=>{const t=[];let r=s[0],l=s[0];for(const a of s.slice(1)){if(a===l+1){l=a;continue}t.push(r===l?`${r}h`:`${r}hâ${l+1}h`),r=a,l=a}return t.push(r===l?`${r}h`:`${r}hâ${l+1}h`),t.join(" · ")},Q=["bg-blue-400","bg-amber-400","bg-[#df3884]","bg-purple-400"],X=k(()=>{const s=z.value||1;return[...new Set(p.value)].sort((r,l)=>r-l).map((r,l)=>{const a=p.value.map((h,ot)=>h===r?ot:-1).filter(h=>h>=0),g=r*100*2*n.vagasPorGenero*a.length;return{preco:r,horas:a,resumo:J(a),receita:g,fatia:Math.round(g/s*100),cor:Q[l]||"bg-gray-400"}})}),K=k(()=>{const s=(n.maxPorDia||0)/2;return Number.isInteger(s)?`${s}h`:`${Math.floor(s)}h30`}),W=()=>{const s=Math.min(f.value,_.value),t=Math.max(f.value,_.value);for(let r=s;r<=t;r++)p.value[r]=R.value},L=s=>Number(s||0).toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2}),M=m("30"),u=m(null),H=m(!0),T=async()=>{H.value=!0;try{u.value=await P(`/admin/boost/vendas?dias=${M.value}`)}catch{u.value=null}finally{H.value=!1}},Y=k(()=>{const s=u.value?.serie||[];return{tooltip:{trigger:"axis",valueFormatter:t=>typeof t=="number"?t.toFixed(2):t},grid:{top:20,right:16,bottom:30,left:50},xAxis:{type:"category",data:s.map(t=>t.dia.slice(5).split("-").reverse().join("/")),axisLabel:{fontSize:10,interval:s.length>45?6:s.length>20?2:0}},yAxis:{type:"value",axisLabel:{fontSize:10,formatter:"R$ {value}"}},series:[{name:"Receita",type:"bar",data:s.map(t=>t.receita),itemStyle:{color:"#8b5cf6",borderRadius:[4,4,0,0]}}]}}),Z=k(()=>{const s=u.value?.porHora||[];return{tooltip:{trigger:"axis"}
1,grid:{top:16,right:16,bottom:26,left:34},xAxis:{type:"category",data:s.map(t=>`${String(t.hora).padStart(2,"0")}h`),axisLabel:{fontSize:9,interval:1}},yAxis:{type:"value",minInterval:1,axisLabel:{fontSize:10}},series:[{name:"Blocos",type:"bar",data:s.map(t=>t.blocos),itemStyle:{color:"#F11F74",borderRadius:[3,3,0,0]}}]}}),tt=async()=>{try{const s=await P("/admin/boost/config");Object.assign(n,{vagasPorGenero:s.config.vagasPorGenero,maxPorDia:s.config.maxPorDia,maxConsecutivos:s.config.maxConsecutivos,minAnuncios:s.config.minAnuncios,ativo:s.config.ativo}),p.value=s.config.precosPorHora.map(t=>t/100),Object.assign(D,s.limites),Object.assign(j,s.alcance)}catch{$.value=!0,b.value="Não consegui carregar a configuração"}finally{B.value=!1}},E=async()=>{try{const s=await P("/admin/boost/config");Object.assign(j,s.alcance)}catch{}},et=async()=>{V.value=!0,b.value="",$.value=!1;try{const s=await P("/admin/boost/config",{method:"PUT",body:{...n,precosPorHora:p.value.map(t=>Math.round((t||0)*100))}});p.value=s.config.precosPorHora.map(t=>t/100),Object.assign(n,s.config),await E(),b.value="Configuração salva"}catch(s){$.value=!0,b.value=s?.data?.error||"Erro ao salvar"}finally{V.value=!1,setTimeout(()=>{b.value=""},4e3)}};return nt(()=>{tt(),T()}),rt({title:"Boost â configuração"}),(s,t)=>{const r=it,l=dt;return d(),c("div",ct,[e("div",ut,[t[9]||(t[9]=e("h1",{class:"font-semibold text-gray-900"},"Boost",-1)),e("div",pt,[e("span",{class:v(["rounded-full px-2.5 py-1 text-[11px] font-bold",o(n).ativo?"bg-emerald-50 text-emerald-700":"bg-gray-100 text-gray-500"])},i(o(n).ativo?"Vendendo":"Desligado"),3),e("button",{type:"button",disabled:o(V)||o(B),class:"rounded-xl px-4 py-2 text-sm font-bold text-white transition active:scale-[0.98] disabled:opacity-50",style:{background:"linear-gradient(90deg, #F11F74 0%, #E91E63 100%)"},onClick:et},i(o(V)?"Salvando...":"Salvar"),9,mt)])]),o(B)?(d(),c("div",xt,[S(r,{name:"svg-spinners:ring-resize",class:"h-8 w-8 text-gray-300"})])):(d(),c("div",gt,[e("section",bt,[e("div",vt,[t[11]||(t[11]=e("div",null,[e("h2",{class:"text-sm font-bold text-gray-900"},"Boosts vendidos por dia"),e("p",{class:"mt-0.5 text-xs text-gray-500"}," Blocos de 30 min pagos, na data em que ficaram no ar. ")],-1)),x(e("select",{"onUpdate:modelValue":t[0]||(t[0]=a=>A(M)?M.value=a:null),class:"rounded-xl border border-gray-200 bg-white px-3 py-1.5 text-xs outline-none focus:border-gray-400",onChange:T},[...t[10]||(t[10]=[e("option",{value:"7"},"7 dias",-1),e("option",{value:"30"},"30 dias",-1),e("option",{value:"90"},"90 dias",-1)])],544),[[U,o(M)]])]),e("div",yt,[e("div",ft,[t[12]||(t[12]=e("p",{class:"text-[10px] font-bold uppercase tracking-wide text-gray-400"},"Receita",-1)),e("p",_t,"R$ "+i(L(o(u)?.totais?.receita||0)),1)]),e("div",ht,[t[13]||(t[13]=e("p",{class:"text-[10px] font-bold uppercase tracking-wide text-gray-400"},"Blocos",-1)),e("p",wt,i(o(u)?.totais?.blocos||0),1)]),e("div",kt,[t[14]||(t[14]=e("p",{class:"text-[10px] font-bold uppercase tracking-wide text-gray-400"},"Ticket médio",-1)),e("p",Pt,"R$ "+i(L(o(u)?.totais?.ticket||0)),1)]),e("div",Vt,[t[15]||(t[15]=e("p",{class:"text-[10px] font-bold uppercase tracking-wide text-gray-400"},"Não pagos",-1)),e("p",{class:v(["mt-0.5 text-lg font-black",(o(u)?.totais?.reservasNaoPagas||0)>(o(u)?.totais?.blocos||0)?"text-amber-600":"text-gray-900"])},i(o(u)?.totais?.reservasNaoPagas||0),3)])]),o(H)?(d(),c("div",$t,[S(r,{name:"svg-spinners:ring-resize",class:"h-7 w-7 text-gray-300"})])):o(u)?.totais?.blocos?(d(),c("div",jt,[S(l,{option:o(Y),autoresize:"",class:"h-full w-full"},null,8,["option"])])):(d(),c("p",Dt," Nenhum boost vendido no perÃodo. ")),o(u)?.totais?.blocos?(d(),c("div",Rt,[t[16]||(t[16]=e("h3",{class:"text-xs font-bold uppercase tracking-wide text-gray-400"}," Horário em que venderam ",-1)),e("div",Ct,[S(l,{option:o(Z),autoresize:"",class:"h-full w-full"},null,8,["option"])])])):O("",!0)]),e("section",Mt,[e("div",St,[t[17]||(t[17]=e("div",null,[e("h2",{class:"text-sm font-bold text-gray-900"},"Venda de boost"),e("p",{class:"mt-0.5 text-xs text-gray-500"}," Desligado, a tela some do painel da anunciante. Blocos já pagos continuam valendo. ")],-1)),e("button",{type:"button",class:v(["relative h-7 w-12 shrink-0 rounded-full transition",o(n).ativo?"bg-emerald-500":"bg-gray-300"]),"aria-pressed":o(n).ativo,onClick:t[1]||(t[1]=a=>o(n).ativo=!o(n).ativo)},[e("span",{class:v(["absolute top-1 h-5 w-5 rounded-full bg-white shadow transition-all",o(n).ativo?"left-6":"left-1"])},null,2)],10,At)])]),e("section",Ft,[e("div",Nt,[t[18]||(t[18]=e("div",null,[e("h2",{class:"text-sm font-bold text-gray-900"},"Preço por hora"),e("p",{class:"mt-0.5 text-xs text-gray-500"}," Valor de um bloco de 30 minutos. Cada hora tem seu preço â os dois blocos da hora custam igual. ")],-1)),e("p",Bt," MÃnimo R$ "+i(C(o(D).precoMinimo))+" · o plano básico de 15 dias ",1)]),e("div",qt,[e("div",null,[t[19]||(t[19]=e("label",{class:"mb-1 block text-[11px] font-semibold text-gray-500"},"Das",-1)),x(e("select",{"onUpdate:modelValue":t[2]||(t[2]=a=>A(f)?f.value=a:null),class:"rounded-lg border border-gray-200 px-2 py-1.5 text-sm"},[(d(),c(F,null,N(24,a=>e("option",{key:a-1,value:a-1},i(q(a-1)),9,zt)),64))],512),[[U,o(f),void 0,{number:!0}]])]),e("div",null,[t[20]||(t[20]=e("label",{class:"mb-1 block text-[11px] font-semibold text-gray-500"},"até",-1)),x(e("select",{"onUpdate:modelValue":t[3]||(t[3]=a=>A(_)?_.value=a:null),class:"rounded-lg border border-gray-200 px-2 py-1.5 text-sm"},[(d(),c(F,null,N(24,a=>e("option",{key:a-1,value:a-1},i(q(a-1)),9,Ht)),64))],512),[[U,o(_),void 0,{number:!0}]])]),e("div",null,[t[21]||(t[21]=e("label",{class:"mb-1 block text-[11px] font-semibold text-gray-500"},"R$",-1)),x(e("input",{"onUpdate:modelValue":t[4]||(t[4]=a=>A(R)?R.value=a:null),type:"number",min:o(D).precoMinimo/100,step:"5",class:"w-24 rounded-lg border border-gray-200 px-2 py-1.5 text-sm"},null,8,Ut),[[y,o(R),void 0,{number:!0}]])]),e("button",{type:"button",class:"rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm font-semibold text-gray-700 transition hover:border-gray-300",onClick:W}," Aplicar na faixa ")]),e("div",Gt,[(d(),c(F,null,N(24,(a,g)=>e("div",{key:g,class:v(["flex items-center gap-2 rounded-xl border px-3 py-2",I(g)])},[e("span",Lt,i(q(g)),1),t[22]||(t[22]=e("span",{class:"text-xs text-gray-400"},"R$",-1)),x(e("input",{"onUpdate:modelValue":h=>o(p)[g]=h,type:"number",min:o(D).precoMinimo/100,step:"5",class:"w-full min-w-0 bg-transparent text-sm font-semibold text-gray-900 outline-none"}
1,null,8,Tt),[[y,o(p)[g],void 0,{number:!0}]])],2)),64))]),e("div",Et,[t[24]||(t[24]=e("p",{class:"text-[11px] font-semibold uppercase tracking-wide text-gray-500"}," Receita máxima por dia, se tudo vender ",-1)),e("p",Ot," Por cidade e gênero · "+i(o(n).vagasPorGenero)+" vagas à 2 blocos por hora ",1),e("div",It,[(d(!0),c(F,null,N(o(X),a=>(d(),c("div",{key:a.preco,class:"flex items-center gap-3"},[e("span",{class:v(["h-2.5 w-2.5 shrink-0 rounded-full",a.cor])},null,2),e("div",Jt,[e("p",Qt," R$ "+i(a.preco)+" · "+i(a.horas.length)+"h por dia ",1),e("p",Xt,i(a.resumo),1)]),e("div",Kt,[e("p",Wt,"R$ "+i(C(a.receita)),1),e("p",Yt,i(a.fatia)+"% do total",1)])]))),128))]),e("div",Zt,[t[23]||(t[23]=e("p",{class:"text-xs font-bold text-gray-900"},"Total",-1)),e("p",te,"R$ "+i(C(o(z))),1)])])]),e("section",ee,[t[35]||(t[35]=e("h2",{class:"text-sm font-bold text-gray-900"},"Limites",-1)),t[36]||(t[36]=e("p",{class:"mt-0.5 text-xs text-gray-500"}," à o que mantém o boost escasso. Aumentar qualquer um destes números enfraquece o destaque. ",-1)),e("div",oe,[e("label",se,[t[27]||(t[27]=e("span",{class:"text-xs font-semibold text-gray-700"},"Vagas por gênero",-1)),x(e("input",{"onUpdate:modelValue":t[5]||(t[5]=a=>o(n).vagasPorGenero=a),type:"number",min:"1",max:"10",class:"campo"},null,512),[[y,o(n).vagasPorGenero,void 0,{number:!0}]]),e("span",ae,[t[25]||(t[25]=w(" Quantos anúncios ficam no topo ao mesmo tempo, em rodÃzio. à o único limite que mexe no teto de receita: hoje ",-1)),e("strong",ne,"R$ "+i(C(o(z))),1),t[26]||(t[26]=w(" por dia. ",-1))])]),e("label",re,[t[28]||(t[28]=e("span",{class:"text-xs font-semibold text-gray-700"},"Máximo por anunciante, por dia",-1)),x(e("input",{"onUpdate:modelValue":t[6]||(t[6]=a=>o(n).maxPorDia=a),type:"number",min:"1",max:"48",class:"campo"},null,512),[[y,o(n).maxPorDia,void 0,{number:!0}]]),e("span",ie,i(o(n).maxPorDia)+" blocos = "+i(o(K))+" de topo. Sem teto, quem tem dinheiro compra o dia inteiro. Não altera a receita possÃvel â muda de quantas pessoas ela vem. ",1)]),e("label",le,[t[29]||(t[29]=e("span",{class:"text-xs font-semibold text-gray-700"},"Blocos seguidos",-1)),x(e("input",{"onUpdate:modelValue":t[7]||(t[7]=a=>o(n).maxConsecutivos=a),type:"number",min:"1",max:o(n).maxPorDia,class:"campo"},null,8,de),[[y,o(n).maxConsecutivos,void 0,{number:!0}]]),t[30]||(t[30]=e("span",{class:"dica"},"Depois desse limite, entra outra pessoa. Também não altera o teto de receita.",-1))]),e("label",ce,[t[34]||(t[34]=e("span",{class:"text-xs font-semibold text-gray-700"},"MÃnimo de anúncios na cidade",-1)),x(e("input",{"onUpdate:modelValue":t[8]||(t[8]=a=>o(n).minAnuncios=a),type:"number",min:"1",max:"1000",class:"campo",onChange:E},null,544),[[y,o(n).minAnuncios,void 0,{number:!0}]]),e("span",ue,[t[31]||(t[31]=w(" Hoje: ",-1)),e("strong",null,i(o(j).grupos),1),t[32]||(t[32]=w(" combinações de cidade e gênero, em ",-1)),e("strong",null,i(o(j).cidades),1),t[33]||(t[33]=w(" cidades. ",-1))])])])]),o(b)?(d(),c("p",{key:0,class:v(["text-center text-sm",o($)?"text-red-500":"text-emerald-600"])},i(o(b)),3)):O("",!0)]))])}}}),be=lt(pe,[["__scopeId","data-v-c3b7935e"]]);export{be 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.