PageSourceSearch

https://radreport.com.br/assets/SonioxQualityPanel-Dj-IgJfh.js

js radreport.com.br collected 2026-10-02 01:22:51 UTC 36,021 bytes, 2 lines download raw bytes

1import{a as ve,u as R,j as e}from"./vendor-query-CmFN4-M1.js";import{r as v}from"./vendor-react-7PyNDetJ.js";import{aK as Se,p as D,av as l,aG as g,at as T,aD as m,aF as u,aE as p,ab as S,c as j,b as I}from"./index-BZSaBQD0.js";import{T as $,a as Z,b as B,c,d as ee,e as d}from"./table-BEgIk-tI.js";import{bT as Ie,cu as Ae,K as Ce,cv as ae,D as _e,i as q,L as oe,I as ye,as as Ne,S as Re,ca as De}from"./vendor-ui-DjI1iuvA.js";import{R as se,X as re,Y as ie,T as te,B as Te}from"./generateCategoricalChart-Cp79aJOz.js";import{L as Be}from"./LineChart-BEBrhiDW.js";import{C as ne}from"./CartesianGrid-D-Mr0aH-.js";import{L as le}from"./Line-CnJdWB8Q.js";import{B as Le}from"./BarChart-255Gl0yV.js";import"./vendor-supabase-BfoV2C50.js";const ke=["BI-RADS","TI-RADS","PI-RADS","LI-RADS","O-RADS","Lung-RADS","C-RADS","NI-RADS","PSMA-RADS","CAD-RADS","GI-RADS","Bosniak","Bosniak I","Bosniak II","Bosniak IIF","Bosniak III","Bosniak IV","Modic","Modic I","Modic II","Modic III","Graf","Rezende","Bismuth-Corlette","Salter-Harris","Fleischner","RECIST","Gustilo","Schatzker","Garden","Weber","Tile","TNM","Fazekas","ASPECTS","Outerbridge","Pfirrmann","Kellgren-Lawrence","Gleason","Bethesda","Fuhrman","Risser","Lenke","Crowe","Todani","FIGO","Gilula","Ki-67","Kienböck","Bankart","Hill-Sachs","De Quervain","Pellegrini-Stieda","Osgood-Schlatter","Virchow-Robin","Klatskin","Zuckerkandl","Luschka","Rosenmüller","Morton","Haglund","Segond","Schmorl","Chiari","Dandy-Walker","Baker","Terry Thomas","Erlenmeyer","Wagstaffe","Moreau-Costa-Bartani","Sinding-Larsen","Sinding-Larsen-Johansson","Mönckeberg","Jaccoud","Madelung","Dupuytren","Ledderhose","Moyamoya","Peyronie","Scheuermann","Blount","Perthes","Codman","Stener","Meckel","Zenker","Bochdalek","Morgagni","Rathke","Blake","Onodi","Haller","Naboth","Bartholin","Wirsung","Prussak","Gerota","Denonvilliers","Tarlov","Treitz","Valsalva","Retzius","Douglas","Waldeyer","Killian","Sjögren","Budd-Chiari","Mirizzi","Caroli","Wernicke","Broca","Sylvius","Heschl","Willis","Monro","Magendie","Hoffa","Kager","Panner","Freiberg","Köhler","Sever","Baastrup","Bennett","Rolando","Hutchinson","Jefferson","Tillaux","Rokitansky","Aschoff","Hampton","Westermark","Kerley","Looser","Milkman","Brodie","Garré","Ollier","Maffucci","Hounsfield","Colles","Galeazzi","Monteggia","Maisonneuve","Lisfranc","Chopart","Barton","Smith","Courvoisier","Charcot","Fahr","Paget","Crohn","Hodgkin","Parkinson","Alzheimer","Doppler","íleo terminal","válvula ileocecal","recesso hepatorrenal","fossa de Rosenmüller","ângulo pontocerebelar","Bosniak 1","Bosniak 2","Bosniak 2F","Bosniak 3","Bosniak 4","Lung-RADS 1","Lung-RADS 2","Lung-RADS 3","Lung-RADS 4A","Lung-RADS 4B","Lung-RADS 4X","Modic 1","Modic 2","Modic 3","Modic tipo I","Modic tipo II","Modic tipo III","Outerbridge grau I","Outerbridge grau II","Outerbridge grau III","Outerbridge grau IV","LI-RADS 1","LI-RADS 2","LI-RADS 3","LI-RADS 4","LI-RADS 5","LI-RADS M","LI-RADS TIV","O-RADS 1","O-RADS 2","O-RADS 3","O-RADS 4","O-RADS 5","PI-RADS 1","PI-RADS 2","PI-RADS 3","PI-RADS 4","PI-RADS 5","PI-RADS v2.1","TI-RADS 1","TI-RADS 2","TI-RADS 3","TI-RADS 4","TI-RADS 5","BI-RADS 0","BI-RADS 1","BI-RADS 2","BI-RADS 3","BI-RADS 4","BI-RADS 5","BI-RADS 6","BI-RADS 4A","BI-RADS 4B","BI-RADS 4C"],Me=["UH","HU","unidades Hounsfield","mmHg","cm³","mm³","mL/min","mEq/L","mg/dL","ng/mL","bpm","Hz","kHz","MHz","TC","RM","US","USG","RX","PET","SPECT","PET-CT","PET-TC","ARM","VRM","TACE","CPRE","DCE","GRE","T1","T2","T1W","T2W","TVP","TEP","TEV","AVC","AVE","AVCi","AVCh","AIT","DAC","IAM","ICC","DPOC","SDRA","SARA","ELA","MAV","HIV","DIP","IRC","IRA","HAS","DM2","HDA","HDB","HNF","CHC","HCC","SNC","SNP","LCR","LCA","LCP","LCL","LCM","MID","MIE","MSD","MSE","QSE","QSI","QIE","QII","TGI","TGU","PSA","CEA","AFP","PAAF","BAG","DIU","SIU","PICC","CVC","TFG","IMC","PFT","ACR","INCA","CBR","SBR","SPR","RSNA","ESUR","AIUM"],we=["FLAIR","STIR","DWI","ADC","SWI","MRCP","MRA","MRV","TOF","FIESTA","TrueFISP","PROPELLER","BLADE","Dixon","VIBE","HASTE","SPACE","CISS","EPI","washout","wash-in","ground-glass","crazy paving","honeycombing","tree-in-bud","flow void","blooming","stent","shunt","bypass","mesh","screening","follow-up","check-up","score","scout","staging","grading","SLAP","air-trapping","shading","slit sign","in situ","in vivo","in vitro","per continuitatem","locus","hallux","cavum","gadolínio"],Pe=["algarismos romanos"],Ee=["angiorressonância","angiotomografia","calcinose estriopaliodentato","colangiorressonância","colesteatomatosa","doença de Fahr","enterorressonância","estriopaliodentato","hipercaptação","hiperdensa","hiperdensidade","hiperdenso","hipersinal","hipocaptação","hipodensa","hipodensidade","hipodenso","hipoecogenicidade","hipossinal","intracanalicular","otomastoidopatia","otomastoidopatia crônica","schwannoma","schwannoma vestibular","uretrocistografia","urorressonância","Abscesso de Masseter","Alterações Modic Tipo III","Ângulo de Moreau-Costa-Bartani","Ângulo Talocalcâneo AP de Kite","Ângulo Talocalcâneo Lateral de Kite","Apofisite da Tuberosidade Tibial Anterior (Osgood-Schlatter)","Apofisite Patelar (Sinding-Larsen-Johansson)","Articulação Hamato-Semilunar","Artropatia de Jaccoud","aspecto multifasciculado","Broncomucocele com Air-Trapping","Bursa Subacromial-Subdeltoidea Normal","Calcificação Vascular de Parede (Mönckeberg)","Célula de Haller (Variação Anatômica)","Célula de Onodi","Cisto da Bolsa de Blake","Cisto da Bolsa de Rathke","Cisto de Bartholin","Cisto de Colédoco Tipo I (Todani)","Cisto de Naboth Hemorrágico","Cisto Poplíteo (Baker)","Cisto Renal Complexo Bosniak IIF","Cisto Renal Complexo Bosniak III","Cisto Renal Complexo Bosniak IV","Cisto Renal Simples (Bosniak I)","Cisto Sinovial Poplíteo (Baker) Laminar/Septado","Colangiocarcinoma Hilar (Bismuth-Corlette IV, MSKCC T3)","Colangiocarcinoma Hilar (Tumor de Klatskin)","Colangiocarcinoma Intra-Hepático Multifocal","Coleção Extra-Axial Hiperdensa","colesteatoma","Correlação Multimodal Mamografia-Ultrassom","Deformidade de Haglund","Deformidade de Madelung","Dilatação do Ducto de Wirsung","Discopatia Degenerativa com Alterações Modic III","Dissociação Escafolunar (Sinal de Terry Thomas)","Diverticulite de Meckel","Divertículo de Zenker","Doença Aterosclerótica Aorto-Ilíaca","Doença de Blount","Doença de Crohn Estenosante Ativa","Doença de Crohn Fistulizante Ativa","Doença de Crohn Penetrante e Estenosante","Doença de Kienböck","Doença de Kienböck (Estágio IIIA)","Doença de Osgood-Schlatter","Doença de Paget","Doença de Peyronie","Doença de Scheuermann","Doença/Síndrome de Moyamoya","Edema da Gordura de Hoffa","Edema da Gordura de Hoffa (Hoffite)","Edema do Corpo Adiposo de Hoffa","Edema Ósseo Subcondral Modic Tipo I","Encefalopatia de Wernicke","Endometrioma com Fenômeno de Shading","Endoprótese Aorto-Ilíaca","Esôfago Quebra-Nozes","Espaços Perivasculares de Virchow-Robin Proeminentes","Fibromatose Palmar (Contratura de Dupuytren)","Fibromatose Palmar (Doença de Dupuytren)","Fibromatose Plantar (Doença de Ledderhose)","Fissura Laminar Intra-Substancial","Focos de Vacuolização da Mielina (UBOs)","Fragmentação da Apófise Tibial (Osgood-Schlatter)","hipercaptante","hiperecogenicidade","hipocaptante","hipoecogenicidade textural","impressões digitiformes","isocaptação","isodensidade","isossinal","Megaesôfago Grau I (Rezende)","multifasciculado","Neuroma de Morton","Sín
1drome de Haglund","Síndrome de Mirizzi","Síndrome de Pellegrini-Stieda","Tenossinovite Estenosante de De Quervain","Tumor de Klatskin","abscesso tubo-ovariano","Acalásia/Megaesôfago Grau I-II","Achado Suspeito BI-RADS 4A","Achados Benignos Definidos (BI-RADS 2)","acromioclavicular","angiomiolipoma renal","Anterolistese Degenerativa Grau I","aortopulmonar","Área Focal PI-RADS 4","Área Nodular Indeterminada (PI-RADS 3)","atelectasia subsegmentar","atelectasias","Avaliação Incompleta BI-RADS 0","Bankart cartilaginoso","Bankart reverso","bronquiectasia","bronquiolite","Carcinoma Hepatocelular (LI-RADS 5)","cavum de Meckel","cisto de baker","cisto de Tarlov","classificação de Crowe","classificação de Pfirrmann","colangiocarcinoma","condromalácia","Condropatia Patelar Grau 1","Condropatia Patelar Grau 2","Condropatia Patelar Grau 3 (Outerbridge)","Condropatia Patelar Grau II","Condropatia Troclear Grau III","core biópsia","Densidade Mamária B (BI-RADS B)","Displasia do Quadril Tipo IIc (Graf)","divertículo de Meckel","doença de crohn","doença de Perthes","Endoleak Tipo I","enfisema centrolobular","espaço de Prussak","espaço esplenorrenal","esplenorrenal","Esteatose Hepática Acentuada Grau III","fáscia de Denonvilliers","fáscia de Gerota","faveolamento","fenômeno Modic I","fenômeno Modic II","fenômeno Modic III","forame de Bochdalek","forame de Morgagni","fratura de Colles","fratura de Galeazzi","fratura de Jones","fratura de Lisfranc","fratura de Maisonneuve","fratura de Monteggia","fratura de Smith","hidropneumotórax","hiperatenuante","hipersinal em FLAIR","hipersinal em STIR","hipersinal em T2","hipoatenuante","hipossinal em T1","hipossinal em T2","intrassubstância","isoatenuante","isoecogenicidade","janela aortopulmonar","lesão de Bankart","lesão de hill-sachs","lesão de stener","ligamento de Treitz","linfangite carcinomatosa","malformação de Chiari","manobra de Valsalva","Megaesôfago Grau II","micronódulos centrolobulares","peripancreática","peripancreático","perirrenal","pielocalicial","pneumoperitônio","pneumotórax","pseudoaneurisma","realce hipercaptante","realce hipocaptante","retrocalcânear","retroperitoneal","seios de Valsalva","sialografia","síndrome de Budd-Chiari","síndrome de conn","síndrome de cushing","síndrome de Sjögren","staging FIGO","tendinopatia de Quervain","tenossinovite","tomografia de abdome","triângulo de Codman","tromboembolismo","uretrocistografia miccional","bi-rads categoria","categoria bi-rads","Diverticulite Aguda","encefalomalácia","esquizencefalia","fratura-luxação","hematossalpinge","hidrocefalia","hidronefrose","Hipertrofia Adenoideana","laudos bi-rads","laudos bi-rads categoria","Lesão Osteocondral","lesão PI-RADS","mama bi-rads","nefrocalcinose","neurotoxoplasmose","Osteoartrose Acromioclavicular","pneumatização","pneumatose","porencefálico","próstata pi-rads","pseudomeningocele","pterigoides","Stent Pérvio","tromboflebite","ventriculomegalia"],Oe=["líquor","liquórico","liquórica","fenda liquórica","espaço liquórico","coleção liquórica","fístula liquórica","ceco","fundo cecal","jejuno","alças jejunais","alças ileais","sigmoide","duodeno","ílio","ilíaco","crista ilíaca","fossa ilíaca","hilo","hilar","hilos pulmonares","hilo renal","hilo esplênico","fáscia","fáscia transversalis","hálux","hálux valgo","áxis","úncus","processo uncinado","ínsula","cíngulo","giro do cíngulo","ázigos","hemiázigos","óstio","ostial","istmo","clivus","sela túrcica","quiasma óptico","foice cerebral","tenda do cerebelo","cavum do septo pelúcido","plexo coroide","aracnoide","pia-máter","dura-máter","espondilólise","espondilolistese","esteatose","estenose","pedículo","pedúnculo","peritônio","períneo","esplênico","esplâncnico","hipoecoico","hiperecoico","hipointenso","hiperintenso","terço anterior","terço posterior","terço basal","terço apical","terço lateral","terço medial","no terço superior do lobo","no terço médio do lobo","no terço inferior do lobo","terço médio da clavícula","terço distal do fêmur","terço proximal da tíbia","terço distal do rádio","dois terços","um terço"],qe=["formação","formação expansiva","formação nodular","formação cística","formação sólida","formação heterogênea","formação hipoecogênica","formação anecoica","formações","sequelar","sequelares","sequela","sequelas","de aspecto sequelar","alterações sequelares","abdome","abdome total","abdome superior","abdome inferior","parede abdominal","cavidade abdominal","não disponho","não disponho de exames anteriores","não disponho de estudos anteriores para análise comparativa","não disponho de exames prévios para comparação","exames anteriores para análise comparativa","não me foi disponibilizado","não foram disponibilizados","disponibilizado","disponibilizados","disponibilização","disponho","anexial","região anexial","massa anexial","anexial direita","anexial esquerda","medindo","focos","terço","articular","lobo","veia","tendão","cavidade","apagamento","justainsercional","tendinopatia justainsercional","supraespinhal","infraespinhal","subescapular","intrassubstancial","tenossinovite","intratendínea","subcondral","osteofitose","entesófito","justacortical","justarticular"],He=["medindo","parênquima","focos","lesão","medial","distal","proximal","óssea","partes moles","fluxo","discreto","discreta","difusa","de permeio","porção","fígado","biliar","vias biliares","bexiga","femoral","seio maxilar","colo uterino","cisto simples","terço distal","terço superior","terço inferior","terço médio","articular","hipersinal","tendão","impregnação","terço proximal","lobo","realce heterogêneo","heterogêneo","determinando","hipossinal","veia","renal","nódulo","cavidade","seio","restrição à difusão","lobo hepático direito","lobo hepático esquerdo","parênquima hepático","derrame articular","calcificações","fossa","homogêneo","cisto","FLAIR","impregnação pelo meio de contraste","ecotextura","tendinopatia","calcificação","canal vertebral","densificação","osteófitos","esclerose subcondral","acometendo","subcondral","cistos","abaulamento","realce periférico","ulnar","supraespinhal","plantar","dural","pelve renal","bursa","hipoatenuante","processo transverso","colo vesical","apagamento","ipsilateral","fibrose","recesso lateral","hipoecogênico","alças intestinais","sulco","heterogeneidade","artéria mesentérica superior","colo do útero","hilo pulmonar","vidro fosco","hilo","septo","calcâneo","osteofitose","nódulo sólido","opacificação","lobulada","espessamento pleural","consolidação","cápsula hepática","protrusão","acromioclavicular","bainha","ureter","carpo","veia cava inferior","homolateral","protrusão discal posterior","abaulamento discal difuso","abaulamento discal","protrusão discal","feixe","mediastino","colédoco","submandibular","veia porta","diáfise","radial","anecoico","septações","patela","insinuação","íleo distal","íleo","atelectasia","bronquiectasias","rarefação","contralateral","esplênica","côndilo","epicôndilo","tuberosidade","glenoide","anexial","parótida","volar","hiperatenuante","consolidações","platô tibial","coto","infraespinhal","subescapular","faceta articular","ceco","caudado","miométrio","ossificação","circunscrito","entesopatia","papila renal","papila duodenal","semilunar","classificação","lobulado","esplênio do corpo caloso","quiasma óptico","íleo terminal","endométrio","hiperecogênico","mesentério","navicular","hálux","hipodenso","entesófitos","calcificações grosseiras","ureteral","tálus","fibular","derme","meato","perilesional","nódulo hipoecoico","foice cerebral","cálices renais","hipoecoico","metáfise","circunscrita","cone medular","ducto de Wirsung","opacidade em vidro fosco","susceptibilidade magnética","omento","valvar","
1infundíbulo","osteófito","labrum","escafoide","hiperdenso","infrapatelar","realce anelar","esteatose hepática","hérnia discal","cisterna magna","uncoartrose","craniocaudal","periportal","suprapatelar","seio costofrênico","estenose foraminal","cauda equina","protrusão foraminal","sela túrcica","sínfise púbica","coronal","tálamos","malar","costofrênico","anterolistese","epífise","istmo da tireoide","hilos pulmonares","ázigos","istmo","pedículo","intraparenquimatoso","trabeculado","confluente","mal definido","extrusão discal","jejuno","subcapsular","microcalcificações","retroesternal","bem delimitado","osteofitários","exostose","calcificações puntiformes","entesófito no calcâneo","entesófito calcâneo","hipertrofia facetária","lavagem precoce","faveolamento","clivus","entesófito","septada","saturação de gordura","corpo lúteo","nódulo de Schmorl","vesícula vitelínica","ligamento amarelo","glândula pineal","discopatia degenerativa","vermis cerebelar","tronco celíaco","junção ureteropélvica","halo invertido","desidratação discal","diferenciação córtico-medular","cissura oblíqua","forame de conjugação","broncograma aéreo","fise de crescimento","tenda do cerebelo","osteo fitose","apófise espinhosa","cissura horizontal","informação","módulo","logo","intra-articular","circular","língula","cissura","peri-hilar","cardiofrênico","subpleural","peribroncovascular","hemidiafragma","paramediastinal","abdômen","córtico-medular","anexos uterinos","translucência nucal","úncus","trígono","fórnice","adeno-hipófise","neuro-hipófise","extra-axial","intra-axial","espondilolistese","espondilólise","listese","abolamento","protusão","abaulamentos","abaulado","protrusões","uncodiscartrose","expondilose","Expond. ilolistese","espondilose","espondiloartrose","espondiloartropatia","espondilodiscite","espondilite","espondilite anquilosante","retrolistese","laterolistese","sacroilíaca","sindesmófito","geodo","piramidal","pisiforme","trapezoide","capitato","hamato","cuboide","sesamoide","paratireoide","anteroposterior","laterolateral","paravertebral","paramediano","justacortical","peroneal","isodenso","estratificação","hialinização","fibrótico","fibróticas","pseudocisto","pseudoaneurisma","pseudo-obstrução","pseudartrose","peri-hepático","peripancreático","retroperitônio","retroperitoneal","retrocardíaco","justarticular","justamedular","justaposto","supra-hepático","infra-hepático","septado","trabeculação","espiculado","espiculada","espiculações","coalescente","wash-out","em tesófito","entesofitose","osteofitário","sindesmofitose","homogeneidade","tendinose"],ze=["íleo","língula","cissura","tálus","meato","geodo","osteofitose","entesófito","entesófitos","faveolamento","carpo","patela","tálamos","côndilo","coto","omento","derme","malar","volar","labrum","trígono","fórnice","listese","osteófitos","parênquima","hipersinal","hipossinal","ecotextura","acometendo","alças intestinais"],Fe=["lesão","medial","distal","proximal","óssea","partes moles","fluxo","discreto","discreta","difusa","de permeio","porção","fígado","biliar","vias biliares","bexiga","femoral","renal","homogêneo","heterogêneo","classificação","determinando","calcificação","calcificações","contralateral","ipsilateral","homolateral","coronal","radial","ulnar","plantar","fibrose","circunscrito","circunscrita","lobulado","lobulada"],Ge=["osteo fitose","em tesófito","Expond. ilolistese","expondilose","protusão","abolamento","ântero-posterior","látero-lateral","justa-insercional","justa-cortical","sub-cutâneo","peri-selar","intra-uterino","peri-apendicular"],de=n=>n.toLowerCase(),Ke=new Set([...Oe,...Fe,...Ge,...qe].map(de));(()=>{const n=new Set,_=[];for(const b of[...ze,...He]){const h=de(b);Ke.has(h)||n.has(h)||(n.add(h),_.push(b))}return _})();const Ve={spoken_decimal:"Decimal falado",unit_abbrev:"Abreviação de unidade",measure_numbers:"Números de medida",measure_abnt:"Formatação ABNT",hesitation:"Hesitação",uh_slash:'Artefato "UH/"',spacing:"Espaçamento",other:"Outras"},ce={backgroundColor:"hsl(var(--card))",border:"1px solid hsl(var(--border))",borderRadius:8,fontSize:12},Ue=n=>{try{return new Date(n).toLocaleDateString("pt-BR",{day:"2-digit",month:"2-digit"})}catch{return n}};function ra(){var G,K,V,U,Q,W,J,X;const[n,_]=v.useState(30),b=ve(),[h,y]=v.useState(null),{data:o,isLoading:N,error:H}=R({queryKey:["admin-soniox-quality",n],queryFn:async()=>{const{data:a,error:s}=await I.rpc("admin_get_soniox_quality",{p_days:n});if(s)throw s;return a??{}},staleTime:6e4}),{data:r}=R({queryKey:["admin-soniox-quality-config"],queryFn:async()=>{const{data:a,error:s}
1=await I.from("whisper_config").select("soniox_glossary, soniox_context_max_chars, soniox_promoted_terms, deepgram_keyterms").eq("config_name","default").maybeSingle();if(s)throw s;return a??null},staleTime:6e4}),{data:L}=R({queryKey:["admin-soniox-promotions"],queryFn:async()=>{const{data:a,error:s}=await I.from("soniox_promotion_log").select("id, term, occurrences, promoted_at, promoted_by, reverted_at").order("promoted_at",{ascending:!1}).limit(100);if(s)throw s;return a??[]},staleTime:6e4}),me=v.useMemo(()=>{const a=new Set,s=t=>(t??[]).forEach(i=>{i!=null&&i.trim()&&a.add(i.trim().toLowerCase())});return s(ke),s(Me),s(we),s(Pe),s(Ee),s(r==null?void 0:r.soniox_promoted_terms),s(r==null?void 0:r.deepgram_keyterms),a},[r==null?void 0:r.soniox_promoted_terms,r==null?void 0:r.deepgram_keyterms]),ue=a=>!!(a!=null&&a.trim())&&me.has(a.trim().toLowerCase()),{data:x}=R({queryKey:["admin-soniox-per-layer"],queryFn:async()=>{const{data:a,error:s}=await I.from("deepgram_sessions").select("client_meta, started_at").order("started_at",{ascending:!1}).limit(40);if(s)throw s;for(const t of a??[]){const i=t.client_meta,f=i==null?void 0:i.context_per_layer;if(f&&typeof f=="object")return{layers:f,started_at:t.started_at}}return null},staleTime:3e5}),z=v.useMemo(()=>((o==null?void 0:o.daily)??[]).slice().reverse().map(a=>({...a,label:Ue(a.day),rate:a.corrections_per_1k_chars==null?null:Number(a.corrections_per_1k_chars)})),[o==null?void 0:o.daily]),k=v.useMemo(()=>((o==null?void 0:o.by_rule)??[]).map(a=>({...a,label:Ve[a.rule]??a.rule})),[o==null?void 0:o.by_rule]),M=v.useMemo(()=>{const a=((o==null?void 0:o.daily)??[]).reduce((t,i)=>t+Number(i.corrections||0),0),s=((o==null?void 0:o.daily)??[]).reduce((t,i)=>t+Number(i.dictated_chars||0),0);return{corrections:a,rate:s>0?a*1e3/s:null}},[o==null?void 0:o.daily]),F=["keyterms","promoted","user_dictionary","classifications_eponyms","acronyms_units","units_foreign","biasing_high","rads_labels","db_names","glossary"],pe=/[\n;,]+/,he=((G=r==null?void 0:r.soniox_glossary)==null?void 0:G.length)??0,xe=r!=null&&r.soniox_glossary?r.soniox_glossary.split(pe).map(a=>a.trim()).filter(Boolean).length:0,w=80,P=1200,A=(r==null?void 0:r.soniox_promoted_terms)??[],E=A.reduce((a,s)=>a+s.trim().length+1,0),fe=a=>!!(a!=null&&a.trim())&&A.some(s=>s.trim().toLowerCase()===a.trim().toLowerCase()),ge=async(a,s)=>{if(!(a!=null&&a.trim())){j.error("Termo vazio");return}const t=a.trim();y(a);try{const{data:i,error:f}=await I.rpc("soniox_promote_term",{p_term:t,p_occurrences:s??null});if(f)throw f;i===!0?j.success(`"${t}" promovido ao contexto`):j.info("Não promovido: termo já está na lista ou o limite de 80 termos foi atingido"),await b.invalidateQueries({queryKey:["admin-soniox-quality-config"]}),await b.invalidateQueries({queryKey:["admin-soniox-promotions"]})}catch(i){j.error("Falha ao promover termo",{description:i.message})}finally{y(null)}},be=async a=>{y(a.term);try{const{error:s}=await I.rpc("soniox_revert_term",{p_log_id:a.id});if(s)throw s;j.success(`"${a.term}" removido do contexto`),await b.invalidateQueries({queryKey:["admin-soniox-quality-config"]}),await b.invalidateQueries({queryKey:["admin-soniox-promotions"]})}catch(s){j.error("Falha ao reverter",{description:s.message})}finally{y(null)}},je=()=>{const a=(o==null?void 0:o.top_terms)??[],s="termo_antes,correcao_depois,ocorrencias,primeira_vez,ultima_vez",t=a.map(C=>[`"${(C.term_before??"").replace(/"/g,'""')}"`,`"${(C.top_term_after??"").replace(/"/g,'""')}"`,C.occurrences,C.first_seen,C.last_seen].join(",")),i=[s,...t].join(`
2`),f=new Blob([i],{type:"text/csv;charset=utf-8;"}),Y=URL.createObjectURL(f),O=document.createElement("a");O.href=Y,O.download=`soniox-term-candidates-${new Date().toISOString().split("T")[0]}.csv`,O.click(),URL.revokeObjectURL(Y),j.success("CSV exportado")};return e.jsx(Se,{children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4 flex-wrap",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(Ie,{className:"h-6 w-6"}),"Qualidade do ditado (Soniox)"]}),e.jsx("p",{className:"text-muted-foreground text-sm mt-1 max-w-3xl",children:"Cada correção de pós-processamento que ainda dispara é evidência de que o contexto enviado ao Soniox não cobriu aquele termo. Use os candidatos abaixo para alimentar o glossário e fechar o ciclo."})]}),e.jsx("div",{className:"flex gap-2",children:[7,30,90].map(a=>e.jsxs(D,{size:"sm",variant:n===a?"default":"outline",onClick:()=>_(a),children:[a,"d"]},a))})]}),H&&e.jsx(l,{className:"border-destructive/40",children:e.jsxs(g,{className:"py-4 text-sm text-destructive",children:["Falha ao carregar telemetria: ",H.message]})}),N?e.jsx(T,{className:"h-[120px] w-full"}):e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 xl:grid-cols-5 ga
2p-4",children:[e.jsx(l,{children:e.jsxs(m,{className:"pb-2",children:[e.jsx(u,{children:"Correções no período"}),e.jsx(p,{className:"text-3xl font-mono",children:M.corrections.toLocaleString("pt-BR")})]})}),e.jsxs(l,{children:[e.jsxs(m,{className:"pb-2",children:[e.jsx(u,{children:"Correções / 1.000 caracteres"}),e.jsx(p,{className:"text-3xl font-mono",children:M.rate==null?"—":M.rate.toFixed(2)})]}),e.jsxs(g,{className:"text-xs text-muted-foreground space-y-0.5",children:[e.jsx("div",{children:"Métrica-chave — menor é melhor"}),e.jsxs("div",{children:["baseado em"," ",((K=o==null?void 0:o.sessions)==null?void 0:K.chars_coverage_pct)==null?"—":`${Number(o.sessions.chars_coverage_pct).toFixed(0)}%`," ","das sessões do período"]})]})]}),e.jsxs(l,{children:[e.jsxs(m,{className:"pb-2",children:[e.jsx(u,{children:"Sessões Soniox"}),e.jsx(p,{className:"text-3xl font-mono",children:(((V=o==null?void 0:o.sessions)==null?void 0:V.count)??0).toLocaleString("pt-BR")})]}),e.jsxs(g,{className:"text-xs text-muted-foreground",children:[Number(((U=o==null?void 0:o.sessions)==null?void 0:U.total_minutes)??0).toLocaleString("pt-BR")," min ditados"]})]}),e.jsx(l,{children:e.jsxs(m,{className:"pb-2",children:[e.jsx(u,{children:"Média de termos no contexto"}),e.jsx(p,{className:"text-3xl font-mono",children:((Q=o==null?void 0:o.sessions)==null?void 0:Q.avg_context_terms)??"—"})]})}),e.jsx(l,{children:e.jsxs(m,{className:"pb-2",children:[e.jsx(u,{children:"Média de chars do contexto"}),e.jsx(p,{className:"text-3xl font-mono",children:((W=o==null?void 0:o.sessions)==null?void 0:W.avg_context_chars)??"—"})]})})]}),e.jsxs(l,{children:[e.jsxs(m,{children:[e.jsxs(p,{className:"text-base font-mono flex items-center gap-2",children:[e.jsx(Ae,{className:"h-4 w-4 text-primary"}),"Taxa de correção ao longo do tempo"]}),e.jsxs(u,{children:["Correções por 1.000 caracteres ditados. ",e.jsx("strong",{children:"Quanto MENOR, melhor"}),": significa que o contexto enviado ao Soniox está cobrindo mais termos e o pós-processamento precisa intervir menos."]})]}),e.jsx(g,{children:N?e.jsx(T,{className:"h-[220px] w-full"}):z.length===0?e.jsx("div",{className:"h-[220px] flex items-center justify-center text-sm text-muted-foreground",children:"Nenhum evento registrado ainda no período."}):e.jsx(se,{width:"100%",height:220,children:e.jsxs(Be,{data:z,children:[e.jsx(ne,{strokeDasharray:"3 3",stroke:"hsl(var(--border))"}),e.jsx(re,{dataKey:"label",fontSize:11,stroke:"hsl(var(--muted-foreground))"}),e.jsx(ie,{fontSize:11,stroke:"hsl(var(--muted-foreground))"}),e.jsx(te,{contentStyle:ce}),e.jsx(le,{type:"monotone",dataKey:"rate",name:"Correções / 1k chars",stroke:"hsl(var(--primary))",strokeWidth:2,dot:!1,connectNulls:!0}),e.jsx(le,{type:"monotone",dataKey:"corrections",name:"Correções (absoluto)",stroke:"hsl(var(--accent))",strokeWidth:1.5,dot:!1})]})})})]}),e.jsxs(l,{children:[e.jsxs(m,{children:[e.jsxs(p,{className:"text-base font-mono flex items-center gap-2",children:[e.jsx(Ce,{className:"h-4 w-4 text-primary"}),"Correções por regra"]}),e.jsx(u,{children:"Qual passo do pós-processamento mais intervém."})]}),e.jsx(g,{children:N?e.jsx(T,{className:"h-[220px] w-full"}):k.length===0?e.jsx("div",{className:"h-[220px] flex items-center justify-center text-sm text-muted-foreground",children:"Sem correções registradas no período."}):e.jsx(se,{width:"100%",height:Math.max(220,k.length*42),children:e.jsxs(Le,{data:k,layout:"vertical",margin:{left:40},children:[e.jsx(ne,{strokeDasharray:"3 3",stroke:"hsl(var(--border))"}),e.jsx(re,{type:"number",fontSize:11,stroke:"hsl(var(--muted-foreground))"}),e.jsx(ie,{type:"category",dataKey:"label",width:150,fontSize:11,stroke:"hsl(var(--muted-foreground))"}),e.jsx(te,{contentStyle:ce}),e.jsx(Te,{dataKey:"count",name:"Correções",fill:"hsl(var(--primary))",radius:[0,4,4,0]})]})})})]}),e.jsxs(l,{children:[e.jsxs(m,{className:"flex-row items-start justify-between gap-4 space-y-0",children:[e.jsxs("div",{children:[e.jsxs(p,{className:"text-base font-mono flex items-center gap-2",children:[e.jsx(ae,{className:"h-4 w-4 text-primary"}),"Termos candidatos ao glossário"]}),e.jsx(u,{children:"Termos que o pós-processamento mais precisou corrigir — adicione a grafia canônica ao glossário para prevenir o erro na origem."})]}),e.jsxs(D,{variant:"outline",size:"sm",onClick:je,disabled:!((J=o==null?void 0:o.top_terms)!=null&&J.length),children:[e.jsx(_e,{className:"h-4 w-4 mr-2"})," CSV"]})]}),e.jsx(g,{className:"p-0",children:N?e.jsx("div",{className:"p-6",children:e.jsx(T,{className:"h-[220px] w-full"})}):(X=o==null?void 0:o.top_terms)!=null&&X.length?e.jsxs($,{children:[e.jsx(Z,{children:e.jsxs(B,{children:[e.jsx(c,{children:"Termo (antes)"}),e.jsx(c,{children:"Correção mais frequente"}),e.jsx(c,{className:"w-56",children:"Cobertura"}),e.jsx(c,{className:"w-28 text-right",children:"Ocorrências"}),e.jsx(c,{className:"w-40",children:"Última vez"}),e.jsx(c,{className:"w-44"})]})}),e.jsx(ee,{children:o.top_terms.map(a=>{const s=a.top_term_after??a.term_before,t=ue(s),i=fe(a.top_term_after);return e.jsxs(B,{children:[e.jsx(d,{children:e.jsx("code",{className:"text-xs bg-destructive/10 text-destructive px-2 py-1 rounded",children:a.term_before})}),e.jsx(d,{children:a.top_term_after?e.jsx("code",{className:"text-xs bg-primary/10 text-primary px-2 py-1 rounded",children:a.top_term_after}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"—"})}),e.jsx(d,{children:t?e.jsxs(S,{variant:"destructive",className:"gap-1",children:[e.jsx(q,{className:"h-3 w-3"}),"já listado (pode ter sido cortado pelo orçamento)"]}):e.jsx(S,{variant:"outline",children:"fora do contexto"})}),e.jsx(d,{className:"text-right",children:e.jsx(S,{variant:a.occurrences>=10?"default":"outline",children:a.occurrences})}),e.jsx(d,{className:"text-xs text-muted-foreground",children:new Date(a.last_seen).toLocaleStr
2ing("pt-BR")}),e.jsx(d,{className:"text-right",children:e.jsxs(D,{size:"sm",variant:"outline",disabled:!a.top_term_after||i||h===a.top_term_after,onClick:()=>ge(a.top_term_after,a.occurrences),children:[h===a.top_term_after?e.jsx(oe,{className:"h-3.5 w-3.5 mr-2 animate-spin"}):e.jsx(ae,{className:"h-3.5 w-3.5 mr-2"}),i?"Já promovido":"Promover termo"]})})]},a.term_before)})})]}):e.jsx("div",{className:"p-12 text-center text-sm text-muted-foreground",children:"Nenhum candidato ainda — os eventos aparecem conforme o ditado é usado."})})]}),e.jsxs(l,{children:[e.jsxs(m,{children:[e.jsxs(p,{className:"text-base font-mono flex items-center gap-2",children:[e.jsx(ye,{className:"h-4 w-4 text-primary"}),"Composição do contexto — última sessão registrada",(x==null?void 0:x.started_at)&&e.jsxs("span",{className:"font-normal text-xs text-muted-foreground",children:["(",new Date(x.started_at).toLocaleString("pt-BR"),")"]})]}),e.jsxs(u,{children:["Amostra de UMA sessão (a mais recente com medição), não média do período."," ","O contexto é montado em camadas de prioridade, limitado por"," ",e.jsx("code",{className:"text-xs",children:"soniox_context_max_chars"}),"."]})]}),e.jsxs(g,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border p-3",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Orçamento máximo"}),e.jsxs("div",{className:"font-mono text-base mt-1",children:[((r==null?void 0:r.soniox_context_max_chars)??8e3).toLocaleString("pt-BR")," chars"]})]}),e.jsxs("div",{className:"rounded-lg border p-3",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Glossário (caracteres)"}),e.jsx("div",{className:"font-mono text-base mt-1",children:he.toLocaleString("pt-BR")})]}),e.jsxs("div",{className:"rounded-lg border p-3",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Glossário (termos)"}),e.jsx("div",{className:"font-mono text-base mt-1",children:xe.toLocaleString("pt-BR")})]})]}),x&&Object.keys(x.layers).length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-2",children:F.map(a=>{const s=Number(x.layers[a]??0),t=s===0;return e.jsxs("div",{className:`flex items-center justify-between rounded-md border px-3 py-2 text-sm ${t?"border-destructive/50 bg-destructive/5":""}`,children:[e.jsx("span",{className:t?"text-destructive":"text-muted-foreground",children:a}),e.jsx("span",{className:"font-mono",children:s.toLocaleString("pt-BR")})]},a)})}),F.some(a=>Number(x.layers[a]??0)===0)&&e.jsxs("p",{className:"text-xs text-destructive flex items-center gap-2",children:[e.jsx(q,{className:"h-3.5 w-3.5"}),"Nesta sessão, camadas com zero itens não chegaram ao modelo — o orçamento acabou antes delas."]})]}):e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-2",children:[e.jsx(Ne,{className:"h-3.5 w-3.5"}),"Distribuição por camada ainda não registrada em nenhuma sessão recente."]})]})]}),e.jsxs(l,{children:[e.jsxs(m,{children:[e.jsxs(p,{className:"text-base font-mono flex items-center gap-2",children:[e.jsx(Re,{className:"h-4 w-4 text-primary"}),"Termos promovidos ao contexto"]}),e.jsx(u,{children:"Promoções automáticas (job diário) e manuais. Reverter remove o termo da camada enviada."}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs",children:[e.jsxs(S,{variant:A.length>=w?"destructive":"secondary",children:[A.length," / ",w," termos"]}),e.jsxs(S,{variant:E>=P?"destructive":"outline",className:"font-mono",children:[E," / ",P," chars"]}),(A.length>=w||E>=P)&&e.jsxs("span",{className:"text-destructive flex items-center gap-1",children:[e.jsx(q,{className:"h-3 w-3"}),"limite atingido — reverta termos antes de promover novos"]})]})]}),e.jsx(g,{children:!L||L.length===0?e.jsx("p",{className:"text-xs text-muted-foreground",children:"Nenhum termo promovido ainda."}):e.jsxs($,{children:[e.jsx(Z,{children:e.jsxs(B,{children:[e.jsx(c,{children:"Termo"}),e.jsx(c,{className:"w-28 text-right",children:"Ocorrências"}),e.jsx(c,{className:"w-40",children:"Quando"}),e.jsx(c,{className:"w-28",children:"Por"}),e.jsx(c,{className:"w-32"})]})}),e.jsx(ee,{children:L.map(a=>e.jsxs(B,{className:a.reverted_at?"opacity-50":"",children:[e.jsx(d,{children:e.jsx("code",{className:"text-xs bg-primary/10 text-primary px-2 py-1 rounded",children:a.term})}),e.jsx(d,{className:"text-right font-mono text-xs",children:a.occurrences??"—"}),e.jsx(d,{className:"text-xs text-muted-foreground",children:new Date(a.promoted_at).toLocaleStr
2ing("pt-BR")}),e.jsx(d,{children:e.jsx(S,{variant:a.promoted_by==="auto"?"secondary":"outline",children:a.promoted_by})}),e.jsx(d,{className:"text-right",children:a.reverted_at?e.jsx("span",{className:"text-xs text-muted-foreground",children:"revertido"}):e.jsxs(D,{size:"sm",variant:"ghost",disabled:h===a.term,onClick:()=>be(a),children:[h===a.term?e.jsx(oe,{className:"h-3.5 w-3.5 mr-2 animate-spin"}):e.jsx(De,{className:"h-3.5 w-3.5 mr-2"}),"Reverter"]})})]},a.id))})]})})]})]})})}export{ra 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.