Analisando propostas

Cooperativa de crédito

Publicado em 28 de Dezembro de 2022 dias na TI e Programação

Sobre este projeto

Aberto

Você foi contratado para construção de um sistema de controle para uma pequena cooperativa digital de crédito local, a Ada Credit (Código Bancário 777).

Para garantir a segurança das informações, o sistema deve exigir login e senha para que seja possível a sua operação.
O usuário e senha "iniciais" (na primeira execução do programa) devem ser *"user"* e *"pass". *Essa senha padrão deve ser trocada no primeiro login**.

Quando o login for bem sucedido, o sistema exibe um menu com opções para:

Clientes
Cadastrar Novo Cliente
Consultar os Dados de um Cliente existente
Alterar o Cadastro de um Cliente existente
Desativar Cadastro de um Cliente existente
Funcionários
Cadastrar Novo Funcionário
Alterar Senha de um Funcionário existente
Desativar Cadastro de um Funcionário existente
Transações
Processar Transações (Reconciliação Bancária)
Relatórios
Exibir Todos os Clientes Ativos com seus Respectivos Saldos
Exibir Todos os Clientes Inativos
Exibir Todos os Funcionários Ativos e sua Última Data e Hora de Login
Exibir Transações com Erro (Detalhes da transação e do Erro)
Ao ser cadastrado, o cliente recebe um número de conta de 5 dígitos e um dígito verificador, ambos aleatórios, formando o padrão XXXXX-X.
Por ser uma cooperativa digital, todos os clientes possuem o mesmo número de agência, que é 0001.

As senhas devem ser armazenadas de forma segura. Para isso, nosso cliente solicitou a utilização do mecanismos de segurança BCRYPT com salto (veja Anexo C) para criptografia da senha (Veja este exemplo. Entretanto, use o salto em vez do WorkFactor).

A Ada Credit recebe, diariamente, do "Sistema Nacional de Pagamentos Integrado" múltiplos arquivos representando transações bancárias que envolvam seus clientes. Essas transações podem ser de Entrada (Crédito) ou Saída (Débito). Os arquivos possuem o padrão de nomenclatura "nome-do-banco-parceiro-aaaammdd.csv", em que aaaa, mm e dd representam, respectivamente, o ano com quatro dígitos, o mês com dois dígitos e o dia com dois dígitos da data em que o arquivo foi gerado.

Quando o usuário selecionar a opção "Processar Transações" no menu principal, o sistema buscará pelos arquivos de transação que ficam na pasta "Desktop/Transactions" (ou seu equivalente "~/home/Transactions/Pending" em sistemas *nix) e os processará, respeitando a tabela de tarifas em vigor. Verifique os detalhes sobre o layout do arquivo de transações no Anexo A ao final do enunciado, bem como As Tabelas de Tarifas no Anexo B.

É Importante mantermos o registro das transações que não puderam ser processadas que falharam. Essas falhas podem acontecer, por exemplo, por insuficiência de saldo, número da conta inválido ou inexistente, tipo de transação incompatível (no caso de TEFs), etc. Nesses casos, o registro da transação deve ser movido para um arquivo cujo padrão de nomenclatura é "nome-do-banco-parceiro-aaaammdd-failed.csv" que deve ser armazenado na pasta "~/home/Transactions/Failed".

Caso a transação tenha sido processada com sucesso, o registro da transação deve ser movido para um arquivo cujo padrão de nomenclatura é "nome-do-banco-parceiro-aaaammdd-completed.csv" e que deve ser armazenado na pasta "~/home/Transactions/Completed". É Importante que o saldo do cliente tenha sido atualizado de forma correta, inclusive com as cobranças das devidas taxas.

ANEXO A - Layoute do Arquivo de Transações
Cada linha no arquivo de transações é composta pelas seguintes informações
aaa,bbbb,cccccc,ddd,eeee,ffffff,ggg,h,i

sendo que:
aaa número com 3 dígitos representando o código do banco de origem
bbbb número com 4 dígitos representando a agência do banco de origem
cccccc número com 6 dígitos representando o número da conta do banco de origem

ddd número com 3 dígitos representando o código do banco de destino
eeee número com 4 dígitos representando a agência do banco de destino
ffffff número com 6 dígitos representando o número da conta do banco de destino

ggg tipo da transação (doc, ted, tef).

H Número representando o sentido da transação (0 - Débito/Saída, 1 - Crédito/Entrada)

I número real com duas casas decimais, separadas por um . E sem separador de milhar

Obs: TEFs só podem ser realizadas entre clientes do mesmo banco.

ANEXO B - Tabelas de Tarifas
Transações a Crédito
Todas isentas de Tarifas

Transações a Débito realizadas/recebidas até 30/11/2022
Todas isentas de Tarifas

Transações a Débito realizadas/recebidas a partir de 01/12/2022
TED - Tarifa Única de R$5,00
DOC - Tarifa de R$1,00 + (1% da Transação limitado a R$5,00)
TEF - Isenta

ANEXO C - Salt (Salto)
Um salt é, basicamente, uma cadeia de caracteres aleatória que é concatenada ao começo ou ao final da senha fornecida pelo usuário antes de aplicarmos a função de Criptografia/Hash. O uso do salt permite que o hash gerado seja completamente diferente, mesmo que duas ou mais senhas sejam idênticas. Uma vez que cada uma delas tem seu próprio salto, os hashs serão diferentes.

Para que esse mecanismo funcione, além de armazenar o hash da senha do usuário, precisamos também armazenar o Salt, para que, no momento do login, possamos fazer a concatenação do hash daquele usuário específico com a senha fornecida no login a fim de comparar o resultado com o hash armazenado no "banco de dados".

Observações:

Exercite a sua capacidade de abstração inferindo, através do enunciado, quais Classes e respectivos atributos você deve criar
Crie uma Solution contendo o(s) projeto(s) usado(s) na resolução do exercício
O código deve ser executável sem necessidade de alterações
Envie o link para o seu repositório do projeto no GitHub

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Não se aplica
Disponibilidade requerida Conforme necessário
Funções necessárias Desenvolvedor

Prazo de Entrega: 05 de Janeiro de 2023

Habilidades necessárias

Outro projetos publicados por G. M.