PageSourceSearch

https://wt-agentia-crm.lovable.app/assets/AgentesIA-Bim1896y.js

js wt-agentia-crm.lovable.app collected 2026-10-03 03:49:34 UTC 129,483 bytes, 1 lines download raw bytes

1import{r as l,j as e,n as we,v as ys}from"./vendor-react-BtMx7XOD.js";import{u as es}from"./vendor-tanstack-Bz2q1bg0.js";import{s as D,C as U,q as H,r as J,a as u,B as A,v as Z,J as q,S as te,w as re,x as me,y as ne,z as Q,I as E,h as C,A as _s,R as ss,U as as,V as is,W as ts,a4 as rs,T as Me,X as ns,c as De}from"./index-Dh_VLpEr.js";import{S as Y}from"./separator-0sv7LkqG.js";import{a as Ae,E as Pe,u as os}from"./EstadoSupervisorBadge-BlCsEDf9.js";import{S as ws}from"./SpatialPanel-ClUhXoHo.js";import{A as Cs,a as As,b as ks,c as Ss}from"./accordion-B_45l2-4.js";import{aq as cs,y as ds,X as je,ar as ls,bz as X,L as T,V as B,R as ms,aM as zs,at as us,d as ps,P as Ps,au as xs,af as hs,ay as Is,aD as $s,E as ue,bY as Es,h as Ms,aw as Rs,aX as Ds,aB as gs,bx as Os,ae as qs,I as Oe,l as be,bZ as js,bP as qe,an as Ie,aW as Ts,t as Ls,aL as Gs,b5 as Te,aF as Fs,a8 as Vs,C as Bs,S as Us,b_ as Hs,aS as Js,b$ as Zs,aa as Qs,aA as Ys}from"./vendor-icons-C7mMGNPm.js";import{E as Ks}from"./peticiones-naturales-BHeEfM6z.js";import"./vendor-pdf-61MPAHTl.js";import"./vendor-radix-CXNEqpAp.js";import"./vendor-supabase-DV-CVm0-.js";import"./vendor-motion-CmJpjgI5.js";const pe=[{id:"agenda",nombre:"Agente de Agenda",funcion:"analyze-day-schedule",riesgo:"consulta",modoMaximo:"analizar",area:"Agenda",consolidadoEn:"agenda_prioridades",descripcion:"Analiza la agenda de un día: huecos, conflictos y prioridades."},{id:"agenda_prioridades",nombre:"Agente de Agenda y Prioridades",funcion:"agenda-prioridades-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Agenda",descripcion:"Analiza la agenda actual, compromisos, clientes pendientes, incidencias, campañas, pedidos, cobros, seguimientos, próximas visitas y tareas; clasifica en urgente, importante o puede esperar y propone las prioridades del día siguiente. Nunca mueve ni cancela una cita confirmada sin tu autorización."},{id:"conflictos_agenda",nombre:"Agente de Conflictos",funcion:"analyze-schedule-conflict",riesgo:"consulta",modoMaximo:"analizar",area:"Agenda",consolidadoEn:"agenda_prioridades",descripcion:"Detecta conflictos y solapamientos en las citas programadas."},{id:"rutas",nombre:"Agente de Rutas",funcion:"optimize-route",riesgo:"consulta",modoMaximo:"recomendar",area:"Rutas",consolidadoEn:"rutas_ia",descripcion:"Propone el orden óptimo de visitas de una ruta."},{id:"rutas_ia",nombre:"Agente de Rutas IA",funcion:"agente-rutas-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Rutas",descripcion:"Propone clientes y orden de visita sobre el sistema de rutas actual de GAM considerando ubicación, códigos postales, agenda, horarios, prioridad comercial, última visita, ventas, campañas, clientes pendientes, clientes comodín, tiempo disponible, zonas y provincias. Genera Plan B si se cae una visita. La ruta solo se guarda si la autorizas."},{id:"campanas_ia",nombre:"Agente de Campañas IA",funcion:"agente-campanas-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Campañas",descripcion:"Trabaja sobre el módulo de Campañas actual: analiza clientes objetivo, visitados y no visitados, cobertura, pedidos, resultados, zonas, fechas, tiempo restante y actividad. Muestra avance, pendientes prioritarios, oportunidades, zonas con poca cobertura y próximos clientes recomendados. Puede proponer citas y rutas de campaña, siempre sujetas a tu decisión."},{id:"pedidos_ia",nombre:"Agente de Pedidos",funcion:"agente-pedidos-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Pedidos",descripcion:"Trabaja sobre el sistema de Pedidos actual: detecta pedidos pendientes e incompletos, pedidos relacionados con campañas, compromisos de pedido, posibles reposiciones y oportunidades derivadas de la información existente, y prepara propuestas de actuación. Nunca confirma, modifica ni envía un pedido sin tu autorización, y no inventa cantidades, referencias ni productos."},{id:"preparar_visita",nombre:"Agente de Preparación de Visita",funcion:"preparar-visita-ia",riesgo:"consulta",modoMaximo:"recomendar",area:"Clientes",descripcion:"Prepara la visita a un cliente con todo su contexto."},{id:"churn",nombre:"Agente de Riesgo de Abandono",funcion:"analizar-churn-avanzado",riesgo:"consulta",modoMaximo:"analizar",area:"Clientes",descripcion:"Detecta clientes en riesgo de abandono y su motivo."},{id:"ventas",nombre:"Agente de Ventas",funcion:"analyze-sales",riesgo:"consulta",modoMaximo:"analizar",area:"Ventas",consolidadoEn:"informes_ia",descripcion:"Analiza la evolución de ventas y sus desviaciones."},{id:"prediccion",nombre:"Agente de Previsión",funcion:"predictive-analytics",riesgo:"consulta",modoMaximo:"analizar",area:"Ventas",descripcion:"Previsión de ventas y tendencias futuras."},{id:"coach",nombre:"Coach Virtual",funcion:"coach-virtual",riesgo:"consulta",modoMaximo:"analizar",area:"Productividad",descripcion:"Detecta patrones de trabajo y propone mejoras."},{id:"alertas",nombre:"Agente de Alertas",funcion:"intelligent-alerts",riesgo:"consulta",modoMaximo:"analizar",area:"Cartera",descripcion:"Genera alertas inteligentes de la cartera."},{id:"incidencias_ia",nombre:"Agente de Incidencias IA",funcion:"agente-incidencias-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Incidencias",descripcion:"Trabaja sobre las incidencias actuales de GAM: detecta las pendientes, las clasifica por prioridad, identifica cuáles requieren seguimiento y detecta compromisos incumplidos o próximos. Prepara borradores de comunicación al proveedor y agrupa en un único correo organizado las incidencias del mismo proveedor. Nunca envía nada sin tu autorización."},{id:"incidencias",nombre:"Agente de Incidencias",funcion:"analyze-incidents",riesgo:"consulta",modoMaximo:"analizar",area:"Incidencias",consolidadoEn:"incidencias_ia",descripcion:"Analiza incidencias abiertas y reclamaciones a proveedor."},{id:"resumen_ejecutivo",nombre:"Agente de Resumen Ejecutivo",funcion:"executive-summary",riesgo:"consulta",modoMaximo:"analizar",area:"Informes",descripcion:"Resumen ejecutivo del estado comercial."},{id:"recomendaciones_cliente",nombre:"Agente de Recomendaciones",funcion:"client-recommendations",riesgo:"consulta",modoMaximo:"recomendar",area:"Clientes",descripcion:"Recomienda productos y acciones para un cliente."},{id:"productos_complementarios",nombre:"Agente de Venta Cruzada",funcion:"suggest-complementary-products",riesgo:"consulta",modoMaximo:"recomendar",area:"Pedidos",descripcion:"Sugiere artículos complementarios para un pedido."},{id:"oportunidad",nombre:"Agente de Oportunidad",funcion:"calculate-opportunity-score",riesgo:"consulta",modoMaximo:"recomendar",area:"Cartera",descripcion:"Puntúa la oportunidad comercial de los clientes."},{id:"campanas",nombre:"Agente de Campañas",funcion:"suggest-campaign-clients",riesgo:"consulta",modoMaximo:"recomendar",area:"Campañas",consolidadoEn:"campanas_ia",descripcion:"Propone clientes para una campaña."},{id:"analisis_campana",nombre:"Agente de Análisis de Campaña",funcion:"analyze-campaign",riesgo:"consulta",modoMaximo:"analizar",area:"Campañas",consolidadoEn:"campanas_ia",descripcion:"Analiza el rendimiento de una campaña."},{id:"cita",nombre:"Agente de Citas",funcion:"suggest-appointment",riesgo:"consulta",modoMaximo:"recomendar",area:"Agenda",descripcion:"Propone fecha y hora para una cita."},{id:"informe_empresa",nombre:"Agente de Inteligencia de Empresa",funcion:"generar-informe-empresa",riesgo:"consulta",modoMaximo:"analizar",area:"Informes",descripcion:"Informe de inteligencia comercial sobre una empresa."},{id:"comunicaciones_ia",nombre:"Agente de Comunicaciones",funcion:"agente-comunicaciones-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Comunicaciones",descripcion:"Usa la información ya existente en GAM (clientes, visitas, incidencias, pedidos, cobros y compromisos) para entender el contexto comercial y preparar borradores de correo, seguimientos, confirmaciones, recordatorios y comunicaciones a clientes o proveedores, vinculados al elemento de origen. Nunca envía nada sin tu autorización."},{id:"redactar_email",nombre:"Agente Redactor",funcion:"redactar-respuesta-email",riesgo:"consulta",modoMaximo:"recomendar",area:"Comunicaciones",descripcion:"Redacta un borrador de email (no lo envía)."},{id:"enviar_email",nombre:"Agente de Envío de Email",funcion:"send-agent-email",riesgo:"accion",modoMaximo:"ejecutar",area:"Comunicaciones",descripcion:"Envía un email real desde tu cuenta de correo."},{id:"cobros_ia",nombre:"Agente de Cobros IA",funcion:"agente-cobros-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Cobros",descripcion:"Trabaja exclusivamente sobre el módulo de Cobros actual: detecta cobros pendientes, vencimientos, retrasos, compromisos de pago y situaciones que requieren seguimiento, y puede preparar un borrador de recordatorio para tu revisión. Nunca envía comunicaciones ni realiza modificaciones económicas."},{id:"recordatorio_deuda",nombre:"Agente de Cobros",funcion:"send-debt-reminder",riesgo:"accion",modoMaximo:"ejecutar",area:"Cobros",descripcion:"Envía un recordatorio de cobro al cliente."},{id:"seguimiento_proactivo",nombre:"Agente de Seguimiento",funcion:"proactive-follow-up",riesgo:"accion",modoMaximo:"ejecutar",area:"Agenda",descripcion:"Crea seguimientos automáticos en tu agenda."},{id:"prospeccion_ia",nombre:"Agente de Prospección",funcion:"agente-prospeccion-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Prospección",descripcion:"Usa y amplía el módulo de Prospección IA existente para localizar y organizar posibles clientes según actividad, zona, provincia, marcas, tipo de cliente y tus criterios comerciales. Comprueba antes que no existan ya en GAM para evitar duplicados y te los presenta como propuestas: tú decides cuáles incorporar como leads."}
1,{id:"cierre_visita",nombre:"Agente de Cierre de Visita",funcion:"cierre-visita-ejecutar",riesgo:"accion",modoMaximo:"ejecutar",area:"Visitas",descripcion:"Al cerrar una visita analiza lo registrado y propone compromisos, tareas, seguimientos, llamadas, pedidos, incidencias, muestras y próximas acciones. Nada se registra sin tu aprobación."},{id:"cliente_360",nombre:"Agente Cliente 360",funcion:"agente-cliente-360",riesgo:"consulta",modoMaximo:"recomendar",area:"Clientes",descripcion:"Al seleccionar un cliente analiza conjuntamente toda su información ya existente en GAM (ficha, visitas, comentarios, ventas, pedidos, incidencias, compromisos, comunicaciones, campañas, cobros, muestras, préstamos, actividad, pendientes y oportunidades), separando hechos, conclusiones de la IA y recomendaciones, y permite abrir los registros originales. No duplica datos ni crea otra ficha."},{id:"informes_ia",nombre:"Agente de Informes",funcion:"agente-informes-ia",riesgo:"consulta",modoMaximo:"analizar",area:"Informes",descripcion:"Genera informes utilizando exclusivamente datos existentes en GAM: ventas, visitas, clientes, pedidos, campañas, incidencias, cobros, zonas, provincias, proveedores y actividad comercial. Cada informe incluye resumen ejecutivo, datos principales, tendencias, pendientes, conclusiones y recomendaciones IA claramente identificadas, y acceso al detalle. Las cifras se calculan sobre registros reales: nunca se inventan. No sustituye los informes existentes."},{id:"planificador_semanal",nombre:"Agente Planificador Semanal",funcion:"agente-planificador-semanal",riesgo:"consulta",modoMaximo:"preparar",area:"Agenda",descripcion:"Prepara una propuesta de semana con la Agenda, las Rutas y las Campañas actuales de GAM: usa prioridades, frecuencia de visita, clientes no visitados, provincias y zonas, viajes previstos, incidencias, compromisos y tareas pendientes para distribuir la actividad por días y zonas. La planificación aparece primero como propuesta editable: puedes aceptar, modificar o rechazar. Nunca mueve una cita confirmada sin tu autorización."},{id:"aprende_conmigo",nombre:"Aprende conmigo",funcion:"aprende-conmigo",riesgo:"consulta",modoMaximo:"recomendar",area:"Productividad",descripcion:"Aprende progresivamente de tus decisiones reales (clientes prioritarios, frecuencia de visitas, zonas, horarios, orden habitual de visitas, criterios de seguimiento, clientes comodín, campañas, rutas y forma de organizar el trabajo) para mejorar las sugerencias de los demás agentes. Distingue dato real, patrón detectado y recomendación. Nunca convierte lo aprendido en una regla obligatoria y puedes corregir cualquier conclusión."},{id:"importador_archivos",nombre:"Agente Importador de Archivos",funcion:"importador-archivos-ia",riesgo:"consulta",modoMaximo:"preparar",area:"Datos",descripcion:"Lee tarifas de proveedores, listados de ventas de clientes y listados de clientes que envía un proveedor (PDF o Excel) que arrastres a la zona de carga (Tarifas, Ventas mensuales y Clientes), los convierte a datos estructurados y te muestra una vista previa exportable a Excel antes de guardar. Al importar una tarifa nueva de un proveedor que ya tenía tarifa, sustituye por completo la anterior tras tu confirmación. En los listados de clientes detecta los que ya están en tu cartera (por NIF/CIF, razón social o nombre) para no duplicarlos, y puede vincularlos al proveedor que envía el listado. Nunca inventa productos, clientes ni importes: solo transcribe lo que aparece en el documento, y nada se guarda sin tu confirmación."}],Xs=["analizar","recomendar","preparar","ejecutar"],ye={analizar:"Analizar",recomendar:"Recomendar",preparar:"Preparar acción",ejecutar:"Ejecutar acción"},Ws={analizar:"Solo consulta datos de GAM y explica lo que encuentra. No modifica nada.",recomendar:"Propone una recomendación basada en los datos. No modifica nada.",preparar:"Deja la acción preparada; no se aplica hasta que tú la autorices.",ejecutar:"Aplica la acción autorizada usando el módulo original de GAM."},$e={analizar:"bg-muted text-muted-foreground border-border",recomendar:"bg-secondary text-secondary-foreground border-border",preparar:"bg-amber-100 text-amber-900 border-amber-300 dark:bg-amber-950/40 dark:text-amber-200 dark:border-amber-800",ejecutar:"bg-destructive/10 text-destructive border-destructive/30"};function xe(t,d="analizar"){return Xs.includes(t)?t:d}const ea={cliente:"Cliente",visita:"Visita",pedido:"Pedido",incidencia:"Incidencia",campana:"Campaña",ruta:"Ruta",agenda:"Agenda",cobro:"Cobro",email:"Comunicación",empresa:"Empresa / proveedor",muestra:"Muestra o préstamo",general:"Cartera general"};function Ee(t){return t?ea[t]??t:"Sin elemento concreto"}function _e(t){return Array.isArray(t)?t.map(d=>
1{if(typeof d=="string")return{origen:d};if(d&&typeof d=="object"){const r=d,i=typeof r.origen=="string"?r.origen:typeof r.fuente=="string"?r.fuente:"";return i?{origen:i,detalle:typeof r.detalle=="string"?r.detalle:void 0}:null}return null}).filter(Boolean):[]}const se="__todos__";function Le(t){return new Date(t).toLocaleString("es-ES",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})}function sa(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){const d=t;for(const r of["resumen","analisis","respuesta","texto","mensaje","content","informe"])if(typeof d[r]=="string"&&d[r])return d[r];try{return JSON.stringify(t,null,2)}catch{return""}}return String(t)}function aa(t){return t.requiere_autorizacion?t.autorizada===!0?{texto:"Aprobada",clase:"text-emerald-700 dark:text-emerald-300"}:t.autorizada===!1?{texto:"Rechazada",clase:"text-destructive"}:{texto:"Pendiente de decisión",clase:"text-amber-700 dark:text-amber-300"}:{texto:"No requería decisión",clase:"text-muted-foreground"}}function ia({estadoInicial:t}={}){const[d,r]=l.useState([]),[i,N]=l.useState(!1),[f,s]=l.useState(se),[c,n]=l.useState(t||se),[k,g]=l.useState(""),[I,P]=l.useState(""),[b,m]=l.useState(""),a=l.useCallback(async()=>{N(!0);try{const{data:j}=await D.auth.getUser();if(!j.user){r([]);return}const{data:G}=await D.from("supervisor_tareas").select("*").eq("agente_id",j.user.id).order("created_at",{ascending:!1}).limit(300);r(G??[])}finally{N(!1)}},[]);l.useEffect(()=>{a()},[a]);const x=l.useMemo(()=>{const j=k.trim().toLowerCase(),G=I?new Date(`${I}T00:00:00`).getTime():null,F=b?new Date(`${b}T23:59:59`).getTime():null;return d.filter(V=>{if(f!==se&&V.agente_ia!==f||c!==se&&V.estado!==c||j&&!(V.objetivo_label??"").toLowerCase().includes(j))return!1;const M=new Date(V.created_at).getTime();return!(G!==null&&M<G||F!==null&&M>F)})},[d,f,c,k,I,b]),$=f!==se||c!==se||!!k||!!I||!!b,v=()=>{s(se),n(se),g(""),P(""),m("")};return e.jsxs(U,{children:[e.jsx(H,{className:"pb-3",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(cs,{className:"h-5 w-5 text-primary shrink-0"}),"Historial de actuaciones",e.jsx(u,{variant:"secondary",children:x.length})]}),e.jsxs(A,{variant:"outline",size:"sm",onClick:a,disabled:i,className:"self-start",children:[e.jsx(ds,{className:`h-4 w-4 mr-2 ${i?"animate-spin":""}`}),"Actualizar"]})]})}),e.jsxs(Z,{className:"space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-5 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs text-muted-foreground",children:"Agente"}),e.jsxs(te,{value:f,onValueChange:s,children:[e.jsx(re,{children:e.jsx(me,{placeholder:"Todos los agentes"})}),e.jsxs(ne,{className:"max-h-72",children:[e.jsx(Q,{value:se,children:"Todos los agentes"}),pe.map(j=>e.jsx(Q,{value:j.id,children:j.nombre},j.id))]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs text-muted-foreground",children:"Cliente o elemento"}),e.jsx(E,{value:k,onChange:j=>g(j.target.value),placeholder:"Buscar por nombre"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs text-muted-foreground",children:"Desde"}),e.jsx(E,{type:"date",value:I,onChange:j=>P(j.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs text-muted-foreground",children:"Hasta"}),e.jsx(E,{type:"date",value:b,onChange:j=>m(j.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs text-muted-foreground",children:"Estado"}),e.jsxs(te,{value:c,onValueChange:n,children:[e.jsx(re,{children:e.jsx(me,{placeholder:"Todos los estados"})}),e.jsxs(ne,{children:[e.jsx(Q,{value:se,children:"Todos los estados"}),Object.keys(Ae).map(j=>e.jsx(Q,{value:j,children:Ae[j]},j))]})]})]})]}),$&&e.jsxs(A,{variant:"ghost",size:"sm",onClick:v,className:"h-7 px-2 text-xs",children:[e.jsx(je,{className:"h-3.5 w-3.5 mr-1"}),"Quitar filtros"]}),x.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:d.length===0?"Todavía no hay actuaciones registradas de los agentes IA.":"Ninguna actuación coincide con los filtros seleccionados."}):e.jsx(Cs,{type:"multiple",className:"w-full",children:x.map(j=>{const G=pe.find(M=>
1M.id===j.agente_ia),F=aa(j),V=sa(j.resultado);return e.jsxs(As,{value:j.id,children:[e.jsx(ks,{className:"hover:no-underline py-3",children:e.jsxs("div",{className:"flex flex-1 flex-col items-start gap-1 pr-2 text-left",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsx(u,{variant:"outline",className:"text-[10px]",children:G?.nombre??j.agente_ia}),e.jsx(u,{variant:"outline",className:`text-[10px] ${$e[xe(j.modo)]}`,children:ye[xe(j.modo)]}),e.jsx(Pe,{estado:j.estado})]}),e.jsx("span",{className:"text-sm font-medium break-words",children:j.titulo}),e.jsxs("span",{className:"text-xs text-muted-foreground break-words",children:[Le(j.created_at),j.objetivo_label?` · ${Ee(j.objetivo_tipo)}: ${j.objetivo_label}`:""]})]})}),e.jsx(Ss,{children:e.jsxs("dl",{className:"grid grid-cols-1 sm:grid-cols-[150px_1fr] gap-x-3 gap-y-1 text-sm",children:[e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Fecha y hora"}),e.jsx("dd",{children:Le(j.created_at)}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Agente"}),e.jsx("dd",{children:G?.nombre??j.agente_ia}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Cliente o elemento"}),e.jsx("dd",{className:"break-words",children:j.objetivo_label?`${Ee(j.objetivo_tipo)}: ${j.objetivo_label}`:"—"}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Acción analizada"}),e.jsx("dd",{className:"break-words",children:j.titulo}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Propuesta"}),e.jsxs("dd",{className:"break-words",children:[j.motivo||ye[xe(j.modo)],j.modulo_destino?` · Módulo: ${j.modulo_destino}`:""]}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Decisión del usuario"}),e.jsx("dd",{className:`font-medium ${F.clase}`,children:F.texto}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Resultado final"}),e.jsx("dd",{className:"break-words whitespace-pre-wrap",children:j.error_msg?e.jsx("span",{className:"text-destructive",children:j.error_msg}):V||"—"}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Estado"}),e.jsx("dd",{children:Ae[j.estado]}),_e(j.fuentes).length>0&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Información utilizada"}),e.jsx("dd",{children:e.jsx("ul",{className:"list-disc pl-4 space-y-0.5",children:_e(j.fuentes).map((M,p)=>e.jsxs("li",{className:"text-xs",children:[e.jsx("span",{className:"font-medium",children:M.origen}),M.detalle?` — ${M.detalle}`:""]},p))})})]})]})})]},j.id)})})]})]})}const ta={urgente:"Urgente",importante:"Importante",puede_esperar:"Puede esperar"},ra={urgente:"bg-destructive/10 text-destructive border-destructive/30",importante:"bg-amber-100 text-amber-900 border-amber-300 dark:bg-amber-950/40 dark:text-amber-200 dark:border-amber-800",puede_esperar:"bg-muted text-muted-foreground border-border"},Ge=["urgente","importante","puede_esperar"];function Fe({items:t}){if(!t.length)return e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin elementos registrados en la app para este apartado."});const d=[...t].sort((r,i)=>Ge.indexOf(r.clasificacion)-Ge.indexOf(i.clasificacion)||r.orden-i.orden);return e.jsx("ul",{className:"space-y-2",children:d.map((r,i)=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:"outline",className:`text-[10px] ${ra[r.clasificacion]}`,children:ta[r.clasificacion]}),r.tipo==="revisar_cita"&&e.jsx(u,{variant:"outline",className:"text-[10px]",children:"Afecta a una cita confirmada · requiere tu decisión"}),r.fecha&&e.jsx("span",{className:"text-[11px] text-muted-foreground",children:r.fecha})]}),e.jsx("p",{className:"text-sm font-medium break-words",children:r.titulo}),r.motivo&&e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:r.motivo})]},`${r.titulo}-${i}`))})}function na({onActualizar:t}){const[d,r]=l.useState(!1),[i,N]=l.useState(null),f=async()=>{r(!0);try{const{data:s,error:c}=await D.functions.invoke("agenda-prioridades-ia",{body:{}});if(c)throw c;if(s?.error){C.error(s.error);return}N({resumen:s.resumen??"",hoy:s.hoy??[],manana:s.manana??[],total_propuestas:s.total_propuestas??0}),s.total_propuestas>0?C.info(`${s.total_propuestas} propuesta(s) esperan tu decisión`):C.success("Agenda analizada"),t?.()}catch(s){C.error(s instanceof Error?s.message:"No se pudo analizar la agenda")}finally{r(!1)}};
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(ls,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Agenda y Prioridades"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Revisa tu agenda actual de GAM junto con compromisos, clientes pendientes, incidencias, campañas, pedidos, cobros, seguimientos, próximas visitas y tareas, y clasifica lo que hay que hacer en urgente, importante o puede esperar. También propone las prioridades del día siguiente."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Nunca borra, cambia ni mueve una cita confirmada: cualquier cambio sobre la agenda pasa por tu autorización en “Necesitan mi decisión”."]}),e.jsxs(A,{onClick:f,disabled:d,size:"sm",children:[d?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar agenda y prioridades"]}),i&&e.jsxs("div",{className:"space-y-4",children:[i.resumen&&e.jsx("p",{className:"text-sm break-words",children:i.resumen}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Prioridades de hoy"}),e.jsx(Fe,{items:i.hoy})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Propuesta de prioridades para mañana"}),e.jsx(Fe,{items:i.manana}),i.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-2",children:[i.total_propuestas," de estas acciones están preparadas y esperan tu aprobación en “Necesitan mi decisión”. Al aprobarlas se registran en la Agenda actual de GAM."]})]})]})]})]})}function Ve({paradas:t,vacio:d}){return t.length?e.jsx("ol",{className:"space-y-2",children:t.map(r=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:"secondary",className:"text-[10px]",children:r.orden}),e.jsx("span",{className:"text-sm font-medium break-words",children:r.cliente}),r.cita_confirmada&&e.jsxs(u,{variant:"outline",className:"text-[10px]",children:["Cita confirmada ",r.hora_sugerida]}),r.comodin&&!r.cita_confirmada&&e.jsx(u,{variant:"outline",className:"text-[10px]",children:"Comodín"}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:["CP ",r.codigo_postal||"—"," · ",r.localidad||"—"," · ~",r.minutos_estimados," min"]})]}),r.motivo&&e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:r.motivo})]},`${r.cliente_id}-${r.orden}`))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:d})}function oa({onActualizar:t}){const d=new Date().toISOString().split("T")[0],[r,i]=l.useState(d),[N,f]=l.useState(""),[s,c]=l.useState(""),[n,k]=l.useState(""),[g,I]=l.useState(null),[P,b]=l.useState(null),m=async a=>{I(a);try{const{data:x,error:$}=await D.functions.invoke("agente-rutas-ia",{body:{accion:a,fecha:r,provincia:N.trim(),zona:s.trim(),minutos_disponibles:n?Number(n):null}});if($)throw $;if(x?.error){C.error(x.error);return}b({accion:x.accion??a,resumen:x.resumen??"",ruta:x.ruta??[],plan_b:x.plan_b??[],avisos:x.avisos??[],total_propuestas:x.total_propuestas??0}),x.total_propuestas>0?C.info("La ruta espera tu decisión para guardarse"):C.success("Propuesta de ruta generada"),t?.()}catch(x){C.error(x instanceof Error?x.message:"No se pudo generar la ruta")}finally{I(null)}};
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(ms,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Rutas"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Propone clientes y orden de visita sobre el sistema de rutas actual de GAM, teniendo en cuenta ubicación y códigos postales, agenda y horarios, prioridad comercial, última visita, ventas, campañas, clientes pendientes, clientes comodín, tiempo disponible, zonas y provincias."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"GAM propone, tú decides: la ruta solo se guarda en Rutas planificadas si la autorizas en “Necesitan mi decisión”. Las citas confirmadas nunca se cambian de hora."]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Fecha"}),e.jsx(E,{type:"date",value:r,onChange:a=>i(a.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Provincia"}),e.jsx(E,{placeholder:"Opcional",value:N,onChange:a=>f(a.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Zona o CP"}),e.jsx(E,{placeholder:"Opcional",value:s,onChange:a=>c(a.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Minutos disponibles"}),e.jsx(E,{type:"number",inputMode:"numeric",placeholder:"Jornada",value:n,onChange:a=>k(a.target.value)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{size:"sm",onClick:()=>m("planificar"),disabled:g!==null,children:[g==="planificar"?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Proponer ruta"]}),e.jsxs(A,{size:"sm",variant:"outline",onClick:()=>m("plan_b"),disabled:g!==null,children:[g==="plan_b"?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(zs,{className:"h-4 w-4 mr-2"}),"Plan B (visita cancelada o tiempo libre)"]})]}),P&&e.jsxs("div",{className:"space-y-4",children:[P.resumen&&e.jsx("p",{className:"text-sm break-words",children:P.resumen}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Ruta propuesta"}),e.jsx(Ve,{paradas:P.ruta,vacio:"Sin paradas propuestas con los datos actuales."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Plan B"}),e.jsx(Ve,{paradas:P.plan_b,vacio:"Sin alternativas comodín disponibles en esta zona."})]}),P.avisos.length>0&&e.jsx("ul",{className:"list-disc pl-4 text-xs text-muted-foreground space-y-0.5",children:P.avisos.map((a,x)=>e.jsx("li",{children:a},x))}),P.total_propuestas>0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"La ruta está preparada y espera tu aprobación en “Necesitan mi decisión”. Al aprobarla se guarda en Rutas planificadas de GAM."})]})]})]})}function ke({items:t,vacio:d}){return t.length?e.jsx("ul",{className:"space-y-2",children:t.map((r,i)=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[r.orden!=null&&e.jsx(u,{variant:"secondary",className:"text-[10px]",children:r.orden}),e.jsx("span",{className:"text-sm font-medium break-words",children:r.cliente}),r.fecha&&e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[r.fecha,r.hora?` · ${r.hora}`:""]}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:["CP ",r.codigo_postal||"—"," · ",r.localidad||"—"]})]}),r.motivo&&e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:r.motivo})]},`${r.cliente_id}-${i}`))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:d})}function ca({onActualizar:t}){const d=new Date().toISOString().split("T")[0],[r,i]=l.useState([]),[N,f]=l.useState(""),[s,c]=l.useState(d),[n,k]=l.useState(!1),[g,I]=l.useState(null);l.useEffect(()=>{(async()=>{const{data:b}=await D.from("campanas").select("id, nombre, estado").order("created_at",{ascending:!1}).limit(50);i(b??[])})()},[]);const P=async b=>{if(!N){C.error("Elige una campaña");return}k(!0);try{const{data:m,error:a}=await D.functions.invoke("agente-campanas-ia",{body:{campana_id:N,fecha:s,proponer_citas:!0,proponer_ruta:b}});if(a)throw a;if(m?.error){C.error(m.error);return}I({resumen:m.resumen??"",avance:m.avance,prioritarios:m.prioritarios??[],oportunidades:m.oportunidades??[],zonas:m.zonas??[],recomendados:m.recomendados??[],citas:m.citas??[],avisos:m.avisos??[],total_propuestas:m.total_propuestas??0}),m.total_propuestas>0&&C.info("Hay propuestas esperando tu decisión"),t?.()}catch(m){C.error(m instanceof Error?m.message:"No se pudo analizar la campaña")}finally{k(!1)}};
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(us,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Campañas"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Analiza tus campañas actuales de GAM: clientes objetivo, visitados y no visitados, cobertura, pedidos y resultados, zonas, fechas, tiempo restante y actividad. Muestra el avance, los pendientes prioritarios, las oportunidades, las zonas con poca cobertura y los próximos clientes recomendados."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"GAM propone, tú decides: las citas y la ruta de campaña solo se crean en Visitas y en Rutas planificadas si las autorizas en “Necesitan mi decisión”."]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1 md:col-span-2",children:[e.jsx(q,{className:"text-xs",children:"Campaña"}),e.jsxs(te,{value:N,onValueChange:f,children:[e.jsx(re,{children:e.jsx(me,{placeholder:"Elige una campaña"})}),e.jsx(ne,{children:r.map(b=>e.jsxs(Q,{value:b.id,children:[b.nombre," · ",b.estado]},b.id))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Fecha de referencia"}),e.jsx(E,{type:"date",value:s,onChange:b=>c(b.target.value)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{size:"sm",onClick:()=>P(!1),disabled:n,children:[n?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar campaña"]}),e.jsx(A,{size:"sm",variant:"outline",onClick:()=>P(!0),disabled:n,children:"Analizar y proponer ruta de campaña"})]}),g&&e.jsxs("div",{className:"space-y-4",children:[g.resumen&&e.jsx("p",{className:"text-sm break-words",children:g.resumen}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:["Avance: ",g.avance.visitados,"/",g.avance.total_objetivo," clientes visitados"]}),e.jsxs("span",{children:[g.avance.cobertura_pct,"% cobertura"]})]}),e.jsx(_s,{value:g.avance.cobertura_pct}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-1",children:[e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[g.avance.pendientes," pendientes"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[g.avance.pedidos," pedidos · ",g.avance.importe_pedidos.toLocaleString("es-ES")," €"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:["Conversión ",g.avance.conversion_pct,"%"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[g.avance.visitados_sin_pedido," visitados sin pedido"]}),e.jsx(u,{variant:"outline",className:"text-[10px]",children:g.avance.dias_restantes!=null?`${g.avance.dias_restantes} días restantes`:"Sin fecha de fin"}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[g.avance.con_cita," pendientes con cita"]})]})]}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Clientes pendientes prioritarios"}),e.jsx(ke,{items:g.prioritarios,vacio:"Sin pendientes prioritarios detectados."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Oportunidades"}),g.oportunidades.length?e.jsx("ul",{className:"space-y-1.5",children:g.oportunidades.map((b,m)=>e.jsxs("li",{className:"text-xs break-words",children:[b.cliente&&e.jsxs("span",{className:"font-medium",children:[b.cliente,": "]}),e.jsx("span",{className:"text-muted-foreground",children:b.descripcion})]},m))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin oportunidades destacadas."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Zonas con poca cobertura"}),g.zonas.length?e.jsx("ul",{className:"space-y-1.5",children:g.zonas.map(b=>e.jsxs("li",{className:"flex flex-wrap items-center gap-2 text-xs",children:[e.jsx("span",{className:"font-medium break-words",children:b.zona}),e.jsxs("span",{className:"text-muted-foreground",children:[b.visitados,"/",b.total," visitados · ",b.pendientes," pendientes"]}),e.jsxs(u,{variant:b.cobertura<50?"destructive":"outline",className:"text-[10px]",children:[b.cobertura,"%"]})]},b.zona))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Cobertura completa en todas las zonas."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Próximos clientes recomendados"}),e.jsx(ke,{items:g.recomendados,vacio:"Sin recomendaciones con los datos actuales."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Citas propuestas"}),e.jsx(ke,{items:g.citas,vacio:"Sin citas propuestas."})]}),g.avisos.length>0&&e.jsx("ul",{className:"list-disc pl-4 text-xs text-muted-foreground space-y-0.5",children:g.avisos.map((b,m)=>e.jsx("li",{children:b},m))}),g.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[g.total_propuestas," propuesta(s) esperan tu aprobación en “Necesitan mi decisión”. Al aprobarlas se crean en el módulo original de GAM (Visitas y Rutas planificadas)."]})]})]})]})}const da={urgente:"destructive",alta:"default",media:"secondary",baja:"outline"};function la({onActualizar:t}){const[d,r]=l.useState(!1),[i,N]=l.useState(null),f=async s=>{r(!0);try{const{data:c,error:n}=await D.functions.invoke("agente-incidencias-ia",{body:{preparar_borradores:s}});if(n)throw n;if(c?.error){C.error(c.error);return}N({resumen:c.resumen??"",total_pendientes:c.total_pendientes??0,pe
1ndientes:c.pendientes??[],seguimiento:c.seguimiento??[],compromisos:c.compromisos??[],borradores:c.borradores??[],avisos:c.avisos??[],total_propuestas:c.total_propuestas??0,sin_incidencias:c.sin_incidencias}),c.total_propuestas>0&&C.info("Hay borradores esperando tu decisión"),t?.()}catch(c){C.error(c instanceof Error?c.message:"No se pudieron analizar las incidencias")}finally{r(!1)}};return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(ps,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Incidencias"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Trabaja sobre tus incidencias actuales de GAM: detecta las pendientes, las clasifica por prioridad, identifica cuáles requieren seguimiento y detecta compromisos incumplidos o próximos. Si hay varias incidencias del mismo proveedor, prepara un único correo organizado."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Ninguna comunicación se envía automáticamente: los correos se guardan como borrador en Comunicación solo si los autorizas en “Necesitan mi decisión”."]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{size:"sm",onClick:()=>f(!1),disabled:d,children:[d?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar incidencias"]}),e.jsx(A,{size:"sm",variant:"outline",onClick:()=>f(!0),disabled:d,children:"Analizar y preparar correos a proveedor"})]}),i&&e.jsx("div",{className:"space-y-4",children:i.sin_incidencias?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No tienes incidencias pendientes en el módulo de Incidencias."}):e.jsxs(e.Fragment,{children:[i.resumen&&e.jsx("p",{className:"text-sm break-words",children:i.resumen}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.total_pendientes," pendientes"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.pendientes.filter(s=>s.prioridad==="urgente").length," urgentes"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.seguimiento.length," requieren seguimiento"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.compromisos.filter(s=>s.situacion==="incumplido").length," compromisos incumplidos"]})]}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Incidencias pendientes por prioridad"}),i.pendientes.length?e.jsx("ul",{className:"space-y-2",children:i.pendientes.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:da[s.prioridad]??"outline",className:"text-[10px] uppercase",children:s.prioridad}),e.jsx("span",{className:"text-sm font-medium break-words",children:s.titulo})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[s.cliente&&`Cliente: ${s.cliente}`,s.proveedor&&`Proveedor: ${s.proveedor}`,s.dias_abierta!=null&&`abierta hace ${s.dias_abierta} días`,s.dias_sin_movimiento!=null&&`sin movimiento ${s.dias_sin_movimiento} días`,`${s.reclamaciones} reclamación(es)`].filter(Boolean).join(" · ")}),s.motivo&&e.jsx("p",{className:"text-xs break-words",children:s.motivo})]},s.incidencia_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin incidencias priorizadas."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Requieren seguimiento"}),i.seguimiento.length?e.jsx("ul",{className:"space-y-1.5",children:i.seguimiento.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx("span",{className:"font-medium",children:s.titulo}),s.proveedor&&e.jsxs("span",{className:"text-muted-foreground",children:[" · ",s.proveedor]}),e.jsxs("span",{className:"text-muted-foreground",children:[" — ",s.accion]})]},s.incidencia_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nada pendiente de seguimiento."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Compromisos incumplidos o próximos"}),i.compromisos.length?e.jsx("ul",{className:"space-y-1.5",children:i.compromisos.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx(u,{variant:s.situacion==="incumplido"?"destructive":"outline",className:"text-[10px] mr-2",children:s.situacion==="incumplido"?"Incumplido":"Próximo"}),e.jsx("span",{className:"font-medium",children:s.cliente}),e.jsxs("span",{className:"text-muted-foreground",children:[" · ",s.descripcion]}),s.accion&&e.jsxs("span",{className:"text-muted-foreground",children:[" — ",s.accion]})]},s.compromiso_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin compromisos en riesgo."})]}),i.borradores.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Borradores de comunicación al proveedor"}),e.jsx("ul",{className:"space-y-2",children:i.borradores.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium break-words",children:s.proveedor}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[s.incidencias.length," incidencia(s) agrupadas"]}),e.jsx(u,{variant:"outline",className:"text-[10px]",children:s.para||"sin email registrado"})]}),e.jsx("p",{className:"text-xs font-medium break-words",children:s.asunto}),e.jsx("p",{className:"text-xs text-muted-foreground whitespace-pre-wrap break-words",children:s.cuerpo})]},s.proveedor))})]}),i.avisos.length>0&&e.jsx("ul",{className:"list-disc pl-4 text-xs text-muted-foreground space-y-0.5",children:i.avisos.map((s,c)=>e.jsx("li",{children:s},c))}),i.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[i.total_propuestas," borrador(es) esperan tu aprobación en “Necesitan mi decisión”. Al aprobarlos se guardan en Comunicación · Borradores; el envío sigue siendo tuyo."]})]})})]})]})}const Be={urgente:"destructive",alta:"default",media:"secondary",baja:"outline"};function ma({onActualizar:t}){const[d,r]=l.useState(!1),[i,N]=l.useState(null),f=async s=>{r(!0);try{const{data:c,error:n}=await D.functions.invoke("agente-pedidos-ia",{body:{preparar_propuestas:s}});if(n)throw n;if(c?.error){C.error(c.error);return}N({resumen:c.resumen??"",total_pendientes:c.total_pendientes??0,pe
1ndientes:c.pendientes??[],incompletos:c.incompletos??[],generados_sin_confirmar:c.generados_sin_confirmar??[],campanas:c.campanas??[],compromisos:c.compromisos??[],reposiciones:c.reposiciones??[],oportunidades:c.oportunidades??[],propuestas:c.propuestas??[],avisos:c.avisos??[],total_propuestas:c.total_propuestas??0,sin_datos:c.sin_datos}),c.total_propuestas>0&&C.info("Hay propuestas de pedidos esperando tu decisión"),t?.()}catch(c){C.error(c instanceof Error?c.message:"No se pudieron analizar los pedidos")}finally{r(!1)}};return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(Ps,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Pedidos"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Trabaja sobre tu módulo de Pedidos actual: detecta pedidos pendientes e incompletos, pedidos ligados a campañas, compromisos de pedido, posibles reposiciones y oportunidades derivadas de la información ya registrada."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Ningún pedido se confirma, modifica ni envía automáticamente. Las propuestas aprobadas solo crean un seguimiento en tu Agenda para que lo trabajes en Pedidos. No se inventan cantidades, referencias ni productos."]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{size:"sm",onClick:()=>f(!1),disabled:d,children:[d?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar pedidos"]}),e.jsx(A,{size:"sm",variant:"outline",onClick:()=>f(!0),disabled:d,children:"Analizar y preparar propuestas"})]}
1),i&&e.jsx("div",{className:"space-y-4",children:i.sin_datos?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No hay clientes activos con pedidos que analizar."}):e.jsxs(e.Fragment,{children:[i.resumen&&e.jsx("p",{className:"text-sm break-words",children:i.resumen}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.total_pendientes," pendientes"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.incompletos.length," incompletos"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.generados_sin_confirmar.length," generados sin confirmar"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.reposiciones.length," posibles reposiciones"]})]}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Pedidos pendientes por prioridad"}),i.pendientes.length?e.jsx("ul",{className:"space-y-2",children:i.pendientes.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:Be[s.prioridad]??"outline",className:"text-[10px] uppercase",children:s.prioridad}),e.jsx("span",{className:"text-sm font-medium break-words",children:s.numero?`Pedido ${s.numero}`:"Pedido sin número"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[s.cliente&&`Cliente: ${s.cliente}`,s.proveedor&&`Proveedor: ${s.proveedor}`,s.fecha&&`fecha ${s.fecha}`,`estado ${s.estado||"—"}`,`${s.lineas} línea(s)`,s.dias_sin_movimiento!=null&&`sin movimiento ${s.dias_sin_movimiento} días`].filter(Boolean).join(" · ")}),s.motivo&&e.jsx("p",{className:"text-xs break-words",children:s.motivo})]},s.id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin pedidos pendientes priorizados."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Pedidos incompletos"}),i.incompletos.length?e.jsx("ul",{className:"space-y-1.5",children:i.incompletos.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx("span",{className:"font-medium",children:s.numero?`Pedido ${s.numero}`:"Pedido sin número"}),s.cliente&&e.jsxs("span",{className:"text-muted-foreground",children:[" · ",s.cliente]}),s.faltas?.length>0&&e.jsxs("span",{className:"text-muted-foreground",children:[" — falta: ",s.faltas.join(", ")]}),s.accion&&e.jsxs("span",{children:[" · ",s.accion]})]},s.pedido_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Todos los pedidos tienen sus datos completos."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Pedidos de campaña"}),i.campanas.length?e.jsx("ul",{className:"space-y-1.5",children:i.campanas.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx("span",{className:"font-medium",children:s.cliente}),e.jsxs("span",{className:"text-muted-foreground",children:[" · ",s.campana]}),s.fecha_fin&&e.jsxs("span",{className:"text-muted-foreground",children:[" · fin ",s.fecha_fin]}),s.accion&&e.jsxs("span",{children:[" — ",s.accion]})]},s.campana_cliente_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin clientes de campaña pendientes de pedido."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Compromisos de pedido"}),i.compromisos.length?e.jsx("ul",{className:"space-y-1.5",children:i.compromisos.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx(u,{variant:s.situacion==="incumplido"?"destructive":"outline",className:"text-[10px] mr-2",children:s.situacion==="incumplido"?"Incumplido":"Próximo"}),e.jsx("span",{className:"font-medium",children:s.cliente}),e.jsxs("span",{className:"text-muted-foreground",children:[" · ",s.descripcion]}),s.accion&&e.jsxs("span",{className:"text-muted-foreground",children:[" — ",s.accion]})]},s.compromiso_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin compromisos de pedido abiertos."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Posibles reposiciones"}),i.reposiciones.length?e.jsx("ul",{className:"space-y-1.5",children:i.reposiciones.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx("span",{className:"font-medium",children:s.cliente}),e.jsxs("span",{className:"text-muted-foreground",children:[" ","· último pedido ",s.ultimo_pedido??"—"," (hace ",s.dias_desde_ultimo," días) · cadencia media ",s.cadencia_media_dias," días · ",s.pedidos_historicos," pedidos"]}),s.motivo&&e.jsxs("span",{children:[" — ",s.motivo]})]},s.cliente_id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Ningún cliente supera su cadencia habitual de pedido."})]}),i.oportunidades.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Oportunidades detectadas"}),e.jsx("ul",{className:"space-y-1.5",children:i.oportunidades.map(s=>e.jsxs("li",{className:"text-xs break-words",children:[e.jsx("span",{className:"font-medium",children:s.cliente}),e.jsxs("span",{className:"text-muted-foreground",children:[" — ",s.oportunidad]})]},s.cliente_id))})]}),i.propuestas.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Propuestas de actuación"}),e.jsx("ul",{className:"space-y-2",children:i.propuestas.map((s,c)=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:Be[s.prioridad]??"outline",className:"text-[10px] uppercase",children:s.prioridad}),e.jsx("span",{className:"text-sm font-medium break-words",children:s.titulo})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[s.cliente,s.pedido_numero&&`Pedido ${s.pedido_numero}
1`].filter(Boolean).join(" · ")}),s.detalle&&e.jsx("p",{className:"text-xs break-words",children:s.detalle})]},c))})]}),i.avisos.length>0&&e.jsx("ul",{className:"list-disc pl-4 text-xs text-muted-foreground space-y-0.5",children:i.avisos.map((s,c)=>e.jsx("li",{children:s},c))}),i.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[i.total_propuestas," propuesta(s) esperan tu aprobación en “Necesitan mi decisión”. Al aprobarlas se crea el seguimiento en tu Agenda; el pedido lo confirmas tú en el módulo de Pedidos."]})]})})]})]})}const Ue={urgente:"destructive",alta:"default",media:"secondary",baja:"outline"},ge=t=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR"}).format(t||0);function ua({onActualizar:t}){const[d,r]=l.useState(!1),[i,N]=l.useState(null),f=async s=>{r(!0);try{const{data:c,error:n}=await D.functions.invoke("agente-cobros-ia",{body:{preparar_borradores:s}});if(n)throw n;if(c?.error){C.error(c.error);return}N({resumen:c.resumen??"",totales:c.totales??{pendiente:0,vencido:0},total_pendientes:c.total_pendientes??0,pendientes:c.pendientes??[],vencidos:c.vencidos??[],proximos:c.proximos??[],compromisos:c.compromisos??[],seguimientos:c.seguimientos??[],borradores:c.borradores??[],avisos:c.avisos??[],total_propuestas:c.total_propuestas??0,sin_datos:c.sin_datos}),c.total_propuestas>0&&C.info("Hay propuestas de cobros esperando tu decisión"),t?.()}catch(c){C.error(c instanceof Error?c.message:"No se pudieron analizar los cobros")}finally{r(!1)}};
vendor: 1,231 bytes, line 1
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(xs,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Cobros"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Trabaja sobre tu módulo de Cobros actual: detecta cobros pendientes, vencimientos, retrasos, compromisos de pago y situaciones que requieren seguimiento, y puede preparar un borrador de recordatorio para que tú lo revises."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Nunca se envía una comunicación ni se modifica ningún importe, vencimiento o estado de cobro. Los borradores aprobados se guardan en Comunicación y los seguimientos en tu Agenda."]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{size:"sm",onClick:()=>f(!1),disabled:d,children:[d?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar cobros"]}),e.jsx(A,{size:"sm",variant:"outline",onClick:()=>f(!0),disabled:d,children:"Analizar y preparar borradores"})]}
1),i&&e.jsx("div",{className:"space-y-4",children:i.sin_datos?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No hay cobros pendientes registrados en el módulo de Cobros."}):e.jsxs(e.Fragment,{children:[i.resumen&&e.jsx("p",{className:"text-sm break-words",children:i.resumen}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.total_pendientes," pendientes"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[ge(i.totales.pendiente)," pendiente"]}),e.jsxs(u,{variant:"destructive",className:"text-[10px]",children:[i.vencidos.length," vencidos · ",ge(i.totales.vencido)]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.proximos.length," vencen en 15 días"]})]}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Cobros por prioridad"}),i.pendientes.length?e.jsx("ul",{className:"space-y-2",children:i.pendientes.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:Ue[s.prioridad]??"outline",className:"text-[10px] uppercase",children:s.prioridad}),e.jsxs("span",{className:"text-sm font-medium break-words",children:[s.cliente||"Cliente sin nombre"," · ",ge(s.importe_pendiente)]})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[s.numero_factura&&`Factura ${s.numero_factura}`,s.fecha_vencimiento&&`vence ${s.fecha_vencimiento}`,s.dias_retraso>0?`retraso ${s.dias_retraso} días`:s.dias_para_vencer!=null&&`faltan ${s.dias_para_vencer} días`,`${s.recordatorios} recordatorio(s)`].filter(Boolean).join(" · ")}),s.motivo&&e.jsx("p",{className:"text-xs break-words",children:s.motivo})]},s.id))}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sin cobros priorizados."})]}),i.compromisos.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Compromisos de pago"}),e.jsx("ul",{className:"space-y-2",children:i.compromisos.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:s.situacion==="incumplido"?"destructive":"secondary",className:"text-[10px] uppercase",children:s.situacion}),e.jsx("span",{className:"text-sm font-medium break-words",children:s.cliente})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[s.descripcion,s.fecha&&`fecha ${s.fecha}`].filter(Boolean).join(" · ")}),s.accion&&e.jsx("p",{className:"text-xs break-words",children:s.accion})]},s.compromiso_id))})]}),i.seguimientos.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Seguimientos propuestos"}),e.jsx("ul",{className:"space-y-2",children:i.seguimientos.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:Ue[s.prioridad]??"outline",className:"text-[10px] uppercase",children:s.prioridad}),e.jsxs("span",{className:"text-sm font-medium break-words",children:[s.cliente||"Cliente sin nombre",s.numero_factura?` · factura ${s.numero_factura}`:"",typeof s.importe_pendiente=="number"?` · ${ge(s.importe_pendiente)}`:""]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground break-words",children:[s.contacto_cliente?`${s.contacto_cliente} · `:"",s.telefono_cliente?e.jsx("a",{href:`tel:${s.telefono_cliente}`,className:"underline",children:s.telefono_cliente}):"sin teléfono"," · ",s.email_cliente?e.jsx("a",{href:`mailto:${s.email_cliente}`,className:"underline",children:s.email_cliente}):"sin email"]}),e.jsx("p",{className:"text-xs break-words",children:s.accion})]},`seg-${s.cobro_id}`))})]}),i.borradores.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Borradores de recordatorio (sin enviar)"}),e.jsx("ul",{className:"space-y-2",children:i.borradores.map(s=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsx("p",{className:"text-sm font-medium break-words",children:s.asunto}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[s.cliente,s.para?`para ${s.para}`:"cliente sin email registrado",s.numero_factura&&`factura ${s.numero_factura}
1`,ge(s.importe_pendiente)].filter(Boolean).join(" · ")}),e.jsx("p",{className:"text-xs whitespace-pre-wrap break-words",children:s.cuerpo})]},`bor-${s.cobro_id}`))})]}),i.avisos.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Avisos"}),e.jsx("ul",{className:"list-disc pl-5 space-y-1",children:i.avisos.map((s,c)=>e.jsx("li",{className:"text-xs text-muted-foreground break-words",children:s},c))})]}),i.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[i.total_propuestas," propuesta(s) esperando tu decisión en “Necesitan mi decisión”."]})]})})]})]})}const pa={urgente:"destructive",alta:"default",media:"secondary",baja:"outline"};function xa({onActualizar:t}){const[d,r]=l.useState(!1),[i,N]=l.useState(""),[f,s]=l.useState(null),c=async n=>{r(!0);try{const{data:k,error:g}=await D.functions.invoke("agente-comunicaciones-ia",{body:{preparar_borradores:n,instruccion:i.trim()||void 0}});if(g)throw g;if(k?.error){C.error(k.error);return}s({resumen:k.resumen??"",borradores:k.borradores??[],avisos:k.avisos??[],total_propuestas:k.total_propuestas??0,sin_datos:k.sin_datos}),k.total_propuestas>0&&C.info("Hay borradores de comunicación esperando tu decisión"),t?.()}catch(k){C.error(k instanceof Error?k.message:"No se pudieron preparar las comunicaciones")}finally{r(!1)}};
vendor: 1,384 bytes, line 1
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(hs,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Comunicaciones"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Entiende primero el contexto comercial que ya hay en GAM (cliente, visitas, incidencias, pedidos, cobros y compromisos) y prepara borradores de correo, seguimientos, confirmaciones y recordatorios para clientes o proveedores."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Nada se envía automáticamente. Los borradores aprobados se guardan en tu módulo de Comunicación, vinculados al cliente, visita, incidencia, pedido o cobro de origen."]}),e.jsx(E,{value:i,onChange:n=>N(n.target.value),placeholder:"Opcional: indica el enfoque (ej. seguimiento de visitas de esta semana)",maxLength:300}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{size:"sm",onClick:()=>c(!1),disabled:d,children:[d?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar comunicaciones"]}),e.jsx(A,{size:"sm",variant:"outline",onClick:()=>c(!0),disabled:d,children:"Analizar y preparar borradores"})]}
1),f&&e.jsx("div",{className:"space-y-4",children:f.sin_datos?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No hay contexto comercial suficiente para preparar comunicaciones."}):e.jsxs(e.Fragment,{children:[f.resumen&&e.jsx("p",{className:"text-sm break-words",children:f.resumen}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Borradores preparados (sin enviar)"}),f.borradores.length?e.jsx("ul",{className:"space-y-2",children:f.borradores.map((n,k)=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:pa[n.prioridad]??"outline",className:"text-[10px] uppercase",children:n.prioridad}),e.jsx(u,{variant:"outline",className:"text-[10px]",children:n.tipo.replace(/_/g," ")}),e.jsx("span",{className:"text-sm font-medium break-words",children:n.asunto})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[n.destinatario_tipo==="proveedor"?`Proveedor: ${n.proveedor||"—"}`:`Cliente: ${n.cliente||"—"}`,n.para?`para ${n.para}`:"sin email registrado",n.visita_id&&"vinculado a una visita",n.incidencia_id&&"vinculado a una incidencia",n.pedido_id&&"vinculado a un pedido",n.cobro_id&&"vinculado a un cobro"].filter(Boolean).join(" · ")}),e.jsx("p",{className:"text-xs whitespace-pre-wrap break-words",children:n.cuerpo}),n.contexto_usado&&e.jsxs("p",{className:"text-[11px] text-muted-foreground break-words",children:["Contexto utilizado: ",n.contexto_usado]})]},k))}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"No hace falta ninguna comunicación con el contexto actual."})]}),f.avisos.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Avisos"}),e.jsx("ul",{className:"list-disc pl-5 space-y-1",children:f.avisos.map((n,k)=>e.jsx("li",{className:"text-xs text-muted-foreground break-words",children:n},k))})]}),f.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[f.total_propuestas," borrador(es) esperando tu decisión en “Necesitan mi decisión”."]})]})})]})]})}const ha={alto:"default",medio:"secondary",bajo:"outline"};function ga({onActualizar:t}){const[d,r]=l.useState(!1),[i,N]=l.useState(null),[f,s]=l.useState(""),[c,n]=l.useState(""),[k,g]=l.useState(""),[I,P]=l.useState(""),[b,m]=l.useState(""),[a,x]=l.useState(""),$=async()=>{if(!f.trim()||!k.trim()){C.error("Indica al menos la provincia y la actividad o sector");return}r(!0);try{const{data:v,error:j}=await D.functions.invoke("agente-prospeccion-ia",{body:{provincia:f.trim(),localidad:c.trim(),sector:k.trim(),marcas:I.trim(),tipo_cliente:b.trim(),criterios:a.trim()}});if(j)throw j;if(v?.error){C.error(v.error);return}N({resumen:v.resumen??"",totales:v.totales??{encontrados:0,ya_en_gam:0,candidatos:0},propuestas:v.propuestas??[],zonas:v.zonas??[],avisos:v.avisos??[],total_propuestas:v.total_propuestas??0,sin_datos:v.sin_datos}),v.total_propuestas>0&&C.info("Hay posibles clientes esperando tu decisión"),t?.()}catch(v){C.error(v instanceof Error?v.message:"No se pudo realizar la prospección")}finally{r(!1)}};
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(Is,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Prospección"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Usa y amplía tu módulo de Prospección IA para localizar posibles clientes según actividad, zona, provincia, marcas, tipo de cliente y tus criterios comerciales. Comprueba antes que no existan ya en GAM y te los presenta como propuestas."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Nada se incorpora solo: tú decides qué posibles clientes pasan a tu módulo de Prospección como leads. Nunca se crean clientes automáticamente."]}),e.jsxs("div",{className:"grid gap-2 sm:grid-cols-2",children:[e.jsx(E,{placeholder:"Provincia (obligatorio)",value:f,onChange:v=>s(v.target.value)}),e.jsx(E,{placeholder:"Localidad (opcional)",value:c,onChange:v=>n(v.target.value)}),e.jsx(E,{placeholder:"Actividad o sector (obligatorio)",value:k,onChange:v=>g(v.target.value)}),e.jsx(E,{placeholder:"Marcas o proveedores de interés (opcional)",value:I,onChange:v=>P(v.target.value)}),e.jsx(E,{placeholder:"Tipo de cliente (opcional)",value:b,onChange:v=>m(v.target.value)}),e.jsx(E,{placeholder:"Criterios comerciales (opcional)",value:a,onChange:v=>x(v.target.value)})]}),e.jsxs(A,{size:"sm",onClick:$,disabled:d,children:[d?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Buscar posibles clientes"]}
1),i&&e.jsx("div",{className:"space-y-4",children:i.sin_datos?e.jsx("p",{className:"text-sm text-muted-foreground break-words",children:i.resumen}):e.jsxs(e.Fragment,{children:[i.resumen&&e.jsx("p",{className:"text-sm break-words",children:i.resumen}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[i.totales.encontrados," negocios localizados"]}),e.jsxs(u,{variant:"secondary",className:"text-[10px]",children:[i.totales.ya_en_gam," ya en GAM (descartados)"]}),e.jsxs(u,{variant:"default",className:"text-[10px]",children:[i.propuestas.length," propuestas nuevas"]})]}),e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Posibles clientes propuestos"}),i.propuestas.length?e.jsx("ul",{className:"space-y-2",children:i.propuestas.map(v=>e.jsxs("li",{className:"rounded-md border p-2.5 space-y-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(u,{variant:ha[v.encaje]??"outline",className:"text-[10px] uppercase",children:["encaje ",v.encaje]}),e.jsx("span",{className:"text-sm font-medium break-words",children:v.nombre})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:[v.direccion,v.codigo_postal&&`CP ${v.codigo_postal}`,v.telefono||"sin teléfono",v.rating!=null&&`${v.rating} ★ (${v.user_ratings_total??0})`,v.tipo_cliente].filter(Boolean).join(" · ")}),v.motivo&&e.jsx("p",{className:"text-xs break-words",children:v.motivo})]},v.place_id))}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sin posibles clientes nuevos en esta búsqueda."})]}),i.zonas.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Zonas con oportunidad"}),e.jsx("ul",{className:"space-y-1",children:i.zonas.map((v,j)=>e.jsxs("li",{className:"text-xs text-muted-foreground break-words",children:[e.jsx("span",{className:"font-medium text-foreground",children:v.zona})," ·"," ",v.candidatos," posibles clientes ",v.comentario&&`· ${v.comentario}`]},j))})]}),i.avisos.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Avisos"}),e.jsx("ul",{className:"list-disc pl-5 space-y-1",children:i.avisos.map((v,j)=>e.jsx("li",{className:"text-xs text-muted-foreground break-words",children:v},j))})]}),i.total_propuestas>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[i.total_propuestas," propuesta(s) esperando tu decisión en “Necesitan mi decisión”."]})]})})]})]})}const ja={urgente:"destructive",alta:"default",media:"secondary",baja:"outline"},fe=t=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR"}).format(Number(t??0)),ae=t=>t?new Date(t).toLocaleDateString("es-ES"):"sin fecha";function fa({onActualizar:t}){const d=we(),[r,i]=l.useState(""),[N,f]=l.useState(null),[s,c]=l.useState(!1),[n,k]=l.useState(null),{data:g}=es({queryKey:["clientes-picker-agente-360"],staleTime:5*6e4,queryFn:async()=>{const{data:a,error:x}=await D.rpc("get_clientes_picker");if(x)throw x;return a??[]}}),I=l.useMemo(()=>{const a=r.trim().toLowerCase();return a?(g??[]).filter(x=>[x.name,x.razon_social,x.cif].filter(Boolean).some($=>$.toLowerCase().includes(a))).slice(0,6):[]},[r,g]),P=async()=>{if(!N){C.error("Selecciona primero un cliente");return}c(!0);try{const{data:a,error:x}=await D.functions.invoke("agente-cliente-360",{body:{cliente_id:N.id}});if(x)throw x;if(a?.error){C.error(a.error);return}k(a),t?.()}catch(a){C.error(a instanceof Error?a.message:"No se pudo analizar el cliente")}finally{c(!1)}},b=a=>d(a),m=n?[{nombre:"Visitas",ruta:`/visitas?cliente=${n.cliente.id}`,items:(n.registros?.visitas??[]).slice(0,10).map(a=>({id:a.id,titulo:`${ae(a.fecha_programada)} · ${a.tipo_visita||"sin tipo"}`,detalle:[a.estado,a.resultado,a.observaciones_cliente].filter(Boolean).join(" · ")}))},{nombre:"Pedidos",ruta:`/pedidos?cliente=${n.cliente.id}`,items:(n.registros?.pedidos??[]).slice(0,10).map(a=>({id:a.id,titulo:`${ae(a.fecha)} · ${a.numero||"sin número"}
1`,detalle:[a.proveedor,fe(a.total),a.estado].filter(Boolean).join(" · ")}))},{nombre:"Incidencias",ruta:`/incidencias?cliente=${n.cliente.id}`,items:(n.registros?.incidencias??[]).slice(0,10).map(a=>({id:a.id,titulo:`${ae(a.created_at)} · ${a.titulo||a.tipo||"incidencia"}`,detalle:[a.estado,a.empresa].filter(Boolean).join(" · ")}))},{nombre:"Compromisos",ruta:`/compromisos?cliente=${n.cliente.id}`,items:(n.registros?.compromisos??[]).slice(0,10).map(a=>({id:a.id,titulo:`${ae(a.fecha_compromiso)} · ${a.descripcion||a.tipo_compromiso||"compromiso"}`,detalle:a.completado?"cumplido":"pendiente"}))},{nombre:"Cobros",ruta:`/cobros?cliente=${n.cliente.id}`,items:(n.registros?.cobros??[]).slice(0,10).map(a=>({id:a.id,titulo:`${a.numero_factura||"sin factura"} · ${fe(a.importe_pendiente)}`,detalle:`vence ${ae(a.fecha_vencimiento)} · ${a.estado||""}`}))},{nombre:"Campañas",ruta:`/campanas?cliente=${n.cliente.id}`,items:(n.registros?.campanas??[]).slice(0,10).map(a=>({id:a.id,titulo:`${a.nombre}${a.proveedor?` · ${a.proveedor}`:""}`,detalle:[a.estado,a.prioridad].filter(Boolean).join(" · ")}))},{nombre:"Muestras y préstamos",ruta:`/muestras?cliente=${n.cliente.id}`,items:[...(n.registros?.muestras??[]).slice(0,6).map(a=>({id:a.id,titulo:`${a.nombre||"muestra"} · ${a.empresa||""}`,detalle:`${a.estado||""} · entregada ${ae(a.fecha_entrega)}`})),...(n.registros?.prestamos??[]).slice(0,6).map(a=>({id:a.id,titulo:`Préstamo · ${a.muestra_nombre_manual||"material"}`,detalle:`prestado ${ae(a.fecha_prestamo)} · ${a.fecha_devolucion_real?`devuelto ${ae(a.fecha_devolucion_real)}`:"sin devolver"}`}))]},{nombre:"Comunicaciones",ruta:`/comunicacion?cliente=${n.cliente.id}`,items:(n.registros?.comunicaciones??[]).slice(0,10).map(a=>({id:a.id,titulo:`${ae(a.fecha)} · ${a.asunto||"correo"}`,detalle:[a.tema,a.estado].filter(Boolean).join(" · ")}))}].filter(a=>a.items.length>0):[];
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx($s,{className:"h-5 w-5 text-primary shrink-0"}),"Agente Cliente 360"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Selecciona un cliente y analiza conjuntamente toda su información ya registrada en GAM: ficha, visitas, comentarios, ventas, pedidos, incidencias, compromisos, comunicaciones, campañas, cobros, muestras, préstamos, actividad reciente, pendientes y oportunidades."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-md border bg-muted/40 p-2.5 text-xs text-muted-foreground",children:[e.jsx(X,{className:"h-4 w-4 shrink-0"}),"Solo consulta: no crea ni modifica ningún registro y no duplica la ficha del cliente. Todo lo que ves enlaza al módulo original de GAM."]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(E,{value:r,onChange:a=>{i(a.target.value),f(null)},placeholder:"Buscar cliente por nombre, razón social o CIF…",className:"h-11"}),I.length>0&&!N&&e.jsx("ul",{className:"rounded-md border divide-y max-h-56 overflow-y-auto",children:I.map(a=>e.jsx("li",{children:e.jsxs("button",{type:"button",onClick:()=>{f({id:a.id,nombre:a.name||a.razon_social}),k(null)},className:"w-full text-left px-3 py-2.5 hover:bg-muted/60 transition-colors",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:a.name||a.razon_social}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:[a.razon_social,a.cif].filter(Boolean).join(" · ")})]})},a.id))}),N&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(u,{variant:"secondary",className:"gap-1",children:[N.nombre,e.jsx("button",{type:"button",onClick:()=>{f(null),k(null),i("")},"aria-label":"Quitar cliente",children:e.jsx(je,{className:"h-3 w-3"})})]}),e.jsxs(A,{size:"sm",onClick:P,disabled:s,children:[s?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-2"}),"Analizar cliente 360"]}),e.jsxs(A,{size:"sm",variant:"outline",onClick:()=>b(`/clientes?cliente=${N.id}`),children:[e.jsx(ue,{className:"h-4 w-4 mr-2"}),"Abrir ficha original"]})]})]}),n&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(Y,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Hechos registrados en GAM"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(u,{variant:"outline",className:"text-[10px]",children:n.hechos.dias_sin_visita==null?"Sin visitas registradas":`${n.hechos.dias_sin_visita} días desde la última visita`}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.total_visitas," visitas"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.total_pedidos," pedidos · ",fe(n.hechos.importe_pedidos)]}),e.jsxs(u,{variant:n.hechos.deuda_abierta>0?"destructive":"outline",className:"text-[10px]",children:["deuda ",fe(n.hechos.deuda_abierta)," · ",n.hechos.cobros_vencidos," vencidos"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.incidencias_abiertas," incidencias abiertas"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.compromisos_pendientes," compromisos pendientes"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.campanas_activas," campañas activas"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.muestras_sin_recoger," muestras sin recoger · ",n.hechos.prestamos_abiertos," préstamos abiertos"]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[n.hechos.comunicaciones," comunicaciones"]})]}),n.hechos_ia.length>0&&e.jsx("ul",{className:"mt-2 space-y-1",children:n.hechos_ia.map((a,x)=>e.jsxs("li",{className:"text-sm break-words",children:[e.jsxs("span",{className:"text-xs text-muted-foreground mr-1",children:["[",a.area,"]"]}),a.dato]},x))})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Conclusiones de la IA"}),n.resumen&&e.jsx("p",{className:"text-sm break-words mb-2",children:n.resumen}),n.conclusiones.length?e.jsx("ul",{className:"space-y-2",children:n.conclusiones.map((a,x)=>e.jsxs("li",{className:"rounded-md border p-2.5",children:[e.jsx("p",{className:"text-sm font-medium break-words",children:a.titulo}),e.jsxs("p",{className:"text-xs text-muted-foreground break-words",children:["Se apoya en: ",a.apoyo]})]},x))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin conclusiones."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Recomendaciones (tú decides)"}),n.recomendaciones.length?e.jsx("ul",{className:"space-y-2",children:n.recomendaciones.map((a,x)=>e.jsxs("li",{className:"rounded-md border p-2.5",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:ja[a.prioridad]??"secondary",className:"text-[10px]",children:a.prioridad}),a.modulo&&e.jsx(u,{variant:"outline",className:"text-[10px]",children:a.modulo})]}),e.jsx("p",{className:"text-sm font-medium break-words mt-1",children:a.accion}),e.jsx("p",{className:"text-xs text-muted-foreground break-words",children:a.motivo})]},x))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin recomendaciones."})]}),(n.pendientes.length>0||n.oportunidades.length>0)&&e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Pendientes"}),n.pendientes.length?e.jsx("ul",{className:"space-y-1",children:n.pendientes.map((a,x)=>e.jsxs("li",{className:"text-sm break-words",children:[e.jsxs("span",{className:"text-xs text-muted-foreground mr-1",children:["[",a.area,"]"]}),a.titulo]},x))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nada pendiente."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Oportunidades"}),n.oportunidades.length?e.jsx("ul",{className:"space-y-1",children:n.oportunidades.map((a,x)=>e.jsxs("li",{className:"text-sm break-words",children:[a.titulo,e.jsxs("span",{className:"text-xs text-muted-foreground",children:[" · ",a.apoyo]})]},x))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sin oportunidades detectadas."})]})]}),n.avisos?.length>0&&e.jsxs("div",{className:"rounded-md border border-amber-300 dark:border-amber-800 p-2.5",children:[e.jsx("h3",{className:"text-sm font-semibold mb-1",children:"Avisos"}),e.jsx("ul",{className:"list-disc pl-4 space-y-0.5",children:n.avisos.map((a,x)=>e.jsx("li",{className:"text-xs text-muted-foreground break-words",children:a},x))})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Registros originales"}),e.jsxs("div",{className:"space-y-3",children:[m.map(a=>e.jsxs("div",{className:"rounded-md border p-2.5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[e.jsx("p",{className:"text-sm font-medium",children:a.nombre}),e.jsxs(A,{size:"sm",variant:"ghost",onClick:()=>b(a.ruta),children:[e.jsx(ue,{className:"h-3.5 w-3.5 mr-1"}),"Abrir"]})]}),e.jsx("ul",{className:"space-y-0.5 max-h-40 overflow-y-auto",children:a.items.map(x=>e.jsxs("li",{className:"text-xs text-muted-foreground break-words",children:[x.titulo,x.detalle?` · ${x.detalle}`:""]},x.id))})]},a.nombre)),m.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Este cliente aún no tiene registros asociados en otros módulos."})]})]})]})]})]})}const He=[{id:"ventas",label:"Ventas",ruta:"/ventas"},{id:"visitas",label:"Visitas",ruta:"/visitas"},{id:"clientes",label:"Clientes",ruta:"/clientes"},{id:"pedidos",label:"Pedidos",ruta:"/pedidos"},{id:"campanas",label:"Campañas",ruta:"/campanas"},{id:"incidencias",label:"Incidencias",ruta:"/incidencias"},{id:"cobros",label:"Cobros",ruta:"/cobros"},{id:"zonas",label:"Zonas",ruta:"/rutas"},{id:"provincias",label:"Provincias",ruta:"/rutas"},{id:"proveedores",label:"Proveedores",ruta:"/proveedores"},{id:"actividad",label:"Actividad comercial",ruta:"/dashboard"}],va={urgente:"destructive",alta:"default",media:"secondary",baja:"outline"},le=t=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR"}).format(Number(t??0)),Je=t=>t?new Date(t).toLocaleDateString("es-ES"):"sin fecha",Na=()=>new Date().toISOString().slice(0,10),ba=t=>new Date(Date.now()-t*864e5).toISOString().slice(0,10);function K({label:t,valor:d}){return e.jsxs("div",{className:"rounded-md border bg-muted/30 p-2",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:t}),e.jsx("p",{className:"text-sm font-semibold",children:d})]})}function ie({titulo:t,items:d,moneda:r}){return d?.length?e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:t}),d.map((i,N)=>e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"truncate pr-2",children:i.clave}),e.jsxs("span",{className:"font-medium shrink-0",children:[r?le(i.valor):i.valor,i.n!=null&&r?` · ${i.n}`:""]})]},`${i.clave}-${N}`))]}):null}function ya({onActualizar:t}){const d=we(),[r,i]=l.useState("ventas"),[N,f]=l.useState(ba(90)),[s,c]=l.useState(Na()),[n,k]=l.useState(!1),[g,I]=l.useState(null),P=async()=>{k(!0);try{const{data:a,error:x}=await D.functions.invoke("agente-informes-ia",{body:{ambito:r,desde:N,hasta:s}});if(x)throw x;if(a?.error){C.error(a.error);return}I(a),t?.()}catch(a){C.error(a instanceof Error?a.message:"No se pudo generar el informe")}finally{k(!1)}},b=He.find(a=>a.id===(g?.ambito??r))?.ruta??"/dashboard",m=g?.datos;
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(Es,{className:"h-5 w-5 text-primary shrink-0"}),"Agente de Informes"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Genera informes con datos reales de GAM: ventas, visitas, clientes, pedidos, campañas, incidencias, cobros, zonas, provincias, proveedores y actividad comercial. Las cifras se calculan sobre tus registros; la IA solo interpreta. No sustituye los informes existentes."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-4",children:[e.jsxs("div",{className:"space-y-1 sm:col-span-2",children:[e.jsx(q,{className:"text-xs",children:"Ámbito del informe"}),e.jsxs(te,{value:r,onValueChange:i,children:[e.jsx(re,{className:"min-w-[180px]",children:e.jsx(me,{})}),e.jsx(ne,{children:He.map(a=>e.jsx(Q,{value:a.id,children:a.label},a.id))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Desde"}),e.jsx(E,{type:"date",value:N,onChange:a=>f(a.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Hasta"}),e.jsx(E,{type:"date",value:s,onChange:a=>c(a.target.value)})]})]}),e.jsxs(A,{onClick:P,disabled:n,className:"gap-2",children:[n?e.jsx(T,{className:"h-4 w-4 animate-spin"}):e.jsx(B,{className:"h-4 w-4"}),n?"Generando informe…":"Generar informe"]}),g&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(Y,{}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h3",{className:"text-sm font-semibold",children:g.titulo}),e.jsx(u,{variant:"outline",className:"text-[10px]",children:g.ambito_label}),e.jsxs(u,{variant:"secondary",className:"text-[10px]",children:[Je(g.periodo?.desde)," → ",Je(g.periodo?.hasta)]}),e.jsxs(A,{size:"sm",variant:"ghost",className:"gap-1 h-7",onClick:()=>d(b),children:[e.jsx(ue,{className:"h-3.5 w-3.5"}),"Ver detalle"]})]}),e.jsxs("div",{className:"rounded-md border p-3",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:"Resumen ejecutivo"}),e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:g.resumen_ejecutivo})]}),m&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Datos principales · cifras reales de GAM"}),e.jsxs("div",{className:"grid gap-2 sm:grid-cols-3 lg:grid-cols-4",children:[e.jsx(K,{label:"Ventas periodo",valor:le(m.ventas?.importe_periodo)}),e.jsx(K,{label:"Periodo anterior",valor:le(m.ventas?.importe_periodo_anterior)}),e.jsx(K,{label:"Variación",valor:m.ventas?.variacion_pct==null?"—":`${m.ventas.variacion_pct} %`}),e.jsx(K,{label:"Pedidos",valor:String(m.ventas?.pedidos??0)}),e.jsx(K,{label:"Ticket medio",valor:le(m.ventas?.ticket_medio)}),e.jsx(K,{label:"Visitas completadas",valor:String(m.visitas?.completadas??0)}),e.jsx(K,{label:"Cobertura cartera",valor:`${m.visitas?.cobertura_cartera_pct??0} %`}),e.jsx(K,{label:"Clientes activos",valor:String(m.cartera?.activos??0)}),e.jsx(K,{label:"Sin visitar +90 d",valor:String(m.cartera?.sin_visitar_90d??0)}),e.jsx(K,{label:"Incidencias abiertas",valor:String(m.incidencias?.abiertas??0)}),e.jsx(K,{label:"Deuda abierta",valor:le(m.cobros?.deuda_abierta)}),e.jsx(K,{label:"Deuda vencida",valor:le(m.cobros?.deuda_vencida)})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsx(ie,{titulo:"Ventas por proveedor",items:m.proveedores?.ventas??[],moneda:!0}),e.jsx(ie,{titulo:"Top clientes",items:m.ventas?.top_clientes??[],moneda:!0}),e.jsx(ie,{titulo:"Ventas por provincia",items:m.zonas?.ventas_por_provincia??[],moneda:!0}),e.jsx(ie,{titulo:"Ventas por localidad",items:m.zonas?.ventas_por_localidad??[],moneda:!0}),e.jsx(ie,{titulo:"Visitas por provincia",items:m.visitas?.por_provincia??[]}),e.jsx(ie,{titulo:"Visitas por tipo",items:m.visitas?.por_tipo??[]}),e.jsx(ie,{titulo:"Ventas por mes",items:m.ventas?.por_mes??[],moneda:!0}),e.jsx(ie,{titulo:"Incidencias por proveedor",items:m.proveedores?.incidencias??[]})]}),!!m.campanas?.length&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Campañas"}),m.campanas.map(a=>e.jsxs("div",{className:"flex items-center justify-between gap-2 text-sm border rounded-md p-2",children:[e.jsxs("span",{className:"truncate",children:[a.nombre," ",a.proveedor?`· ${a.proveedor}`:""]}),e.jsxs("span",{className:"shrink-0 text-xs text-muted-foreground",children:[a.completados,"/",a.objetivo," (",a.cobertura_pct," %) · ",a.pedidos," pedidos ·"," ",le(a.importe)]})]},a.id))]})]}),!!g.tendencias?.length&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Tendencias relevantes"}),g.tendencias.map((a,x)=>e.jsxs("div",{className:"flex gap-2 text-sm border rounded-md p-2",children:[a.sentido==="positiva"?e.jsx(Ms,{className:"h-4 w-4 text-emerald-600 shrink-0 mt-0.5"}):a.sentido==="negativa"?e.jsx(Rs,{className:"h-4 w-4 text-destructive shrink-0 mt-0.5"}):e.jsx(Ds,{className:"h-4 w-4 text-muted-foreground shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:a.titulo}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a.detalle})]})]},x))]}),!!g.pendientes?.length&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Pendientes"}),g.pendientes.map((a,x)=>e.jsxs("div",{className:"flex items-start justify-between gap-2 text-sm border rounded-md p-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:a.titulo}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a.detalle})]}),a.area&&e.jsx(u,{variant:"outline",className:"text-[10px] shrink-0",children:a.area})]},x))]}),e.jsxs("div",{className:"rounded-md border border-primary/30 bg-primary/5 p-3 space-y-3",children:[e.jsxs("p",{className:"text-xs font-semibold flex items-center gap-1",children:[e.jsx(B,{className:"h-3.5 w-3.5 text-primary"}),"Conclusiones y recomendaciones de la IA (interpretación, no son datos de GAM)"]}),g.conclusiones?.map((a,x)=>e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-medium",children:a.titulo}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Se apoya en: ",a.apoyo]})]},x)),g.recomendaciones?.map((a,x)=>e.jsxs("div",{className:"flex items-start justify-between gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:a.accion}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[a.motivo,a.modulo?` · Módulo: ${a.modulo}`:""]})]}),e.jsx(u,{variant:va[a.prioridad]??"secondary",className:"text-[10px] shrink-0",children:a.prioridad})]},x))]}),!!g.avisos?.length&&e.jsxs("div",{className:"rounded-md border border-amber-300 dark:border-amber-800 p-3 space-y-1",children:[e.jsxs("p",{className:"text-xs font-semibold flex items-center gap-1",children:[e.jsx(X,{className:"h-3.5 w-3.5 text-amber-600"}),"Avisos y limitaciones"]}),g.avisos.map((a,x)=>e.jsxs("p",{className:"text-xs text-muted-foreground",children:["· ",a]},x))]})]})]})]})}const ve=t=>t?new Date(`${t}T00:00:00`).toLocaleDateString("es-ES",{weekday:"long",day:"2-digit",month:"short"}):"";function _a(){const t=new Date,d=(t.getDay()+6)%7;return t.setDate(t.getDate()-d+7),t.toISOString().slice(0,10)}function wa({onActualizar:t}){const d=we(),[r,i]=l.useState(_a()),[N,f]=l.useState(""),[s,c]=l.useState("5"),[n,k]=l.useState("6"),[g,I]=l.useState(!1),[P,b]=l.useState(!1),[m,a]=l.useState(null),x=async()=>{I(!0);try{const{data:p,error:_}=await D.functions.invoke("agente-planificador-semanal",{body:{semana_inicio:r,provincia:N.trim(),dias_laborables:Number(s),visitas_dia:Number(n)}});if(_)throw _;if(p?.error){C.error(p.error);return}a(p),t?.(),C.success("Propuesta de semana preparada. Revísala y decide.")}catch(p){C.error(p instanceof Error?p.message:"No se pudo preparar la semana")}finally{I(!1)}},$=(p,_)=>{a(S=>S&&{...S,dias:S.dias.map(R=>
1R.fecha===p?_(R):R)})},v=(p,_)=>$(p,S=>({...S,paradas:S.paradas.filter(R=>R.cliente_id!==_||R.fija).map((R,h)=>({...R,orden:h+1}))})),j=(p,_,S)=>$(p,R=>({...R,paradas:R.paradas.map(h=>h.cliente_id===_&&!h.fija?{...h,hora:S}:h)})),G=(p,_,S)=>{if(!m||p===S)return;const h=m.dias.find(z=>z.fecha===p)?.paradas.find(z=>z.cliente_id===_);!h||h.fija||a({...m,dias:m.dias.map(z=>z.fecha===p?{...z,paradas:z.paradas.filter(W=>W.cliente_id!==_).map((W,L)=>({...W,orden:L+1}))}:z.fecha===S?{...z,paradas:[...z.paradas,{...h,orden:z.paradas.length+1}]}:z)})},F=(p,_)=>$(p,S=>({...S,tareas:S.tareas.filter((R,h)=>h!==_)})),V=async()=>{if(m){b(!0);try{const{data:p,error:_}=await D.functions.invoke("planificador-semanal-ejecutar",{body:{semana_inicio:m.semana?.desde,dias:m.dias}});if(_)throw _;if(p?.error){C.error(p.error);return}C.success(p?.mensaje??"Semana aplicada en Rutas y Agenda"),a(null),t?.()}catch(p){C.error(p instanceof Error?p.message:"No se pudo aplicar la semana")}finally{b(!1)}}},M=m?.dias.reduce((p,_)=>p+_.paradas.length,0)??0;
1return e.jsxs(U,{children:[e.jsxs(H,{className:"pb-3",children:[e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(gs,{className:"h-5 w-5 text-primary shrink-0"}),"Agente Planificador Semanal"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Prepara una propuesta de semana con tu Agenda, Rutas y Campañas actuales: agrupa la actividad por días y zonas usando prioridades, frecuencia de visita, clientes no visitados, provincias, viajes previstos, incidencias, compromisos y tareas pendientes. La propuesta es editable y solo se aplica si la aceptas. Las citas confirmadas nunca se mueven."})]}),e.jsxs(Z,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Semana (día de inicio)"}),e.jsx(E,{type:"date",value:r,onChange:p=>i(p.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Provincia preferente (opcional)"}),e.jsx(E,{value:N,onChange:p=>f(p.target.value),placeholder:"Todas",className:"min-w-[180px]"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Días laborables"}),e.jsxs(te,{value:s,onValueChange:c,children:[e.jsx(re,{className:"min-w-[180px]",children:e.jsx(me,{})}),e.jsx(ne,{children:["3","4","5","6"].map(p=>e.jsxs(Q,{value:p,children:[p," días"]},p))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(q,{className:"text-xs",children:"Visitas por día"}),e.jsxs(te,{value:n,onValueChange:k,children:[e.jsx(re,{className:"min-w-[180px]",children:e.jsx(me,{})}),e.jsx(ne,{children:["3","4","5","6","7","8"].map(p=>e.jsxs(Q,{value:p,children:[p," visitas"]},p))})]})]})]}),e.jsxs(A,{onClick:x,disabled:g,className:"gap-2",children:[g?e.jsx(T,{className:"h-4 w-4 animate-spin"}):e.jsx(B,{className:"h-4 w-4"}),g?"Preparando semana…":"Preparar propuesta de semana"]}),m&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(Y,{}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(u,{variant:"secondary",className:"text-[10px]",children:[ve(m.semana?.desde)," → ",ve(m.semana?.hasta)]}),e.jsxs(u,{variant:"outline",className:"text-[10px]",children:[M," visitas propuestas"]}),e.jsx(u,{variant:"outline",className:"text-[10px]",children:"Propuesta editable · pendiente de tu decisión"})]}),m.resumen&&e.jsxs("div",{className:"rounded-md border p-3",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:"Lógica de la semana"}),e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:m.resumen})]}),e.jsx("div",{className:"grid gap-3 lg:grid-cols-2",children:m.dias.map(p=>e.jsxs("div",{className:"rounded-md border p-3 space-y-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsx("p",{className:"text-sm font-semibold capitalize",children:ve(p.fecha)}),e.jsxs("div",{className:"flex items-center gap-1",children:[p.zona&&e.jsx(u,{variant:"outline",className:"text-[10px]",children:p.zona}),e.jsxs(u,{variant:"secondary",className:"text-[10px]",children:[p.paradas.length," visitas"]})]})]}),p.enfoque&&e.jsx("p",{className:"text-xs text-muted-foreground",children:p.enfoque}),p.paradas.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sin visitas asignadas."}),p.paradas.map(_=>e.jsxs("div",{className:"flex items-start gap-2 rounded-md border bg-muted/20 p-2",children:[e.jsxs("span",{className:"text-xs font-semibold w-5 shrink-0 pt-1",children:[_.orden,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-sm font-medium truncate flex items-center gap-1",children:[_.cliente,_.fija&&e.jsxs(u,{variant:"secondary",className:"text-[9px] gap-1",children:[e.jsx(Os,{className:"h-3 w-3"})," cita confirmada"]})]}),_.motivo&&e.jsx("p",{className:"text-xs text-muted-foreground",children:_.motivo})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(E,{type:"time",value:_.hora,disabled:_.fija,onChange:S=>j(p.fecha,_.cliente_id,S.target.value),className:"h-8 w-[104px]"}),!_.fija&&e.jsxs(e.Fragment,{children:[e.jsxs(te,{value:p.fecha,onValueChange:S=>G(p.fecha,_.cliente_id,S),children:[e.jsx(re,{className:"h-8 w-[64px] px-2",children:e.jsx(qs,{className:"h-3.5 w-3.5"})}),e.jsx(ne,{children:m.dias.map(S=>e.jsx(Q,{value:S.fecha,children:ve(S.fecha)},S.fecha))})]}),e.jsx(A,{size:"icon",variant:"ghost",className:"h-8 w-8",onClick:()=>v(p.fecha,_.cliente_id),children:e.jsx(Oe,{className:"h-3.5 w-3.5"})})]})]})]},_.cliente_id)),!!p.tareas.length&&e.jsxs("div",{className:"space-y-1 pt-1",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Tareas del día"}),p.tareas.map((_,S)=>e.jsxs("div",{className:"flex items-start justify-between gap-2 text-xs border rounded-md p-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:_.titulo}),e.jsxs("p",{className:"text-muted-foreground",children:[_.cliente,_.motivo?` · ${_.motivo}`:""]})]}),e.jsx(A,{size:"icon",variant:"ghost",className:"h-6 w-6 shrink-0",onClick:()=>F(p.fecha,S),children:e.jsx(Oe,{className:"h-3 w-3"})})]},S))]})]},p.fecha))}),!!m.pendientes_sin_encajar?.length&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:"Pendientes que no entran esta semana"}),m.pendientes_sin_encajar.map((p,_)=>e.jsxs("p",{className:"text-xs",children:["· ",e.jsx("span",{className:"font-medium",children:p.cliente})," — ",p.motivo]},_))]}),!!m.avisos?.length&&e.jsxs("div",{className:"rounded-md border border-amber-300 dark:border-amber-800 p-3 space-y-1",children:[e.jsxs("p",{className:"text-xs font-semibold flex items-center gap-1",children:[e.jsx(X,{className:"h-3.5 w-3.5 text-amber-600"}),"Avisos"]}),m.avisos.map((p,_)=>e.jsxs("p",{className:"text-xs text-muted-foreground",children:["· ",p]},_))]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{onClick:V,disabled:P||M===0,className:"gap-2",children:[P?e.jsx(T,{className:"h-4 w-4 animate-spin"}):e.jsx(be,{className:"h-4 w-4"}),"Aceptar y aplicar en Rutas y Agenda"]}
1),e.jsxs(A,{variant:"outline",className:"gap-2",onClick:()=>a(null),children:[e.jsx(je,{className:"h-4 w-4"}),"Rechazar propuesta"]}),e.jsxs(A,{variant:"ghost",className:"gap-2",onClick:()=>d("/rutas"),children:[e.jsx(ue,{className:"h-4 w-4"}),"Ver Rutas"]}),e.jsxs(A,{variant:"ghost",className:"gap-2",onClick:()=>d("/agenda"),children:[e.jsx(ue,{className:"h-4 w-4"}),"Ver Agenda"]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"GAM propone, tú dispones: nada se guarda hasta que aceptes, y las citas ya confirmadas en tu Agenda no se mueven ni se modifican."})]})]})]})}const Ca={clientes_prioritarios:"Clientes prioritarios",frecuencia_visitas:"Frecuencia de visitas",zonas:"Zonas",horarios:"Horarios",orden_visitas:"Orden habitual de visitas",criterios_seguimiento:"Criterios de seguimiento",clientes_comodin:"Clientes comodín",campanas:"Campañas",rutas:"Rutas",organizacion:"Organización del trabajo"},Ze={propuesto:{label:"Patrón detectado",variant:"secondary"},confirmado:{label:"Confirmado por ti",variant:"default"},corregido:{label:"Corregido por ti",variant:"outline"},descartado:{label:"Descartado",variant:"destructive"}};function Aa({onActualizar:t}){const[d,r]=l.useState([]),[i,N]=l.useState([]),[f,s]=l.useState(""),[c,n]=l.useState(null),[k,g]=l.useState(null),[I,P]=l.useState("12"),[b,m]=l.useState(!1),[a,x]=l.useState(!1),[$,v]=l.useState(null),[j,G]=l.useState(""),F=l.useCallback(async()=>{m(!0);const{data:h,error:z}=await D.from("aprende_conmigo_patrones").select("*").order("confianza",{ascending:!1});z?C.error("No se pudo cargar lo aprendido"):r(h??[]),m(!1)},[]);l.useEffect(()=>{F()},[F]);const V=async()=>{x(!0),g(null);try{const{data:h,error:z}=await D.functions.invoke("aprende-conmigo",{body:{meses:Number(I)}});if(z)throw z;if(h?.error)throw new Error(h.error);N(h?.recomendaciones??[]),s(h?.resumen??""),n(h?.datos_reales??null),g(h?.aviso??null),await F(),t?.(),h?.sin_datos?C.info("Todavía no hay actividad suficiente para aprender."):C.success("GAM ha actualizado lo que sabe de tu forma de trabajar")}catch(h){C.error(h?.message??"No se pudo completar el aprendizaje")}finally{x(!1)}},M=async(h,z,W)=>{const{error:L}=await D.from("aprende_conmigo_patrones").update({estado:z,correccion_usuario:W??(z==="corregido"?h.correccion_usuario:null),corregido_at:z==="corregido"?new Date().toISOString():null}).eq("id",h.id);if(L){C.error("No se pudo guardar tu decisión");return}C.success(z==="confirmado"?"Conclusión confirmada: se tendrá en cuenta en próximas sugerencias":z==="corregido"?"Corrección guardada: prevalecerá sobre lo detectado":"Conclusión descartada: no se usará en las sugerencias"),await F(),t?.()},p=h=>{v(h),G(h.correccion_usuario??"")},_=async()=>{if($){if(!j.trim()){C.error("Escribe cómo trabajas realmente");return}await M($,"corregido",j.trim()),v(null),G("")}},S=d.filter(h=>h.estado!=="descartado"),R=d.filter(h=>h.estado==="descartado");return e.jsxs(U,{children:[e.jsx(H,{children:e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{className:"min-w-[180px]",children:[e.jsxs(J,{className:"flex items-center gap-2 text-base",children:[e.jsx(js,{className:"h-5 w-5 text-primary"}),"Aprende conmigo"]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"GAM aprende de tus decisiones reales para mejorar sus sugerencias. Nunca convierte lo aprendido en una regla obligatoria: tú puedes corregir cualquier conclusión."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(te,{value:I,onValueChange:P,children:[e.jsx(re,{className:"w-[150px]",children:e.jsx(me,{})}),e.jsxs(ne,{children:[e.jsx(Q,{value:"3",children:"Últimos 3 meses"}),e.jsx(Q,{value:"6",children:"Últimos 6 meses"}),e.jsx(Q,{value:"12",children:"Últimos 12 meses"}),e.jsx(Q,{value:"24",children:"Últimos 24 meses"})]})]}),e.jsx(A,{onClick:V,disabled:a,className:"min-w-[180px]",children:a?e.jsxs(e.Fragment,{children:[e.jsx(T,{className:"mr-2 h-4 w-4 animate-spin"})," Aprendiendo…"]}):e.jsxs(e.Fragment,{children:[e.jsx(B,{className:"mr-2 h-4 w-4"})," Aprender de mi trabajo"]})})]})]})}),e.jsxs(Z,{className:"space-y-4",children:[k&&e.jsx("div",{className:"rounded-md border border-amber-500/40 bg-amber-500/10 p-3 text-xs",children:k}),c&&e.jsxs("div",{className:"rounded-md border bg-muted/30 p-3",children:[e.jsxs("p",{className:"mb-2 flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsx(qe,{className:"h-3.5 w-3.5"})," Datos reales analizados en GAM"]}),e.jsx("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-6",children:[["Visitas realizadas",c.visitas_realizadas],["Clientes en cartera",c.clientes_cartera],["Tareas de agenda",c.tareas],["Rutas",c.rutas],["Pedidos",c.pedidos],["Clientes en campaña",c.clientes_en_campana]].map(([h,z])=>e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("p",{className:"text-[10px] uppercase text-muted-foreground",children:h}),e.jsx("p",{className:"text-sm font-semibold",children:Number(z??0)})]},String(h)))})]}),f&&e.jsx("div",{className:"rounded-md border-l-4 border-l-primary bg-muted/30 p-3 text-sm",children:f}),b&&e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(T,{className:"h-4 w-4 animate-spin"})," Cargando lo aprendido…"]}),!b&&S.length===0&&e.jsx("p",{className:"rounded-md border border-dashed p-4 text-sm text-muted-foreground",children:"Todavía no hay nada aprendido. Pulsa «Aprender de mi trabajo» y GAM analizará tus visitas, rutas, agenda, campañas y pedidos reales para detectar cómo organizas tu actividad."}),S.map(h=>{const z=Ze[h.estado]??Ze.propuesto;return e.jsxs("div",{className:"rounded-lg border p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-[180px]",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm font-semibold",children:h.titulo}),e.jsx(u,{variant:"outline",className:"text-[10px]",children:Ca[h.categoria]??h.categoria}),e.jsx(u,{variant:z.variant,className:"text-[10px]",children:z.label})]}),e.jsxs("p",{className:"mt-0.5 text-[11px] text-muted-foreground",children:["Observado ",h.veces_detectado," ",h.veces_detectado===1?"vez":"veces"," · confianza ",Math.round(Number(h.confianza??0)*100),"%"]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[e.jsxs(A,{size:"sm",variant:"outline",onClick:()=>M(h,"confirmado"),children:[e.jsx(be,{className:"mr-1 h-3.5 w-3.5"})," Es correcto"]}),e.jsxs(A,{size:"sm",variant:"outline",onClick:()=>p(h),children:[e.jsx(Ie,{className:"mr-1 h-3.5 w-3.5"})," Corregir"]}),e.jsxs(A,{size:"sm",variant:"ghost",onClick:()=>M(h,"descartado"),children:[e.jsx(je,{className:"mr-1 h-3.5 w-3.5"})," No es así"]})]})]}),e.jsx(Y,{className:"my-2"}),e.jsxs("div",{className:"rounded-md bg-muted/40 p-2",children:[e.jsxs("p",{className:"mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsx(B,{className:"h-3 w-3"})," Patrón detectado (conclusión de GAM)"]}),e.jsx("p",{className:"text-sm",children:h.patron})]}),!!h.evidencia?.length&&e.jsxs("div",{className:"mt-2 rounded-md border p-2",children:[e.jsxs("p",{className:"mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsx(qe,{className:"h-3 w-3"})," Datos reales en los que se apoya"]}),e.jsx("div",{className:"space-y-0.5",children:h.evidencia.map((W,L)=>e.jsxs("div",{className:"flex items-center justify-between gap-2 text-xs",children:[e.jsx("span",{className:"truncate",children:W.dato}),e.jsxs("span",{className:"shrink-0 font-medium",children:[W.valor,e.jsxs("span",{className:"ml-1 text-muted-foreground",children:["· ",W.origen]})]})]},L))})]}),h.estado==="corregido"&&h.correccion_usuario&&e.jsxs("div",{className:"mt-2 rounded-md border border-primary/40 bg-primary/5 p-2",children:[e.jsxs("p",{className:"mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-primary",children:[e.jsx(Ie,{className:"h-3 w-3"})," Tu corrección (prevalece sobre lo detectado)"]}),e.jsx("p",{className:"text-sm",children:h.correccion_usuario})]})]}
1,h.id)}),i.length>0&&e.jsxs("div",{className:"rounded-lg border border-dashed p-3",children:[e.jsxs("p",{className:"mb-2 flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsx(Ts,{className:"h-3.5 w-3.5"})," Recomendaciones IA (sugerencias, no obligatorias)"]}),e.jsx("div",{className:"space-y-2",children:i.map((h,z)=>e.jsxs("div",{className:"rounded-md bg-muted/30 p-2",children:[e.jsx("p",{className:"text-sm font-medium",children:h.titulo}),e.jsx("p",{className:"text-sm text-muted-foreground",children:h.detalle}),h.se_apoya_en&&e.jsxs("p",{className:"mt-0.5 text-[11px] text-muted-foreground",children:["Se apoya en: ",h.se_apoya_en]})]},z))})]}),R.length>0&&e.jsxs("div",{className:"rounded-md border p-2",children:[e.jsxs("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:["Conclusiones descartadas (",R.length,")"]}),R.map(h=>e.jsxs("div",{className:"flex items-center justify-between gap-2 py-0.5 text-xs",children:[e.jsx("span",{className:"truncate text-muted-foreground line-through",children:h.titulo}),e.jsxs(A,{size:"sm",variant:"ghost",onClick:()=>M(h,"propuesto"),children:[e.jsx(Ls,{className:"mr-1 h-3 w-3"})," Recuperar"]})]},h.id))]}),e.jsxs("p",{className:"flex items-start gap-1.5 text-[11px] text-muted-foreground",children:[e.jsx(Gs,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),"Lo aprendido se usa únicamente para ordenar y matizar las sugerencias de los Agentes IA. No modifica ningún dato histórico ni obliga a ninguna acción."]})]}),e.jsx(ss,{open:!!$,onOpenChange:h=>!h&&v(null),children:e.jsxs(as,{className:"max-h-[85vh] overflow-y-auto",children:[e.jsxs(is,{children:[e.jsx(ts,{children:"Corregir lo que GAM ha concluido"}),e.jsx(rs,{children:"Explica cómo trabajas realmente. Tu corrección prevalecerá sobre el patrón detectado en las próximas sugerencias."})]}),$&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"rounded-md bg-muted/40 p-2 text-sm",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase text-muted-foreground",children:"Conclusión de GAM"}),$.patron]}),e.jsx(Me,{value:j,onChange:h=>G(h.target.value),rows:4,placeholder:"Ej.: no visito por la tarde salvo en la provincia de al lado; los clientes comodín reales son otros…"})]}),e.jsxs(ns,{children:[e.jsx(A,{variant:"outline",onClick:()=>v(null),children:"Cancelar"}),e.jsx(A,{onClick:_,children:"Guardar corrección"})]})]})})]})}function ka({onActualizar:t}){const{enviarNecesidad:d,trabajando:r}=os(),[i,N]=l.useState(""),f=async()=>{const s=i.trim();s&&(N(""),await d(s,{origen_modulo:"agentes_ia_lenguaje_natural"}),t?.())};return e.jsxs(U,{children:[e.jsx(H,{className:"pb-3",children:e.jsxs(J,{className:"text-base flex items-center gap-2",children:[e.jsx(Te,{className:"h-5 w-5 text-primary shrink-0"}),"Pídeselo con tus palabras"]})}),e.jsxs(Z,{className:"space-y-3",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Escribe lo que necesitas sobre visitas, agenda, rutas, campañas, clientes, incidencias, pedidos, cobros, informes o comunicaciones. El Supervisor decide qué agentes intervienen. Si la petición implica una acción, la prepara y te la deja en"," ",e.jsx("strong",{children:"Necesitan mi decisión"}),"."]}),e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(Fs,{className:"h-3.5 w-3.5"}),"También puedes dictarlo con el botón de voz de la app; se envía a estos mismos agentes."]}),e.jsx(Me,{value:i,onChange:s=>N(s.target.value),rows:3,placeholder:"Ej.: prepárame las visitas de mañana y revisa las incidencias pendientes"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Ks.map(s=>e.jsx(u,{variant:"outline",className:"cursor-pointer hover:bg-muted font-normal",onClick:()=>N(s),children:s},s))}),e.jsxs(A,{onClick:f,disabled:r||!i.trim(),children:[r?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(Te,{className:"h-4 w-4 mr-2"}),"Enviar a los Agentes IA"]})]})]})}function Qe(t){return new Date(t).toLocaleString("es-ES",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})}function Sa(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){const d=t;for(const r of["resumen","analisis","respuesta","texto","mensaje","content","informe"])if(typeof d[r]=="str
1ing"&&d[r])return d[r];try{return JSON.stringify(t,null,2)}catch{return""}}return String(t)}function fs(t){const d=t.entrada??{},r=typeof d.accion=="string"?d.accion:"",i=t.objetivo_id,N=typeof d.cliente_id=="string"?d.cliente_id:null;if(r.includes("borrador")||t.modulo_destino?.includes("Comunicación"))return{ruta:"/comunicaciones",etiqueta:"Comunicaciones"};if(r.includes("seguimiento")||r==="cita"||t.modulo_destino?.includes("Agenda"))return{ruta:"/agenda",etiqueta:"Agenda"};if(r==="crear_lead"||t.objetivo_tipo==="posible_cliente")return{ruta:"/prospeccion-ia",etiqueta:"Prospección"};switch(t.objetivo_tipo){case"cliente":return i?{ruta:`/clientes?id=${encodeURIComponent(i)}`,etiqueta:"Cliente"}:{ruta:"/clientes",etiqueta:"Clientes"};case"pedido":return i?{ruta:`/pedidos?id=${encodeURIComponent(i)}`,etiqueta:"Pedido"}:{ruta:"/pedidos",etiqueta:"Pedidos"};case"visita":return i?{ruta:`/visitas?id=${encodeURIComponent(i)}`,etiqueta:"Visita"}:{ruta:"/visitas",etiqueta:"Visitas"};case"incidencia":return i?{ruta:`/incidencias?id=${encodeURIComponent(i)}`,etiqueta:"Incidencia"}:{ruta:"/incidencias",etiqueta:"Incidencias"};case"campana":return{ruta:"/campanas",etiqueta:"Campañas"};case"ruta":return{ruta:"/rutas",etiqueta:"Rutas"};case"agenda":case"semana":return{ruta:"/agenda",etiqueta:"Agenda"};case"cobro":return N?{ruta:`/clientes?id=${encodeURIComponent(N)}`,etiqueta:"Ficha del cliente"}:{ruta:"/clientes",etiqueta:"Clientes"};case"email":case"comunicaciones":return{ruta:"/comunicaciones",etiqueta:"Comunicaciones"};case"empresa":case"proveedor":return i?{ruta:`/proveedores?id=${encodeURIComponent(i)}`,etiqueta:"Proveedor"}:{ruta:"/proveedores",etiqueta:"Proveedores"};case"muestra":return{ruta:"/muestras",etiqueta:"Muestras"};case"prospeccion":return{ruta:"/prospeccion-ia",etiqueta:"Prospección"};case"pedidos":return{ruta:"/pedidos",etiqueta:"Pedidos"};case"incidencias":return{ruta:"/incidencias",etiqueta:"Incidencias"};case"cobros":return{ruta:"/clientes",etiqueta:"Clientes"};default:return null}}function za(t){const d=t.entrada??{},r=typeof d.cliente_id=="string"?d.cliente_id:null;return t.objetivo_tipo==="cobro"||t.objetivo_tipo==="cobros"||t.agente_ia==="cobros_ia"?r?{ruta:`/clientes?id=${encodeURIComponent(r)}`,etiqueta:"la ficha del cliente (cobro)"}:{ruta:"/control-cartera",etiqueta:"Cobros"}:fs(t)}const Se=["peticion","decisiones","agenda","rutas","campanas","incidencias","pedidos","cobros","comunicaciones","prospeccion","cliente360","informes","planificador","aprende","catalogo","historial"],ze="gam-agentes-foco",Ne={left:["agenda","rutas","planificador","campanas"],center:["pet
1icion","decisiones"],right:["pedidos","incidencias","cobros"],orbit:["cliente360","comunicaciones","prospeccion","informes","aprende","catalogo","historial"]},Ye=["gam-float gam-float--a","gam-float gam-float--b","gam-float gam-float--f","gam-float gam-float--j"],Ke=["gam-float gam-float--g","gam-float gam-float--h","gam-float gam-float--i","gam-float gam-float--j","gam-float gam-float--a","gam-float gam-float--c","gam-float gam-float--e"],Xe={agenda:"/agenda",rutas:"/rutas",campanas:"/campanas",incidencias:"/incidencias",pedidos:"/pedidos",cobros:"/control-cartera",comunicaciones:"/comunicaciones",prospeccion:"/prospeccion-ia",cliente360:"/clientes",informes:"/informes",planificador:"/agenda"};function Pa(t){if(!t||t==="peticion")return Ne;const d=r=>r.map(i=>i===t?"peticion":i);return{left:d(Ne.left),center:[t,t==="decisiones"?"peticion":"decisiones"],right:d(Ne.right),orbit:d(Ne.orbit)}}function We(t){const d=document,r=typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;d.startViewTransition&&!r?d.startViewTransition(t):t()}function Ba(){const t=we(),{solicitudes:d,tareas:r,cargando:i,trabajando:N,cargar:f,decidir:s}=os(),[c,n]=l.useState(""),{data:k}=es({queryKey:["agentes-ia-clientes-nombres"],queryFn:async()=>{const{data:o}=await D.from("clientes").select("id, name, razon_social"),y=new Map;return(o??[]).forEach(w=>y.set(w.id,w.razon_social||w.name||"Cliente")),y},staleTime:6e4}),g=o=>{const y=o.entrada?.cliente_id;return!y||!k?null:k.get(y)??null},[I,P]=l.useState(null),[b,m]=l.useState(""),[a]=ys(),x=a.get("ver"),$=a.get("estado")??void 0,[v,j]=l.useState(()=>{if(x&&Se.includes(x))return x;try{const o=sessionStorage.getItem(ze);return o&&Se.includes(o)?o:null}catch{return null}});l.useEffect(()=>{try{v?sessionStorage.setItem(ze,v):sessionStorage.removeItem(ze)}catch{}},[v]),l.useEffect(()=>{x&&Se.includes(x)&&j(x)},[x,$]);const G=l.useCallback(o=>We(()=>j(o)),[]),F=l.useCallback(()=>We(()=>j(null)),[]),V=l.useMemo(()=>{const o=new Map;return d.forEach(y=>o.set(y.id,y.necesidad)),o},[d]),M=l.useMemo(()=>{const o=new Map;return r.forEach(y=>{const w=o.get(y.agente_ia)??[];w.push(y),o.set(y.agente_ia,w)}),o.forEach(y=>y.sort((w,O)=>new Date(O.created_at).getTime()-new Date(w.created_at).getTime())),o},[r]),p=l.useMemo(()=>r.filter(o=>o.estado==="necesita_decision"&&o.autorizada===null).sort((o,y)=>new Date(y.created_at).getTime()-new Date(o.created_at).getTime()),[r]),_=l.useMemo(()=>{const o=pe.filter(w=>!w.consolidadoEn),y=c.trim().toLowerCase();return y?o.filter(w=>w.nombre.toLowerCase().includes(y)||w.area.toLowerCase().includes(y)||w.descripcion.toLowerCase().includes(y)||w.funcion.toLowerCase().includes(y)):o},[c]),S=l.useMemo(()=>pe.filter(o=>o.consolidadoEn).map(o=>({nombre:o.nombre,destino:pe.find(y=>y.id===o.consolidadoEn)?.nombre??o.consolidadoEn})),[]),R=o=>{const y=M.get(o);return y?.length?{estado:(y.find(O=>O.estado==="necesita_decision"&&O.autorizada===null)??y[0]).estado,ultima:y[0]}:{estado:null}},h=o=>{P(o),m(JSON.stringify(o.entrada??{},null,2))},z=async()=>{if(!I)return;let o;try{if(o=JSON.parse(b||"{}"),typeof o!="object"||Array.isArray(o))throw new Error}catch{C.error("Los datos de la propuesta no son válidos");return}const y=I;P(null),await s(y.id,!0,y.solicitud_id,o)},W=async(o,y)=>{await s(o.id,!0,o.solicitud_id)&&t(y)},L=(o,y)=>{const{estado:w,ultima:O}=R(o);return e.jsxs("div",{className:"space-y-1 text-sm",children:[e.jsx("p",{className:"gam-dim",children:y}),O?e.jsxs("p",{className:"text-xs truncate",children:["Última: ",O.titulo," · ",Qe(O.created_at)]}):e.jsx("p",{className:"text-xs gam-dim",children:"Sin actuaciones registradas."}),w&&e.jsx(Pe,{estado:w})]})},vs=l.useMemo(()=>[{id:"peticion",title:"PEDIR A GAM",icon:Vs,hint:"Dile por texto o por voz qué necesitas y el Supervisor elige los agentes.",render:()=>e.jsx(ka,{onActualizar:f})},{id:"decisiones",title:"NECESITAN MI DECISIÓN",icon:X,hint:p.length?`${p.length} propuesta(s) esperan tu aprobación`:"No hay propuestas esperando tu aprobación. GAM propone, tú dispones.",attention:p.length>0,badge:p.length?e.jsx(u,{className:"bg-[hsl(var(--gam-accent))] text-white",children:p.length}
1):null,summary:e.jsx("p",{className:"text-sm gam-dim",children:p.length?`${p.length} acción(es) pendientes de tu decisión.`:"Nada pendiente de aprobar."}),render:()=>e.jsx("div",{className:"space-y-3",children:p.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No hay propuestas esperando tu aprobación. GAM propone, tú dispones."}):p.map(o=>{const y=pe.find(he=>he.id===o.agente_ia),w=g(o),O=(o.titulo||"").replace(/[·\s]+$/,"").trim(),de=(o.objetivo_label||"").replace(/^[·\s]+/,"").trim(),ee=fs(o),Ce=za(o);return e.jsxs("div",{className:"rounded-lg border bg-amber-50/60 dark:bg-amber-950/20 p-3 space-y-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(u,{variant:"outline",children:y?.nombre??o.agente_ia}),e.jsx(u,{variant:"outline",className:`text-[10px] ${$e[xe(o.modo)]}`,children:ye[xe(o.modo)]})]}),e.jsxs("dl",{className:"grid grid-cols-1 sm:grid-cols-[130px_1fr] gap-x-3 gap-y-1 text-sm",children:[w&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Cliente"}),e.jsx("dd",{className:"font-semibold break-words",children:w})]}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Qué quiere hacer"}),e.jsx("dd",{className:"font-medium break-words",children:O||o.titulo}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Sobre qué elemento"}),e.jsxs("dd",{className:"break-words",children:[Ee(o.objetivo_tipo),de?`: ${de}`:""]}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Módulo que lo ejecutará"}),e.jsx("dd",{className:"break-words",children:o.modulo_destino??o.funcion??"—"}),o.motivo&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Por qué lo propone"}),e.jsx("dd",{className:"text-muted-foreground break-words",children:o.motivo})]}),e.jsx("dt",{className:"text-xs text-muted-foreground",children:"Información utilizada"}),e.jsx("dd",{className:"break-words",children:_e(o.fuentes).length>0?e.jsx("ul",{className:"list-disc pl-4 space-y-0.5",children:_e(o.fuentes).map((he,bs)=>e.jsxs("li",{className:"text-xs",children:[e.jsx("span",{className:"font-medium",children:he.origen}),he.detalle?` — ${he.detalle}`:""]},bs))}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"Datos de GAM del elemento indicado"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Ws[xe(o.modo)]}),V.get(o.solicitud_id)&&e.jsxs("p",{className:"text-xs text-muted-foreground break-words",children:["Solicitud: “",V.get(o.solicitud_id),"”"]}),o.entrada&&Object.keys(o.entrada).length>0&&e.jsx("pre",{className:"text-xs bg-background/70 rounded p-2 overflow-x-auto max-h-40",children:JSON.stringify(o.entrada,null,2)}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-1",children:[Ce&&e.jsxs(A,{size:"sm",variant:"secondary",onClick:()=>t(Ce.ruta),children:[e.jsx(ue,{className:"h-4 w-4 mr-2"}),"Ir a ",Ce.etiqueta]}),ee&&e.jsxs(A,{size:"sm",variant:"outline",onClick:()=>W(o,ee.ruta),disabled:N,children:[e.jsx(ue,{className:"h-4 w-4 mr-2"}),"Aprobar y abrir ",ee.etiqueta]}),e.jsxs(A,{size:"sm",onClick:()=>s(o.id,!0,o.solicitud_id),disabled:N,children:[N?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(be,{className:"h-4 w-4 mr-2"}),"Aprobar"]}),e.jsxs(A,{size:"sm",variant:"outline",onClick:()=>h(o),disabled:N,children:[e.jsx(Ie,{className:"h-4 w-4 mr-2"}),"Modificar"]}),e.jsxs(A,{size:"sm",variant:"ghost",className:"text-destructive",onClick:()=>s(o.id,!1,o.solicitud_id),disabled:N,children:[e.jsx(je,{className:"h-4 w-4 mr-2"}),"Rechazar"]})]})]},o.id)})})},{id:"agenda",title:"AGENDA Y PRIORIDADES",icon:ls,hint:"Prioriza tu día y detecta conflictos de agenda.",summary:L("agenda-prioridades","Prioridades del día."),render:()=>e.jsx(na,{onActualizar:f})},{id:"rutas",title:"RUTAS",icon:ms,hint:"Optimiza recorridos y propone huecos y Plan B.",summary:L("rutas","Optimización de recorridos."),render:()=>e.jsx(oa,{onActualizar:f})},{id:"campanas",title:"CAMPAÑAS",icon:us,hint:"Seguimiento y avance de campañas por proveedor.",summary:L("campanas","Avance de campañas."),render:()=>e.jsx(ca,{onActualizar:f})},{id:"incidencias",title:"INCIDENCIAS",icon:ps,hint:"Analiza incidencias abiertas y propone reclamaciones.",summary:L("incidencias","Incidencias abiertas."),render:()=>e.jsx(la,{onActualizar:f})},{id:"pedidos",title:"PEDIDOS",icon:Bs,hint:"Pedidos pendientes, precios y revisión.",summary:L("pedidos","Pedidos y precios."),render:()=>e.jsx(ma,{onActualizar:f})},{id:"cobros",title:"COBROS",icon:xs,hint:"Deudas, vencimientos y avisos de cobro.",summary:L("cobros","Deudas y vencimientos."),render:()=>e.jsx(ua,{onActualizar:f})},{id:"comunicaciones",title:"COMUNICACIONES",icon:hs,hint:"Correos, borradores y seguimiento de respuestas.",summary:L("comunicaciones","Correos y borradores."),render:()=>e.jsx(xa,{onActualizar:f})},{id:"prospeccion",title:"PROSPECCIÓN",icon:Us,hint:"Busca clientes potenciales por zona 
1y sector.",summary:L("prospeccion","Clientes potenciales."),render:()=>e.jsx(ga,{onActualizar:f})},{id:"cliente360",title:"CLIENTE 360",icon:Hs,hint:"Visión completa del cliente antes de la visita.",summary:L("cliente-360","Ficha completa del cliente."),render:()=>e.jsx(fa,{onActualizar:f})},{id:"informes",title:"INFORMES",icon:Js,hint:"Informes de actividad, ventas y cartera.",summary:L("informes","Informes comerciales."),render:()=>e.jsx(ya,{onActualizar:f})},{id:"planificador",title:"PLANIFICADOR SEMANAL",icon:gs,hint:"Plan de la semana con visitas y objetivos.",summary:L("planificador-semanal","Plan de la semana."),render:()=>e.jsx(wa,{onActualizar:f})},{id:"aprende",title:"APRENDE CONMIGO",icon:js,hint:"GAM aprende de tus decisiones reales.",summary:e.jsx("p",{className:"text-sm gam-dim",children:"Patrones aprendidos de tus decisiones."}),render:()=>e.jsx(Aa,{onActualizar:f})},{id:"catalogo",title:"CATÁLOGO DE AGENTES",icon:Zs,hint:`${_.length} agentes coordinados por el Supervisor IA.`,summary:e.jsxs("p",{className:"text-sm gam-dim",children:[_.length," agentes disponibles."]}),render:()=>e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[e.jsx(E,{value:c,onChange:o=>n(o.target.value),placeholder:"Buscar agente por nombre, área o función",className:"sm:max-w-sm"}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[_.length," agentes"]})]}),S.length>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Funciones integradas en otros agentes:"," ",S.map(o=>`${o.nombre} → ${o.destino}`).join(" · "),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3",children:_.map(o=>{const{estado:y,ultima:w}=R(o.id),O=(M.get(o.id)??[]).filter(ee=>ee.estado==="necesita_decision"&&ee.autorizada===null).length,de=w?Sa(w.resultado):"";return e.jsxs("div",{className:"rounded-lg border bg-background/60 p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("span",{className:"text-sm font-semibold leading-tight break-words",children:o.nombre}),y?e.jsx(Pe,{estado:y}):e.jsx(u,{variant:"outline",className:"text-muted-foreground",children:"Sin actuaciones"})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsx(u,{variant:"secondary",className:"text-[10px]",children:o.area}),e.jsx(u,{variant:"outline",className:`text-[10px] ${o.riesgo==="accion"?"border-amber-500 text-amber-700 dark:text-amber-300":""}`,children:o.riesgo==="accion"?"Requiere autorización":"Solo consulta"}),e.jsxs(u,{variant:"outline",className:`text-[10px] ${$e[o.modoMaximo]}`,children:["Hasta ",ye[o.modoMaximo].toLowerCase()]})]}),e.jsx("p",{className:"text-sm text-muted-foreground break-words",children:o.descripcion}),e.jsx(Y,{}),w?e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Última actuación: ",Qe(w.created_at)]}),e.jsx("p",{className:"text-xs font-medium break-words",children:w.titulo}),de&&e.jsx("p",{className:"text-xs text-muted-foreground line-clamp-4 whitespace-pre-wrap break-words",children:de}),w.error_msg&&e.jsx("p",{className:"text-xs text-destructive break-words",children:w.error_msg})]}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"Este agente aún no ha intervenido. El Supervisor IA lo activará cuando haga falta."}),O>0&&e.jsxs(u,{className:"bg-amber-100 text-amber-800 dark:bg-amber-900/40 dark:text-amber-200",children:[O," acción",O>1?"es":""," pendiente",O>1?"s":""," de tu decisión"]})]},o.id)})})]})},{id:"historial",title:"HISTORIAL",icon:cs,hint:"Todas las actuaciones registradas de los agentes.",summary:e.jsx("p",{className:"text-sm gam-dim",children:"Actuaciones registradas."}),render:()=>e.jsx(ia,{estadoInicial:$},$??"todos")}],[p,V,N,_,c,S,M,f,$]),Ns=o=>vs.find(y=>y.id===o),oe=Pa(v),Re=p.length?"decisiones":"peticion",ce=(o,y={})=>{const w=Ns(o),O=v===w.id,de=!v&&w.id==="peticion",ee=O||de;return e.jsx(ws,{name:`agentes-${w.id}`,title:w.title,icon:w.icon,hint:w.hint,badge:w.badge,attention:w.attention,priority:Re===w.id,soft:!ee&&Re!==w.id,state:O?"focus":"rest",summary:w.summary,expanded:ee,className:De(y.float),onSelect:O?F:Xe[w.id]?()=>t(Xe[w.id]):()=>G(w.id),children:ee?w.render():void 0},w.id)};
1return e.jsxs("div",{className:"gam-space",children:[e.jsx("div",{className:"gam-space__glow","aria-hidden":!0}),e.jsx("div",{className:"gam-space__grid","aria-hidden":!0}),e.jsxs("div",{className:"relative mx-auto w-full max-w-[1680px] px-4 py-6 space-y-6",children:[e.jsxs("header",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h1",{className:"text-2xl md:text-3xl font-semibold tracking-tight flex items-center gap-2",children:[e.jsx(Qs,{className:"h-6 w-6 text-[hsl(var(--gam-accent))]","aria-hidden":!0}),"Agentes IA"]}),e.jsx("p",{className:"gam-dim",children:"El agente que necesitas, en primer plano. El resto espera alrededor · GAM propone, tú dispones."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(A,{variant:"outline",className:"min-h-11 gam-glass-button",onClick:F,"aria-label":"Volver a la vista general de Agentes IA",children:[e.jsx(Ys,{className:"mr-2 h-4 w-4"})," Vista general"]}),e.jsxs(A,{variant:"outline",className:"min-h-11 gam-glass-button",onClick:f,disabled:i,children:[e.jsx(ds,{className:`mr-2 h-4 w-4 ${i?"animate-spin":""}`}),"Actualizar"]})]})]}),e.jsxs("div",{className:De("gam-stage",v&&"gam-stage--focused"),children:[e.jsx("div",{className:"gam-stage__left",children:oe.left.map((o,y)=>ce(o,{float:Ye[y]??Ye[0]}))}),e.jsxs("div",{className:"gam-stage__center",children:[ce(oe.center[0],{float:"gam-float gam-float--main"}),ce(oe.center[1],{float:"gam-float gam-float--under"})]}),e.jsxs("div",{className:"gam-stage__right",children:[ce(oe.right[0],{float:"gam-float gam-float--c"}),ce(oe.right[1],{float:"gam-float gam-float--d"}),ce(oe.right[2],{float:"gam-float gam-float--e"})]})]}),e.jsx("div",{className:"gam-stage__orbit",children:oe.orbit.map((o,y)=>ce(o,{float:Ke[y]??Ke[0]}))})]}),e.jsx(ss,{open:!!I,onOpenChange:o=>!o&&P(null),children:e.jsxs(as,{className:"max-h-[85vh] overflow-y-auto sm:max-w-lg",children:[e.jsxs(is,{children:[e.jsx(ts,{children:"Modificar propuesta"}),e.jsxs(rs,{className:"break-words",children:[I?.titulo," · Ajusta los datos con los que trabajará el agente antes de aprobarla."]})]}),e.jsx(Me,{value:b,onChange:o=>m(o.target.value),rows:10,className:"font-mono text-xs"}),e.jsxs(ns,{className:"gap-2 sm:gap-0",children:[e.jsx(A,{variant:"outline",onClick:()=>P(null),children:"Cancelar"}),e.jsxs(A,{onClick:z,disabled:N,children:[N?e.jsx(T,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(be,{className:"h-4 w-4 mr-2"}),"Guardar y aprobar"]})]})]})})]})}export{Ba 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.