Arquitetura do Sistema
O sistema é desenvolvido com uma arquitetura backend/frontend modular, utilizando tecnologias modernas para garantir escalabilidade, manutenibilidade e experiência de usuário fluida. A camada de backend é baseada no framework Spring Boot, que permite a criação de aplicações Java robustas com configuração mínima e injeção automática de dependências. Já o frontend é implementado com Vue.js, oferecendo um modelo reativo e componentizado para interfaces dinâmicas.
Tecnologias Utilizadas
- Back end: Spring Boot com Java 11+, MySQL como banco de dados relacional, JWT para autenticação segura.
- Frontend: Vue 3 com Vite como bundler, Pinia para gerenciamento de estado, Axios para requisições HTTP.
- Mobile: Uniapp para compilação cross-platform em WeChat Mini Program, H5 e aplicativos nativos.
- Integração: RESTful APIs com JSON padrão, suporte a CORS, tratamento de erros padronizado.
Modelo de Dados Principal
Um dos principais componentes do sistema é o modelo de usuário com campos essenciais para controle de acesso e perfil:
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
full_name VARCHAR(100),
gender VARCHAR(20),
phone VARCHAR(20),
avatar_url VARCHAR(500),
id_card VARCHAR(18),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Funcionalidades Principais
- Autenticação com login por nome de usuário e senha, com validação de captchas.
- Gestão de perfis de usuários: cadastro, edição, exclusão e busca.
- Sincronização em tempo real entre colaboradores via WebSocket ou polling otimizado.
- Controle de permissões baseado em papéis (admin, editor, leitor).
- Registro de atividades com log de auditoria (criação, alteração, exclusão).
Implementação de API Exemplo
Aqui está um exemplo de endpoint seguro para autenticação com retorno em formato JSON:
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@Autowired
private AuthService authService;
@PostMapping("/login")
public ResponseEntity<Map<String, Object>> login(@RequestBody LoginRequest request) {
try {
AuthenticationResult result = authService.authenticate(request.getUsername(), request.getPassword());
Map<String, Object> response = new HashMap<>();
response.put("token", result.getToken());
response.put("user", result.getUserInfo());
response.put("expires_in", Duration.ofHours(24).getSeconds());
return ResponseEntity.ok(response);
} catch (AuthenticationException e) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
.body(Map.of("error", "Credenciais inválidas"));
}
}
}
Testes Funcionais
Os testes foram realizados com foco em cenários críticos:
- Login: Verificação de erro ao inserir senha incorreta, campo vazio, captcha errado.
- Usuário: Validação de duplicidade de nome, tentativas de cadastro sem preenchimento obrigatório.
- Permissões: Teste de acesso restrito a funcionalidades por nível de usuário.
Considerações Finais
O sistema demonstra viabilidade técnica, econômica e operacional. A arquitetura escolhida permite expansão futura, integração com serviços externos (como mapas, notificações push) e fácil manutenção. O uso de frameworks modernos garante produtividade elevada durante o desenvolvimento e sustentabilidade no longo prazo.