Skip to content

IncludIA/Includ-Csharp

Repository files navigation

Includ.IA C# API

API RESTful desenvolvida para a Global Solution 2025/2 da FIAP, focada no tema "O Futuro do Trabalho".

Esta API implementa uma arquitetura híbrida de banco de dados (MongoDB + Oracle) para gerir vagas de emprego e candidaturas, cumprindo os requisitos de múltiplas disciplinas.

Requisitos (.NET) Atendidos

  • (Req 1) Boas Práticas REST:
    • Uso correto de verbos HTTP e Status Codes.
    • HATEOAS: Endpoint GET /api/v1/vaga retorna links self, update e delete.
    • Paginação: Implementada no GET /api/v1/vaga.
  • (Req 2) Monitoramento e Observabilidade:
    • Health Check: Endpoint em /health.
    • Logging: Logs estruturados com Serilog (Console e ficheiro).
    • Tracing: Traces HTTP com OpenTelemetry.
  • (Req 3) Versionamento da API:
    • Versionamento via URL (/api/v1/...) implementado.
  • (Req 4) Persistência (Híbrida):
    • MongoDB (NoSQL): Usado para Vagas, Candidatos e Candidaturas (leitura rápida para a API).
    • Oracle (Relacional) com EF Core: Usado para gerir Candidatos e Candidaturas via Migrations.
  • (Req 5) Testes Automatizados:
    • Testes unitários com xUnit e Moq para VagaService.

Requisitos (Banco de Dados) Atendidos

  • (Req 1) Modelagem Oracle: Tabelas TB_CANDIDATO e TB_CANDIDATURA criadas via EF Core Migrations.
  • (Req 2) PL/SQL:
    • PROC_INSERT_VAGA é chamada pelo VagaService.
    • TRG_AUDIT_VAGA implementada para auditoria.
  • (Req 5) Integração Oracle -> MongoDB: A API implementa esta integração ao salvar dados da Vaga tanto no Oracle (via Procedure) como no MongoDB (via Repositório).

Como Rodar

  1. Pré-requisitos:

    • .NET 9 SDK
    • Docker
  2. Iniciar os Bancos (Docker):

    # Iniciar o MongoDB
    docker run -d -p 27017:27017 --name includia-mongo mongo
    
    # Iniciar o Oracle XE
    docker run -d -p 1521:1521 -e ORACLE_PASSWORD=admin --name includia-oracle gvenzl/oracle-xe
  3. Configurar o Oracle:

    • Ligue-se ao localhost:1521 (User: system, Pass: admin, SID: XEPDB1).
    • Execute o script SQL (fornecido acima) para criar a TB_VAGA, PROC_INSERT_VAGA, etc.
  4. Executar a API (Terminal):

    # Na pasta IncludIA.Api
    dotnet run
  5. Acesso (Porta 5201):

    • Swagger UI: http://localhost:5201/swagger
    • Health Check: http://localhost:5201/health