# Arquitectura de la API

### Componentes Principales

Nuestra API está compuesta por varios componentes clave, cada uno con responsabilidades específicas en el procesamiento y gestión de datos. A continuación, se detallan estos componentes:

#### DataModule

El **DataModule** es el componente principal encargado de recibir y procesar las peticiones de datos. Su responsabilidad incluye la gestión de la lógica de negocio relacionada con el procesamiento de datos, así como la coordinación con otros componentes para realizar operaciones de lectura y escritura.

#### Repositorios de PostgreSQL

* **MemberReportRepository**: Este repositorio maneja las operaciones de lectura y escritura de datos relacionados con los reportes de miembros en la base de datos PostgreSQL. Se encarga de realizar consultas específicas y almacenar los datos necesarios para los reportes.
* **AccountDailyReportRepository**: Similar al MemberReportRepository, este componente se encarga de gestionar los datos diarios de cuentas, realizando operaciones de lectura y escritura en PostgreSQL. Facilita la generación de reportes diarios basados en la actividad de las cuentas.

#### Configuraciones de MongoDB

* **ScrapperConfig**: Este componente contiene las configuraciones necesarias para los scrappers que obtienen datos desde diversas fuentes. ScrapperConfig almacena y gestiona estas configuraciones en la base de datos MongoDB, permitiendo una fácil actualización y acceso a las mismas.
* **ApiConfig**: Similar a ScrapperConfig, ApiConfig gestiona las configuraciones específicas para las interacciones de la API. Almacena datos de configuración en MongoDB, facilitando la gestión y consulta de estos parámetros para el correcto funcionamiento de la API.

### Estructura de Carpetas

La estructura de carpetas de nuestro proyecto sigue el patrón semihexagonal, asegurando que cada módulo y componente esté organizado de manera clara y lógica. A continuación, se muestra un ejemplo de cómo está estructurado el proyecto:

```
/project-root
│
├── /app
├── /common
├── /health
├── /modules
│   ├── /account-report
│   ├── /affiliate-link-consolidated
│   ├── /api-config
│   ├── /campaign
│   ├── /campaign-data
│   ├── /condition
│   ├── /data
│   ├── /link
│   ├── /logging
│   ├── /member-report
│   └── /scrapper-config
└── /router
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-affiliates.inlaze.com/reportes/data-processor/arquitectura-de-la-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
