1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3236],{3236:(e,t,r)=>{r.r(t),r.d(t,{AnomalyDetection:()=>x,default:()=>m});var l=r(95155),a=r(12115),n=r(54447),s=r(16051),i=r(50913),d=r(22897);let o={volume:{icon:"\uD83D\uDCF6",color:"blue"},price:{icon:"\uD83D\uDCB0",color:"amber"},options:{icon:"\uD83D\uDCCA",color:"purple"},institutional:{icon:"\uD83C\uDFE6",color:"emerald"},correlation:{icon:"\uD83D\uDD17",color:"pink"},volatility:{icon:"â¡",color:"red"}},c={low:{label:"Low",bgColor:"bg-blue-100 dark:bg-blue-900/30",textColor:"text-blue-700 dark:text-blue-400"},medium:{label:"Medium",bgColor:"bg-amber-100 dark:bg-amber-900/30",textColor:"text-amber-700 dark:text-amber-400"},high:{label:"High",bgColor:"bg-orange-100 dark:bg-orange-900/30",textColor:"text-orange-700 dark:text-orange-400"},critical:{label:"Critical",bgColor:"bg-red-100 dark:bg-red-900/30",textColor:"text-red-700 dark:text-red-400"}};function u(e,t){let r=e?.[t];return"number"==typeof r&&Number.isFinite(r)?r:void 0}function x({symbol:e,symbols:t=[],className:r="",compact:x=!1,onAnomalyDetected:m}){let[b,p]=(0,a.useState)([]),[v,h]=(0,a.useState)(!0),[f,g]=(0,a.useState)("all"),[j,y]=(0,a.useState)("all"),[N,k]=(0,a.useState)({kind:"unreadable"});(0,a.useEffect)(()=>{A();let e=setInterval(()=>{A()},6e4);return()=>clearInterval(e)},[e,t.join(",")]);let A=async()=>{h(!0);let r=e||t[0]||"AAPL";try{let e=await n.b5.get(`/api/signals/technical/${r}`,{dataClass:"intraday",feature:"analysis"}),t=(0,s.l8)(e,"signals");if(!t||!0===t.fallback){p([]),k({kind:"unreadable"});return}p([function(e,t){let r=(0,s.l8)(t,"volume"),l=u(r,"current"),a=u(r,"avg_volume");if(void 0===l||!a)return null;let n=l/a;return n<2?null:{id:`vol-${e}`,symbol:e,type:"volume",severity:n>3?"high":"medium",title:"Volume Spike Detected",description:`Volume ${n.toFixed(1)}\xd7 the 20-day average.`,detectedAt:new Date().toISOString(),value:l,expectedValue:a,deviationPercent:(l-a)/a*100,isActive:!0}}(r,t)].filter(e=>null!==e)),k(null)}catch(e){console.error("Failed to fetch anomalies:",e),p([]),k((0,i.ue)(e,r))}finally{h(!1)}},C=b.filter(e=>("all"===f||e.type===f)&&("all"===j||e.severity===j)),w=N?(0,i.IE)("Anomaly Detection",N,A):null,D=(0,i.R_)(v,w,0===C.length);if(x){let e=b.filter(e=>e.isActive).length,t=b.filter(e=>"critical"===e.severity&&e.isActive).length,a=(0,i.R_)(v,w,0===e);return(0,l.jsxs)("div",{className:`bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 p-4 ${r}`,children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,l.jsxs)("h4",{className:"text-sm font-semibold text-neutral-900 dark:text-neutral-100 flex items-center gap-2",children:[(0,l.jsx)("span",{children:"\uD83D\uDD0D"})," Anomaly Detection"]}),t>0&&(0,l.jsxs)("span",{className:"px-2 py-0.5 bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 text-xs font-bold rounded-full animate-pulse",children:[t," Critical"]})]}),"error"===a&&w&&(0,l.jsx)(d.W5,{state:w,size:"sm"}),"empty"===a&&(0,l.jsx)("p",{className:"text-sm text-neutral-500",children:"No anomalies detected"}),"content"===a&&(0,l.jsx)("div",{className:"space-y-2",children:b.filter(e=>e.isActive).slice(0,3).map(e=>(0,l.jsx)("div",{className:`p-2 rounded ${c[e.severity].bgColor}`,children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("span",{className:"text-xs font-medium text-neutral-800 dark:text-neutral-200",children:[o[e.type].icon," ",e.title]}),(0,l.jsxs)("span",{className:`text-xs ${c[e.severity].textColor}`,children:[e.deviationPercent>0?"+":"",e.deviationPercent.toFixed(0),"%"]})]})},e.id))})]})}return(0,l.jsxs)("div",{className:`bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 ${r}`,children:[(0,l.jsx)("div",{className:"p-4 border-b border-neutral-200 dark:border-neutral-700",children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"text-xl",children:"\uD83D\uDD0D"}),(0,l.jsx)("h3",{className:"text-lg font-semibold text-neutral-900 dark:text-neutral-100",children:"Anomaly Detection"}),e&&(0,l.jsx)("span",{className:"text-sm font-medium text-blue-600 dar
1k:text-blue-400 bg-blue-50 dark:bg-blue-900/30 px-2 py-0.5 rounded",children:e})]}),!N&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-2 h-2 bg-emerald-500 rounded-full animate-pulse"}),(0,l.jsx)("span",{className:"text-xs text-neutral-500",children:"Live Monitoring"})]})]})}),(0,l.jsxs)("div",{className:"p-4 border-b border-neutral-200 dark:border-neutral-700 flex flex-wrap gap-2",children:[(0,l.jsxs)("select",{value:f,onChange:e=>g(e.target.value),className:"px-3 py-1.5 text-sm border border-neutral-300 dark:border-neutral-700 rounded-lg bg-white dark:bg-neutral-800",children:[(0,l.jsx)("option",{value:"all",children:"All Types"}),Object.entries(o).map(([e,t])=>(0,l.jsxs)("option",{value:e,children:[t.icon," ",e]},e))]}),(0,l.jsxs)("select",{value:j,onChange:e=>y(e.target.value),className:"px-3 py-1.5 text-sm border border-neutral-300 dark:border-neutral-700 rounded-lg bg-white dark:bg-neutral-800",children:[(0,l.jsx)("option",{value:"all",children:"All Severities"}),Object.entries(c).map(([e,t])=>(0,l.jsx)("option",{value:e,children:t.label},e))]})]}),(0,l.jsxs)("div",{className:"divide-y divide-neutral-200 dark:divide-neutral-700 max-h-96 overflow-y-auto",children:["loading"===D&&(0,l.jsx)("div",{className:"p-8 text-center",children:(0,l.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-teal-600 mx-auto"})}),"error"===D&&w&&(0,l.jsx)(d.W5,{state:w,size:"sm"}),"empty"===D&&(0,l.jsx)("div",{className:"p-8 text-center text-neutral-500",children:"No anomalies detected"}),"content"===D&&C.map(e=>(0,l.jsx)("div",{className:`p-4 ${!e.isActive?"opacity-50":""}`,children:(0,l.jsxs)("div",{className:"flex items-start justify-between",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("div",{className:"text-2xl",children:o[e.type].icon}),(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,l.jsx)("span",{className:"font-medium text-neutral-900 dark:text-neutral-100",children:e.title}),(0,l.jsx)("span",{className:`px-1.5 py-0.5 text-xs font-medium rounded ${c[e.severity].bgColor} ${c[e.severity].textColor}`,children:c[e.severity].label})]}
1),(0,l.jsx)("p",{className:"text-sm text-neutral-600 dark:text-neutral-400 mb-2",children:e.description}),(0,l.jsxs)("div",{className:"flex items-center gap-4 text-xs text-neutral-500",children:[(0,l.jsxs)("span",{children:["Expected: ",e.expectedValue.toLocaleString()]}),(0,l.jsxs)("span",{children:["Actual: ",e.value.toLocaleString()]}),(0,l.jsxs)("span",{className:e.deviationPercent>0?"text-emerald-600":"text-red-600",children:[e.deviationPercent>0?"+":"",e.deviationPercent.toFixed(1),"%"]})]})]})]}),(0,l.jsxs)("div",{className:"text-right",children:[(0,l.jsx)("div",{className:"text-xs text-neutral-400 mb-2",children:(e=>{let t=new Date(e),r=Math.floor((new Date().getTime()-t.getTime())/6e4);return r<60?`${r}m ago`:`${Math.floor(r/60)}h ago`})(e.detectedAt)}),e.isActive&&(0,l.jsx)("button",{onClick:()=>{var t;return t=e.id,void p(e=>e.map(e=>e.id===t?{...e,isActive:!1}:e))},className:"text-xs text-neutral-500 hover:text-neutral-700",children:"Dismiss"})]})]})},e.id))]})]})}let m=x},16051:(e,t,r)=>{function l(e){if(!e||"object"!=typeof e)return[];let t=e.data,r=[e];return t&&"object"==typeof t&&!Array.isArray(t)&&r.push(t),r}function a(e,...t){if(Array.isArray(e))return e;for(let r of l(e))for(let e of t){let t=r[e];if(Array.isArray(t))return t}return null}function n(e,...t){for(let r of l(e))for(let e of t){let t=r[e];if(t&&"object"==typeof t&&!Array.isArray(t))return t}return null}function s(e,t){return null==t&&!!e&&"object"==typeof e&&Object.keys(e).length>0}r.d(t,{GZ:()=>s,LD:()=>a,l8:()=>n})},50913:(e,t,r)=>{function l(e){return{status:"unavailable",title:"Something Went Wrong",message:"An unexpected error occurred. Please try again.",actions:e?[{label:"Retry",onClick:e,variant:"primary"}]:[]}}r.d(t,{HH:()=>a,IE:()=>i,R_:()=>n,Z1:()=>l,ue:()=>s});let a=l();function n(e,t,r){return e?"loading":t?"error":r?"empty":"content"}function s(e,t){return 404===e?.status&&t?{kind:"not-found",symbol:t}:{kind:"unreadable"}}function i(e,t,r){let l=r?[{label:"Retry",onClick:r,variant:"primary"}]:[];return"not-found"===t.kind?{status:"unavailable",title:`No data for ${t.symbol}`,message:"The symbol was not found.",actions:l}:{status:"unavailable",title:`${e} could not be read.`,message:"Retry.",actions:l}}}}]);
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.