# 🏛️ Arquitetura do Sistema
Diagrama de Arquitetura do OpenHands (4 de julho de 2024)
Esta é uma visão geral de alto nível da arquitetura do sistema. O sistema está dividido em dois componentes principais: o frontend e o backend. O frontend é responsável por lidar com as interações do usuário e exibir os resultados. O backend é responsável por gerenciar a lógica de negócios e executar os agentes.
# Arquitetura do Frontend {#frontend-architecture-en}

Esta visão geral é simplificada para mostrar os principais componentes e suas interações. Para uma visão mais detalhada da arquitetura do backend, consulte a seção Arquitetura do Backend abaixo.
# Arquitetura do Backend {#backend-architecture-en}
_**Aviso**: A arquitetura do backend é um trabalho em andamento e está sujeita a alterações. O diagrama a seguir mostra a arquitetura atual do backend com base no commit mostrado no rodapé do diagrama._

Atualizando este Diagrama
A geração do diagrama de arquitetura do backend é parcialmente automatizada.
O diagrama é gerado a partir das dicas de tipo no código usando a
ferramenta py2puml. O diagrama é então revisado manualmente, ajustado e exportado para PNG
e SVG.
## Pré-requisitos
- Ambiente Python em execução no qual o openhands é executável
(de acordo com as instruções no arquivo README.md na raiz do repositório)
- [py2puml](https://github.com/lucsorel/py2puml) instalado
## Passos
1. Gere automaticamente o diagrama executando o seguinte comando a partir da raiz do repositório:
`py2puml openhands openhands > docs/architecture/backend_architecture.puml`
2. Abra o arquivo gerado em um editor PlantUML, por exemplo, Visual Studio Code com a extensão PlantUML ou [PlantText](https://www.planttext.com/)
3. Revise o PUML gerado e faça todos os ajustes necessários ao diagrama (adicione partes ausentes, corrija erros, melhore o posicionamento).
_py2puml cria o diagrama com base nas dicas de tipo no código, portanto, dicas de tipo ausentes ou incorretas podem resultar em um diagrama incompleto ou incorreto._
4. Revise a diferença entre o novo diagrama e o anterior e verifique manualmente se as alterações estão corretas.
_Certifique-se de não remover partes que foram adicionadas manualmente ao diagrama no passado e ainda são relevantes._
5. Adicione o hash do commit que foi usado para gerar o diagrama ao rodapé do diagrama.
6. Exporte o diagrama como arquivos PNG e SVG e substitua os diagramas existentes no diretório `docs/architecture`. Isso pode ser feito com (por exemplo, [PlantText](https://www.planttext.com/))