1import{f as S,k as se,v as ue,r as f,m as P,j as e,at as he,au as M,E as D,w as pe,av as k,aw as u,ax as A,ay as Y,az as L,aA as J,t as ve,L as xe}from"./index-BRXndiYS.js";import{b as R}from"./adminFinance-NUsFRPq0.js";const C="/admin/finance",z={all:["admin-finance-anomalies"],anomalies:()=>[...z.all,"list"],anomaliesList:n=>[...z.anomalies(),n],summary:()=>[...z.all,"summary"],summaryByPeriod:n=>[...z.summary(),n],orgAnomalies:()=>[...z.all,"org"],orgAnomaliesList:(n,c)=>[...z.orgAnomalies(),n,c]};async function je(n){const c=new URLSearchParams({period:n.period});return n.severity!==void 0&&c.set("severity",n.severity),n.anomaly_type!==void 0&&c.set("anomaly_type",n.anomaly_type),n.limit!==void 0&&c.set("limit",String(n.limit)),n.offset!==void 0&&c.set("offset",String(n.offset)),(await S.get(`${C}/anomalies?${c}`)).data}async function be(n){const c=new URLSearchParams({period:n});return(await S.get(`${C}/anomalies/summary?${c}`)).data}function ce(n){switch(n){case"critical":return"error";case"warning":return"warning";default:return"info"}}function re(n){return{budget_exhaustion_soon:"Budget Exhaustion",forecast_variance:"Forecast Variance",missing_forecasts:"Missing Forecasts",spend_spike:"Spend Spike"}[n]??n}function Ne(n){return n.toFixed(2)}async function ye(n,c,l){const o=new URLSearchParams({kind:c,hash:l});return(await S.get(`${C}/evidence/period-closes/${n}/merkle-proof?${o}`)).data}async function Z(n){return(await S.get(`${C}/evidence/period-closes/${n}/publication`)).data}async function ge(n){return(await S.post(`${C}/evidence/period-closes/${n}/publish`)).data}async function _e(n){return(await S.get(`${C}/evidence/period-closes/${n}/publication/verify`)).data}async function ee(n){return(await S.get(`${C}/evidence/period-closes/${n}/transparency`)).data}async function ke(n,c){let l=`${C}/evidence/period-closes/${n}/transparency/publish`;return(await S.post(l)).data}async function Se(n){return(await S.get(`${C}/evidence/period-closes/${n}/transparency/verify`)).data}function Ce(n){return se({queryKey:z.anomaliesList(n??{period:""}),queryFn:()=>{if(!(n!=null&&n.period))throw new Error("Period is required");return je(n)},enabled:!!(n!=null&&n.period),staleTime:3e4,retry:1,placeholderData:ue})}function we(n){return se({queryKey:z.summaryByPeriod(n??""),queryFn:()=>{if(!n)throw new Error("Period is required");return be(n)},enabled:!!n,staleTime:3e4,retry:1})}function Pe(n){var o,h,y,x,t,N,F,H,w,p,E,j,g,v;const c=Ce(n),l=we((n==null?void 0:n.period)??null);return{anomalies:((o=c.data)==null?void 0:o.anomalies)??[],totalCount:((h=c.data)==null?void 0:h.total_count)??0,bySeverity:((y=c.data)==null?void 0:y.by_severity)??{},byType:((x=c.data)==null?void 0:x.by_type)??{},generatedAt:((t=c.data)==null?void 0:t.generated_at)??null,period:((N=c.data)==null?void 0:N.period)??(n==null?void 0:n.period)??"",periodStart:((F=c.data)==null?void 0:F.period_start)??"",periodEnd:((H=c.data)==null?void 0:H.period_end)??"",criticalCount:((p=(w=l.data)==null?void 0:w.by_severity)==null?void 0:p.critical)??0,warningCount:((j=(E=l.data)==null?void 0:E.by_severity)==null?void 0:j.warning)??0,infoCount:((v=(g=l.data)==null?void 0:g.by_severity)==null?void 0:v.info)??0,isLoading:c.isLoading||l.isLoading,isError:c.isError||l.isError,error:c.error??l.error,refetch:async()=>{await Promise.all([c.refetch(),l.refetch()])}}}function ne(n){return n?n.statement_id||n.statement_hash?"statement":n.forecast_id||n.forecast_inputs_hash?"forecast":n.period_close_id||n.ledger_inputs_hash?"period_close":"none":"none"}function te(n){return n?!!(n.statement_hash||n.forecast_inputs_hash||n.ledger_inputs_hash||n.statements_hash):!1}async function ze(n){const l=new TextEncoder().encode(n),o=await crypto.subtle.digest("SHA-256",l);return Array.from(new Uint8Array(o)).map(x=>x.toString(16).padStart(2,"0")).join("")}function _(n,c=16){return n.length<=c?n:`${n.slice(0,c)}...`}async function Re(n){await navigator.clipboard.writeText(n)}async function Fe(n){return ze(n)}function ie(n){const c=new Uint8Array(n.length/2);for(let l=0;l<n.length;l+=2)c[l/2]=parseInt(n.substring(l,l+2),16);return c}async function Ve(n){const c=await crypto.subtle.digest("SHA-256",
1n);return Array.from(new Uint8Array(c)).map(o=>o.toString(16).padStart(2,"0")).join("")}async function ae(n,c){const l=ie(n),o=ie(c),h=new Uint8Array(l.length+o.length);return h.set(l,0),h.set(o,l.length),Ve(h)}async function Ae(n,c,l){let o=await Fe(n);const h=o;for(const t of c)t.position==="left"?o=await ae(t.hash.toLowerCase(),o):o=await ae(o,t.hash.toLowerCase());const y=o;return{verified:y.toLowerCase()===l.toLowerCase(),computedRoot:y,expectedRoot:l.toLowerCase(),leafHash:h,pathLength:c.length}}function He({anomaly:n,isOpen:c,onClose:l}){const[o,h]=f.useState(null),[y,x]=f.useState({status:"not_run"}),[t,N]=f.useState({status:"idle",proof:null}),[F,H]=f.useState(null),[w,p]=f.useState({uiStatus:"idle",data:null,verifyResult:null}),[E,j]=f.useState({uiStatus:"idle",data:null,verifyResult:null}),g=f.useCallback(async(a,i)=>{try{await Re(a),h(i),setTimeout(()=>h(null),2e3)}catch{console.error("Failed to copy to clipboard")}},[]),v=f.useCallback(async a=>{const i=n==null?void 0:n.evidence;if(!(i!=null&&i.period_close_id))return;const s=a==="statement"?i.statement_hash:i.forecast_inputs_hash;if(!s){N({status:"error",proof:null,error:`No ${a} hash available for proof generation.`});return}H(a),N({status:"loading",proof:null});try{const r=await ye(i.period_close_id,a,s);N({status:"loaded",proof:r})}catch(r){N({status:"error",proof:null,error:P(r,"Failed to fetch Merkle proof.")})}},[n]),b=f.useCallback(async()=>{const a=t.proof;if(a){N(i=>({...i,status:"verifying"}));try{const i=await Ae(a.leaf_record,a.siblings,a.root);N(s=>({...s,status:i.verified?"verified":"mismatch",verificationResult:{verified:i.verified,computedRoot:i.computedRoot,expectedRoot:i.expectedRoot,leafHash:i.leafHash}}))}catch(i){N(s=>({...s,status:"error",error:P(i,"Verification failed.")}))}}},[t.proof]),$=f.useCallback(async()=>{const a=n==null?void 0:n.evidence;if(a!=null&&a.period_close_id){p(i=>({...i,uiStatus:"loading",error:void 0}));try{const i=await Z(a.period_close_id);p({uiStatus:"loaded",data:i,verifyResult:null})}catch(i){p({uiStatus:"error",data:null,verifyResult:null,error:P(i,"Failed to load publication status.")})}}},[n]),U=f.useCallback(async()=>{const a=n==null?void 0:n.evidence;if(a!=null&&a.period_close_id){p(i=>({...i,uiStatus:"publishing",error:void 0}));try{const i=await ge(a.period_close_id),s=await Z(a.period_close_id);p({uiStatus:"loaded",data:s,verifyResult:null,error:(i.status==="failed"||i.status==="conflict")&&i.error||void 0})}catch(i){p(s=>({...s,uiStatus:"error",error:P(i,"Publication failed.")}))}}},[n]),B=f.useCallback(async()=>{const a=n==null?void 0:n.evidence;if(a!=null&&a.period_close_id){p(i=>({...i,uiStatus:"verifying"}));try{const i=await _e(a.period_close_id);p(s=>({...s,uiStatus:"loaded",verifyResult:{verified:i.verified,hashVerified:i.hash_verified,merkleVerified:i.merkle_verified,storedHash:i.stored_hash,fetchedHash:i.fetched_hash,error:i.error||void 0,merkleError:i.merkle_error}}))}catch(i){p(s=>({...s,uiStatus:"error",error:P(i,"Verification failed.")}))}}},[n]),V=f.useCallback(async()=>{const a=n==null?void 0:n.evidence;if(a!=null&&a.period_close_id){j(i=>({...i,uiStatus:"loading",error:void 0}));try{const i=await ee(a.period_close_id);j({uiStatus:"loaded",data:i,verifyResult:null})}catch(i){j({uiStatus:"error",data:null,verifyResult:null,error:P(i,"Failed to load transparency status.")})}}},[n]),q=f.useCallback(async()=>{const a=n==null?void 0:n.evidence;if(a!=null&&a.period_close_id){j(i=>({...i,uiStatus:"publishing",error:void 0}));try{const i=await ke(a.period_close_id),s=await ee(a.period_close_id);j({uiStatus:"loaded",data:s,verifyResult:null,error:(i.status==="failed"||i.status==="conflict"||i.status==="precondition_failed")&&i.error||void 0})}catch(i){j(s=>({...s,uiStatus:"error",error:P(i,"Transparency publication failed.")}))}}},[n]),m=f.useCallback(async()=>{const a=n==null?void 0:n.evidence;if(a!=null&&a.period_close_id){j(i=>({...i,uiStatus:"verifying"}));try{const i=await Se(a.period_close_id);j(s=>({...s,uiStatus:"loaded",verifyResult:{verified:i.verified,hashVerified:i.hash_verified,orgCommitmentVerified:i.org_commitment_verified,storedHash:i.stored_hash,fetchedHash:i.fetched_hash,error:i.error||void 0}}))}catch(i){j(s=>({...s,uiStatus:"error",error:P(i,"Transparency verification failed.")}))}}},[n]),O=f.useCallback(async()=>
1{if(!(n!=null&&n.evidence))return;x({status:"verifying"});const a=ne(n.evidence);setTimeout(()=>{x(a==="statement"?{status:"not_verifiable",message:"Statement hash requires canonical payload from server. Hash displayed is authoritative from the chargeback statement record."}:a==="forecast"?{status:"not_verifiable",message:"Forecast inputs hash requires canonical inputs from server. Hash displayed is authoritative from the forecast record."}:a==="period_close"?{status:"not_verifiable",message:"Period close hashes require ledger digest inputs from server. Hashes displayed are authoritative from the close record."}:{status:"not_verifiable",message:"No verifiable evidence available for this anomaly."})},500)},[n]);if(!c)return null;const d=n==null?void 0:n.evidence,G=ne(d),K=te(d),T=(a,i,s)=>{if(!i)return null;const r=o===s;return e.jsxs("div",{className:"admin-finance-evidence-hash-row",children:[e.jsx("span",{className:"admin-finance-evidence-hash-label",children:a}),e.jsxs("div",{className:"admin-finance-evidence-hash-value-container",children:[e.jsx("code",{className:"admin-finance-evidence-hash-value",children:_(i,24)}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(i,s),"aria-label":`Copy ${a}`,title:"Copy full hash",children:r?e.jsx(u,{size:14}):e.jsx(A,{size:14})})]})]})},de=()=>{const{status:a,message:i,computedHash:s}=y;return e.jsxs("div",{className:`admin-finance-evidence-verification admin-finance-evidence-verification--${a}`,children:[e.jsxs("div",{className:"admin-finance-evidence-verification-header",children:[a==="not_run"&&e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16}),e.jsx("span",{children:"Verification not run"})]}),a==="verifying"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Verifying..."})]}),a==="verified"&&e.jsxs(e.Fragment,{children:[e.jsx(u,{size:16}),e.jsx("span",{children:"Verified - hash matches"})]}),a==="mismatch"&&e.jsxs(e.Fragment,{children:[e.jsx(k,{size:16}),e.jsx("span",{children:"Mismatch - evidence differs from hash"})]}),a==="not_verifiable"&&e.jsxs(e.Fragment,{children:[e.jsx(M,{size:16}),e.jsx("span",{children:"Not verifiable client-side"})]})]}),i&&e.jsx("p",{className:"admin-finance-evidence-verification-message",children:i}),s&&a==="mismatch"&&e.jsxs("div",{className:"admin-finance-evidence-verification-detail",children:[e.jsx("span",{children:"Computed: "}),e.jsx("code",{children:_(s,24)}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(s,"computed"),"aria-label":"Copy computed hash",children:e.jsx(A,{size:14})})]})]})},le=()=>{if(!n)return null;const a=n.details,i=[];if(a.exhaustion_date!==void 0&&i.push({label:"Exhaustion Date",value:String(a.exhaustion_date)}),a.days_remaining!==void 0&&i.push({label:"Days Remaining",value:String(a.days_remaining)}),a.burn_rate_cents_per_day!==void 0&&i.push({label:"Burn Rate",value:`${R(Number(a.burn_rate_cents_per_day))}/day`}),a.actual_spend_cents!==void 0&&i.push({label:"Actual Spend",value:R(Number(a.actual_spend_cents))}),a.predicted_spend_cents!==void 0&&i.push({label:"Predicted Spend",value:R(Number(a.predicted_spend_cents))}),a.variance_ratio!==void 0){const s=(Number(a.variance_ratio)*100).toFixed(1);i.push({label:"Variance",value:`${s}%`})}return a.variance_direction!==void 0&&i.push({label:"Direction",value:String(a.variance_direction)}),a.spike_factor!==void 0&&i.push({label:"Spike Factor",value:`${Number(a.spike_factor).toFixed(2)}x`}),a.expected_daily_cents!==void 0&&i.push({label:"Expected Daily",value:R(Number(a.expected_daily_cents))}),a.total_spend_cents!==void 0&&i.push({label:"Total Spend",value:R(Number(a.total_spend_cents))}),a.is_top_spender!==void 0&&i.push({label:"Top Spender",value:a.is_top_spender?"Yes":"No"}),i.length===0?null:e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsx("h4",{className:"admin-finance-evidence-section-title",children:"Anomaly Details"}),e.jsx("div",{className:"admin-finance-evidence-detail-grid",children:i.map(s=>e.jsxs("div",{className:"admin-finance-evidence-detail-item",children:[e.jsx("span",{className:"admin-finance-evidence-detail-label",children:s.label}),e.jsx("span",{className:"admin-finance-evidence-detail-value",children:s.value})]},s.label))})]})},oe=()=>{const a=n==null?void 0:n.evidence;
1if(!(a!=null&&a.period_close_id))return null;const{uiStatus:i,data:s,verifyResult:r,error:I}=w,Q=W=>{switch(W){case"published":return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--published",children:"Published"});case"pending":return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--pending",children:"Pending"});case"failed":return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--failed",children:"Failed"});default:return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--unknown",children:"Unknown"})}};return e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsxs("h4",{className:"admin-finance-evidence-section-title",children:[e.jsx(Y,{size:16}),"External Publication",e.jsx("span",{className:"admin-finance-evidence-section-subtitle",children:"(PR-LEDGER-310)"})]}),e.jsxs("div",{className:"admin-finance-pub-section",children:[i==="idle"&&e.jsx("div",{className:"admin-finance-pub-load",children:e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--outline",onClick:$,children:[e.jsx(Y,{size:16}),"Load Publication Status"]})}),i==="loading"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Loading publication status..."})]}),i==="publishing"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Publishing..."})]}),i==="verifying"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Verifying publication..."})]}),i==="error"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--error",children:[e.jsx(k,{size:16}),e.jsx("span",{children:I}),e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--small admin-finance-btn--outline",onClick:$,children:[e.jsx(L,{size:14}),"Retry"]})]}),i==="loaded"&&s&&e.jsxs("div",{className:"admin-finance-pub-details",children:[e.jsxs("div",{className:"admin-finance-pub-info-grid",children:[e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Status"}),Q(s.status)]}),s.target&&e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Target"}),e.jsx("span",{className:"admin-finance-pub-info-value",children:s.target})]}),s.uri&&e.jsxs("div",{className:"admin-finance-pub-info-item admin-finance-pub-info-item--wide",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"URI"}),e.jsxs("div",{className:"admin-finance-evidence-hash-value-container",children:[e.jsx("code",{className:"admin-finance-pub-uri",children:s.uri}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(s.uri,"pub-uri"),"aria-label":"Copy URI",title:"Copy URI",children:o==="pub-uri"?e.jsx(u,{size:14}):e.jsx(A,{size:14})})]})]}),s.payload_hash&&e.jsxs("div",{className:"admin-finance-pub-info-item admin-finance-pub-info-item--wide",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Payload Hash"}),e.jsxs("div",{className:"admin-finance-evidence-hash-value-container",children:[e.jsx("code",{className:"admin-finance-evidence-hash-value",children:_(s.payload_hash,24)}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(s.payload_hash,"pub-hash"),"aria-label":"Copy payload hash",title:"Copy full hash",children:o==="pub-hash"?e.jsx(u,{size:14}):e.jsx(A,{size:14})})]})]}),s.published_at&&e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Published At"}),e.jsx("span",{className:"admin-finance-pub-info-value",children:new Date(s.published_at).toLocaleStr
1ing()})]}),e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Attempts"}),e.jsx("span",{className:"admin-finance-pub-info-value",children:s.attempts})]}),s.error&&e.jsxs("div",{className:"admin-finance-pub-info-item admin-finance-pub-info-item--wide",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Error"}),e.jsx("span",{className:"admin-finance-pub-info-error",children:s.error})]})]}),r&&e.jsx("div",{className:`admin-finance-pub-verify-result admin-finance-pub-verify-result--${r.verified?"verified":"failed"}`,children:r.verified?e.jsxs(e.Fragment,{children:[e.jsx(u,{size:16}),e.jsxs("div",{className:"admin-finance-pub-verify-content",children:[e.jsx("span",{className:"admin-finance-pub-verify-title",children:"Publication Verified"}),e.jsx("p",{className:"admin-finance-pub-verify-message",children:"Two-level verification passed:"}),e.jsxs("div",{className:"admin-finance-pub-verify-checks",children:[e.jsxs("div",{className:"admin-finance-pub-verify-check admin-finance-pub-verify-check--pass",children:[e.jsx(u,{size:12}),e.jsx("span",{children:"Payload hash matches"})]}),e.jsxs("div",{className:"admin-finance-pub-verify-check admin-finance-pub-verify-check--pass",children:[e.jsx(u,{size:12}),e.jsx("span",{children:"Merkle root matches DB"})]})]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(k,{size:16}),e.jsxs("div",{className:"admin-finance-pub-verify-content",children:[e.jsx("span",{className:"admin-finance-pub-verify-title",children:"Verification Failed"}),e.jsx("p",{className:"admin-finance-pub-verify-message",children:r.error||"Verification checks did not pass."}),e.jsxs("div",{className:"admin-finance-pub-verify-checks",children:[e.jsxs("div",{className:`admin-finance-pub-verify-check admin-finance-pub-verify-check--${r.hashVerified?"pass":"fail"}`,children:[r.hashVerified?e.jsx(u,{size:12}):e.jsx(k,{size:12}),e.jsxs("span",{children:["Payload hash ",r.hashVerified?"matches":"MISMATCH"]})]}),e.jsxs("div",{className:`admin-finance-pub-verify-check admin-finance-pub-verify-check--${r.merkleVerified?"pass":"fail"}`,children:[r.merkleVerified?e.jsx(u,{size:12}):e.jsx(k,{size:12}),e.jsxs("span",{children:["Merkle root ",r.merkleVerified?"matches":"MISMATCH"]})]})]}),r.storedHash&&r.fetchedHash&&!r.hashVerified&&e.jsxs("div",{className:"admin-finance-pub-verify-hashes",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Stored: "}),e.jsx("code",{children:_(r.storedHash,16)})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Fetched: "}),e.jsx("code",{children:_(r.fetchedHash,16)})]})]}),r.merkleError&&e.jsx("p",{className:"admin-finance-pub-verify-merkle-error",children:r.merkleError})]})]})}),e.jsxs("div",{className:"admin-finance-pub-actions",children:[s.status==="published"&&e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--primary",onClick:B,disabled:i==="verifying",children:[e.jsx(D,{size:16}),"Verify Published Root"]}),(s.status==="pending"||s.status==="failed")&&e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--secondary",onClick:U,disabled:i==="publishing",children:[e.jsx(L,{size:16}),"Retry Publication"]}),e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--outline admin-finance-btn--small",onClick:$,children:[e.jsx(L,{size:14}),"Refresh"]})]})]})]})]})},me=()=>{const a=n==null?void 0:n.evidence;if(!(a!=null&&a.period_close_id))return null;const{uiStatus:i,data:s,verifyResult:r,error:I}=E,Q=X=>{switch(X){case"published":return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--published",children:"Published"});case"pending":return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--pending",children:"Pending"});case"failed":return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--failed",children:"Failed"});default:return e.jsx("span",{className:"admin-finance-pub-badge admin-finance-pub-badge--unknown",children:"Unknown"})}},W=X=>{switch(X){case"public":return e.jsx("span",{className:"admin-finance-transparency-mode admin-finance-transparency-mode--public",children:"Public"});case"private":default:return e.jsx("span",{className:"admin-finance-transparency-mode admin-finance-transparency-mode--private",children:"Private"})}};return e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsxs("h4",{className:"admin-finance-evidence-section-title",children:[e.jsx(J,{size:16}),"Transparency Log",e.jsx("span",{className:"admin-finance-evidence-section-subtitle",children:"(PR-LEDGER-320)"})]}),e.jsxs("div",{className:"admin-finance-pub-section",children:[i==="idle"&&e.jsx("div",{className:"admin-finance-pub-load",children:e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--outline",onClick:V,children:[e.jsx(J,{size:16}),"Load Transparency Status"]})}),i==="loading"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Loading transparency status..."})]}),i==="publishing"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Publishing to transparency log..."})]}),i==="verifying"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}
1),e.jsx("span",{children:"Verifying transparency record..."})]}),i==="error"&&e.jsxs("div",{className:"admin-finance-pub-status admin-finance-pub-status--error",children:[e.jsx(k,{size:16}),e.jsx("span",{children:I}),e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--small admin-finance-btn--outline",onClick:V,children:[e.jsx(L,{size:14}),"Retry"]})]}),i==="loaded"&&s&&e.jsxs("div",{className:"admin-finance-pub-details",children:[e.jsxs("div",{className:"admin-finance-pub-info-grid",children:[e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Status"}),Q(s.transparency_status)]}),e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Mode"}),W(s.transparency_mode)]}),s.transparency_uri&&e.jsxs("div",{className:"admin-finance-pub-info-item admin-finance-pub-info-item--wide",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"URI"}),e.jsxs("div",{className:"admin-finance-evidence-hash-value-container",children:[e.jsx("code",{className:"admin-finance-pub-uri",children:s.transparency_uri}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(s.transparency_uri,"trans-uri"),"aria-label":"Copy URI",title:"Copy URI",children:o==="trans-uri"?e.jsx(u,{size:14}):e.jsx(A,{size:14})})]})]}),s.transparency_record_hash&&e.jsxs("div",{className:"admin-finance-pub-info-item admin-finance-pub-info-item--wide",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Record Hash"}),e.jsxs("div",{className:"admin-finance-evidence-hash-value-container",children:[e.jsx("code",{className:"admin-finance-evidence-hash-value",children:_(s.transparency_record_hash,24)}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(s.transparency_record_hash,"trans-hash"),"aria-label":"Copy record hash",title:"Copy full hash",children:o==="trans-hash"?e.jsx(u,{size:14}):e.jsx(A,{size:14})})]})]}),s.transparency_published_at&&e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Published At"}),e.jsx("span",{className:"admin-finance-pub-info-value",children:new Date(s.transparency_published_at).toLocaleString()})]}),e.jsxs("div",{className:"admin-finance-pub-info-item",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Attempts"}),e.jsx("span",{className:"admin-finance-pub-info-value",children:s.transparency_attempts})]}),s.transparency_error&&e.jsxs("div",{className:"admin-finance-pub-info-item admin-finance-pub-info-item--wide",children:[e.jsx("span",{className:"admin-finance-pub-info-label",children:"Error"}),e.jsx("span",{className:"admin-finance-pub-info-error",children:s.transparency_error})]})]}),r&&e.jsx("div",{className:`admin-finance-pub-verify-result admin-finance-pub-verify-result--${r.verified?"verified":"failed"}`,children:r.verified?e.jsxs(e.Fragment,{children:[e.jsx(u,{size:16}),e.jsxs("div",{className:"admin-finance-pub-verify-content",children:[e.jsx("span",{className:"admin-finance-pub-verify-title",children:"Transparency Verified"}),e.jsx("p",{className:"admin-finance-pub-verify-message",children:"Two-level verification passed:"}),e.jsxs("div",{className:"admin-finance-pub-verify-checks",children:[e.jsxs("div",{className:"admin-finance-pub-verify-check admin-finance-pub-verify-check--pass",children:[e.jsx(u,{size:12}),e.jsx("span",{children:"Record hash matches"})]}),e.jsxs("div",{className:"admin-finance-pub-verify-check admin-finance-pub-verify-check--pass",children:[e.jsx(u,{size:12}),e.jsx("span",{children:"Org commitment verified"})]})]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(k,{size:16}),e.jsxs("div",{className:"admin-finance-pub-verify-content",children:[e.jsx("span",{className:"admin-finance-pub-verify-title",children:"Verification Failed"}),e.jsx("p",{className:"admin-finance-pub-verify-message",children:r.error||"Verification checks did not pass."}),e.jsxs("div",{className:"admin-finance-pub-verify-checks",children:[e.jsxs("div",{className:`admin-finance-pub-verify-check admin-finance-pub-verify-check--${r.hashVerified?"pass":"fail"}`,children:[r.hashVerified?e.jsx(u,{size:12}):e.jsx(k,{size:12}),e.jsxs("span",{children:["Record hash ",r.hashVerified?"matches":"MISMATCH"]})]}),e.jsxs("div",{className:`admin-finance-pub-verify-check admin-finance-pub-verify-check--${r.orgCommitmentVerified?"pass":"fail"}`,children:[r.orgCommitmentVerified?e.jsx(u,{size:12}):e.jsx(k,{size:12}),e.jsxs("span",{children:["Org commitment ",r.orgCommitmentVerified?"verified":"FAILED"]})]})]}),r.storedHash&&r.fetchedHash&&!r.hashVerified&&e.jsxs("div",{className:"admin-finance-pub-verify-hashes",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Stored: "}),e.jsx("code",{children:_(r.storedHash,16)})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Fetched: "}),e.jsx("code",{children:_(r.fetchedHash,16)})]})]})]})]})}),e.jsxs("div",{className:"admin-finance-pub-actions",children:[s.transparency_status==="published"&&e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--primary",onClick:m,disabled:i==="verifying",children:[e.jsx(D,{size:16}),"Verify Transparency Record"]}),(s.transparency_status==="pending"||s.transparency_status==="failed")&&e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--secondary",onClick:q,disabled:i==="publishing",children:[e.jsx(L,{size:16}),"Publish Transparency"]}),e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--outline admin-finance-btn--small",onClick:V,children:[e.jsx(L,{size:14}),"Refresh"]})]})]})]})]})},fe=()=>{const a=n==null?void 0:n.evidence;
1if(!(a!=null&&a.period_close_id))return null;const i=!!a.statement_hash,s=!!a.forecast_inputs_hash;return!i&&!s?null:e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsxs("h4",{className:"admin-finance-evidence-section-title",children:[e.jsx(pe,{size:16}),"Merkle Verification",e.jsx("span",{className:"admin-finance-evidence-section-subtitle",children:"(PR-LEDGER-300)"})]}),e.jsxs("div",{className:"admin-finance-merkle-section",children:[e.jsxs("div",{className:"admin-finance-merkle-actions",children:[e.jsx("span",{className:"admin-finance-merkle-label",children:"Get inclusion proof:"}),e.jsxs("div",{className:"admin-finance-merkle-btn-group",children:[i&&e.jsx("button",{type:"button",className:`admin-finance-btn admin-finance-btn--small ${F==="statement"?"admin-finance-btn--active":"admin-finance-btn--outline"}`,onClick:()=>v("statement"),disabled:t.status==="loading"||t.status==="verifying",children:"Statement"}),s&&e.jsx("button",{type:"button",className:`admin-finance-btn admin-finance-btn--small ${F==="forecast"?"admin-finance-btn--active":"admin-finance-btn--outline"}`,onClick:()=>v("forecast"),disabled:t.status==="loading"||t.status==="verifying",children:"Forecast"})]})]}),t.status==="loading"&&e.jsxs("div",{className:"admin-finance-merkle-status admin-finance-merkle-status--loading",children:[e.jsx("div",{className:"admin-finance-evidence-spinner"}),e.jsx("span",{children:"Fetching Merkle proof..."})]}),t.status==="error"&&e.jsxs("div",{className:"admin-finance-merkle-status admin-finance-merkle-status--error",children:[e.jsx(k,{size:16}),e.jsx("span",{children:t.error})]}),t.proof&&(t.status==="loaded"||t.status==="verifying"||t.status==="verified"||t.status==="mismatch")&&e.jsxs("div",{className:"admin-finance-merkle-proof",children:[e.jsxs("div",{className:"admin-finance-merkle-info-grid",children:[e.jsxs("div",{className:"admin-finance-merkle-info-item",children:[e.jsx("span",{className:"admin-finance-merkle-info-label",children:"Merkle Root"}),e.jsxs("div",{className:"admin-finance-evidence-hash-value-container",children:[e.jsx("code",{className:"admin-finance-evidence-hash-value",children:_(t.proof.root,24)}),e.jsx("button",{type:"button",className:"admin-finance-evidence-copy-btn",onClick:()=>g(t.proof.root,"merkle-root"),"aria-label":"Copy Merkle root",title:"Copy full hash",children:o==="merkle-root"?e.jsx(u,{size:14}):e.jsx(A,{size:14})})]})]}),e.jsxs("div",{className:"admin-finance-merkle-info-item",children:[e.jsx("span",{className:"admin-finance-merkle-info-label",children:"Leaf Count"}),e.jsx("span",{className:"admin-finance-merkle-info-value",children:t.proof.leaf_count})]}),e.jsxs("div",{className:"admin-finance-merkle-info-item",children:[e.jsx("span",{className:"admin-finance-merkle-info-label",children:"Version"}),e.jsx("span",{className:"admin-finance-merkle-info-value",children:t.proof.merkle_version})]}),e.jsxs("div",{className:"admin-finance-merkle-info-item",children:[e.jsx("span",{className:"admin-finance-merkle-info-label",children:"Leaf Index"}),e.jsx("span",{className:"admin-finance-merkle-info-value",children:t.proof.leaf_index})]})]}),e.jsxs("div",{className:"admin-finance-merkle-leaf",children:[e.jsx("span",{className:"admin-finance-merkle-info-label",children:"Leaf Record"}),e.jsx("code",{className:"admin-finance-merkle-leaf-value",children:t.proof.leaf_record})]}),e.jsxs("div",{className:"admin-finance-merkle-path",children:[e.jsxs("span",{className:"admin-finance-merkle-info-label",children:["Proof Path (",t.proof.siblings.length," siblings)"]}),t.proof.siblings.length>0?e.jsx("div",{className:"admin-finance-merkle-siblings",children:t.proof.siblings.map((r,I)=>e.jsxs("div",{className:"admin-finance-merkle-sibling",children:[e.jsx("span",{className:"admin-finance-merkle-sibling-pos",children:r.position}),e.jsx("code",{className:"admin-finance-merkle-sibling-hash",children:_(r.hash,16)})]},I))}):e.jsx("span",{className:"admin-finance-merkle-info-value",children:"Single leaf tree"})]}),e.jsx("div",{className:"admin-finance-merkle-verify-action",children:e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--primary",onClick:b,disabled:t.status==="verifying",children:[e.jsx(D,{size:16}
1),t.status==="verifying"?"Verifying...":"Verify Proof Locally"]})}),t.status==="verified"&&t.verificationResult&&e.jsxs("div",{className:"admin-finance-merkle-result admin-finance-merkle-result--verified",children:[e.jsx(u,{size:16}),e.jsxs("div",{className:"admin-finance-merkle-result-content",children:[e.jsx("span",{className:"admin-finance-merkle-result-title",children:"Proof Verified"}),e.jsx("p",{className:"admin-finance-merkle-result-message",children:"The leaf is cryptographically included in the Merkle tree. Computed root matches expected root."})]})]}),t.status==="mismatch"&&t.verificationResult&&e.jsxs("div",{className:"admin-finance-merkle-result admin-finance-merkle-result--mismatch",children:[e.jsx(k,{size:16}),e.jsxs("div",{className:"admin-finance-merkle-result-content",children:[e.jsx("span",{className:"admin-finance-merkle-result-title",children:"Verification Failed"}),e.jsx("p",{className:"admin-finance-merkle-result-message",children:"Computed root does not match expected root. This may indicate data tampering."}),e.jsxs("div",{className:"admin-finance-merkle-result-hashes",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Expected: "}),e.jsx("code",{children:_(t.verificationResult.expectedRoot,16)})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Computed: "}),e.jsx("code",{children:_(t.verificationResult.computedRoot,16)})]})]})]})]})]})]})]})};return e.jsx("div",{className:"admin-finance-evidence-drawer-overlay",onClick:l,role:"dialog","aria-modal":"true","aria-labelledby":"evidence-drawer-title",children:e.jsxs("div",{className:"admin-finance-evidence-drawer",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{className:"admin-finance-evidence-drawer-header",children:[e.jsxs("div",{className:"admin-finance-evidence-drawer-title-section",children:[e.jsx("h2",{id:"evidence-drawer-title",className:"admin-finance-evidence-drawer-title",children:"Evidence Details"}),n&&e.jsxs("div",{className:"admin-finance-evidence-drawer-meta",children:[e.jsx("span",{className:`admin-finance-anomaly-badge admin-finance-anomaly-badge--${ce(n.severity)}`,children:n.severity}),e.jsx("span",{className:"admin-finance-evidence-type-badge",children:re(n.anomaly_type)})]})]}),e.jsx("button",{type:"button",className:"admin-finance-evidence-drawer-close",onClick:l,"aria-label":"Close drawer",children:e.jsx(he,{size:20})})]}),e.jsx("div",{className:"admin-finance-evidence-drawer-content",children:n?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsx("h4",{className:"admin-finance-evidence-section-title",children:"Anomaly Information"}),e.jsxs("div",{className:"admin-finance-evidence-info",children:[e.jsx("p",{className:"admin-finance-evidence-description",children:n.description}),e.jsxs("div",{className:"admin-finance-evidence-meta-grid",children:[e.jsxs("div",{className:"admin-finance-evidence-meta-item",children:[e.jsx("span",{className:"admin-finance-evidence-meta-label",children:"Organization"}),e.jsxs("span",{className:"admin-finance-evidence-meta-value",children:[n.org_name,e.jsx("code",{className:"admin-finance-evidence-meta-slug",children:n.org_slug})]})]}),n.unit_name&&e.jsxs("div",{className:"admin-finance-evidence-meta-item",children:[e.jsx("span",{className:"admin-finance-evidence-meta-label",children:"Unit"}),e.jsx("span",{className:"admin-finance-evidence-meta-value",children:n.unit_name})]}),e.jsxs("div",{className:"admin-finance-evidence-meta-item",children:[e.jsx("span",{className:"admin-finance-evidence-meta-label",children:"Period"}),e.jsx("span",{className:"admin-finance-evidence-meta-value",children:n.period})]}),e.jsxs("div",{className:"admin-finance-evidence-meta-item",children:[e.jsx("span",{className:"admin-finance-evidence-meta-label",children:"Score"}),e.jsx("span",{className:"admin-finance-evidence-meta-value",children:n.score.toFixed(2)})]})]})]})]}),le(),K&&e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsxs("h4",{className:"admin-finance-evidence-section-title",children:["Evidence Hashes",e.jsxs("span",{className:"admin-finance-evidence-section-subtitle",children:[G==="statement"&&"(Chargeback Statement)",G==="forecast"&&"(Spend Forec
1ast)",G==="period_close"&&"(Period Close)"]})]}),e.jsxs("div",{className:"admin-finance-evidence-hashes",children:[T("Statement Hash",d==null?void 0:d.statement_hash,"statement"),T("Forecast Inputs Hash",d==null?void 0:d.forecast_inputs_hash,"forecast"),T("Ledger Inputs Hash",d==null?void 0:d.ledger_inputs_hash,"ledger"),T("Statements Hash",d==null?void 0:d.statements_hash,"statements"),T("Exports Hash",d==null?void 0:d.exports_hash,"exports")]}),e.jsx("div",{className:"admin-finance-evidence-verification-section",children:de()})]}),!K&&e.jsx("div",{className:"admin-finance-evidence-section",children:e.jsxs("div",{className:"admin-finance-evidence-empty",children:[e.jsx(M,{size:24}),e.jsx("p",{children:"No verifiable evidence available for this anomaly."})]})}),((d==null?void 0:d.statement_id)||(d==null?void 0:d.forecast_id)||(d==null?void 0:d.period_close_id))&&e.jsxs("div",{className:"admin-finance-evidence-section",children:[e.jsx("h4",{className:"admin-finance-evidence-section-title",children:"Evidence IDs"}),e.jsxs("div",{className:"admin-finance-evidence-ids",children:[(d==null?void 0:d.statement_id)&&e.jsxs("div",{className:"admin-finance-evidence-id-row",children:[e.jsx("span",{className:"admin-finance-evidence-id-label",children:"Statement ID"}),e.jsx("code",{className:"admin-finance-evidence-id-value",children:d.statement_id})]}),(d==null?void 0:d.forecast_id)&&e.jsxs("div",{className:"admin-finance-evidence-id-row",children:[e.jsx("span",{className:"admin-finance-evidence-id-label",children:"Forecast ID"}),e.jsx("code",{className:"admin-finance-evidence-id-value",children:d.forecast_id})]}),(d==null?void 0:d.period_close_id)&&e.jsxs("div",{className:"admin-finance-evidence-id-row",children:[e.jsx("span",{className:"admin-finance-evidence-id-label",children:"Period Close ID"}),e.jsx("code",{className:"admin-finance-evidence-id-value",children:d.period_close_id})]})]})]}),fe(),oe(),me()]}):e.jsxs("div",{className:"admin-finance-evidence-error",children:[e.jsx(M,{size:20}),e.jsx("p",{children:"No anomaly selected"})]})}),K&&e.jsx("div",{className:"admin-finance-evidence-drawer-footer",children:e.jsxs("button",{type:"button",className:"admin-finance-btn admin-finance-btn--secondary",onClick:O,disabled:y.status==="verifying",children:[e.jsx(D,{size:16}),y.status==="verifying"?"Verifying...":"Verify"]})})]})})}function Te(){const{period:n}=ve(),[c,l]=f.useState(""),[o,h]=f.useState(""),[y,x]=f.useState(null),[t,N]=f.useState(!1),F=f.useCallback(m=>{x(m),N(!0)},[]),H=f.useCallback(()=>{N(!1),setTimeout(()=>x(null),300)},[]),{anomalies:w,totalCount:p,criticalCount:E,warningCount:j,infoCount:g,bySeverity:v,byType:b,generatedAt:$,isLoading:U,isError:B,error:V,refetch:q}=Pe({period:n,severity:c||void 0,anomaly_type:o||void 0,limit:100});return U?e.jsx("div",{className:"admin-finance-loading",children:"Loading anomalies..."}):B?e.jsxs("div",{className:"admin-finance-error",children:[e.jsx("p",{children:"Failed to load anomalies."}),e.jsx("p",{children:V==null?void 0:V.message}),e.jsx("button",{className:"admin-finance-btn admin-finance-btn--secondary",onClick:()=>q(),children:"Retry"})]}):e.jsxs("div",{className:"admin-finance-anomalies",children:[e.jsxs("div",{className:"admin-finance-summary-grid",children:[e.jsxs("div",{className:"admin-finance-card",children:[e.jsx("div",{className:"admin-finance-card-header",children:e.jsx("span",{className:"admin-finance-card-label",children:"Total Anomalies"})}),e.jsx("div",{className:"admin-finance-card-value",children:p}),e.jsx("div",{className:"admin-finance-card-subtitle",children:"detected for this period"})]}),e.jsxs("div",{className:"admin-finance-card admin-finance-card--critical",children:[e.jsxs("div",{className:"admin-finance-card-header",children:[e.jsx("span",{className:"admin-finance-card-label",children:"Critical"}),e.jsx("span",{className:"admin-finance-anomaly-severity admin-finance-anomaly-severity--critical",children:"Requires attention"})]}),e.jsx("div",{className:"admin-finance-card-value",children:E}),e.jsx("div",{className:"admin-finance-card-subtitle",children:"high priority issues"})]}),e.jsxs("div",{className:"admin-finance-card",children:[e.jsxs("div",{className:"admin-finance-card-header",children:[e.jsx("span",{className:"admin-finance-card-label",children:"Warning"}),e.jsx("span",{className:"admin-finance-anomaly-severity admin-finance-anomaly-severity--warning",children:"Monitor closely"})]}),e.jsx("div",{className:"admin-finance-card-value",children:j}),e.jsx("div",{className:"admin-finance-card-subtitle",children:"potential concerns"})]}),e.jsxs("div",{className:"admin-finance-card",children:[e.jsxs("div",{className:"admin-finance-card-header",children:[e.jsx("span",{className:"admin-finance-card-label",children:"Info"}),e.jsx("span",{className:"admin-finance-anomaly-severity admin-finance-anomaly-severity--info",children:"Informational"})]}),e.jsx("div",{className:"admin-finance-card-value",children:g}),e.jsx("div",{className:"admin-finance-card-subtitle",children:"minor observations"})]})]}),e.jsxs("div",{className:"admin-finance-anomalies-filters",children:[e.jsxs("div",{className:"admin-finance-filter-group",children:[e.jsx("label",{htmlFor:"severity-filter",className:"admin-finance-label",children:"Severity"}),e.jsxs("select",{id:"severity-filter",className:"admin-finance-select",value:c,onChange:m=>l(m.target.value),children:[e.jsxs("option",{value:"",children:["All (",p,")"]}),e.jsxs("option",{value:"critical",children:["Critical (",(v==null?void 0:v.critical)??0,")"]}),e.jsxs("option",{value:"warning",children:["Warning (",(v==null?void 0:v.warning)??0,")"]}),e.jsxs("option",{value:"info",children:["Info (",(v==null?void 0:v.info)??0,")"]})]})]}),e.jsxs("div",{className:"admin-finance-filter-group",children:[e.jsx("label",{htmlFor:"type-filter",className:"admin-finance-label",children:"Type"}),e.jsxs("select",{id:"type-filter",className:"admin-finance-select",value:o,onChange:m=>h(m.target.value),children:[e.jsx("option",{value:"",children:"All Types"}),e.jsxs("option",{value:"budget_exhaustion_soon",children:["Budget Exhaustion (",(b==null?void 0:b.budget_exhaustion_soon)??0,")"]}),e.jsxs("option",{value:"forecast_variance",children:["Forecast Variance (",(b==null?void 0:b.forecast_variance)??0,")"]}),e.jsxs("option",{value:"missing_forecasts",children:["Missing Forecasts (",(b==null?void 0:b.missing_forecasts)??0,")"]}),e.jsxs("option",{value:"spend_spike",children:["Spend Spike (",(b==null?void 0:b.spend_spike)??0,")"]})]})]}),$&&e.jsxs("div",{className:"admin-finance-anomalies-generated",children:["Generated: ",new Date($).toLocaleTimeString()]})]}),e.jsxs("section",{className:"admin-finance-section",children:[e.jsxs("h2",{className:"admin-finance-section-title",children:["Detected Anomalies",(c||o)&&e.jsxs("span",{className:"admin-finance-section-subtitle",children:[" ","(filtered: ",w.length," shown)"]})]}),w.length===0?e.jsxs("p",{className:"admin-finance-empty",children:["No anomalies detected for this period",c||o?" with the selected filters":"","."]}):e.jsx("div",{className:"admin-finance-table--full",children:e.jsxs("table",{className:"admin-finance-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Severity"}),e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Organization"}),e.jsx("th",{children:"Unit"}),e.jsx("th",{children:"Description"}),e.jsx("th",{className:"admin-finance-table-right",children:"Score"}),e.jsx("th",{className:"admin-finance-table-center",children:"Evidence"})]})}),e.jsx("tbody",{children:w.map((m,O)=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("span",{className:`admin-finance-anomaly-badge admin-finance-anomaly-badge--${ce(m.severity)}`,children:m.severity})}),e.jsx("td",{children:e.jsx("span",{className:"admin-finance-anomaly-type",children:re(m.anomaly_type)})}),e.jsx("td",{children:e.jsxs(xe,{to:`/app/admin/finance/orgs/${m.org_id}?period=${n}`,className:"admin-finance-link",children:[e.jsx("div",{className:"admin-finance-org-name",children:m.org_name}),e.jsx("div",{className:"admin-finance-org-slug",children:m.org_slug})]})}),e.jsx("td",{children:m.unit_name?e.jsx("div",{className:"admin-finance-unit-name",children:m.unit_name}):e.jsx("span",{className:"admin-finance-empty-cell",children:"â"})}),e.jsxs("td",{children:[e.jsx("div",{className:"admin-finance-anomaly-description",children:m.description}),e.jsx(Ee,{details:m.details})]}),e.jsx("td",{className:"admin-finance-table-right",children:e.jsx("span",{className:"admin-finance-anomaly-score",children:Ne(m.score)})}),e.jsx("td",{className:"admin-finance-table-center",children:te(m.evidence)?e.jsx("button",{type:"button",className:"admin-finance-evidence-btn",onClick:()=>F(m),"aria-label":"View evidence",title:"View evidence details",children:e.jsx(D,{size:16})}):e.jsx("span",{className:"admin-finance-empty-cell",children:"â"})})]},`${m.org_id}-${m.unit_id??"org"}-${m.anomaly_type}-${O}`))})]})})]}),e.jsx(He,{anomaly:y,isOpen:t,onClose:H})]})}function Ee({details:n}){const c=[];if(n.days_until_exhaustion!==void 0&&c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:[n.days_until_exhaustion," days remaining"]},"days")),n.exhaustion_date!==void 0&&c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:["Exhausts: ",String(n.exhaustion_date)]},"date")),n.variance_pct!==void 0){const l=(Number(n.variance_pct)*100).toFixed(1);c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:["Variance: ",l,"%"]},"variance"))}return n.actual_spend_cents!==void 0&&c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:["Actual: ",R(Number(n.actual_spend_cents))]},"actual")),n.predicted_spend_cents!==void 0&&c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:["Predicted: ",R(Number(n.predicted_spend_cents))]},"predicted")),n.spike_factor!==void 0&&c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:[Number(n.spike_factor).toFixed(2),"x burn rate"]},"spike")),n.is_top_spender!==void 0&&c.push(e.jsx("span",{className:"admin-finance-anomaly-detail",children:n.is_top_spender?"Top spender":"Other"},"top")),n.spend_cents!==void 0&&c.push(e.jsxs("span",{className:"admin-finance-anomaly-detail",children:["Spend: ",R(Number(n.spend_cents))]},"spend")),c.length===0?null:e.jsx("div",{className:"admin-finance-anomaly-details",children:c})}export{Te as AdminFinanceAnomaliesPage,Te 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.