Todas as mudancas relevantes do projeto por versao.
O formato segue as convencoes de Keep a Changelog e o versionamento semantico (SemVer).
Publicacao em producao: API rodando no Render.
Dockerfilemulti-stage (build com Maven na imagemmaven:3.9-eclipse-temurin-17; runtimeeclipse-temurin:17-jre) com suporte aPORTdo platform as a service.dockerignorepara manter o contexto da imagem levedocs/DEPLOY.mdcom o passo a passo de publicacao no Render (Docker), health check e troubleshooting
- Versao do projeto para
2.0.2(era2.0.1) - Versao da API Swagger/OpenAPI para
v2.0.2 mvnwmarcado como executavel no Git (modo100755) para funcionar em deploy/CI do RenderREADME.mdcom secao de producao apontando para a URL publicada
Compatibilidade de build: permite iniciar o projeto com qualquer JDK 17, 21 ou 25.
java.versiondopom.xmlreduzido de25para17(minimo exigido pelo Spring Boot 4.1). O codigo nao usa recursos exclusivos do Java 25, entao compila/roda em qualquer JDK 17+ — eliminando orelease version XX not supportedquando o ambiente tem apenas um JDK 17/21 instalado- Documentacao atualizada (GUIA, TECHNICAL_REFERENCE, README) com solucao para o erro
release version 17 not supported, incluindo o caso de a maquina ter apenas o JRE instalado (semjavac): passou-se a exigirJAVA_HOMEapontando para um JDK completo
Fechamento do projeto: validacao final e entrega.
- Teste de integracao E2E (
@SpringBootTest+ MockMvc) cobrindo o fluxo completo: astronauta -> nave -> planeta -> missao -> execucao -> historico/stats/ranking - Spring Boot Actuator com endpoint
/actuator/health docs/TECHNICAL_REFERENCE.md(referencia tecnica consolidada)CHANGELOG.md(este arquivo)- Licenca MIT (
LICENSE) + metadados nopom.xml(<licenses>,<developers>,<scm>) - Badges no
README.md(versao, testes, cobertura, licenca, Java/Spring)
Missioncom listas imutaveis (List.of()/stream().toList()) causavaUnsupportedOperationExceptionao persistirresourcesFound/astronautsvia JPA. As colecoes agora sao copiadas defensivamente (ArrayList).
- Versao do projeto para
2.0.0(era0.0.1-SNAPSHOT) - Versao da API Swagger/OpenAPI para
v2.0.0 - README marcado como projeto CONCLUIDO (removido "em desenvolvimento")
- Todas as fases do ROADMAP marcadas como concluidas
Preparacao para integracao com o site (portfolio).
spring-boot-starter-data-jpa+ H2 (persistencia em arquivo./data/, gitignored)- Pacote
repository/com 4 repositorios JPA (Astronaut, Spacecraft, Planet, Mission) DataSeeder(CommandLineRunner) com dados iniciais (Daniel, Laura, Falcon-X, Zorion, missoes)- Configuracao CORS (
app.cors.allowed-origins) - Swagger/OpenAPI (springdoc-openapi 3.1.1) em
/swagger-ui.htmle/v3/api-docs - JaCoCo com gate de cobertura de linhas >= 80%
@ElementCollection(fetch EAGER) paraPlanet.resources,Mission.astronauts,Mission.resourcesFound;ResourceFoundcomo@Embeddable
MissionService.executeMissionagora e@Transactional(evita missao presa emIN_PROGRESS)
- Persistencia JSON (arquivos
src/main/resources/data/*.json)
Estatisticas, ranking e exploracao.
GET /stats(Estatisticas gerais: total, sucessos, falhas, taxa, recursos, recurso top)GET /ranking(Ranking de astronautas por experiencia)GET /mission/history(Historico com filtrosstatuseplanetId)POST /exploration/discover(Descoberta automatica de planetas com recursos aleatorios)- Persistencia de
fuelConsumed,resourcesFoundecompletedAtna missao;discoveredAtno planeta
Simulacao de missoes.
POST /mission/{id}/start(execucao da missao)FuelService(validacao e calculo de consumo de combustivel)DangerService(eventos aleatorios: sucesso, falha mecanica, ataque alienigena, tempestade cosmica)ResourceService(geracao de recursos)- Enums
MissionStatuseMissionEvent - Campo
spacecraftIdna entidadeMission
Testes unitarios.
- Testes de Services (JUnit 5 + Mockito)
- Testes de Controllers (MockMvc)
- Configuracao do JaCoCo (medida de cobertura)
Versao inicial: CRUD completo.
- CRUD de astronautas, naves, planetas e missoes
- DTO Pattern (Request/Response)
- Bean Validation
GlobalExceptionHandlercom respostas de erro padronizadas- ID auto-gerado nas entidades