📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Matriz de 20 Capítulos de Aplicações Full Stack. Recomendado revisar antes de iniciar a execução.

📦 Gestão de Estoque 01: Spring Boot 3 & SPA de Controle

v1.0 — Arquitetura em camadas (Layered Architecture) para controle de inventário físico com Spring Data JPA, H2 e PostgreSQL.

Trilha de Especialização Pedagógica — Série Gestão de Estoque (Projeto 1 de 2)

🎓 Nível Profissional Simulado: Desenvolvedor Back-end Java Júnior / Pleno. Em operações logísticas e varejistas, a consistência dos dados de estoque é crítica para o negócio. Dominar a arquitetura em camadas do ecossistema Spring (Controllers REST, Services transacionais, Repositórios JPA e DTOs imutáveis) prepara para desafios de alta concorrência e integridade relacional.


🏛️ Galeria Arquitetural & Diagramas de Engenharia

Arquitetura de Comunicação e Camadas da Solução

Arquitetura Gestão de Estoque 01: Spring Boot 3 e SPA

Fluxo Transacional de Movimentação de Estoque

Fluxo Transacional de Movimentação


📁 Estrutura Canônica de Pastas Anti-Colisão

O projeto adota a convenção padronizada de subpastas por camada e tecnologia <camada>-<tecnologia>:

catalogo_projetos/fullstack_estoque_01_spring_spa/
├── api-spring/                 # Backend robusto em Java 21 e Spring Boot 3
│   ├── src/
│   │   ├── main/java/br/com/estoque/
│   │   │   ├── config/         # Configurações de CORS e documentação OpenAPI
│   │   │   ├── controller/     # Controladores REST com endpoints mapeados
│   │   │   ├── dto/            # Data Transfer Objects para requests e responses
│   │   │   ├── model/          # Entidades JPA mapeadas (Produto, Categoria, Estoque)
│   │   │   ├── repository/     # Interfaces Spring Data JPA
│   │   │   └── service/        # Regras de negócio e transações (@Transactional)
│   │   └── main/resources/
│   │       ├── application.yml # Perfis de ambiente (dev: H2 / prod: Postgres)
│   │       └── data.sql        # Carga inicial e seed de produtos de demonstração
│   ├── Dockerfile              # Empacotamento em imagem conteinerizada
│   ├── docker-compose.yml      # Subida de banco PostgreSQL de suporte
│   └── pom.xml                 # Gerenciamento de dependências Maven
├── assets/                     # Diagramas vetoriais SVG autorais
├── modulo00a.md                # Planejamento didático e levantamento de requisitos
└── modulo00.md a modulo09.md   # Cadernos conceituais de implementação passo a passo

📚 Trilha Conceitual de Engenharia (Módulos 00 ao 09)


🧑‍💼 Especificação Formal de Engenharia de Software

1. Histórias de Usuário (User Stories)

2. Requisitos Funcionais (RF)

3. Requisitos Não-Funcionais (RNF)


📐 Diagrama de Casos de Uso (UML / Mermaid)

flowchart LR
    subgraph Atores
        Estoquista["👤 Estoquista"]
        Gerente["💼 Gerente de Compras"]
    end

    subgraph "Sistema de Gestão de Estoque v1"
        UC01["UC01: Cadastrar Produto com SKU"]
        UC02["UC02: Registrar Entrada de Mercadoria"]
        UC03["UC03: Registrar Baixa de Estoque"]
        UC04["UC04: Consultar Produtos em Alerta Mínimo"]
        UC05["UC05: Auditar Documentação OpenAPI"]
    end

    Estoquista --> UC01
    Estoquista --> UC02
    Estoquista --> UC03
    
    Gerente --> UC04
    Gerente --> UC05

📊 Matriz de Rastreabilidade de Requisitos (RTM)

ID Requisito História de Usuário Caso de Uso Controlador REST (api-spring) Camada de Serviço & JPA Status
RF-GE01 US-GE01 UC01 ProdutoController.java ProdutoService.java ✅ Coberto
RF-GE02 US-GE01 UC01 ProdutoRequestDTO.java Produto.java (@Entity) ✅ Coberto
RF-GE03 US-GE02 / US-GE03 UC02 / UC03 EstoqueController.java MovimentacaoService.java ✅ Coberto
RF-GE04 US-GE01 UC01 GlobalExceptionHandler.java jakarta.validation ✅ Coberto
RF-GE05 US-GE05 UC05 application.yml H2Dialect / PostgreSQLDialect ✅ Coberto

🚀 Roteiro de Execução & Homologação no Laboratório

1. Inicialização do Backend Spring Boot (api-spring)

cd catalogo_projetos/fullstack_estoque_01_spring_spa/api-spring

# Execução em modo desenvolvimento com banco H2 embutido
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev

2. Execução com Banco PostgreSQL via Docker Compose

cd catalogo_projetos/fullstack_estoque_01_spring_spa/api-spring

# Subida do contêiner do banco relacional
docker compose up -d

# Execução da aplicação no perfil de produção
./mvnw spring-boot:run -Dspring-boot.run.profiles=prod

🧪 Matriz de Checkpoints de Homologação (CP-01 a CP-05)

Checkpoint Procedimento de Verificação Critério de Aceite Status
CP-01 Disparar GET /api/produtos com o servidor ativo. Retorno HTTP 200 com array JSON populado pelo seeder inicial. PASS ✅
CP-02 Enviar POST /api/produtos com SKU repetido ou quantidade negativa. Retorno HTTP 400 Bad Request com mensagem descritiva de validação. PASS ✅
CP-03 Registrar saída superior ao saldo disponível no estoque. Lançamento de EstoqueInsuficienteException e rollback da transação. PASS ✅
CP-04 Acessar http://localhost:8080/swagger-ui.html no navegador. Interface Swagger interativa exibindo esquemas DTO e verbos HTTP. PASS ✅
CP-05 Executar suíte de testes ./mvnw test. Todos os testes unitários e de integração executados com BUILD SUCCESS. PASS ✅