Esse é o escopo do projeto:
=== funcionalidades
1 - upload de arquivos
2 - listar arquivos recebidos
3 - ler csv
4 - ler xls
5 - ler xlsx
6 - ler txt
7 - ler xml
8 - ler json
9 - escrever csv
10 - escrever xls
11 - escrever xlsx
12 - escrever txt
13 - escrever xml
14 - escrever json
15 - ler arquivo baseado em layout de arquivo posicional como parâmetro pra processamento, campo a campo com tamanho e tipo de cada
16 - ler arquivo baseado em layout com delimitador, escolhendo o separador que pode ser uma string "<>" por exemplo, não necessáriamente só um caracter
17 - pooling em uma pasta no disco aguardando a entrada de arquivos
18 - configuração de pooling, agendando formato de entrada e saída
=== telas
1 - home menu
exibir arquivos disponíveis pra processar / subir novo arquivo
processar arquivos
listar layouts posicionais gravados / cadastrar novo layout posicional
listar layouts de arquivos separados por delimitador / cadastrar novo layout por delimitador
configurar processamento de arquivos via pooling
histórico de arquivos processados
2 - exibir arquivos disponíveis pra processar / subir novo arquivo
upload com barra de progress
lista de arquivos já subidos
voltar ao menu
3 - processar arquivos
escolher o arquivo
formato entrada (com opção de direcionar para cadastrar novo layout)
formato saída
botão processar
validação de que o arquivo de entrada é tabular
barra de progresso
voltar ao menu
4 - listar layouts posicionais gravados / cadastrar novo layout posicional
lista dos layouts posicionais
editar
novo
entrar com campo + tipo + tamanho
voltar ao menu
5 - listar layouts de arquivos separados por delimitador / cadastrar novo layout por delimitador
lista dos layouts por delimitador
editar
novo
voltar ao menu
6 - configurar processamento de arquivos por pooling
lista de poolings já configurados
botão para excluir pooling listado
novo
pasta para fazer pooling
formato de entrada
formato de saída
7 - histórico de arquivos processados
lista de arquivos processados, entrada e saída
data e hora
link de download do arquivo processado
=== requisitos
REQUISITO 0; não há autenticação. A aplicação pode ser acessada por qualquer um, a restrição, caso necessário fica pelo controle do ip.
REQUISITO 1;
Em todos os formatos de arquivo de entrada, os dados devem ser tabulares. Senão não há como fazer a conversão de formato X para Y livremente. O XML e o Json são os mais fáceis de quebrarem essa regra, então colocaremos um validador, mas esse validador tb será capaz de identificar que os dados tabulares estão no segundo ou terceiro nivel.
Exemplo:
{"dados":
{ "items":
[ {"col1": "val1", "col2": "val2", "col3": "val3", "col4": "val4"}
, {"col1": "val1", "col2": "val2", "col3": "val3", "col4": "val4"}
, {"col1": "val1", "col2": "val2", "col3": "val3", "col4": "val4"}
, {"col1": "val1", "col2": "val2", "col3": "val3", "col4": "val4"} ]
}
}
mesmo os dados tabulares estando no terceiro nível, a aplicação conseguirá entender que existem dados tabulares, com nomes de colunas e valores pra cada linha.
No caso do XML, o mesmo risco.
<Note>
<books>
<items>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</items>
<books>
</note>
Mesmo no terceiro nível, foi possível encontrar dados tabulares, então as conversões poderão ocorrer, ok! Caso não sejam identificados dados tabulares, a validação dará erro e a mensagem alertada ao usuário.
Os formatos csv, txt, xlsx não têm esse problema por serem sempre tabulares.
REQUISITO 2;
Os arquivos que serão upados para o servidor terão seu limite determinado pela configuração do servidor. É Possível não ter limite algum. Basta configurar.
Por padrão, normalmente o limite é de 20 mega.
=== Entregáveis
sistema em
asp.net core web application com páginas web em razor
instalação e configuração em servidor escolhido
Prazo de Entrega: 12 de Janeiro de 2021