Files
vinihcrosaandClaude Sonnet 4.6 9f4639a701 docs: migrate .prds into docs/planning/prds/
Move .prds/ (PRDs, roadmap, module and phase docs) to docs/planning/prds/,
preserving modules/ and phases/ subdirectory structure. Delete .prds/.

Update AGENTS.md documentation table to include docs/planning/prds/ entry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 01:21:03 -03:00

2.4 KiB
Raw Permalink Blame History

Contexto: Infraestrutura

Suporte transversal ao sistema — comunicação externa, persistência e observabilidade.


Server (apps/server)

Ponto de entrada único para clientes externos em modo real-time.

Responsabilidades:

  • Aceitar conexões WebSocket de Manager e Viewer
  • Receber e rotear comandos para a Simulation/World corretos
  • Propagar eventos da simulação para clientes conectados (via Events)
  • Gerenciar múltiplas simulações simultâneas (1–2 em real-time)
  • Autenticar e identificar clientes (a definir)

API (operações expostas):

  • Criar simulação (a partir de scenario)
  • Encerrar simulação
  • Pausar / retomar
  • Alterar velocidade
  • Criar / remover entidades
  • Enviar comandos a embarcações (propulsor, leme)
  • Alterar condições ambientais
  • Alterar terreno
  • Consultar estado atual
  • Subscribir eventos

Protocolo: WebSocket + Protobuf (schemas add-only)


Fast-time (apps/fast-time)

App separado para execução batch de simulações aceleradas.

Responsabilidades:

  • Aceitar submissão de scenarios via API
  • Executar simulações no modo fast-time (sem sincronização de relógio)
  • Isolar cada simulação em processo separado
  • Persistir resultados completos ao final de cada run
  • Sem streaming de eventos para clientes

Fluxo:

Cliente envia scenario → fast-time aceita → inicia processo isolado →
simulação roda até o fim → resultados salvos no SQLite → cliente consulta resultados

Persistence (libs/persistence)

Camada de acesso ao SQLite. Usada por server e fast-time.

Responsabilidades:

  • Salvar e carregar scenarios
  • Salvar e carregar configurações de entidades (vessels, buoys, etc.)
  • Registrar histórico de simulações (cada step — escrita em lote)
  • Registrar logs e dados de performance do servidor

Notas:

  • Escrita em lote para histórico de steps (evita bottleneck de I/O em simulações longas)
  • Leitura por range de tempo (ex: "steps entre t=100s e t=200s")

Telemetry (libs/persistence)

Observabilidade interna do servidor — não ligada a simulações específicas.

Responsabilidades:

  • Registrar métricas de performance (tempo de tick, uso de CPU/memória por simulação)
  • Registrar logs de erros e warnings internos
  • Permitir diagnóstico de bugs e análise de performance

Notas:

  • Dados separados do histórico de simulação no SQLite
  • Não é exposto diretamente para Manager/Viewer — uso interno e de operações