FastInBox | Documento tecnico de arquitetura

Arquitetura UML da Plataforma

Versao: 2.0 | Status: Aprovado para apresentacao academica | Data-base: 2026-04-10

Este documento descreve a arquitetura logica e comportamental do FastInBox por meio de visoes UML textuais, cobrindo fronteiras de contexto, contratos entre modulos, classes de dominio e sequencias operacionais criticas.

1. Objetivo arquitetural

O objetivo principal da arquitetura e garantir rastreabilidade ponta a ponta no fluxo de pedido white label: cadastro de paciente, configuracao de marmita, confirmacao, pagamento, encaminhamento para fabrica e atualizacao de entrega. A modelagem UML foi desenhada para reduzir ambiguidade entre front-end, back-end e operacao.

A arquitetura adota uma abordagem orientada a dominios de negocio com separacao funcional por perfil de usuario, o que facilita a evolucao por sprint e reduz acoplamento entre interface de uso e regra transacional.

2. Visao de contexto

2.1 Fronteiras de sistema

Decisao de arquitetura: nenhum evento de producao e aceito sem evento financeiro valido. Essa regra esta representada em todos os diagramas de sequencia de pedido.

3. Modelo de classes de dominio

3.1 Classes nucleares

ClasseResponsabilidadeAtributos criticos
UserIdentidade e perfil de acessoid, role, email, permissions
PatientIdentificacao clinica do cliente finalid, nutritionGoal, restrictions, contactInfo
OrderAgregador principal do fluxo comercialid, code, status, totalPrice, deliveryDate
OrderItemComposicao de marmita no pedidoid, ingredients, packaging, quantity
PaymentEvento financeiro de autorizacaoid, method, status, approvedAt
ProductionEventTrilha operacional da fabricaid, orderId, status, actorId, timestamp

3.2 Relacoes chave

4. Diagramas de sequencia (visao textual)

4.1 Criacao de pedido

  1. Nutricionista autentica e seleciona paciente.
  2. Interface coleta itens, ingredientes e parametros de entrega.
  3. Servico de dominio gera codigo unico e persiste Order + OrderItem.
  4. Sistema retorna codigo de acesso para jornada do paciente.

4.2 Confirmacao e pagamento

  1. Paciente acessa pedido por codigo e revisa composicao.
  2. Ao confirmar, pedido muda para aguardando pagamento.
  3. Gateway valida transacao e retorna autorizacao.
  4. Sistema registra Payment aprovado e muda Order para pago.

4.3 Producao

  1. Painel da fabrica lista apenas pedidos com Payment.status = approved.
  2. Operador move o pedido no kanban por estagios de fabrica.
  3. Cada mudanca gera ProductionEvent com autor e timestamp.
  4. Paciente e nutricionista visualizam status consolidado.

5. Principios de engenharia adotados

A modelagem foi priorizada para manter estabilidade de demonstracao hoje e baixo custo de migracao para arquitetura distribuida em sprint futura.

6. Riscos e mitigacoes

RiscoImpactoMitigacao arquitetural
Acoplamento UI-regraAltoCentralizacao da regra em camada de dominio e contratos tipados.
Inconsistencia de statusAltoState machine simples com transicoes controladas e eventos.
Escalabilidade futuraMedioEstrutura de entidades pronta para persistencia server-side.
Rastreabilidade fracaAltoModelo de ProductionEvent e historico de pagamento.

7. Visao de componentes e responsabilidade

ComponenteEntrada principalSaida principalDependencias
Modulo de autenticacaoCredenciais e perfilSessao de acesso e escopoStore de sessao, regras de role
Modulo de pedidosPaciente e itensOrder com codigo unicoCatalogo de itens, validacoes de dominio
Modulo de pagamentoOrder em estado validoEvento financeiro aprovado/rejeitadoGateway financeiro e regras de transicao
Modulo de producaoPedidos pagosTimeline de status operacionalKanban de fabrica e eventos de auditoria
Modulo administrativoDados consolidadosIndicadores e alertas de governancaPedidos, pagamentos e eventos operacionais

8. Mapeamento RF -> componente

RequisitoComponente primarioComponente de suporte
RF-001 Login por perfilModulo de autenticacaoModulo administrativo
RF-003 Criacao de pedidoModulo de pedidosModulo de autenticacao
RF-007 Pagamento e liberacaoModulo de pagamentoModulo de pedidos
RF-010 Fluxo da fabricaModulo de producaoModulo de pagamento
RF-011 Status para pacienteModulo de producaoModulo de pedidos

9. Estrategia de evolucao arquitetural

  1. Fase 1: consolidar contrato de dominio e estado transacional no front.
  2. Fase 2: mover persistencia e validacao critica para API server-side.
  3. Fase 3: introduzir observabilidade de eventos por componente.
  4. Fase 4: separar contexto financeiro e operacional para escala controlada.
A evolucao prevista preserva a semantica dos casos de uso e minimiza quebra de contrato entre interface e dominio.

10. Maquina de estados do pedido

EstadoOrigemProximo estado validoResponsavel primario
rascunhoPedido em composicaoaguardando_confirmacaoNutricionista
aguardando_confirmacaoCodigo gerado e compartilhadoaguardando_pagamentoPaciente
aguardando_pagamentoPedido revisado e confirmadopago / canceladoPaciente + gateway
pagoEvento financeiro aprovadoem_producaoSistema / cozinha
em_producaoFila operacional iniciadaprontoCozinha
prontoPreparo concluidoem_entregaCozinha
em_entregaExpedicao iniciadaentregueCozinha / operacao
entregueEntrega confirmadaestado finalSistema
Esse encadeamento foi alinhado ao fluxo real do MVP e deve ser preservado em qualquer migracao futura para API e banco relacional.

11. Contratos de interface e navegacao

Entrada de interfaceContrato esperadoSaida arquitetural
/loginCredenciais + papel de acessoSessao ativa e redirecionamento por role
/nutricionista/pedidos/novoPaciente valido + itens + data de entregaOrder criado com codigo unico
/paciente/pedido/:codeCodigo de pedido validoPedido carregado para revisao
/paciente/pedido/:code/pagamentoPedido confirmadoEvento Payment com resposta aprovada ou rejeitada
/cozinha/dashboardPedidos pagos e priorizados por etapaKanban operacional com mudanca auditavel
/admin/dashboardUsuarios, pedidos e indicadores consolidadosVisao de governanca e excecoes

12. Decisoes arquiteturais registradas

ADRDecisaoMotivacaoImpacto
ADR-01Store local no front na Sprint 1Garantir demonstracao publica sem dependencia externaEntrega estavel para banca com plano de migracao posterior
ADR-02Rotas segregadas por perfilReduzir ambiguidade de permissao e contextoNavegacao mais clara e menor risco de exposicao indevida
ADR-03Codigo unico para acesso do pacienteSimplificar onboarding e acelerar conversaoEntrada mais direta no trecho revisao -> pagamento
ADR-04Fila de cozinha restrita a pedidos pagosEliminar retrabalho e inconsistencias operacionaisProducao mais previsivel e rastreavel