{"id":2008,"date":"2026-09-16T15:09:11","date_gmt":"2026-09-16T18:09:11","guid":{"rendered":"https:\/\/precatorioestadual.com.br\/?page_id=2008"},"modified":"2026-09-16T15:20:20","modified_gmt":"2026-09-16T18:20:20","slug":"elementor-2008","status":"publish","type":"page","link":"https:\/\/precatorioestadual.com.br\/","title":{"rendered":"Elementor #2008"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2008\" class=\"elementor elementor-2008\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ddee83d e-con e-atomic-element e-flexbox-base e-89190a4 \" data-id=\"ddee83d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ddee83d\" data-e-type=\"e-flexbox\" data-id=\"ddee83d\">\n    \t\t<div class=\"elementor-element elementor-element-4fb17d3 elementor-widget elementor-widget-html\" data-id=\"4fb17d3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"lcb-torre\"><\/div>\n<style>\n#lcb-torre *{box-sizing:border-box;margin:0;padding:0;font-family:'Inter',system-ui,sans-serif}\n#lcb-torre{--bg:#f0f2f5;--surface:#fff;--border:#e2e8f0;--blue:#1a4a8a;--blue2:#2563b8;--blue-pale:#eff6ff;--green:#0d7a5f;--green-pale:#ecfdf5;--amber:#b45309;--amber-pale:#fffbeb;--red:#b91c1c;--red-pale:#fef2f2;--text:#0f172a;--text2:#475569;--text3:#94a3b8;background:var(--bg);padding:16px;min-height:600px}\n.lcb-header{background:var(--blue);border-radius:10px;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n.lcb-brand{display:flex;align-items:center;gap:10px}\n.lcb-icon{width:32px;height:32px;background:rgba(255,255,255,.15);border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff}\n.lcb-title{font-size:14px;font-weight:600;color:#fff}\n.lcb-sub{font-size:11px;color:rgba(255,255,255,.5)}\n.lcb-status{display:flex;align-items:center;gap:6px;font-size:11px;color:rgba(255,255,255,.7);background:rgba(255,255,255,.1);padding:4px 10px;border-radius:20px}\n.lcb-dot{width:6px;height:6px;border-radius:50%;background:#22c55e}\n.lcb-dot.old{background:#f59e0b}.lcb-dot.err{background:#ef4444}\n.lcb-tabs{display:flex;gap:4px;margin-bottom:16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:6px}\n.lcb-tab{padding:7px 14px;font-size:12px;font-weight:500;color:var(--text2);cursor:pointer;border-radius:7px;transition:.15s;white-space:nowrap}\n.lcb-tab.active{background:var(--blue);color:#fff}\n.lcb-tab:hover:not(.active){background:var(--blue-pale);color:var(--blue2)}\n.lcb-filters{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}\n.lcb-qbtn{padding:5px 10px;background:var(--bg);color:var(--text2);border:1px solid var(--border);border-radius:7px;font-size:11px;cursor:pointer;white-space:nowrap}\n.lcb-qbtn.active,.lcb-qbtn:hover{background:var(--blue-pale);color:var(--blue2);border-color:var(--blue2)}\n.lcb-sel{padding:6px 10px;border:1px solid var(--border);border-radius:7px;font-size:12px;color:var(--text);background:var(--surface);cursor:pointer;outline:none}\n.lcb-inp{padding:6px 10px;border:1px solid var(--border);border-radius:7px;font-size:12px;color:var(--text);background:var(--surface);outline:none}\n.lcb-btn{padding:6px 12px;background:var(--blue);color:#fff;border:none;border-radius:7px;font-size:12px;cursor:pointer;font-weight:500}\n.lcb-sep{width:1px;height:24px;background:var(--border)}\n.lcb-page{display:none}.lcb-page.active{display:block}\n.lcb-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}\n.lcb-kpi{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px;position:relative;overflow:hidden}\n.lcb-kpi::after{content:'';position:absolute;top:0;left:0;right:0;height:3px}\n.lcb-kpi.bl::after{background:var(--blue2)}.lcb-kpi.gr::after{background:var(--green)}.lcb-kpi.am::after{background:var(--amber)}.lcb-kpi.rd::after{background:var(--red)}.lcb-kpi.pu::after{background:#7c3aed}.lcb-kpi.te::after{background:#0891b2}\n.lcb-kpi-l{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}\n.lcb-kpi-v{font-size:24px;font-weight:300;color:var(--text);letter-spacing:-1px;line-height:1}\n.lcb-kpi-s{font-size:10px;color:var(--text3);margin-top:4px}\n.lcb-g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}\n.lcb-g3{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:14px;margin-bottom:14px}\n.lcb-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:14px}\n.lcb-card-t{font-size:13px;font-weight:600;color:var(--text);margin-bottom:12px}\n.lcb-bars{display:flex;flex-direction:column;gap:8px}\n.lcb-bar{display:flex;align-items:center;gap:8px}\n.lcb-bl{font-size:11px;color:var(--text2);width:150px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.lcb-bt{flex:1;height:7px;background:var(--bg);border-radius:4px;overflow:hidden}\n.lcb-bf{height:7px;border-radius:4px}\n.lcb-bv{font-size:11px;font-weight:600;color:var(--text);min-width:28px;text-align:right}\n.lcb-chart{height:130px;display:flex;align-items:flex-end;gap:3px;padding-top:8px}\n.lcb-tbl{width:100%;border-collapse:collapse}\n.lcb-tbl th{font-size:10px;font-weight:600;color:var(--text3);text-align:left;padding:7px 8px;border-bottom:1px solid var(--border);white-space:nowrap;text-transform:uppercase}\n.lcb-tbl td{font-size:12px;color:var(--text);padding:8px;border-bottom:1px solid var(--border)}\n.lcb-tbl tr:last-child td{border-bottom:none}\n.lcb-tbl tr:hover td{background:var(--bg)}\n.lcb-pill{display:inline-flex;align-items:center;padding:2px 7px;border-radius:20px;font-size:10px;font-weight:500}\n.pill-gr{background:var(--green-pale);color:var(--green)}\n.pill-rd{background:var(--red-pale);color:var(--red)}\n.pill-bl{background:var(--blue-pale);color:var(--blue2)}\n.pill-am{background:var(--amber-pale);color:var(--amber)}\n.lcb-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}\n.lcb-ubox{background:var(--surface);border:2px dashed var(--border);border-radius:10px;padding:20px;text-align:center;cursor:pointer;transition:.2s;position:relative}\n.lcb-ubox:hover{border-color:var(--blue2);background:var(--blue-pale)}\n.lcb-ubox.ok{border-color:var(--green);background:var(--green-pale);border-style:solid}\n.lcb-ubox input{position:absolute;inset:0;opacity:0;cursor:pointer}\n.lcb-ubox-icon{font-size:24px;margin-bottom:6px}\n.lcb-ubox-t{font-size:12px;font-weight:600;color:var(--text);margin-bottom:3px}\n.lcb-ubox-s{font-size:11px;color:var(--text3)}\n.lcb-ubtn{width:100%;padding:13px;background:var(--blue);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;margin-bottom:14px}\n.lcb-ubtn:disabled{opacity:.5;cursor:not-allowed}\n.lcb-progress{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;display:none;margin-bottom:14px}\n.lcb-step{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border)}\n.lcb-step:last-child{border-bottom:none}\n.lcb-step-ic{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}\n.sp{background:var(--bg);color:var(--text3)}.sa{background:var(--amber-pale);color:var(--amber)}.sd{background:var(--green-pale);color:var(--green)}.se{background:var(--red-pale);color:var(--red)}\n.lcb-step-t{font-size:12px;color:var(--text)}\n.lcb-toast{position:fixed;bottom:20px;right:20px;background:#0f172a;color:#fff;padding:10px 16px;border-radius:8px;font-size:12px;z-index:99999;opacity:0;transition:.3s;pointer-events:none;max-width:280px}\n.lcb-toast.show{opacity:1}\n.lcb-funil{display:flex;gap:6px;align-items:stretch;margin-bottom:14px;flex-wrap:wrap}\n.lcb-fstep{flex:1;min-width:100px;background:var(--bg);border-radius:8px;padding:14px 8px;text-align:center;border:2px solid transparent}\n.lcb-fn{font-size:24px;font-weight:300;color:var(--text);letter-spacing:-1px}\n.lcb-fl{font-size:9px;color:var(--text3);margin-top:3px;text-transform:uppercase;letter-spacing:.5px}\n.lcb-fp{font-size:10px;font-weight:600;margin-top:3px}\n.lcb-farr{display:flex;align-items:center;color:var(--text3);font-size:16px}\n.lcb-empty{text-align:center;padding:30px;color:var(--text3);font-size:12px}\n.lcb-spin{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:lcbspin .7s linear infinite;display:inline-block;vertical-align:middle;margin-right:6px}\n@keyframes lcbspin{to{transform:rotate(360deg)}}\n<\/style>\n\n<div id=\"lcb-torre\">\n  <div class=\"lcb-header\">\n    <div class=\"lcb-brand\">\n      <div class=\"lcb-icon\">LC<\/div>\n      <div>\n        <div class=\"lcb-title\">Torre de Controle Operacional<\/div>\n        <div class=\"lcb-sub\">LCbank \u00b7 Precat\u00f3rios & RPV<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"lcb-status\">\n      <div class=\"lcb-dot\" id=\"lcb-sdot\"><\/div>\n      <span id=\"lcb-stxt\">Carregando...<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"lcb-tabs\">\n    <div class=\"lcb-tab active\" onclick=\"lcbTab('dash',this)\">\ud83d\udcca Torre de Controle<\/div>\n    <div class=\"lcb-tab\" onclick=\"lcbTab('op',this)\">\ud83d\udcc5 Opera\u00e7\u00e3o Di\u00e1ria<\/div>\n    <div class=\"lcb-tab\" onclick=\"lcbTab('ppp',this)\">\ud83c\udfaf PPP \/ PPF<\/div>\n    <div class=\"lcb-tab\" onclick=\"lcbTab('perf',this)\">\ud83d\udc64 Performance<\/div>\n    <div class=\"lcb-tab\" onclick=\"lcbTab('sla',this)\">\u23f1 SLA<\/div>\n    <div class=\"lcb-tab\" onclick=\"lcbTab('base',this)\">\ud83d\uddc3 Base<\/div>\n    <div class=\"lcb-tab\" onclick=\"lcbTab('upload',this)\">\u2b06 Atualizar<\/div>\n  <\/div>\n\n  <div class=\"lcb-filters\" id=\"lcb-filters\">\n    <button class=\"lcb-qbtn active\" onclick=\"lcbQuick('todos',this)\">Todos<\/button>\n    <button class=\"lcb-qbtn\" onclick=\"lcbQuick('hoje',this)\">Hoje<\/button>\n    <button class=\"lcb-qbtn\" onclick=\"lcbQuick('ontem',this)\">Ontem<\/button>\n    <button class=\"lcb-qbtn\" onclick=\"lcbQuick('7d',this)\">7 dias<\/button>\n    <button class=\"lcb-qbtn\" onclick=\"lcbQuick('30d',this)\">30 dias<\/button>\n    <button class=\"lcb-qbtn\" onclick=\"lcbQuick('mes',this)\">Este m\u00eas<\/button>\n    <div class=\"lcb-sep\"><\/div>\n    <input class=\"lcb-inp\" type=\"date\" id=\"lcb-de\" placeholder=\"De\">\n    <input class=\"lcb-inp\" type=\"date\" id=\"lcb-ate\" placeholder=\"At\u00e9\">\n    <select class=\"lcb-sel\" id=\"lcb-fator\"><option value=\"\">Ator: Todos<\/option><\/select>\n    <button class=\"lcb-btn\" onclick=\"lcbFiltrar()\">Filtrar<\/button>\n    <button class=\"lcb-btn\" style=\"background:transparent;color:var(--text2);border:1px solid var(--border)\" onclick=\"lcbLimpar()\">Limpar<\/button>\n  <\/div>\n\n  <!-- DASHBOARD -->\n  <div class=\"lcb-page active\" id=\"lcb-dash\">\n    <div class=\"lcb-kpis\" id=\"lcb-kpis\"><\/div>\n    <div class=\"lcb-g3\">\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">Volume por Dia<\/div><div class=\"lcb-chart\" id=\"lcb-chart-vol\"><\/div><\/div>\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">Resultado das An\u00e1lises<\/div><div class=\"lcb-bars\" id=\"lcb-chart-res\"><\/div><\/div>\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">SLA<\/div><div class=\"lcb-bars\" id=\"lcb-chart-sla\"><\/div><\/div>\n    <\/div>\n    <div class=\"lcb-g2\">\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">Top Atores<\/div><div class=\"lcb-bars\" id=\"lcb-chart-at\"><\/div><\/div>\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">Tarefas por Tipo<\/div><div class=\"lcb-bars\" id=\"lcb-chart-tar\"><\/div><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- OPERA\u00c7\u00c3O -->\n  <div class=\"lcb-page\" id=\"lcb-op\">\n    <div class=\"lcb-card\" style=\"display:flex;align-items:center;gap:12px;margin-bottom:14px\">\n      <span style=\"font-size:13px;color:var(--text2)\">Data:<\/span>\n      <input type=\"date\" id=\"lcb-opdata\" class=\"lcb-inp\" style=\"font-size:14px\" onchange=\"lcbOpDia()\">\n    <\/div>\n    <div class=\"lcb-kpis\" style=\"grid-template-columns:repeat(4,1fr)\" id=\"lcb-op-kpis\"><\/div>\n    <div class=\"lcb-card\"><div class=\"lcb-card-t\">Por Ator<\/div><div style=\"overflow-x:auto\"><table class=\"lcb-tbl\"><thead><tr><th>Ator<\/th><th>Time<\/th><th>Total<\/th><th>Desqual.<\/th><th>PPF<\/th><th>PPP<\/th><th>Negoc.<\/th><th>SLA\u2713<\/th><th>SLA\u2717<\/th><\/tr><\/thead><tbody id=\"lcb-op-tb\"><\/tbody><\/table><\/div><\/div>\n  <\/div>\n\n  <!-- PPP\/PPF -->\n  <div class=\"lcb-page\" id=\"lcb-ppp\">\n    <div class=\"lcb-funil\" id=\"lcb-funil\"><\/div>\n    <div class=\"lcb-g2\">\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">PPP por Ator<\/div><div class=\"lcb-bars\" id=\"lcb-ppp-at\"><\/div><\/div>\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">PPF por Ator<\/div><div class=\"lcb-bars\" id=\"lcb-ppf-at\"><\/div><\/div>\n    <\/div>\n    <div class=\"lcb-card\"><div class=\"lcb-card-t\">Evolu\u00e7\u00e3o Di\u00e1ria<\/div><div style=\"overflow-x:auto\"><table class=\"lcb-tbl\"><thead><tr><th>Data<\/th><th>PPP<\/th><th>PPF<\/th><th>Desqual.<\/th><th>Total<\/th><th>Conv.%<\/th><\/tr><\/thead><tbody id=\"lcb-ppp-tb\"><\/tbody><\/table><\/div><\/div>\n  <\/div>\n\n  <!-- PERFORMANCE -->\n  <div class=\"lcb-page\" id=\"lcb-perf\">\n    <div class=\"lcb-card\"><div style=\"overflow-x:auto\"><table class=\"lcb-tbl\"><thead><tr><th>#<\/th><th>Ator<\/th><th>Time<\/th><th>Total<\/th><th>Desqual.<\/th><th>PPF<\/th><th>PPP<\/th><th>Negoc.<\/th><th>SLA\u2713<\/th><th>SLA\u2717<\/th><th>Conv.%<\/th><\/tr><\/thead><tbody id=\"lcb-perf-tb\"><\/tbody><\/table><\/div><\/div>\n  <\/div>\n\n  <!-- SLA -->\n  <div class=\"lcb-page\" id=\"lcb-sla\">\n    <div class=\"lcb-kpis\" style=\"grid-template-columns:repeat(4,1fr)\" id=\"lcb-sla-kpis\"><\/div>\n    <div class=\"lcb-g2\">\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">SLA por Ator<\/div><div class=\"lcb-bars\" id=\"lcb-sla-at\"><\/div><\/div>\n      <div class=\"lcb-card\"><div class=\"lcb-card-t\">SLA por Tarefa<\/div><div class=\"lcb-bars\" id=\"lcb-sla-tar\"><\/div><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- BASE -->\n  <div class=\"lcb-page\" id=\"lcb-base\">\n    <div class=\"lcb-card\" style=\"display:flex;gap:8px;align-items:center;margin-bottom:14px\">\n      <input type=\"text\" id=\"lcb-busca\" class=\"lcb-inp\" style=\"flex:1\" placeholder=\"\ud83d\udd0d ID, ator, tarefa...\">\n      <button class=\"lcb-btn\" onclick=\"lcbBuscar()\">Buscar<\/button>\n      <span id=\"lcb-base-cnt\" style=\"font-size:12px;color:var(--text3)\"><\/span>\n    <\/div>\n    <div class=\"lcb-card\"><div style=\"overflow-x:auto\"><table class=\"lcb-tbl\"><thead><tr><th>ID Pai<\/th><th>Data<\/th><th>Tarefa<\/th><th>Ator<\/th><th>Time<\/th><th>Resultado<\/th><th>SLA<\/th><th>Lead Time<\/th><\/tr><\/thead><tbody id=\"lcb-base-tb\"><\/tbody><\/table><\/div>\n    <div id=\"lcb-pag\" style=\"display:flex;justify-content:center;gap:6px;margin-top:10px\"><\/div><\/div>\n  <\/div>\n\n  <!-- UPLOAD -->\n  <div class=\"lcb-page\" id=\"lcb-upload\">\n    <div class=\"lcb-card\" style=\"margin-bottom:14px\">\n      <div style=\"font-size:15px;font-weight:700;color:var(--text);margin-bottom:4px\">Atualiza\u00e7\u00e3o Di\u00e1ria do Zeev<\/div>\n      <div style=\"font-size:12px;color:var(--text3)\">Envie as bases exportadas do Zeev. Os dados s\u00e3o salvos no banco sem apagar o hist\u00f3rico.<\/div>\n    <\/div>\n    <div class=\"lcb-upload-grid\">\n      <div class=\"lcb-ubox\" id=\"lcb-box-ps\"><input type=\"file\" accept=\".csv\" onchange=\"lcbArq('ps',this)\"><div class=\"lcb-ubox-icon\">\ud83d\udccb<\/div><div class=\"lcb-ubox-t\">1. Pai \u2014 Solicita\u00e7\u00f5es<\/div><div class=\"lcb-ubox-s\">CSV do Zeev<\/div><div id=\"lcb-st-ps\" style=\"font-size:11px;margin-top:6px;color:var(--text3)\">\u2b06 Pendente<\/div><\/div>\n      <div class=\"lcb-ubox\" id=\"lcb-box-pl\"><input type=\"file\" accept=\".csv\" onchange=\"lcbArq('pl',this)\"><div class=\"lcb-ubox-icon\">\ud83d\udcca<\/div><div class=\"lcb-ubox-t\">2. Pai \u2014 Log de Horas<\/div><div class=\"lcb-ubox-s\">CSV do Zeev<\/div><div id=\"lcb-st-pl\" style=\"font-size:11px;margin-top:6px;color:var(--text3)\">\u2b06 Pendente<\/div><\/div>\n      <div class=\"lcb-ubox\" id=\"lcb-box-fs\"><input type=\"file\" accept=\".csv\" onchange=\"lcbArq('fs',this)\"><div class=\"lcb-ubox-icon\">\ud83d\udcc1<\/div><div class=\"lcb-ubox-t\">3. Filho \u2014 Solicita\u00e7\u00f5es<\/div><div class=\"lcb-ubox-s\">CSV do Zeev<\/div><div id=\"lcb-st-fs\" style=\"font-size:11px;margin-top:6px;color:var(--text3)\">\u2b06 Pendente<\/div><\/div>\n      <div class=\"lcb-ubox\" id=\"lcb-box-fl\"><input type=\"file\" accept=\".csv\" onchange=\"lcbArq('fl',this)\"><div class=\"lcb-ubox-icon\">\u23f1<\/div><div class=\"lcb-ubox-t\">4. Filho \u2014 Log de Horas<\/div><div class=\"lcb-ubox-s\">CSV do Zeev<\/div><div id=\"lcb-st-fl\" style=\"font-size:11px;margin-top:6px;color:var(--text3)\">\u2b06 Pendente<\/div><\/div>\n    <\/div>\n    <button class=\"lcb-ubtn\" id=\"lcb-ubtn\" onclick=\"lcbProcessar()\">\u2b06 ATUALIZAR DADOS<\/button>\n    <div class=\"lcb-progress\" id=\"lcb-prog\"><\/div>\n    <div id=\"lcb-resultado\"><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"lcb-toast\" id=\"lcb-toast\"><\/div>\n\n<script>\n(function(){\n\/\/ CONFIG\nvar SUPA_URL='https:\/\/mnxpwcnbumqujchoierf.supabase.co';\nvar SUPA_KEY='sb_publishable_7EN07BrffW3M6GXIcawsWQ_bXxOFr4h';\n\n\/\/ ESTADO\nvar logData=[],solData=[],filhoData=[];\nvar filtros={de:null,ate:null,ator:''};\nvar arqs={ps:null,pl:null,fs:null,fl:null};\nvar paginaAtual=1;\nvar POR_PAG=50;\n\n\/\/ SUPABASE REST API (sem lib externa)\nfunction supa(tabela,metodo,body,filtro){\n  var url=SUPA_URL+'\/rest\/v1\/'+tabela+(filtro||'');\n  var opts={method:metodo||'GET',headers:{'Content-Type':'application\/json','apikey':SUPA_KEY,'Authorization':'Bearer '+SUPA_KEY,'Prefer':metodo==='POST'?'return=representation':''}};\n  if(body) opts.body=JSON.stringify(body);\n  return fetch(url,opts).then(function(r){return r.json()});\n}\n\nfunction supaSelect(tabela,filtro){return supa(tabela,'GET',null,'?select=*'+(filtro||'')+'&limit=5000');}\nfunction supaUpsert(tabela,dados,chave){\n  var url=SUPA_URL+'\/rest\/v1\/'+tabela;\n  return fetch(url,{method:'POST',headers:{'Content-Type':'application\/json','apikey':SUPA_KEY,'Authorization':'Bearer '+SUPA_KEY,'Prefer':'resolution=merge-duplicates,return=minimal'},body:JSON.stringify(dados)});\n}\n\n\/\/ INIT\nfunction init(){\n  lcbQuick('todos',document.querySelector('.lcb-qbtn'));\n  carregar();\n}\n\nfunction carregar(){\n  Promise.all([\n    supaSelect('pai_log','&order=data_recebimento.desc'),\n    supaSelect('pai_solicitacoes',''),\n    supaSelect('filho_solicitacoes','')\n  ]).then(function(rs){\n    logData=Array.isArray(rs[0])?rs[0]:[];\n    solData=Array.isArray(rs[1])?rs[1]:[];\n    filhoData=Array.isArray(rs[2])?rs[2]:[];\n    var atores=[...new Set(logData.map(function(r){return r.ator}).filter(Boolean))].sort();\n    var sel=document.getElementById('lcb-fator');\n    sel.innerHTML='<option value=\"\">Ator: Todos<\/option>';\n    atores.forEach(function(a){sel.innerHTML+='<option value=\"'+a+'\">'+a+'<\/option>';});\n    renderDash();renderPerf();renderSLA();renderBase(1);renderPPP();\n    atualizarStatus();\n  }).catch(function(e){\n    document.getElementById('lcb-sdot').className='lcb-dot err';\n    document.getElementById('lcb-stxt').textContent='Erro ao conectar';\n    toast('Erro: '+e.message,'err');\n  });\n}\n\nfunction atualizarStatus(){\n  if(!logData.length){\n    document.getElementById('lcb-sdot').className='lcb-dot err';\n    document.getElementById('lcb-stxt').textContent='Sem dados \u2014 fa\u00e7a upload';\n    return;\n  }\n  document.getElementById('lcb-sdot').className='lcb-dot';\n  document.getElementById('lcb-stxt').textContent='Dados carregados \u00b7 '+logData.length+' registros';\n}\n\n\/\/ FILTROS\nfunction lcbQuick(tipo,el){\n  document.querySelectorAll('.lcb-qbtn').forEach(function(b){b.classList.remove('active');});\n  if(el) el.classList.add('active');\n  var hoje=new Date(); hoje.setHours(0,0,0,0);\n  var fmt=function(d){return d.toISOString().split('T')[0];};\n  var de=null,ate=null;\n  if(tipo==='hoje'){de=ate=fmt(hoje);}\n  else if(tipo==='ontem'){var d=new Date(hoje);d.setDate(d.getDate()-1);de=ate=fmt(d);}\n  else if(tipo==='7d'){var d=new Date(hoje);d.setDate(d.getDate()-6);de=fmt(d);ate=fmt(hoje);}\n  else if(tipo==='30d'){var d=new Date(hoje);d.setDate(d.getDate()-29);de=fmt(d);ate=fmt(hoje);}\n  else if(tipo==='mes'){var d=new Date(hoje.getFullYear(),hoje.getMonth(),1);de=fmt(d);ate=fmt(hoje);}\n  document.getElementById('lcb-de').value=de||'';\n  document.getElementById('lcb-ate').value=ate||'';\n  filtros.de=de;filtros.ate=ate;\n  lcbFiltrar();\n}\nwindow.lcbQuick=lcbQuick;\n\nfunction lcbFiltrar(){\n  filtros.de=document.getElementById('lcb-de').value||null;\n  filtros.ate=document.getElementById('lcb-ate').value||null;\n  filtros.ator=document.getElementById('lcb-fator').value;\n  renderDash();renderPerf();renderSLA();renderBase(1);renderPPP();\n}\nwindow.lcbFiltrar=lcbFiltrar;\n\nfunction lcbLimpar(){\n  document.getElementById('lcb-de').value='';\n  document.getElementById('lcb-ate').value='';\n  document.getElementById('lcb-fator').value='';\n  filtros={de:null,ate:null,ator:''};\n  document.querySelectorAll('.lcb-qbtn').forEach(function(b){b.classList.remove('active');});\n  renderDash();renderPerf();renderSLA();renderBase(1);renderPPP();\n}\nwindow.lcbLimpar=lcbLimpar;\n\nfunction filtLog(){\n  return logData.filter(function(r){\n    if(filtros.de&&r.data_recebimento<filtros.de) return false;\n    if(filtros.ate&&r.data_recebimento>filtros.ate) return false;\n    if(filtros.ator&&r.ator!==filtros.ator) return false;\n    return true;\n  });\n}\n\n\/\/ DASHBOARD\nfunction renderDash(){\n  var log=filtLog();\n  var total=log.length;\n  var desq=log.filter(function(r){return (r.resultado_tarefa||'').includes('Desqualificado');}).length;\n  var ppp=log.filter(function(r){return (r.resultado_tarefa||'').includes('PPP')||(r.resultado_tarefa||'').includes('Proposta Presente');}).length;\n  var ppf=log.filter(function(r){return (r.resultado_tarefa||'').includes('PPF')||(r.resultado_tarefa||'').includes('Proposta Futura');}).length;\n  var negoc=log.filter(function(r){return (r.resultado_tarefa||'').includes('Negocia\u00e7\u00e3o')||(r.resultado_tarefa||'').includes('Negociar');}).length;\n  var slaDentro=log.filter(function(r){return r.sla_cumprido===true;}).length;\n  var slaFora=log.filter(function(r){return r.sla_cumprido===false;}).length;\n  var pctSla=(slaDentro+slaFora)>0?Math.round(slaDentro\/(slaDentro+slaFora)*100):0;\n\n  document.getElementById('lcb-kpis').innerHTML=\n    kpi('bl','Tarefas Log',fmt(total),'per\u00edodo filtrado')+\n    kpi('gr','PPP',fmt(ppp),'Proposta Presente')+\n    kpi('te','PPF',fmt(ppf),'Proposta Futura')+\n    kpi('rd','Desqualificados',fmt(desq),total>0?Math.round(desq\/total*100)+'% do total':'')+\n    kpi('am','Negocia\u00e7\u00f5es',fmt(negoc),'Iniciadas')+\n    kpi('pu','% SLA',pctSla+'%',fmt(slaDentro)+' dentro \u00b7 '+fmt(slaFora)+' fora');\n\n  \/\/ Volume por dia\n  var porDia={};\n  log.forEach(function(r){if(r.data_recebimento) porDia[r.data_recebimento]=(porDia[r.data_recebimento]||0)+1;});\n  var dias=Object.keys(porDia).sort().slice(-12);\n  var maxV=Math.max.apply(null,dias.map(function(d){return porDia[d];})||[1]);\n  document.getElementById('lcb-chart-vol').innerHTML=dias.map(function(d){\n    var h=Math.max(Math.round(porDia[d]\/maxV*110),4);\n    var dt=new Date(d+'T12:00:00').toLocaleDateString('pt-BR',{day:'2-digit',month:'2-digit'});\n    return '<div style=\"flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0\"><div style=\"font-size:9px;color:var(--text3)\">'+porDia[d]+'<\/div><div style=\"height:'+h+'px;background:var(--blue2);border-radius:3px 3px 0 0;width:100%;max-width:28px;opacity:.8\" title=\"'+dt+'\"><\/div><div style=\"font-size:8px;color:var(--text3);transform:rotate(-35deg);white-space:nowrap;margin-top:2px\">'+dt+'<\/div><\/div>';\n  }).join('');\n\n  \/\/ Resultados\n  var res={};\n  log.forEach(function(r){var k=r.resultado_tarefa||'(vazio)';res[k]=(res[k]||0)+1;});\n  var tops=Object.entries(res).sort(function(a,b){return b[1]-a[1];}).slice(0,5);\n  var maxR=tops[0]?tops[0][1]:1;\n  document.getElementById('lcb-chart-res').innerHTML=tops.map(function(e){\n    return bar(e[0],e[1],maxR,'var(--blue2)',total>0?Math.round(e[1]\/total*100)+'%':null);\n  }).join('');\n\n  \/\/ SLA\n  document.getElementById('lcb-chart-sla').innerHTML=\n    bar('Dentro do SLA',slaDentro,Math.max(slaDentro,slaFora,1),'var(--green)',pctSla+'%')+\n    bar('Fora do SLA',slaFora,Math.max(slaDentro,slaFora,1),'var(--red)',(100-pctSla)+'%');\n\n  \/\/ Atores\n  var porAt={};\n  log.forEach(function(r){if(r.ator) porAt[r.ator]=(porAt[r.ator]||0)+1;});\n  var ats=Object.entries(porAt).sort(function(a,b){return b[1]-a[1];}).slice(0,5);\n  var maxA=ats[0]?ats[0][1]:1;\n  var cores=['var(--blue2)','var(--green)','#7c3aed','var(--amber)','#0891b2'];\n  document.getElementById('lcb-chart-at').innerHTML=ats.map(function(e,i){\n    return bar(e[0].split(' ')[0]+' '+e[0].split(' ').slice(-1)[0],e[1],maxA,cores[i]);\n  }).join('');\n\n  \/\/ Tarefas\n  var porTar={};\n  log.forEach(function(r){if(r.nome_tarefa){var k=r.nome_tarefa.substring(0,28);porTar[k]=(porTar[k]||0)+1;}});\n  var tars=Object.entries(porTar).sort(function(a,b){return b[1]-a[1];}).slice(0,5);\n  var maxT=tars[0]?tars[0][1]:1;\n  document.getElementById('lcb-chart-tar').innerHTML=tars.map(function(e){return bar(e[0],e[1],maxT,'var(--blue2)');}).join('');\n}\n\n\/\/ OPERA\u00c7\u00c3O DI\u00c1RIA\nfunction lcbOpDia(){\n  var data=document.getElementById('lcb-opdata').value;\n  if(!data) return;\n  var log=logData.filter(function(r){return r.data_recebimento===data;});\n  var total=log.length;\n  var desq=log.filter(function(r){return (r.resultado_tarefa||'').includes('Desqualificado');}).length;\n  var ppp=log.filter(function(r){return (r.resultado_tarefa||'').includes('PPP')||(r.resultado_tarefa||'').includes('Proposta Presente');}).length;\n  var ppf=log.filter(function(r){return (r.resultado_tarefa||'').includes('PPF')||(r.resultado_tarefa||'').includes('Proposta Futura');}).length;\n  var dt=new Date(data+'T12:00:00').toLocaleDateString('pt-BR',{weekday:'long',day:'2-digit',month:'long'});\n  document.getElementById('lcb-op-kpis').innerHTML=\n    kpi('bl','Tarefas',total,dt)+kpi('gr','PPP',ppp,'Proposta Presente')+kpi('te','PPF',ppf,'Proposta Futura')+kpi('rd','Desqual.',desq,total>0?Math.round(desq\/total*100)+'%':'');\n  var porA={};\n  log.forEach(function(r){\n    if(!r.ator) return;\n    if(!porA[r.ator]) porA[r.ator]={time:r.time_ator||'\u2014',total:0,desq:0,ppf:0,ppp:0,negoc:0,ok:0,nok:0};\n    porA[r.ator].total++;\n    if((r.resultado_tarefa||'').includes('Desqualificado')) porA[r.ator].desq++;\n    if((r.resultado_tarefa||'').includes('PPP')||(r.resultado_tarefa||'').includes('Proposta Presente')) porA[r.ator].ppp++;\n    if((r.resultado_tarefa||'').includes('PPF')||(r.resultado_tarefa||'').includes('Proposta Futura')) porA[r.ator].ppf++;\n    if((r.resultado_tarefa||'').includes('Negocia\u00e7\u00e3o')) porA[r.ator].negoc++;\n    if(r.sla_cumprido===true) porA[r.ator].ok++;\n    if(r.sla_cumprido===false) porA[r.ator].nok++;\n  });\n  document.getElementById('lcb-op-tb').innerHTML=Object.entries(porA).sort(function(a,b){return b[1].total-a[1].total;}).map(function(e){\n    var d=e[1];\n    return '<tr><td style=\"font-weight:600\">'+e[0]+'<\/td><td><span class=\"lcb-pill pill-bl\">'+d.time+'<\/span><\/td><td>'+d.total+'<\/td><td><span class=\"lcb-pill pill-rd\">'+d.desq+'<\/span><\/td><td>'+d.ppf+'<\/td><td>'+d.ppp+'<\/td><td>'+d.negoc+'<\/td><td style=\"color:var(--green)\">'+d.ok+'<\/td><td style=\"color:var(--red)\">'+d.nok+'<\/td><\/tr>';\n  }).join('')||'<tr><td colspan=\"9\" class=\"lcb-empty\">Nenhum dado para esta data<\/td><\/tr>';\n}\nwindow.lcbOpDia=lcbOpDia;\n\n\/\/ PPP\/PPF\nfunction renderPPP(){\n  var log=filtLog();\n  var etapas=[\n    {l:'Total',v:log.length,c:'#2563b8'},\n    {l:'PPP',v:log.filter(function(r){return (r.resultado_tarefa||'').includes('PPP')||(r.resultado_tarefa||'').includes('Proposta Presente');}).length,c:'#0d7a5f'},\n    {l:'PPF',v:log.filter(function(r){return (r.resultado_tarefa||'').includes('PPF')||(r.resultado_tarefa||'').includes('Proposta Futura');}).length,c:'#7c3aed'},\n    {l:'Negoc.',v:log.filter(function(r){return (r.resultado_tarefa||'').includes('Negocia\u00e7\u00e3o');}).length,c:'#b45309'},\n    {l:'Desqual.',v:log.filter(function(r){return (r.resultado_tarefa||'').includes('Desqualificado');}).length,c:'#ef4444'}\n  ];\n  document.getElementById('lcb-funil').innerHTML=etapas.map(function(e,i){\n    var pct=log.length>0?Math.round(e.v\/log.length*100):0;\n    return (i>0?'<div class=\"lcb-farr\">\u203a<\/div>':'')+\n      '<div class=\"lcb-fstep\" style=\"border-color:'+e.c+'20;background:'+e.c+'10\"><div class=\"lcb-fn\" style=\"color:'+e.c+'\">'+fmt(e.v)+'<\/div><div class=\"lcb-fl\">'+e.l+'<\/div><div class=\"lcb-fp\" style=\"color:'+e.c+'\">'+pct+'%<\/div><\/div>';\n  }).join('');\n\n  var pppAt={},ppfAt={};\n  log.forEach(function(r){\n    if(!r.ator) return;\n    if((r.resultado_tarefa||'').includes('PPP')||(r.resultado_tarefa||'').includes('Proposta Presente')) pppAt[r.ator]=(pppAt[r.ator]||0)+1;\n    if((r.resultado_tarefa||'').includes('PPF')||(r.resultado_tarefa||'').includes('Proposta Futura')) ppfAt[r.ator]=(ppfAt[r.ator]||0)+1;\n  });\n  var maxP=Math.max.apply(null,Object.values(pppAt).concat([1]));\n  var maxF=Math.max.apply(null,Object.values(ppfAt).concat([1]));\n  document.getElementById('lcb-ppp-at').innerHTML=Object.entries(pppAt).sort(function(a,b){return b[1]-a[1];}).map(function(e){return bar(e[0].split(' ')[0],e[1],maxP,'var(--green)');}).join('')||'<div class=\"lcb-empty\">Sem dados PPP<\/div>';\n  document.getElementById('lcb-ppf-at').innerHTML=Object.entries(ppfAt).sort(function(a,b){return b[1]-a[1];}).map(function(e){return bar(e[0].split(' ')[0],e[1],maxF,'#7c3aed');}).join('')||'<div class=\"lcb-empty\">Sem dados PPF<\/div>';\n\n  var porDia={};\n  log.forEach(function(r){\n    var d=r.data_recebimento; if(!d) return;\n    if(!porDia[d]) porDia[d]={ppp:0,ppf:0,desq:0,total:0};\n    porDia[d].total++;\n    if((r.resultado_tarefa||'').includes('PPP')||(r.resultado_tarefa||'').includes('Proposta Presente')) porDia[d].ppp++;\n    if((r.resultado_tarefa||'').includes('PPF')||(r.resultado_tarefa||'').includes('Proposta Futura')) porDia[d].ppf++;\n    if((r.resultado_tarefa||'').includes('Desqualificado')) porDia[d].desq++;\n  });\n  document.getElementById('lcb-ppp-tb').innerHTML=Object.keys(porDia).sort().reverse().map(function(d){\n    var v=porDia[d];\n    var dt=new Date(d+'T12:00:00').toLocaleDateString('pt-BR');\n    return '<tr><td>'+dt+'<\/td><td>'+v.ppp+'<\/td><td>'+v.ppf+'<\/td><td>'+v.desq+'<\/td><td>'+v.total+'<\/td><td>'+(v.total>0?Math.round(v.ppp\/v.total*100):0)+'%<\/td><\/tr>';\n  }).join('')||'<tr><td colspan=\"6\" class=\"lcb-empty\">Sem dados<\/td><\/tr>';\n}\n\n\/\/ PERFORMANCE\nfunction renderPerf(){\n  var log=filtLog();\n  var porA={};\n  log.forEach(function(r){\n    if(!r.ator) return;\n    if(!porA[r.ator]) porA[r.ator]={time:r.time_ator||'\u2014',total:0,desq:0,ppf:0,ppp:0,negoc:0,ok:0,nok:0};\n    porA[r.ator].total++;\n    var res=r.resultado_tarefa||'';\n    if(res.includes('Desqualificado')) porA[r.ator].desq++;\n    if(res.includes('PPP')||res.includes('Proposta Presente')) porA[r.ator].ppp++;\n    if(res.includes('PPF')||res.includes('Proposta Futura')) porA[r.ator].ppf++;\n    if(res.includes('Negocia\u00e7\u00e3o')||res.includes('Negociar')) porA[r.ator].negoc++;\n    if(r.sla_cumprido===true) porA[r.ator].ok++;\n    if(r.sla_cumprido===false) porA[r.ator].nok++;\n  });\n  document.getElementById('lcb-perf-tb').innerHTML=Object.entries(porA).sort(function(a,b){return b[1].total-a[1].total;}).map(function(e,i){\n    var d=e[1];\n    var conv=d.total>0?Math.round((d.ppp+d.negoc)\/d.total*100):0;\n    return '<tr><td style=\"color:var(--text3);font-weight:600\">'+(i+1)+'<\/td><td style=\"font-weight:600\">'+e[0]+'<\/td><td><span class=\"lcb-pill pill-bl\">'+d.time+'<\/span><\/td><td>'+d.total+'<\/td><td><span class=\"lcb-pill pill-rd\">'+d.desq+'<\/span><\/td><td>'+d.ppf+'<\/td><td>'+d.ppp+'<\/td><td>'+d.negoc+'<\/td><td style=\"color:var(--green)\">'+d.ok+'<\/td><td style=\"color:var(--red)\">'+d.nok+'<\/td><td style=\"font-weight:600;color:'+(conv>5?'var(--green)':'var(--amber)')+'\">'+conv+'%<\/td><\/tr>';\n  }).join('')||'<tr><td colspan=\"11\" class=\"lcb-empty\">Sem dados<\/td><\/tr>';\n}\n\n\/\/ SLA\nfunction renderSLA(){\n  var log=filtLog();\n  var dentro=log.filter(function(r){return r.sla_cumprido===true;}).length;\n  var fora=log.filter(function(r){return r.sla_cumprido===false;}).length;\n  var sem=log.filter(function(r){return r.sla_cumprido===null;}).length;\n  var pct=(dentro+fora)>0?Math.round(dentro\/(dentro+fora)*100):0;\n  document.getElementById('lcb-sla-kpis').innerHTML=\n    kpi('gr','Dentro do SLA',dentro,pct+'% do total')+\n    kpi('rd','Fora do SLA',fora,(100-pct)+'% do total')+\n    kpi('am','Sem SLA',sem,'sem prazo')+\n    kpi('bl','% SLA Geral',pct+'%','tarefas no prazo');\n\n  var porA={};\n  log.forEach(function(r){\n    if(!r.ator||r.sla_cumprido===null) return;\n    if(!porA[r.ator]) porA[r.ator]={ok:0,nok:0};\n    if(r.sla_cumprido) porA[r.ator].ok++; else porA[r.ator].nok++;\n  });\n  document.getElementById('lcb-sla-at').innerHTML=Object.entries(porA).sort(function(a,b){return (b[1].ok+b[1].nok)-(a[1].ok+a[1].nok);}).slice(0,5).map(function(e){\n    var t=e[1].ok+e[1].nok;\n    var p=Math.round(e[1].ok\/t*100);\n    return bar(e[0].split(' ')[0],p,100,p>=80?'var(--green)':p>=60?'var(--amber)':'var(--red)',p+'%');\n  }).join('');\n\n  var porT={};\n  log.forEach(function(r){\n    if(!r.nome_tarefa||r.sla_cumprido===null) return;\n    var k=r.nome_tarefa.substring(0,22);\n    if(!porT[k]) porT[k]={ok:0,nok:0};\n    if(r.sla_cumprido) porT[k].ok++; else porT[k].nok++;\n  });\n  document.getElementById('lcb-sla-tar').innerHTML=Object.entries(porT).sort(function(a,b){return (b[1].ok+b[1].nok)-(a[1].ok+a[1].nok);}).slice(0,5).map(function(e){\n    var t=e[1].ok+e[1].nok;\n    var p=Math.round(e[1].ok\/t*100);\n    return bar(e[0],p,100,p>=80?'var(--green)':'var(--amber)',p+'%');\n  }).join('');\n}\n\n\/\/ BASE\nfunction renderBase(pg){\n  paginaAtual=pg;\n  var dados=filtLog();\n  var busca=(document.getElementById('lcb-busca')||{}).value;\n  if(busca&&busca.toLowerCase){\n    var b=busca.toLowerCase();\n    dados=dados.filter(function(r){return (r.pai_id+'').includes(b)||(r.ator||'').toLowerCase().includes(b)||(r.nome_tarefa||'').toLowerCase().includes(b)||(r.resultado_tarefa||'').toLowerCase().includes(b);});\n  }\n  var total=dados.length;\n  var ini=(pg-1)*POR_PAG;\n  var pag=dados.slice(ini,ini+POR_PAG);\n  document.getElementById('lcb-base-cnt').textContent=total+' registros';\n  document.getElementById('lcb-base-tb').innerHTML=pag.map(function(r){\n    return '<tr><td style=\"font-weight:600;color:var(--blue2)\">#'+r.pai_id+'<\/td><td>'+(r.data_recebimento?new Date(r.data_recebimento+'T12:00:00').toLocaleDateString('pt-BR'):'\u2014')+'<\/td><td>'+(r.nome_tarefa||'\u2014')+'<\/td><td>'+(r.ator||'\u2014')+'<\/td><td>'+(r.time_ator||'\u2014')+'<\/td><td>'+(r.resultado_tarefa||'\u2014')+'<\/td><td>'+(r.sla_cumprido===true?'<span class=\"lcb-pill pill-gr\">\u2713 SLA<\/span>':r.sla_cumprido===false?'<span class=\"lcb-pill pill-rd\">\u2717 Fora<\/span>':'\u2014')+'<\/td><td style=\"text-align:right\">'+(r.lead_time_tarefa_dias!==null?r.lead_time_tarefa_dias+'d':'\u2014')+'<\/td><\/tr>';\n  }).join('')||'<tr><td colspan=\"8\" class=\"lcb-empty\">Sem registros<\/td><\/tr>';\n  var totalPags=Math.ceil(total\/POR_PAG);\n  document.getElementById('lcb-pag').innerHTML=[...Array(Math.min(totalPags,10))].map(function(_,i){\n    return '<button onclick=\"lcbBasePag('+(i+1)+')\" style=\"padding:3px 9px;border:1px solid var(--border);border-radius:5px;cursor:pointer;background:'+(i+1===pg?'var(--blue)':'var(--surface)')+';color:'+(i+1===pg?'#fff':'var(--text2)')+';font-size:11px\">'+(i+1)+'<\/button>';\n  }).join('');\n}\nwindow.lcbBuscar=function(){renderBase(1);};\nwindow.lcbBasePag=function(p){renderBase(p);};\n\n\/\/ UPLOAD\nfunction lcbArq(base,input){\n  var file=input.files[0]; if(!file) return;\n  arqs[base]=file;\n  document.getElementById('lcb-box-'+base).className='lcb-ubox ok';\n  document.getElementById('lcb-st-'+base).innerHTML='<span style=\"color:var(--green)\">\u2713 '+file.name+'<\/span>';\n}\nwindow.lcbArq=lcbArq;\n\nfunction lcbProcessar(){\n  var tem=Object.values(arqs).some(function(a){return a!==null;});\n  if(!tem){toast('Selecione pelo menos um arquivo','err');return;}\n  var btn=document.getElementById('lcb-ubtn');\n  btn.disabled=true;\n  btn.innerHTML='<span class=\"lcb-spin\"><\/span> Processando...';\n  var prog=document.getElementById('lcb-prog');\n  prog.style.display='block';\n  var steps=[\n    {id:'s1',t:'Validando arquivos...'},\n    {id:'s2',t:'Processando Pai \u2014 Solicita\u00e7\u00f5es...'},\n    {id:'s3',t:'Processando Pai \u2014 Log de Horas...'},\n    {id:'s4',t:'Processando Filho \u2014 Solicita\u00e7\u00f5es...'},\n    {id:'s5',t:'Salvando no banco...'},\n    {id:'s6',t:'Recarregando dados...'}\n  ];\n  prog.innerHTML=steps.map(function(s){return '<div class=\"lcb-step\" id=\"'+s.id+'\"><div class=\"lcb-step-ic sp\">\u25cb<\/div><div class=\"lcb-step-t\">'+s.t+'<\/div><\/div>';}).join('');\n\n  var resultado={ok:0,err:0};\n\n  function setStep(id,cls,ic){\n    var el=document.getElementById(id); if(!el) return;\n    el.querySelector('.lcb-step-ic').className='lcb-step-ic '+cls;\n    el.querySelector('.lcb-step-ic').textContent=ic;\n  }\n\n  function lerCSV(file){\n    return new Promise(function(res,rej){\n      var reader=new FileReader();\n      reader.onload=function(e){\n        var txt=e.target.result;\n        var linhas=txt.split('\\n');\n        var sep=';';\n        var cabecalho=linhas[0].split(sep).map(function(c){return c.trim().replace(\/^\"|\"$\/g,'');});\n        var dados=[];\n        for(var i=1;i<linhas.length;i++){\n          if(!linhas[i].trim()) continue;\n          var cols=linhas[i].split(sep);\n          var obj={};\n          cabecalho.forEach(function(c,j){obj[c]=(cols[j]||'').trim().replace(\/^\"|\"$\/g,'');});\n          dados.push(obj);\n        }\n        res(dados);\n      };\n      reader.onerror=rej;\n      reader.readAsText(file,'UTF-8');\n    });\n  }\n\n  function pDate(v){\n    if(!v||!v.trim()) return null;\n    var p=v.trim().split('\/');\n    if(p.length===3) return p[2]+'-'+p[1].padStart(2,'0')+'-'+p[0].padStart(2,'0');\n    return null;\n  }\n  function pNum(v){\n    if(!v||!v.trim()) return null;\n    return parseFloat(v.replace(\/\\.\/g,'').replace(',','.'))||null;\n  }\n  function faixaAging(d){\n    if(d===null) return 'Conclu\u00edda';\n    if(d<=1) return '0-1 dia'; if(d<=3) return '2-3 dias'; if(d<=7) return '4-7 dias';\n    if(d<=15) return '8-15 dias'; if(d<=30) return '16-30 dias'; if(d<=60) return '31-60 dias';\n    if(d<=90) return '61-90 dias'; return '90+ dias';\n  }\n\n  setStep('s1','sa','\u22ef');\n  setTimeout(function(){\n    setStep('s1','sd','\u2713');\n\n    \/\/ PAI SOL\n    setStep('s2','sa','\u22ef');\n    var p2=arqs.ps?lerCSV(arqs.ps).then(function(linhas){\n      var batch=linhas.slice(0,500).map(function(l){\n        var paiId=parseInt(l['N\u00famero da solicita\u00e7\u00e3o']); if(!paiId) return null;\n        return {pai_id:paiId,tipo_solicitacao:l['Tipo de solicita\u00e7\u00e3o'],data_abertura:pDate(l['Data de solicita\u00e7\u00e3o']),data_conclusao:pDate(l['Data de conclus\u00e3o']),status_solicitacao:l['Status da solicita\u00e7\u00e3o'],resultado_solicitacao:l['Resultado da solicita\u00e7\u00e3o'],solicitante_nome:l['Solicitante \/ Nome'],lead_time_dias:pNum(l['Lead time (em dias)']),ultima_atualizacao:new Date().toISOString()};\n      }).filter(Boolean);\n      return supaUpsert('pai_solicitacoes',batch,'pai_id').then(function(){resultado.ok+=batch.length;});\n    }):Promise.resolve();\n\n    p2.then(function(){\n      setStep('s2','sd','\u2713');\n      setStep('s3','sa','\u22ef');\n\n      \/\/ PAI LOG\n      var p3=arqs.pl?lerCSV(arqs.pl).then(function(linhas){\n        var batch=linhas.slice(0,500).map(function(l){\n          var paiId=parseInt(l['N\u00famero da solicita\u00e7\u00e3o']);\n          var tarefaId=parseInt(l['N\u00famero da inst\u00e2ncia da tarefa']);\n          if(!paiId||!tarefaId) return null;\n          var dRec=pDate(l['Data de recebimento']);\n          var dLim=pDate(l['Data Limite \/ SLA']);\n          var dFin=pDate(l['Data de finaliza\u00e7\u00e3o']);\n          var slaOk=dFin&&dLim?dFin<=dLim:null;\n          var diasAt=!dFin&&dRec?Math.round((new Date()-new Date(dRec))\/86400000):null;\n          return {tarefa_id:tarefaId,pai_id:paiId,nome_tarefa:l['Tarefa'],ator:l['Ator \/ Nome'],ator_id:parseInt(l['Ator'])||null,time_ator:l['Ator \/ Time'],data_recebimento:dRec,data_limite_sla:dLim,data_finalizacao:dFin,resultado_tarefa:l['Status da tarefa'],lead_time_tarefa_dias:pNum(l['Lead time da tarefas em dias']),sla_cumprido:slaOk,dias_atraso:dFin&&dLim?Math.round((new Date(dFin)-new Date(dLim))\/86400000):null,classificacao_sla:slaOk===null?'Sem SLA':slaOk?'Dentro do SLA':'Fora do SLA',aging_dias:diasAt,faixa_aging:faixaAging(diasAt),mes_ano:dRec?dRec.substring(0,7):null,ultima_atualizacao:new Date().toISOString()};\n        }).filter(Boolean);\n        return supaUpsert('pai_log',batch,'tarefa_id').then(function(){resultado.ok+=batch.length;});\n      }):Promise.resolve();\n\n      p3.then(function(){\n        setStep('s3','sd','\u2713');\n        setStep('s4','sa','\u22ef');\n\n        \/\/ FILHO SOL\n        var p4=arqs.fs?lerCSV(arqs.fs).then(function(linhas){\n          var batch=linhas.slice(0,500).map(function(l){\n            var fId=parseInt(l['N\u00famero da solicita\u00e7\u00e3o']); if(!fId) return null;\n            return {filho_id:fId,data_abertura:pDate(l['Data de solicita\u00e7\u00e3o']),data_conclusao:pDate(l['Data de conclus\u00e3o']),status_solicitacao:l['Status da solicita\u00e7\u00e3o'],resultado_filho:l['Resultado da solicita\u00e7\u00e3o'],ultima_atualizacao:new Date().toISOString()};\n          }).filter(Boolean);\n          return supaUpsert('filho_solicitacoes',batch,'filho_id').then(function(){resultado.ok+=batch.length;});\n        }):Promise.resolve();\n\n        p4.then(function(){\n          setStep('s4','sd','\u2713');\n          setStep('s5','sa','\u22ef');\n          setTimeout(function(){\n            setStep('s5','sd','\u2713');\n            setStep('s6','sa','\u22ef');\n            carregar();\n            setTimeout(function(){\n              setStep('s6','sd','\u2713');\n              document.getElementById('lcb-resultado').innerHTML='<div class=\"lcb-card\" style=\"text-align:center;padding:20px\"><div style=\"font-size:28px;margin-bottom:10px\">\u2705<\/div><div style=\"font-size:16px;font-weight:700;color:var(--green);margin-bottom:6px\">Atualiza\u00e7\u00e3o conclu\u00edda<\/div><div style=\"font-size:12px;color:var(--text2)\">Processados: <strong>'+resultado.ok+'<\/strong> \u00b7 Erros: <strong>'+resultado.err+'<\/strong><\/div><div style=\"font-size:11px;color:var(--text3);margin-top:4px\">'+new Date().toLocaleString('pt-BR')+'<\/div><\/div>';\n              btn.disabled=false;\n              btn.innerHTML='\u2b06 ATUALIZAR DADOS';\n              toast('Dados atualizados!','ok');\n            },800);\n          },500);\n        }).catch(function(e){setStep('s4','se','\u2717');btn.disabled=false;btn.innerHTML='\u2b06 ATUALIZAR DADOS';toast('Erro: '+e.message,'err');});\n      }).catch(function(e){setStep('s3','se','\u2717');btn.disabled=false;btn.innerHTML='\u2b06 ATUALIZAR DADOS';toast('Erro: '+e.message,'err');});\n    }).catch(function(e){setStep('s2','se','\u2717');btn.disabled=false;btn.innerHTML='\u2b06 ATUALIZAR DADOS';toast('Erro: '+e.message,'err');});\n  },300);\n}\nwindow.lcbProcessar=lcbProcessar;\n\n\/\/ TABS\nfunction lcbTab(id,el){\n  document.querySelectorAll('.lcb-page').forEach(function(p){p.classList.remove('active');});\n  document.querySelectorAll('.lcb-tab').forEach(function(t){t.classList.remove('active');});\n  document.getElementById('lcb-'+id).classList.add('active');\n  if(el) el.classList.add('active');\n  var mostrarF=['dash','op','ppp','perf','sla','base'].includes(id);\n  document.getElementById('lcb-filters').style.display=mostrarF?'flex':'none';\n}\nwindow.lcbTab=lcbTab;\n\n\/\/ UTILS\nfunction kpi(cls,lbl,val,sub){return '<div class=\"lcb-kpi '+cls+'\"><div class=\"lcb-kpi-l\">'+lbl+'<\/div><div class=\"lcb-kpi-v\">'+val+'<\/div><div class=\"lcb-kpi-s\">'+(sub||'')+'<\/div><\/div>';}\nfunction bar(lbl,val,max,cor,extra){return '<div class=\"lcb-bar\"><div class=\"lcb-bl\" title=\"'+lbl+'\">'+lbl+'<\/div><div class=\"lcb-bt\"><div class=\"lcb-bf\" style=\"width:'+Math.round(val\/max*100)+'%;background:'+cor+'\"><\/div><\/div><div class=\"lcb-bv\">'+val+'<\/div>'+(extra?'<div style=\"font-size:10px;color:var(--text3);min-width:28px;text-align:right\">'+extra+'<\/div>':'')+'<\/div>';}\nfunction fmt(n){return (n||0).toLocaleString('pt-BR');}\nfunction toast(msg,tipo){var t=document.getElementById('lcb-toast');t.textContent=msg;t.style.background=tipo==='err'?'#b91c1c':tipo==='ok'?'#0d7a5f':'#0f172a';t.classList.add('show');setTimeout(function(){t.classList.remove('show');},3000);}\n\n\/\/ START\ninit();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>LC Torre de Controle Operacional LCbank \u00b7 Precat\u00f3rios &#038; RPV Carregando&#8230; \ud83d\udcca Torre de Controle \ud83d\udcc5 Opera\u00e7\u00e3o Di\u00e1ria \ud83c\udfaf PPP \/ PPF \ud83d\udc64 Performance \u23f1 SLA \ud83d\uddc3 Base \u2b06 Atualizar Todos Hoje Ontem 7 dias 30 dias Este m\u00eas Ator: Todos Filtrar Limpar Volume por Dia Resultado das An\u00e1lises SLA Top Atores Tarefas por Tipo [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-2008","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Elementor #2008 - Precat\u00f3rio Estadual | LCbank<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/precatorioestadual.com.br\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Elementor #2008 - Precat\u00f3rio Estadual | LCbank\" \/>\n<meta property=\"og:description\" content=\"LC Torre de Controle Operacional LCbank \u00b7 Precat\u00f3rios &#038; RPV Carregando&#8230; \ud83d\udcca Torre de Controle \ud83d\udcc5 Opera\u00e7\u00e3o Di\u00e1ria \ud83c\udfaf PPP \/ PPF \ud83d\udc64 Performance \u23f1 SLA \ud83d\uddc3 Base \u2b06 Atualizar Todos Hoje Ontem 7 dias 30 dias Este m\u00eas Ator: Todos Filtrar Limpar Volume por Dia Resultado das An\u00e1lises SLA Top Atores Tarefas por Tipo [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/precatorioestadual.com.br\/\" \/>\n<meta property=\"og:site_name\" content=\"Precat\u00f3rio Estadual | LCbank\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-16T18:20:20+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/precatorioestadual.com.br\\\/\",\"url\":\"https:\\\/\\\/precatorioestadual.com.br\\\/\",\"name\":\"Elementor #2008 - Precat\u00f3rio Estadual | LCbank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/precatorioestadual.com.br\\\/#website\"},\"datePublished\":\"2026-09-16T18:09:11+00:00\",\"dateModified\":\"2026-09-16T18:20:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/precatorioestadual.com.br\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/precatorioestadual.com.br\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/precatorioestadual.com.br\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/precatorioestadual.com.br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Elementor #2008\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/precatorioestadual.com.br\\\/#website\",\"url\":\"https:\\\/\\\/precatorioestadual.com.br\\\/\",\"name\":\"Precat\u00f3rio Estadual | LCbank\",\"description\":\"Suporte completo e gratuito na venda de cr\u00e9ditos judiciais\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/precatorioestadual.com.br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Elementor #2008 - Precat\u00f3rio Estadual | LCbank","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/precatorioestadual.com.br\/","og_locale":"pt_BR","og_type":"article","og_title":"Elementor #2008 - Precat\u00f3rio Estadual | LCbank","og_description":"LC Torre de Controle Operacional LCbank \u00b7 Precat\u00f3rios &#038; RPV Carregando&#8230; \ud83d\udcca Torre de Controle \ud83d\udcc5 Opera\u00e7\u00e3o Di\u00e1ria \ud83c\udfaf PPP \/ PPF \ud83d\udc64 Performance \u23f1 SLA \ud83d\uddc3 Base \u2b06 Atualizar Todos Hoje Ontem 7 dias 30 dias Este m\u00eas Ator: Todos Filtrar Limpar Volume por Dia Resultado das An\u00e1lises SLA Top Atores Tarefas por Tipo [&hellip;]","og_url":"https:\/\/precatorioestadual.com.br\/","og_site_name":"Precat\u00f3rio Estadual | LCbank","article_modified_time":"2026-09-16T18:20:20+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/precatorioestadual.com.br\/","url":"https:\/\/precatorioestadual.com.br\/","name":"Elementor #2008 - Precat\u00f3rio Estadual | LCbank","isPartOf":{"@id":"https:\/\/precatorioestadual.com.br\/#website"},"datePublished":"2026-09-16T18:09:11+00:00","dateModified":"2026-09-16T18:20:20+00:00","breadcrumb":{"@id":"https:\/\/precatorioestadual.com.br\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/precatorioestadual.com.br\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/precatorioestadual.com.br\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/precatorioestadual.com.br\/"},{"@type":"ListItem","position":2,"name":"Elementor #2008"}]},{"@type":"WebSite","@id":"https:\/\/precatorioestadual.com.br\/#website","url":"https:\/\/precatorioestadual.com.br\/","name":"Precat\u00f3rio Estadual | LCbank","description":"Suporte completo e gratuito na venda de cr\u00e9ditos judiciais","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/precatorioestadual.com.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=\/wp\/v2\/pages\/2008","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2008"}],"version-history":[{"count":5,"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=\/wp\/v2\/pages\/2008\/revisions"}],"predecessor-version":[{"id":2013,"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=\/wp\/v2\/pages\/2008\/revisions\/2013"}],"wp:attachment":[{"href":"https:\/\/precatorioestadual.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}