Catalog · How the catalog works
DesafioEstagio
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
🎬 CineVerse - Gestão de Personagens
🎯 Objetivo
Sistema desenvolvido para o Desafio de Estágio (DomTec), focado na gestão eficiente e íntegra de personagens de filmes e séries, utilizando persistência relacional e troca de dados via arquivos estruturados.
- Desafio: Lista de Personagens de Filmes e Séries | Entrada: JSON | Saída: JSON
💻 Tecnologias Utilizadas
- Linguagem/Framework: Delphi (VCL)
- Banco de Dados: Microsoft SQL Server
- Acesso a Dados: FireDAC
- Manipulação de Dados:
REST.Json(Serialização e Desserialização)
🚀 Como Executar
O sistema foi projetado com foco na Experiência do Avaliador, possuindo uma rotina de auto-configuração (Zero Fricção).
📦 AVALIAÇÃO RÁPIDA (RECOMENDADO): Para testar o sistema sem necessidade de compilar, baixe a Versão Final na aba Releases aqui. O pacote já contém o executável, o arquivo de configuração pré-montado, os scripts SQL e um arquivo JSON para testes.
Passo a Passo de Execução:
- Extraia a pasta baixada.
- Abra o arquivo
Config.iniem um bloco de notas e ajuste a chaveServer=para o nome da instância local do seu SQL Server (ex:localhost\SQLEXPRESS). - Execute o
DesafioEstagio.exe. - Criação Automática do Banco: Após a conexão, o sistema fará uma conexão temporária na tabela
master, criará o bancoCineVerseDBe executará as migrations (criação das tabelas) de forma 100% automática.
Nota para análise de código: Caso deseje compilar manualmente, clone o repositório e rode o projeto
DesafioEstagio.dprno Delphi. Para avaliação manual da modelagem, o script estrutural completo está disponível na pasta/SQL/Script_CineVerse.sql.
📥 Como Importar/Exportar Dados
- Importação (Entrada JSON): Clique em
Importar JSONe selecione um arquivo válido (Você pode utilizar o arquivoLeonardo.jsonincluso no pacote de Release para um teste rápido). O sistema lê o arquivo, valida a presença de campos obrigatórios e insere no banco de dados.- Tratamento: Registros duplicados (mesmo personagem na mesma franquia) encontrados no JSON são identificados e ignorados, importando apenas os válidos, com relatório final na tela.
- Exportação (Saída JSON): Clique em
Exportar JSON. O sistema irá gerar um arquivo.jsonválido e indentado.- Comportamento: A exportação é fiel à tela. Ela respeita rigorosamente qualquer filtro de pesquisa ou ordenação de colunas que o usuário tenha aplicado na Grid no momento do clique.
✨ Funcionalidades
- CRUD Completo: Criação, Leitura, Atualização e Exclusão de Personagens, Franquias e Atores.
- Regras de Negócio Blindadas: O sistema impede, tanto via interface quanto via banco de dados (Constraints), o cadastro de um mesmo personagem na mesma franquia.
- Filtro Rápido Dinâmico: Pesquisa simultânea por Nome, Franquia, Ator/Atriz, Mídia ou Descrição.
- Ordenação Interativa: Clique no título das colunas na listagem para alternar a ordenação (Ascendente/Descendente).
- Campos Extensos: Suporte completo a textos longos na descrição (VARCHAR MAX).
- Usabilidade e Acessibilidade: Uso de Hotkeys (Alt + Letra) e navegação intuitiva.
🧠 Decisões Técnicas Tomadas
Para atender ao "Checklist de Correção" com excelência, as seguintes decisões arquiteturais foram aplicadas:
- Separação de Responsabilidades (Clean Code): A lógica de persistência e validação não fica nas telas. Foi criado o
cCharacterManager(CRUD e regras) e ocCharacterService(tratamento de JSON). - Migrations Nativas: O banco se constrói sozinho (
cUpdateTableMSSQL), evitando que o avaliador precise rodar scripts manuais para testar a aplicação. - Uso de
OUTPUT INSERTED: Para garantir a integridade das Chaves Estrangeiras, a inserção de Franquias e Atores devolve o ID gerado na mesma transação, evitando bugs de escopo do FireDAC ao processar lotes separados. - Prevenção de Memory Leaks: Uso estrito de blocos
try..finallyna instanciação de classes e formulários.

