📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Sistemas com C#. Recomendado revisar antes de começar.

🎯 Engine de Processamento de Dados com C# & LINQ

v1.0 — C# 12, .NET 8, LINQ, PLINQ, Streams e Manipulação Concorrente

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Desenvolvedor C# / .NET Júnior. C# é a espinha dorsal de sistemas corporativos de missão crítica em bancos, seguradoras e multinacionais. Dominar LINQ (Language Integrated Query) e paralelismo com PLINQ permite filtrar, agregar e transformar milhões de registros com clareza e alta velocidade.

—`

🎯 Objetivo & Escopo do Projeto

Construir uma Engine de Processamento e Auditoria Financeira em C# .NET 8, utilizando consultas declarativas LINQ e paralelismo com PLINQ para filtrar, agregar, agrupar e calcular métricas de vendas e risco sobre coleções de centenas de milhares de transações em memória.

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Gerente de Riscos Financeiros)

“Nossa mesa de operações recebe 100.000 transações por lote. Precisamos de um motor em C# que consiga: filtrar transações suspeitas (valor acima de R$ 50.000), agrupar o total transacionado por categoria de cliente e calcular o ticket médio, tudo isso utilizando os múltiplos cores do servidor sem travar a thread principal.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Filtrar transações com valor superior ao limiar de risco utilizando LINQ Where. “filtrar transações suspeitas”
RF02 Funcional Agrupar e somar volumes financeiros por categoria com LINQ GroupBy. “agrupar total por categoria”
RF03 Funcional Processar coleções em paralelo com PLINQ AsParallel(). “múltiplos cores do servidor”
RNF01 Não-Funcional Tempo de processamento de 100.000 registros inferior a 50 milissegundos. Alta Performance
RNF02 Não-Funcional Uso de tipos imutáveis record do C# 12 para segurança em threads. Thread Safety

—`

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como auditor de risco, quero consultar transações anômalas com agregação instantânea. Alta
US02 Como arquiteto .NET, quero explorar paralelismo nativo do hardware via PLINQ. Alta

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Setup)

# Branch da funcionalidade
git checkout -b feature/US01-csharp-linq-engine

# Executar a aplicacao via .NET CLI
dotnet run

—`

🛠️ Fase 4 — Implementação Guiada (Program.cs)

using System;
using System.Collections.Generic;
using System.Linq;

public record Transacao(int Id, string Categoria, decimal Valor, DateTime Data);

class Program
{
    static void Main()
    {
        var transacoes = new List<Transacao>
        {
            new(1, "Varejo", 1500.00m, DateTime.Now),
            new(2, "Corporativo", 85000.00m, DateTime.Now),
            new(3, "Varejo", 3200.00m, DateTime.Now),
        };

        // Consulta LINQ declarativa
        var suspeitas = transacoes
            .AsParallel() // PLINQ para execucao paralela
            .Where(t => t.Valor > 50000.00m)
            .ToList();

        Console.WriteLine($"Transacoes de Alto Risco Encontradas: {suspeitas.Count}");
    }
}

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd sistemas_csharp_01_engine_linq

2. Execute a aplicação e os testes

dotnet run
dotnet test

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/sistemas_csharp_01_engine_linq`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Asserções

// Asserção de filtro LINQ
var totalVarejo = transacoes.Where(t => t.Categoria == "Varejo").Sum(t => t.Valor);
Console.WriteLine($"Total Varejo: R$ {totalVarejo:F2}");

—`

✅ Checkpoint Final

  1. Motor LINQ processando filtros e agregações com precisão decimal.
  2. Execução paralela com PLINQ validada.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal