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/.
2 lines
1.1 KiB
JavaScript
2 lines
1.1 KiB
JavaScript
import{k as l,p as c,c as a,a as s,t,u as d,i as u,F as m,n as p,e as i,r as _,o as n,x as y}from"./index-B1lw4PRH.js";const g={class:"row",style:{"justify-content":"space-between"}},f={class:"muted"},v={key:0,class:"muted",style:{"margin-top":"4px"}},k={key:0,class:"card empty-state"},x={__name:"MySessions",setup(b){const o=_([]);return l(async()=>{o.value=(await c.mySessions()).sessions}),(h,r)=>(n(),a("div",null,[s("h2",null,t(d(u).t("myTraining")),1),(n(!0),a(m,null,p(o.value,e=>(n(),a("div",{class:"card",key:e.id,style:{"margin-bottom":"10px"}},[s("div",g,[s("strong",null,t(e.persona_name),1),s("span",{class:y(["badge",e.outcome||"not_tried"])},t(e.outcome||"—"),3)]),s("div",f,t(e.persona_id)+" · "+t(new Date(e.created_at).toLocaleString()),1),e.debrief?(n(),a("div",v," Score "+t(e.debrief.score)+" — "+t(e.debrief.why),1)):i("",!0)]))),128)),o.value.length===0?(n(),a("div",k,[...r[0]||(r[0]=[s("strong",null,"No training sessions yet",-1),s("span",null,"Pick a persona from a group and practice closing a sale.",-1)])])):i("",!0)]))}};export{x as default};
|