Files
sales-trainer/frontend/dist/assets/WeakAreas-D4pzX9E5.js
Macky c19b23d44d fix(Docker): ship prebuilt frontend/dist, drop npm from image (removes 'vite not found')
The Vue SPA is now built locally and its frontend/dist/ committed (force-added).
Dockerfile is a single-stage runtime: copy prebuilt dist + python:3.11 + Flask.
No node/npm inside the image -> deterministic, no npm/esbuild postinstall flakiness.
To update UI: edit src, npm run build, commit frontend/dist/.
2026-08-07 19:46:20 +07:00

2 lines
1.8 KiB
JavaScript

import{k as _,p as m,c as l,a as s,t,u as c,i as v,l as y,m as g,F as r,n as i,e as k,r as x,q as w,o as n,x as f,j as d}from"./index-B1lw4PRH.js";import{_ as b}from"./_plugin-vue_export-helper-DlAUqK2U.js";const N={class:"row",style:{"align-items":"center"}},h={style:{margin:"0"}},A={class:"row",style:{gap:"16px",margin:"16px 0"}},C={class:"card stat"},T={class:"card stat"},V={class:"card stat"},B={key:0,class:"card muted"},W={class:"muted"},F={__name:"WeakAreas",setup(L){const a=x({wins:0,losses:0,total_sessions:0,by_tier:[],top_loss_personas:[]});return _(async()=>{a.value=(await m.weakAreas()).insight}),(j,e)=>{const u=w("router-link");return n(),l("div",null,[s("div",N,[s("h2",h,t(c(v).t("weakAreas")),1),y(u,{to:"/my/generate?mode=weak",style:{"margin-left":"auto"}},{default:g(()=>[...e[0]||(e[0]=[s("button",{class:"primary"},"🔒 Generate a lock persona",-1)])]),_:1})]),s("div",A,[s("div",C,[e[1]||(e[1]=s("div",null,"Wins",-1)),s("strong",null,t(a.value.wins),1)]),s("div",T,[e[2]||(e[2]=s("div",null,"Losses",-1)),s("strong",null,t(a.value.losses),1)]),s("div",V,[e[3]||(e[3]=s("div",null,"Total",-1)),s("strong",null,t(a.value.total_sessions),1)])]),(n(!0),l(r,null,i(a.value.by_tier,o=>(n(),l("div",{key:o.value,class:"card",style:{"margin-bottom":"8px"}},[s("span",{class:f(["badge",o.value])},"Tier "+t(o.value),3),d(" — "+t(o.losses)+" losses ",1)]))),128)),e[5]||(e[5]=s("h3",{style:{"margin-top":"20px"}},"Top loss personas",-1)),!a.value.top_loss_personas||!a.value.top_loss_personas.length?(n(),l("div",B,"No losses yet — 🎉")):k("",!0),(n(!0),l(r,null,i(a.value.top_loss_personas,(o,p)=>(n(),l("div",{class:"card",key:p,style:{"margin-bottom":"8px"}},[s("strong",null,t(o.persona_name),1),d(" — score "+t(o.score),1),e[4]||(e[4]=s("br",null,null,-1)),s("span",W,t(o.why),1)]))),128))])}}},D=b(F,[["__scopeId","data-v-dd8a8071"]]);export{D as default};