[{"data":1,"prerenderedAt":926},["ShallowReactive",2],{"navigation_docs":3,"-projetos-integradores-pi-04-emprestimos-dispositivos-readme":252,"-projetos-integradores-pi-04-emprestimos-dispositivos-readme-surround":923},[4,96,189],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"⚙️ Engenharia de Software","i-lucide-book-open","\u002Fengenharia-software","1.engenharia-software",[10,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92],{"title":5,"path":7,"stem":11},"1.engenharia-software\u002Findex",{"title":13,"path":14,"stem":15},"📋 Plano de Ensino e Aplicações","\u002Fengenharia-software\u002Fengenharia-software-aplicacoes","1.engenharia-software\u002F01.engenharia-software-aplicacoes",{"title":17,"path":18,"stem":19},"Cap 01: Introdução e Natureza do Software","\u002Fengenharia-software\u002Fcap-01","1.engenharia-software\u002F02.cap-01",{"title":21,"path":22,"stem":23},"Cap 02: Modelos de Processo de Software","\u002Fengenharia-software\u002Fcap-02","1.engenharia-software\u002F03.cap-02",{"title":25,"path":26,"stem":27},"Cap 03: As Atividades do Processo","\u002Fengenharia-software\u002Fcap-03","1.engenharia-software\u002F04.cap-03",{"title":29,"path":30,"stem":31},"Cap 04: Metodologias Ágeis","\u002Fengenharia-software\u002Fcap-04","1.engenharia-software\u002F05.cap-04",{"title":33,"path":34,"stem":35},"Cap 05: Fundamentos de Requisitos","\u002Fengenharia-software\u002Fcap-05","1.engenharia-software\u002F06.cap-05",{"title":37,"path":38,"stem":39},"Cap 06: Elicitação e Levantamento","\u002Fengenharia-software\u002Fcap-06","1.engenharia-software\u002F07.cap-06",{"title":41,"path":42,"stem":43},"Cap 07: Especificação de Requisitos (ERS)","\u002Fengenharia-software\u002Fcap-07","1.engenharia-software\u002F08.cap-07",{"title":45,"path":46,"stem":47},"Cap 08: Validação e Gestão","\u002Fengenharia-software\u002Fcap-08","1.engenharia-software\u002F09.cap-08",{"title":49,"path":50,"stem":51},"Cap 09: Fundamentos da Modelagem","\u002Fengenharia-software\u002Fcap-09","1.engenharia-software\u002F10.cap-09",{"title":53,"path":54,"stem":55},"Cap 10: Diagrama de Casos de Uso (Conceitos)","\u002Fengenharia-software\u002Fcap-10","1.engenharia-software\u002F11.cap-10",{"title":57,"path":58,"stem":59},"Cap 11: Casos de Uso (Prática e Relações)","\u002Fengenharia-software\u002Fcap-11","1.engenharia-software\u002F12.cap-11",{"title":61,"path":62,"stem":63},"Cap 12: Diagrama de Classes (Conceitos)","\u002Fengenharia-software\u002Fcap-12","1.engenharia-software\u002F13.cap-12",{"title":65,"path":66,"stem":67},"Cap 13: Herança e Polimorfismo","\u002Fengenharia-software\u002Fcap-13","1.engenharia-software\u002F14.cap-13",{"title":69,"path":70,"stem":71},"Cap 14: Diagrama de Sequência","\u002Fengenharia-software\u002Fcap-14","1.engenharia-software\u002F15.cap-14",{"title":73,"path":74,"stem":75},"Cap 15: Diagramas Dinâmicos (Estados e Atividades)","\u002Fengenharia-software\u002Fcap-15","1.engenharia-software\u002F16.cap-15",{"title":77,"path":78,"stem":79},"Cap 16: Qualidade de Software (SQA)","\u002Fengenharia-software\u002Fcap-16","1.engenharia-software\u002F17.cap-16",{"title":81,"path":82,"stem":83},"Cap 17: Estratégias de Teste","\u002Fengenharia-software\u002Fcap-17","1.engenharia-software\u002F18.cap-17",{"title":85,"path":86,"stem":87},"Cap 18: Manutenção e Evolução","\u002Fengenharia-software\u002Fcap-18","1.engenharia-software\u002F19.cap-18",{"title":89,"path":90,"stem":91},"Cap 19: Gerência de Configuração (SCM)","\u002Fengenharia-software\u002Fcap-19","1.engenharia-software\u002F20.cap-19",{"title":93,"path":94,"stem":95},"Cap 20: Conclusão e Próximos Passos","\u002Fengenharia-software\u002Fcap-20","1.engenharia-software\u002F21.cap-20",{"title":97,"icon":98,"path":99,"stem":100,"children":101},"🛠️ Atividades","i-lucide-wrench","\u002Fatividades","2.atividades",[102,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185],{"title":103,"path":99,"stem":104},"📋 Orientações Gerais","2.atividades\u002Findex",{"title":106,"path":107,"stem":108},"📅 Cronograma","\u002Fatividades\u002Fcronograma","2.atividades\u002F01.cronograma",{"title":110,"path":111,"stem":112},"✏️ Atividade 01: Escopo e Personas","\u002Fatividades\u002Fatv-01-escopo","2.atividades\u002F02.atv-01-escopo",{"title":114,"path":115,"stem":116},"⚙️ Atividade 02: Processos de Software","\u002Fatividades\u002Fatv-02-processos","2.atividades\u002F03.atv-02-processos",{"title":118,"path":119,"stem":120},"📋 Atividade 03: Engenharia de Requisitos","\u002Fatividades\u002Fatv-03-requisitos","2.atividades\u002F04.atv-03-requisitos",{"title":122,"path":123,"stem":124},"📝 Atividade 04: User Stories e Backlog","\u002Fatividades\u002Fatv-04-backlog","2.atividades\u002F05.atv-04-backlog",{"title":126,"path":127,"stem":128},"🎭 Atividade 05: Casos de Uso (UML)","\u002Fatividades\u002Fatv-05-casos-uso","2.atividades\u002F06.atv-05-casos-uso",{"title":130,"path":131,"stem":132},"🖼️ Atividade 06: Prototipagem e Wireframes","\u002Fatividades\u002Fatv-06-prototipagem","2.atividades\u002F07.atv-06-prototipagem",{"title":134,"path":135,"stem":136},"🏛️ Atividade 07: Diagrama de Classes (UML)","\u002Fatividades\u002Fatv-07-classes","2.atividades\u002F08.atv-07-classes",{"title":138,"path":139,"stem":140},"🔀 Atividade 08: Diagrama de Sequência (UML)","\u002Fatividades\u002Fatv-08-sequencia","2.atividades\u002F09.atv-08-sequencia",{"title":142,"path":143,"stem":144},"🧪 Atividade 09: Qualidade e Testes","\u002Fatividades\u002Fatv-09-testes","2.atividades\u002F10.atv-09-testes",{"title":146,"path":147,"stem":148},"🏁 Atividade 10: Projeto Integrador Final","\u002Fatividades\u002Fatv-10-projeto-final","2.atividades\u002F11.atv-10-projeto-final",{"title":150,"path":151,"stem":152},"📊 Atividade 11: Diagrama de Atividades (UML)","\u002Fatividades\u002Fatv-11-atividades","2.atividades\u002F12.atv-11-atividades",{"title":154,"path":155,"stem":156},"🔄 Atividade 12: Diagrama de Transição de Estados (UML)","\u002Fatividades\u002Fatv-12-estados","2.atividades\u002F13.atv-12-estados",{"title":158,"path":159,"stem":160},"🏗️ Atividade 13: Arquitetura de Software e Padrões","\u002Fatividades\u002Fatv-13-arquitetura","2.atividades\u002F14.atv-13-arquitetura",{"title":162,"path":163,"stem":164},"🌐 Atividade 14: Modelagem de APIs REST e Swagger","\u002Fatividades\u002Fatv-14-apis-swagger","2.atividades\u002F15.atv-14-apis-swagger",{"title":166,"path":167,"stem":168},"🌿 Atividade 15: GitFlow e Trabalho Colaborativo","\u002Fatividades\u002Fatv-15-gitflow-colaboracao","2.atividades\u002F16.atv-15-gitflow-colaboracao",{"title":170,"path":171,"stem":172},"🚀 Atividade 16: Pipelines de CI\u002FCD com GitHub Actions","\u002Fatividades\u002Fatv-16-pipelines-cicd","2.atividades\u002F17.atv-16-pipelines-cicd",{"title":174,"path":175,"stem":176},"🐳 Atividade 17: Containerização de Ambientes com Docker","\u002Fatividades\u002Fatv-17-conteineres-docker","2.atividades\u002F18.atv-17-conteineres-docker",{"title":178,"path":179,"stem":180},"🔒 Atividade 18: Segurança no Desenvolvimento e OWASP","\u002Fatividades\u002Fatv-18-seguranca-devsecops","2.atividades\u002F19.atv-18-seguranca-devsecops",{"title":182,"path":183,"stem":184},"📈 Atividade 19: Métricas de Software, Estimativas e DORA","\u002Fatividades\u002Fatv-19-metricas-estimativas","2.atividades\u002F20.atv-19-metricas-estimativas",{"title":186,"path":187,"stem":188},"🏆 Atividade 20: Projeto Final Avançado (Fase 2)","\u002Fatividades\u002Fatv-20-projeto-final-avancado","2.atividades\u002F21.atv-20-projeto-final-avancado",{"title":190,"icon":191,"path":192,"stem":193,"children":194},"🖼️ Galeria de Projetos Integradores","i-lucide-image","\u002Fprojetos-integradores","3.projetos-integradores",[195,197,207,216,225,234,243],{"title":190,"path":192,"stem":196},"3.projetos-integradores\u002Findex",{"title":198,"path":199,"stem":200,"children":201},"🅿️ Projeto 01: Gestão de Estacionamentos","\u002Fprojetos-integradores\u002Fpi-01-gestao-estacionamentos","3.projetos-integradores\u002F01.pi-01-gestao-estacionamentos\u002Findex",[202,203],{"title":198,"path":199,"stem":200},{"title":204,"path":205,"stem":206},"README","\u002Fprojetos-integradores\u002Fpi-01-gestao-estacionamentos\u002Freadme","3.projetos-integradores\u002F01.pi-01-gestao-estacionamentos\u002F2.readme",{"title":208,"path":209,"stem":210,"children":211},"🔐 Projeto 02: Gerador de Senhas","\u002Fprojetos-integradores\u002Fpi-02-gerador-senhas","3.projetos-integradores\u002F02.pi-02-gerador-senhas\u002Findex",[212,213],{"title":208,"path":209,"stem":210},{"title":204,"path":214,"stem":215},"\u002Fprojetos-integradores\u002Fpi-02-gerador-senhas\u002Freadme","3.projetos-integradores\u002F02.pi-02-gerador-senhas\u002F2.readme",{"title":217,"path":218,"stem":219,"children":220},"🍣 Projeto 03: Pedidos Restaurante","\u002Fprojetos-integradores\u002Fpi-03-pedidos-restaurante","3.projetos-integradores\u002F03.pi-03-pedidos-restaurante\u002Findex",[221,222],{"title":217,"path":218,"stem":219},{"title":204,"path":223,"stem":224},"\u002Fprojetos-integradores\u002Fpi-03-pedidos-restaurante\u002Freadme","3.projetos-integradores\u002F03.pi-03-pedidos-restaurante\u002F2.readme",{"title":226,"path":227,"stem":228,"children":229},"📱 Projeto 04: Empréstimos Dispositivos","\u002Fprojetos-integradores\u002Fpi-04-emprestimos-dispositivos","3.projetos-integradores\u002F04.pi-04-emprestimos-dispositivos\u002Findex",[230,231],{"title":226,"path":227,"stem":228},{"title":204,"path":232,"stem":233},"\u002Fprojetos-integradores\u002Fpi-04-emprestimos-dispositivos\u002Freadme","3.projetos-integradores\u002F04.pi-04-emprestimos-dispositivos\u002F2.readme",{"title":235,"path":236,"stem":237,"children":238},"📦 Projeto 05: Gestão de Estoque","\u002Fprojetos-integradores\u002Fpi-05-gestao-estoque","3.projetos-integradores\u002F05.pi-05-gestao-estoque\u002Findex",[239,240],{"title":235,"path":236,"stem":237},{"title":204,"path":241,"stem":242},"\u002Fprojetos-integradores\u002Fpi-05-gestao-estoque\u002Freadme","3.projetos-integradores\u002F05.pi-05-gestao-estoque\u002F2.readme",{"title":244,"path":245,"stem":246,"children":247},"🛵 Projeto 06: Aplicativo de Delivery","\u002Fprojetos-integradores\u002Fpi-06-delivery","3.projetos-integradores\u002F06.pi-06-delivery\u002Findex",[248,249],{"title":244,"path":245,"stem":246},{"title":204,"path":250,"stem":251},"\u002Fprojetos-integradores\u002Fpi-06-delivery\u002Freadme","3.projetos-integradores\u002F06.pi-06-delivery\u002F2.readme",{"id":253,"title":204,"body":254,"description":916,"extension":917,"links":918,"meta":919,"navigation":920,"path":232,"seo":921,"stem":233,"__hash__":922},"docs\u002F3.projetos-integradores\u002F04.pi-04-emprestimos-dispositivos\u002F2.readme.md",{"type":255,"value":256,"toc":894},"minimark",[257,266,269,274,306,308,312,317,347,351,371,375,378,382,392,394,398,404,408,591,593,597,600,627,629,633,640,711,714,716,725,728,730,734,738,741,744,750,754,764,767,769,773,777,790,793,795,799,805,841,843,847,858,881,890],[258,259,260,261,265],"p",{},"Abaixo, apresento a estruturação técnica detalhada, aplicando os princípios de ",[262,263,264],"strong",{},"Engenharia de Software"," e as melhorias para garantir a integridade do inventário.",[267,268],"hr",{},[270,271,273],"h2",{"id":272},"_1-contexto-do-projeto","1. Contexto do Projeto",[275,276,277,284,290,296],"ul",{},[278,279,280,283],"li",{},[262,281,282],{},"Título:"," Controle de Fluxo de Dispositivos Eletrônicos.",[278,285,286,289],{},[262,287,288],{},"Objetivo:"," Oferecer uma solução eficiente para o rastreamento diário de movimentação de eletrônicos (recebimento e liberação).",[278,291,292,295],{},[262,293,294],{},"Problema a Resolver:"," Centralizar o registro de fluxos para evitar a perda de informações sobre a localização e responsabilidade de aparelhos eletrônicos.",[278,297,298,301,302,305],{},[262,299,300],{},"Diferencial Técnico:"," Uso de ",[262,303,304],{},"localStorage"," para persistência sem necessidade de back-end imediato, ideal para ferramentas de uso rápido e local.",[267,307],{},[270,309,311],{"id":310},"_2-engenharia-de-software","2. Engenharia de Software",[313,314,316],"h3",{"id":315},"_21-requisitos-funcionais-rf","2.1 Requisitos Funcionais (RF)",[275,318,319,325,331,337],{},[278,320,321,324],{},[262,322,323],{},"RF-001:"," O sistema deve exibir um Dashboard com total de entradas, saídas e saldo em tempo real.",[278,326,327,330],{},[262,328,329],{},"RF-002:"," O sistema deve permitir o registro de movimentação (Entrada\u002FSaída) com nome do modelo, quantidade e responsável.",[278,332,333,336],{},[262,334,335],{},"RF-003:"," O sistema deve manter um histórico cronológico de todas as ações realizadas.",[278,338,339,342,343,346],{},[262,340,341],{},"RF-004:"," O sistema deve persistir os dados no navegador utilizando a API ",[344,345,304],"code",{},".",[313,348,350],{"id":349},"_22-requisitos-não-funcionais-rnf","2.2 Requisitos Não Funcionais (RNF)",[275,352,353,359,365],{},[278,354,355,358],{},[262,356,357],{},"RNF-001 (Usabilidade):"," A interface deve ser simples e intuitiva para facilitar o monitoramento diário.",[278,360,361,364],{},[262,362,363],{},"RNF-002 (Confiabilidade):"," Garantir que o saldo do estoque seja atualizado automaticamente a cada novo registro.",[278,366,367,370],{},[262,368,369],{},"RNF-003 (Portabilidade):"," O sistema deve funcionar em qualquer navegador moderno sem dependências externas de banco de dados.",[313,372,374],{"id":373},"_23-casos-de-uso-uml","2.3 Casos de Uso (UML)",[258,376,377],{},"O fluxo principal foca no gestor que precisa de rapidez para liberar ou receber um equipamento.",[379,380],"mermaid",{"code":381},"flowchart LR\n    G((\"Gestor de TI\"))\n\n    subgraph Sistema [\"Controle de Fluxo\"]\n        direction TB\n        UC1([\"Registrar Entrada\u002FSaída\"])\n        UC2([\"Visualizar Saldo em Tempo Real\"])\n        UC3([\"Consultar Linha do Tempo\"])\n        UC4([\"Limpar Histórico Local\"])\n    end\n\n    G --> UC1\n    G --> UC2\n    G --> UC3\n    G --> UC4\n",[258,383,384,387],{},[262,385,386],{},"Versão em SVG (Diagrama de Casos de Uso):",[388,389],"img",{"alt":390,"src":391},"Diagrama de Casos de Uso","\u002Fimg\u002Fprojetos-integradores\u002Fpi-04-emprestimos-dispositivos\u002Fusecase_dispositivos.svg",[267,393],{},[270,395,397],{"id":396},"_3-estrutura-de-dados-json","3. Estrutura de Dados (JSON)",[258,399,400,401,403],{},"Como o projeto utiliza ",[262,402,304],{},", os dados são estruturados em um objeto JSON unificado para facilitar a manipulação via JavaScript.",[313,405,407],{"id":406},"_31-modelo-do-objeto-movimentacao","3.1 Modelo do Objeto Movimentacao",[409,410,415],"pre",{"className":411,"code":412,"language":413,"meta":414,"style":414},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"movimentacoes\": [\n    {\n      \"id\": 1,\n      \"modelo\": \"Notebook Dell Vostro\",\n      \"quantidade\": 1,\n      \"responsavel\": \"Ricardo Pires\",\n      \"tipo\": \"entrada\",\n      \"data_hora\": \"2026-05-28T16:30:00Z\"\n    }\n  ]\n}\n\n","json","",[344,416,417,426,445,451,472,495,511,532,553,573,579,585],{"__ignoreMap":414},[418,419,422],"span",{"class":420,"line":421},"line",1,[418,423,425],{"class":424},"sMK4o","{\n",[418,427,429,432,436,439,442],{"class":420,"line":428},2,[418,430,431],{"class":424},"  \"",[418,433,435],{"class":434},"spNyl","movimentacoes",[418,437,438],{"class":424},"\"",[418,440,441],{"class":424},":",[418,443,444],{"class":424}," [\n",[418,446,448],{"class":420,"line":447},3,[418,449,450],{"class":424},"    {\n",[418,452,454,457,461,463,465,469],{"class":420,"line":453},4,[418,455,456],{"class":424},"      \"",[418,458,460],{"class":459},"sBMFI","id",[418,462,438],{"class":424},[418,464,441],{"class":424},[418,466,468],{"class":467},"sbssI"," 1",[418,470,471],{"class":424},",\n",[418,473,475,477,480,482,484,487,491,493],{"class":420,"line":474},5,[418,476,456],{"class":424},[418,478,479],{"class":459},"modelo",[418,481,438],{"class":424},[418,483,441],{"class":424},[418,485,486],{"class":424}," \"",[418,488,490],{"class":489},"sfazB","Notebook Dell Vostro",[418,492,438],{"class":424},[418,494,471],{"class":424},[418,496,498,500,503,505,507,509],{"class":420,"line":497},6,[418,499,456],{"class":424},[418,501,502],{"class":459},"quantidade",[418,504,438],{"class":424},[418,506,441],{"class":424},[418,508,468],{"class":467},[418,510,471],{"class":424},[418,512,514,516,519,521,523,525,528,530],{"class":420,"line":513},7,[418,515,456],{"class":424},[418,517,518],{"class":459},"responsavel",[418,520,438],{"class":424},[418,522,441],{"class":424},[418,524,486],{"class":424},[418,526,527],{"class":489},"Ricardo Pires",[418,529,438],{"class":424},[418,531,471],{"class":424},[418,533,535,537,540,542,544,546,549,551],{"class":420,"line":534},8,[418,536,456],{"class":424},[418,538,539],{"class":459},"tipo",[418,541,438],{"class":424},[418,543,441],{"class":424},[418,545,486],{"class":424},[418,547,548],{"class":489},"entrada",[418,550,438],{"class":424},[418,552,471],{"class":424},[418,554,556,558,561,563,565,567,570],{"class":420,"line":555},9,[418,557,456],{"class":424},[418,559,560],{"class":459},"data_hora",[418,562,438],{"class":424},[418,564,441],{"class":424},[418,566,486],{"class":424},[418,568,569],{"class":489},"2026-05-28T16:30:00Z",[418,571,572],{"class":424},"\"\n",[418,574,576],{"class":420,"line":575},10,[418,577,578],{"class":424},"    }\n",[418,580,582],{"class":420,"line":581},11,[418,583,584],{"class":424},"  ]\n",[418,586,588],{"class":420,"line":587},12,[418,589,590],{"class":424},"}\n",[267,592],{},[270,594,596],{"id":595},"_4-melhorias-sugeridas-implementadas","4. Melhorias Sugeridas Implementadas",[258,598,599],{},"Para elevar o nível técnico do projeto integrador:",[275,601,602,608,618],{},[278,603,604,607],{},[262,605,606],{},"Validação de Saldo:"," O sistema deve impedir um registro de \"Saída\" se a quantidade solicitada for maior que o saldo atual no estoque.",[278,609,610,613,614,617],{},[262,611,612],{},"Exportação de Dados:"," Adicionar um botão para exportar o histórico em formato ",[262,615,616],{},"CSV",", permitindo que o gestor salve os dados fora do navegador antes de limpar o cache.",[278,619,620,623,624,626],{},[262,621,622],{},"Arquitetura de Código:"," Separar as funções de manipulação do ",[344,625,304],{}," (StorageEngine) da lógica de atualização da interface (DOMManager).",[267,628],{},[270,630,632],{"id":631},"_5-prompt-para-google-stitch-interface-deviceflow","5. Prompt para Google Stitch: Interface \"DeviceFlow\"",[258,634,635,636,639],{},"Copie e cole no ",[262,637,638],{},"Google Stitch"," para gerar a interface:",[641,642,643,656,695,700],"blockquote",{},[258,644,645,648,649,652,653],{},[262,646,647],{},"Atuar como:"," Frontend Developer sênior especialista em Dashboards Vue\u002FReact.\n",[262,650,651],{},"Contexto:"," Criar a interface para o projeto \"DeviceFlow\" — Controle de entrada e saída de eletrônicos. O foco é uma UI moderna, limpa e de alta performance utilizando HTML, CSS (Tailwind) e JS puro.\n",[262,654,655],{},"Estrutura:",[657,658,659,665,683,689],"ol",{},[278,660,661,664],{},[262,662,663],{},"Header:"," Título e relógio em tempo real.",[278,666,667,670,671,674,675,678,679,682],{},[262,668,669],{},"Dashboard de Cards:"," 3 cards destacados (Total Entradas ",[418,672,673],{},"Verde",", Total Saídas ",[418,676,677],{},"Amarelo",", Saldo Atual ",[418,680,681],{},"Azul",").",[278,684,685,688],{},[262,686,687],{},"Formulário Lateral:"," Inputs para Modelo, Quantidade, Responsável e um Toggle\u002FSwitch para escolher entre \"Entrada\" e \"Saída\".",[278,690,691,694],{},[262,692,693],{},"Timeline Central:"," Uma listagem elegante de \"Histórico Geral\" com ícones indicando a direção do fluxo (seta para cima\u002Fbaixo) e timestamp.",[258,696,697],{},[262,698,699],{},"UX e Estilo:",[275,701,702,705,708],{},[278,703,704],{},"Estilo \"Clean & Professional\" com fontes sans-serif.",[278,706,707],{},"Feedback visual: O saldo deve piscar ou mudar de cor suavemente quando um novo item for registrado.",[278,709,710],{},"Persistência: Simular a lógica de que, ao recarregar a página, os dados permanecem na tela (via localStorage).",[258,712,713],{},"Este projeto está pronto para ser documentado em seu ecossistema de ensino e pesquisa tecnológica.",[267,715],{},[258,717,718,719,721,722,346],{},"Com base nas diretrizes de ",[262,720,264],{}," e na sua experiência com o desenvolvimento de ecossistemas multiplataforma, apresento o detalhamento técnico avançado do projeto ",[262,723,724],{},"DeviceFlow",[258,726,727],{},"Nesta etapa, focamos na transição da lógica puramente client-side para uma estrutura que permite escalabilidade, mantendo a simplicidade da persistência local via JSON.",[267,729],{},[270,731,733],{"id":732},"_2-engenharia-de-software-avançada","2. Engenharia de Software (Avançada)",[313,735,737],{"id":736},"_24-diagrama-de-casos-de-uso-uml","2.4 Diagrama de Casos de Uso (UML)",[258,739,740],{},"O diagrama abaixo detalha as interações do gestor com o sistema, enfatizando a governança dos dados locais e a visibilidade do inventário.",[379,742],{"code":743},"flowchart LR\n    Gestor((\"Gestor de TI \u002F Estoque\"))\n\n    subgraph Sistema [\"Sistema DeviceFlow\"]\n        direction TB\n        UC1([\"Registrar Entrada (Estoque)\"])\n        UC2([\"Registrar Saída (Uso\u002FResponsável)\"])\n        UC3([\"Visualizar Painel de Status\"])\n        UC4([\"Consultar Linha do Tempo (Logs)\"])\n        UC5([\"Exportar Dados (Backup JSON\u002FCSV)\"])\n    end\n\n    Gestor --> UC1\n    Gestor --> UC2\n    Gestor --> UC3\n    Gestor --> UC4\n    Gestor --> UC5\n",[258,745,746,748],{},[262,747,386],{},[388,749],{"alt":390,"src":391},[313,751,753],{"id":752},"_25-diagrama-de-classes-estrutura-front-end","2.5 Diagrama de Classes (Estrutura Front-end)",[258,755,756,757,760,761,763],{},"Abaixo, a modelagem das classes em JavaScript utilizando os princípios ",[262,758,759],{},"SOLID"," para garantir que a manipulação do ",[344,762,304],{}," seja independente da interface.",[379,765],{"code":766},"classDiagram\n    class Movimentacao {\n        +int id\n        +String modelo\n        +int quantidade\n        +String responsavel\n        +String tipo\n        +DateTime dataHora\n        +validarEstoque() Boolean\n    }\n    class StorageService {\n        +save(data: Object)\n        +load() Object\n        +clear()\n    }\n    class DashboardController {\n        +updateCards()\n        +renderTimeline()\n    }\n\n    DashboardController --> StorageService : solicita dados\n    StorageService ..> Movimentacao : persiste\n",[267,768],{},[270,770,772],{"id":771},"_3-estrutura-de-dados-e-lógica-de-fluxo","3. Estrutura de Dados e Lógica de Fluxo",[313,774,776],{"id":775},"_31-mer-modelo-entidade-relacionamento","3.1 MER (Modelo Entidade-Relacionamento)",[258,778,779,780,782,783,786,787,346],{},"Embora o armazenamento seja em ",[344,781,304],{},", a estrutura lógica segue o padrão relacional para facilitar uma futura migração para ",[262,784,785],{},"MySQL"," ou ",[262,788,789],{},"MongoDB",[379,791],{"code":792},"erDiagram\n    DISPOSITIVO ||--o{ MOVIMENTACAO : \"sofre\"\n    MOVIMENTACAO {\n        int id PK\n        string modelo\n        int quantidade\n        string responsavel\n        enum tipo \"entrada\u002Fsaida\"\n        datetime data_hora\n    }\n",[267,794],{},[270,796,798],{"id":797},"_4-detalhamento-das-melhorias-implementadas","4. Detalhamento das Melhorias Implementadas",[258,800,801,802,441],{},"Para garantir a robustez do sistema conforme os padrões de ",[262,803,804],{},"Clean Code",[275,806,807,813,819,825],{},[278,808,809,812],{},[262,810,811],{},"Validação de Consistência:"," Antes de registrar uma saída, o sistema percorre o JSON histórico, calcula o saldo atual e impede a operação caso o resultado seja negativo.",[278,814,815,818],{},[262,816,817],{},"Identidade do Responsável:"," O campo \"responsavel\" tornou-se obrigatório para garantir a auditabilidade, permitindo saber exatamente com quem o eletrônico está localizado.",[278,820,821,824],{},[262,822,823],{},"Linha do Tempo Cronológica:"," Implementação de uma ordenação decrescente (da mais recente para a mais antiga) para facilitar a consulta rápida no dia a dia.",[278,826,827,301,830,834,835,838,839,346],{},[262,828,829],{},"Sincronização de Dashboard:",[831,832,833],"em",{},"Observers"," ou funções de ",[831,836,837],{},"callback"," que atualizam os cards informativos imediatamente após qualquer alteração no ",[344,840,304],{},[267,842],{},[270,844,846],{"id":845},"_5-próximos-passos-e-evolução","5. Próximos Passos e Evolução",[258,848,849,850,853,854,857],{},"Dada a sua familiaridade com ",[262,851,852],{},"Java (Spring Boot)"," e ",[262,855,856],{},"Node.js",", o projeto pode evoluir da seguinte forma:",[657,859,860,869,875],{},[278,861,862,865,866,868],{},[262,863,864],{},"API Rest:"," Substituir o ",[344,867,304],{}," por uma API que persista os dados em um banco de dados real.",[278,870,871,874],{},[262,872,873],{},"Autenticação:"," Adicionar login para que diferentes gestores possam ter seus próprios registros.",[278,876,877,880],{},[262,878,879],{},"Monitoramento:"," Gerar alertas automáticos quando o saldo de um dispositivo específico atingir um nível crítico.",[258,882,883,884,786,887,346],{},"Esta documentação está pronta para ser integrada aos seus fluxos de ensino via ",[262,885,886],{},"GitHub",[262,888,889],{},"Jekyll",[891,892,893],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":414,"searchDepth":428,"depth":447,"links":895},[896,897,902,905,906,907,911,914,915],{"id":272,"depth":428,"text":273},{"id":310,"depth":428,"text":311,"children":898},[899,900,901],{"id":315,"depth":447,"text":316},{"id":349,"depth":447,"text":350},{"id":373,"depth":447,"text":374},{"id":396,"depth":428,"text":397,"children":903},[904],{"id":406,"depth":447,"text":407},{"id":595,"depth":428,"text":596},{"id":631,"depth":428,"text":632},{"id":732,"depth":428,"text":733,"children":908},[909,910],{"id":736,"depth":447,"text":737},{"id":752,"depth":447,"text":753},{"id":771,"depth":428,"text":772,"children":912},[913],{"id":775,"depth":447,"text":776},{"id":797,"depth":428,"text":798},{"id":845,"depth":428,"text":846},"Este novo projeto, intitulado Controle de Fluxo de Dispositivos Eletrônicos, complementa seu portfólio de soluções de gestão e automação, focando na agilidade do front-end e na persistência de dados local.","md",null,{},true,{"title":204,"description":916},"0Orhbj2pfcKHVjM8kzEAE2gqUqzW1kKEq73fp5cHVt8",[924,925],{"title":226,"path":227,"stem":228,"description":414,"children":-1},{"title":235,"path":236,"stem":237,"description":414,"children":-1},1788375147752]