Completed

Aplicação web em .net para processar arquivos transformando formatos

Published on the December 03, 2020 in IT & Programming

About this project

Open

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

Category IT & Programming
Subcategory Web development
What is the scope of the project? Create a new custom site
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Roles needed Developer

Delivery term: January 12, 2021

Skills needed