Estrutura Técnica
Backend com Spring Boot
Spring Boot é um framework open source que simplifica o desenvolvimento de aplicações baseadas em Spring. Seguindo o princípio "convenção sobre configuração", oferece padrões pré-definidos que permitem aos desenvolvedores focar na lógica de negócios. O framework automatiza configuarções através de dependências do projeto e oferece ferramentas como o Spring Initializr para bootstrap de projetos.
Frontend com Vue.js
Vue.js destaca-se pela simplicidade e curva de aprendizado suave. Oferece binding bidirecional de dados através de diretivas como v-model, sincronizando automaticamente o modelo com a visualização. O ciclo de vida dos componentes inclui hooks como created(), mounted() e updated() para controle granular do comportamento da aplicação.
Análise de Viabilidade
A viabilidade técnica foi confirmada através do uso de Java e ecossistema Spring. A viabilidade econômica considerou o custo-benefício entre desenvolvimento e retorno operacional. A viabilidade operacional focou na experiência do usuário final e integração com fluxos de trabalho existentes.
Testes do Sistema
Os testes visaram identificar falhas e validar conformidade com requisitos. Foram aplicados testes funcionais baseados em casos de uso, com ênfase na experiência do usuário.
Testes de Autenticação
| Dados de Entrada | Resultado Esperado | Resultado Obtido |
|---|---|---|
| Usuário: admin, Senha: admin123, Código: correto | Acesso concedido | Acesso bem-sucedido |
| Usuário: admin, Senha: errada, Código: correto | Erro de autenticação | Senha inválida |
Testes de Gestão de Utilizadores
| Cenário | Comportamento Esperado |
|---|---|
| Registo sem nome de utilizador | Bloqueio com alerta de campo obrigatório |
| Edição de perfil existente | Atualização imediata dos dados |
Design do Banco de Dados
| Campo | Tipo | Restrições |
|---|---|---|
| codigo | INT | PRIMARY KEY |
| data_criacao | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP |
| referancia_pedido | VARCHAR(64) | NOT NULL |
Exemplo de Implementação
@RestController
@RequestMapping("/api")
public class ControladorAPI {
@Autowired
private ServicoConfiguracao configService;
@GetMapping("/localizacao")
public ResponseEntity<Map<String, String>> obterLocalizacao(
@RequestParam String longitude,
@RequestParam String latitude) {
String apiKey = configService.obterChaveAPI("baidu_maps");
Map<String, String> dadosLocal = ServicoGeo.obterCidade(apiKey, longitude, latitude);
return ResponseEntity.ok(dadosLocal);
}
@PostMapping("/comparar-faces")
public ResponseEntity<ComparacaoFacial> compararFaces(
@RequestParam String imagem1,
@RequestParam String imagem2) {
ClienteFacial cliente = ServicoFacial.getInstancia();
ComparacaoFacial resultado = cliente.comparar(imagem1, imagem2);
return ResponseEntity.ok(resultado);
}
}
Estrutura do Banco de Dados
CREATE TABLE cliente (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
nome_usuario VARCHAR(200) UNIQUE NOT NULL,
senha VARCHAR(200) NOT NULL,
celular VARCHAR(20)
);
CREATE TABLE mensagem (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
conteudo TEXT NOT NULL,
resposta TEXT,
usuario_id BIGINT NOT NULL
);
CREATE TABLE acesso_token (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
token VARCHAR(200) NOT NULL,
expiracao TIMESTAMP,
usuario_id BIGINT NOT NULL
);