1import{j as e}from"./vendor-react-De19kUq8.js";import{b as D,c as E,e as H,a as v,f as F,L}from"./vendor-app-DH33cvx6.js";import{L as w,a6 as j,B as p,ab as m,ac as f,a1 as r,a4 as n,C as b,a2 as c,a3 as i,O as M,F as P,j as S,a7 as T,ak as C,f as o,s as R}from"./index-fAhlbWPM.js";import{P as A}from"./page-header-Bw7JY8Mn.js";import{E as I}from"./empty-state-nHq1Imsz.js";import{R as $}from"./RunStatusBadge-C6yHb__Y.js";import{A as K,a as Q,b as B,c as G}from"./accordion-B7zC3UK3.js";import{f as U}from"./useActiveRuns-Cu73qPl1.js";import{C as O}from"./circle-stop-B8xsBtlh.js";import{C as z}from"./circle-x-DR6MP_5j.js";import"./vendor-ui-pO556hdz.js";import"./vendor-supabase-Bm92Y2YK.js";import"./index-Dztt8x6j.js";function ce(){var y;const{id:l}=D(),k=E(),x=H(),{data:s,isLoading:q}=v({queryKey:["run",l],queryFn:async()=>{const{data:a,error:t}=await R.from("crawl_runs").select("*, sources(id, name)").eq("id",l).single();if(t)throw t;return a},enabled:!!l,refetchInterval:a=>{const t=a.state.data;return t&&(t.status==="RUNNING"||t.status==="PENDING")?5e3:!1}}),{data:d}=v({queryKey:["run-errors",l],queryFn:async()=>{const{data:a,error:t}=await R.from("ingestion_errors").select("*").eq("run_id",l).order("created_at",{ascending:!1});if(t)throw t;return a},enabled:!!l}),u=F({mutationFn:async()=>{if(!await U(l))throw new Error("Ãchec de l'arrêt")},onSuccess:()=>{C({title:"Run arrêté",description:"Le run a été marqué comme échoué"}),x.invalidateQueries({queryKey:["run",l]}),x.invalidateQueries({queryKey:["active-runs"]}),x.invalidateQueries({queryKey:["runs"]})},onError:()=>{C({title:"Erreur",description:"Impossible d'arrêter le run",variant:"destructive"})}});if(q)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(w,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!s)return e.jsx(I,{icon:j,title:"Run introuvable",description:"Ce run n'existe pas ou a été supprimé.",action:e.jsx(p,{onClick:()=>k("/app/sources?tab=runs"),children:"Retour à l'historique"})});const N=s.started_at&&s.finished_at?Math.round((new Date(s.finished_at).getTime()-new Date(s.started_at).getTime())/1e3):null,h=s.started_at?(Date.now()-new Date(s.started_at).getTime())/(1e3*60):0,g=s.status==="RUNNING"||s.status==="PENDING",_=g&&h>5;return e.jsxs("div",{className:"space-y-6 animate-fade-in",children:[e.jsx(A,{title:`Run du ${m(new Date(s.created_at),"dd/MM/yyyy à HH:mm",{locale:o})}`,backHref:"/app/sources?tab=runs",backLabel:"Historique",actions:e.jsxs("div",{className:"flex items-center gap-2",children:[_&&e.jsxs(p,{variant:"destructive",size:"sm",onClick:()=>u.mutate(),disabled:u.isPending,children:[u.isPending?e.jsx(w,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(O,{className:"h-4 w-4 mr-2"}),"Forcer l'arrêt"]}),e.jsx(L,{to:`/app/sources/${s.source_id}`,children:e.jsxs(p,{variant:"outline",children:["Voir la source",e.jsx(f,{className:"ml-2 h-4 w-4"})]})})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsx($,{status:s.status}),e.jsx("span",{className:"text-muted-foreground",children:"â¢"}),e.jsx("span",{className:"font-medium",children:(y=s.sources)==null?void 0:y.name}),_&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground",children:"â¢"}),e.jsxs("span",{className:"text-warning text-sm flex items-center gap-1",children:[e.jsx(j,{className:"h-4 w-4"}),"Run potentiellement bloqué (",Math.round(h)," min)"]})]}),s.error_message&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground",children:"â¢"}),e.jsx("span",{className:"text-destructive text-sm",children:s.error_message})]})]}),s.status==="COMPLETED"&&s.items_created===0&&s.items_updated>0&&e.jsx(r,{className:"glass-card border-primary/20 bg-primary/5",children:e.jsxs(n,{className:"py-3 flex items-start gap-3",children:[e.jsx(b,{className:"h-5 w-5 text-primary mt-0.5 shrink-0"}),e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-medium",children:"Synchronisation réussie â aucun nouvel événement"}),e.jsxs("p",{className:"text-muted-foreground mt-0.5",children:["Ce run a retrouvé ",s.items_found," événements et mis à jour ",s.items_updated," déjà c
1onnus. C'est normal pour une source régulièrement scrappée."]})]})]})}),e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-6",children:[e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{className:"pb-2",children:e.jsxs(i,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[e.jsx(M,{className:"h-4 w-4"}),"Trouvés"]})}),e.jsx(n,{children:e.jsx("span",{className:"text-3xl font-bold",children:s.items_found})})]}),e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{className:"pb-2",children:e.jsxs(i,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4"}),"Parsés"]})}),e.jsx(n,{children:e.jsx("span",{className:"text-3xl font-bold",children:s.items_parsed})})]}),e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{className:"pb-2",children:e.jsxs(i,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[e.jsx(b,{className:"h-4 w-4"}),"Créés"]})}),e.jsx(n,{children:e.jsx("span",{className:`text-3xl font-bold ${s.items_created>0?"text-success":""}`,children:s.items_created})})]}),e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{className:"pb-2",children:e.jsxs(i,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[e.jsx(S,{className:"h-4 w-4"}),"Mis à jour"]})}),e.jsx(n,{children:e.jsx("span",{className:`text-3xl font-bold ${s.items_updated>0?"text-primary":""}`,children:s.items_updated})})]}),e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{className:"pb-2",children:e.jsxs(i,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[e.jsx(z,{className:"h-4 w-4"}),"Erreurs"]})}),e.jsx(n,{children:e.jsx("span",{className:`text-3xl font-bold ${s.items_errors>0?"text-destructive":""}`,children:s.items_errors})})]}),e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{className:"pb-2",children:e.jsxs(i,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[e.jsx(T,{className:"h-4 w-4"}),"Durée"]})}),e.jsx(n,{children:e.jsx("span",{className:"text-3xl font-bold",children:N!==null?`${N}s`:g?`${Math.round(h*60)}s`:"â"})})]})]}),e.jsxs(r,{className:"glass-card",children:[e.jsx(c,{children:e.jsx(i,{className:"font-display",children:"Chronologie"})}),e.jsx(n,{children:e.jsxs("div",{className:"flex items-center gap-4 text-sm",children:[e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("span",{className:"text-muted-foreground",children:"Créé"}),e.jsx("span",{className:"font-medium",children:m(new Date(s.created_at),"HH:mm:ss",{locale:o})})]}),s.started_at&&e.jsxs(e.Fragment,{children:[e.jsx(f,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("span",{className:"text-muted-foreground",children:"Démarré"}),e.jsx("span",{className:"font-medium",children:m(new Date(s.started_at),"HH:mm:ss",{locale:o})})]})]}),s.finished_at&&e.jsxs(e.Fragment,{children:[e.jsx(f,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("span",{className:"text-muted-foreground",children:"Terminé"}),e.jsx("span",{className:"font-medium",children:m(new Date(s.finished_at),"HH:mm:ss",{locale:o})})]})]})]})})]}),d&&d.length>0&&e.jsxs(r,{className:"glass-card border-destructive/20",children:[e.jsx(c,{children:e.jsxs(i,{className:"font-display flex items-center gap-2 text-destructive",children:[e.jsx(j,{className:"h-5 w-5"}),"Erreurs (",d.length,")"]})}),e.jsx(n,{children:e.jsx(K,{type:"single",collapsible:!0,className:"space-y-2",children:d.map(a=>e.jsxs(Q,{value:a.id,className:"border rounded-lg px-4",children:[e.jsx(B,{className:"hover:no-underline",children:e.jsxs("div",{className:"flex flex-col items-start text-left",children:[e.jsx("span",{className:"font-medium",children:a.error_type}),e.jsx("span",{className:"text-sm text-muted-foreground truncate max-w-md",children:a.error_message})]})}),e.jsxs(G,{className:"space-y-2",children:[a.external_url&&e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"URL:"})," ",e.jsx("a",{href:a.external_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline break-all",children:a.external_url})]}),e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"Message:"})," ",a.error_message]}),a.stack_trace&&e.jsx("pre",{className:"text-xs bg-muted p-3 rounded overflow-auto max-h-40",children:a.stack_trace})]})]},a.id))})})]})]})}export{ce 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.