PageSourceSearch

https://datarain.com.br/assets/DoutorIEDemo-C-8V6iPw.js

js datarain.com.br collected 2026-09-25 18:17:49 UTC 6,835 bytes, 6 lines download raw bytes

1import{c as h,r as u,j as e,R as b,C as v,a as g,w as f,m as j,D as y}from"./index-CLaLYV_k.js";import{m as r,A as N}from"./proxy-DUJZE82m.js";import{C as w}from"./circle-check-big-DZ3rcbCC.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const R=h("Archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]),o=[{id:"client",icon:f,title:"DR para cluster Kubernetes",narrative:"DoutorIE opera cluster K8s com Rancher Server, 34 worker nodes e 225 pods usando EFS. Precisava de plano de DR robusto.",before:"Cluster K8s sem plano de Disaster Recovery",after:"DR completo com múltiplas camadas de proteção",color:"#1565c0"},{id:"drs",icon:j,title:"AWS DRS para Rancher Server",narrative:"Elastic Disaster Recovery para replicação contínua block-level do Rancher Server. RPO de segundos com RTO <20min.",before:"Rancher Server sem replicação (ponto único de falha)",after:"AWS DRS com RPO de segundos e RTO <20min",highlight:"RTO < 20 minutos",color:"#dc2626"},{id:"efs",icon:y,title:"EFS Replication nativa",narrative:"EFS Replication para replicação cross-region de dados persistentes com RPO de ~15 minutos.",before:"EFS sem replicação cross-region",after:"EFS Replication nativa com RPO ~15min",color:"#7c3aed"},{id:"velero",icon:R,title:"Velero + AWS Backup",narrative:"Velero para backup de YAMLs e CRDs do K8s para S3 replicado. AWS Backup com Vault Lock para retenção 5+ anos.",before:"Sem backup de configurações Kubernetes",after:"Velero + AWS Backup Vault Lock (5+ anos)",color:"#0891b2"},{id:"plan",icon:w,title:"Plano de implantação",narrative:"Matriz de proteção por componente documentada. Workers recriados via Terraform/ASG. Plano estimado em 40 horas.",before:"Sem documentação de DR",after:"Matriz de proteção + plano de 40h documentado",color:"#059669"}],D=()=>{const[s,c]=u.useState(0),a=o[s],m=a.icon,p=(s+1)/o.length*100,d=s===o.length-1;return e.jsx("div",{className:"w-full max-w-4xl mx-auto my-8",children:e.jsxs("div",{className:"relative rounded-2xl border border-slate-200 bg-white overflow-hidden shadow-lg",children:[e.jsx(r.div,{className:"absolute inset-0 pointer-events-none",animate:{background:`radial-gradient(ellipse 60% 40% at 50% 20%, ${a.color}08 0%, transparent 70%)`},transition:{duration:.8}}),e.jsxs("div",{className:"relative p-5 md:p-8 space-y-6",children:[e.jsx("div",{className:"flex items-center gap-1",children:o.map((t,l)=>{const x=t.icon,i=l<s,n=l===s;return e.jsxs(b.Fragment,{children:[e.jsx(r.button,{onClick:()=>c(l),className:"relative shrink-0",whileHover:{scale:1.15},whileTap:{scale:.9},"aria-label":t.title,children:e.jsx(r.div,{className:"w-9 h-9 md:w-10 md:h-10 rounded-full flex items-center justify-center border-2 transition-all duration-300",animate:{borderColor:n?t.color:i?"#10b981":"#e2e8f0",backgroundColor:n?`${t.color}12`:i?"rgba(16,185,129,0.08)":"white"},children:i?e.jsx(r.span,{initial:{scale:0},animate:{scale:1},className:"text-emerald-500 text-xs font-bold",children:"✓"}):e.jsx(x,{className:"w-4 h-4",color:n?t.color:"#94a3b8"})})}),l<o.length-1&&e.jsx("div",{className:"flex-1 h-0.5 rounded-full overflow-hidden bg-slate-200",children:e.jsx(r.div,{className:"h-full bg-emerald-500",animate:{width:i?"100%":"0%"},transition:{duration:.4}})})]},t.id)})}),e.jsx(N,{mode:"wait",children:e.jsxs(r.div,{initial:{opacity:0,y:60},animate:{opacity:1,y:0},exit:{opacity:0,y:-40},transition:{duration:.4},className:"space-y-5",children:[e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(r.div,{className:"w-12 h-12 md:w-14 md:h-14 rounded-2xl flex items-center justify-center shrink-0 border",style:{borderColor:`${a.color}25`,backgroundColor:`${a.color}10`},children:e.jsx(m,{className:"w-6 h-6",color:a.color})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"text-[10px] uppercase tracking-wider font-medium mb-1",style:{color:a.color},children:["Etapa ",s+1," de ",o.length]}),e.jsx("h3",{className:"text-lg md:text-xl font-bold text-slate-800 mb-2",children:a.title}),e.jsx("p",{className:"text-sm text-slate-500 leading-relaxed",children:a.narrative})]})]}),a.highlight&&e.jsx(r.div,{initial:{opacity:0,scale:.95}
6,animate:{opacity:1,scale:1},transition:{delay:.2},className:"text-center py-3 rounded-xl border",style:{borderColor:`${a.color}20`,background:`linear-gradient(135deg, ${a.color}06 0%, transparent 100%)`},children:e.jsx("span",{className:"text-base md:text-lg font-bold",style:{color:a.color},children:a.highlight})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs(r.div,{initial:{opacity:0,x:-15},animate:{opacity:1,x:0},transition:{delay:.1},className:"p-4 rounded-xl border border-red-200 bg-red-50",children:[e.jsx("div",{className:"text-[10px] uppercase tracking-wider font-bold text-red-500 mb-2",children:"Antes"}),e.jsx("p",{className:"text-sm text-red-700/70",children:a.before})]}),e.jsxs(r.div,{initial:{opacity:0,x:15},animate:{opacity:1,x:0},transition:{delay:.3},className:"p-4 rounded-xl border border-emerald-200 bg-emerald-50",children:[e.jsx("div",{className:"text-[10px] uppercase tracking-wider font-bold text-emerald-600 mb-2",children:"Depois"}),e.jsx("p",{className:"text-sm text-emerald-700/70",children:a.after})]})]})]},a.id)}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(r.button,{onClick:()=>c(t=>Math.max(0,t-1)),disabled:s===0,className:"flex items-center gap-1 px-3 py-1.5 rounded-lg text-xs border border-slate-200 text-slate-500 hover:text-slate-700 disabled:opacity-30 disabled:cursor-not-allowed",whileHover:{scale:1.05},whileTap:{scale:.95},children:[e.jsx(v,{className:"w-3.5 h-3.5"})," Anterior"]}),e.jsxs(r.button,{onClick:()=>c(t=>Math.min(o.length-1,t+1)),disabled:d,className:"flex items-center gap-1 px-3 py-1.5 rounded-lg text-xs border border-slate-200 text-slate-500 hover:text-slate-700 disabled:opacity-30 disabled:cursor-not-allowed",whileHover:{scale:1.05},whileTap:{scale:.95},children:["Próxima ",e.jsx(g,{className:"w-3.5 h-3.5"})]})]}),e.jsx("div",{className:"h-1 bg-slate-100 rounded-full overflow-hidden",children:e.jsx(r.div,{className:"h-full rounded-full",style:{backgroundColor:a.color},animate:{width:`${p}%`},transition:{type:"spring",stiffness:200,damping:25}})}),d&&e.jsx(r.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"text-center py-4 rounded-xl bg-emerald-50 border border-emerald-200",children:e.jsx("p",{className:"text-sm text-emerald-700 font-medium",children:"Plano de DR completo com RTO <20min e RPO de segundos para cluster K8s."})})]})]})})};export{D as DoutorIEDemo};

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.