fastcheck/PROJECT_DESCRIPTION_ES.md
2026-04-08 13:58:46 -04:00

10 KiB

Descripción del Proyecto Duxiter

1. Resumen del Proyecto

Duxiter es una aplicación web diseñada como una Plataforma de Evaluación de Proveedores. Permite a los usuarios registrarse, iniciar sesión y realizar evaluaciones de proveedores. El sistema parece soportar diferentes roles de usuario (ej. admin, admin de tenant, evaluador) y gestiona tenants, que representan diferentes organizaciones cliente que utilizan la plataforma. Las funcionalidades clave incluyen evaluaciones individuales y masivas, búsquedas de empresas, y visualización de resultados y resúmenes de evaluaciones. El proyecto también incluye características administrativas para gestionar usuarios y ver registros (ej. registros Sheriff).

El proyecto está estructurado como una aplicación full-stack con un frontend separado (React/TypeScript) y backend (Node.js/Express/TypeScript).

2. Tecnologías Utilizadas

  • Frontend:
    • React ( con Vite como herramienta de construcción, inferido de vite.config.ts y estructura de index.html)
    • TypeScript
    • Tailwind CSS (inferido de tailwind.config.js, postcss.config.js)
    • Axios (para comunicación con API, visto en src/services/api.ts)
    • React Router (inferido de la estructura típica de proyectos React y necesidades de navegación)
  • Backend:
    • Node.js
    • Express.js
    • TypeScript
    • MongoDB (base de datos, inferido de VITE_MONGODB_URI en .env y server/src/config/db.ts)
    • Mongoose (ODM para MongoDB, inferido de archivos de modelo como server/src/models/User.ts)
    • JWT (para autenticación, inferido de VITE_JWT_SECRET en .env y middleware de auth)
    • Swagger/OpenAPI (para documentación de API, visto en server/src/config/swagger.ts y server/src/index.ts)
    • Helmet (para headers de seguridad)
    • Express-rate-limit (para limitación de velocidad de API)
    • Cors (para Cross-Origin Resource Sharing)
  • Herramientas de Desarrollo y Construcción:
    • ESLint (inferido de eslint.config.js)
    • Jest (para testing, inferido de jest.config.js y rut.test.ts)
    • npm o yarn (gestión de paquetes, inferido de package.json)
  • Despliegue:
    • Nginx (como proxy reverso, basado en interacciones previas)
    • Docker (potencialmente, aunque no directamente visible en los listados de archivos)

3. Frontend (src/)

La aplicación frontend está construida con React y TypeScript, ubicada en el directorio src.

3.1. Estructura

  • src/assets: Recursos estáticos como imágenes (ej. duxiter_logo.png).
  • src/components: Componentes de UI reutilizables.
  • src/contexts: Proveedores de React Context API para gestión de estado global (ej. AuthContext.tsx, TenantContext.tsx).
  • src/models: Modelos/tipos de datos del frontend, reflejando estructuras del backend (ej. evaluation.ts).
  • src/pages: Componentes de página de nivel superior representando diferentes vistas/rutas.
    • src/pages/admin: Páginas para usuarios administrativos (ej. AdminDashboard.tsx, SheriffLogDetailPage.tsx).
    • src/pages/auth: Páginas de autenticación (ej. Login.tsx, Register.tsx).
    • src/pages/dashboard: Página principal del dashboard.
    • src/pages/evaluations: Páginas relacionadas con evaluaciones (ej. SingleEvaluation.tsx, BulkEvaluation.tsx, EvaluationsSummaryPage.tsx).
    • src/pages/tenant: Páginas para gestión de tenants (ej. TenantSettings.tsx, TenantUsers.tsx).
    • Otras páginas como CompanyLookup.tsx, LandingPage.tsx, NotFound.tsx.
  • src/services: Módulos para interactuar con la API del backend (ej. api.ts, companyService.ts, evaluationService.ts).
  • src/types: Definiciones de tipos TypeScript para varias estructuras de datos (ej. auth.ts, evaluation.ts, sheriff.ts, tenant.ts).
  • src/utils: Funciones de utilidad (ej. rut.test.ts sugiere utilidades de validación de RUT).
  • Puntos de entrada principales: main.tsx, App.tsx, index.html.
  • Configuración: vite.config.ts, tsconfig.json, tailwind.config.js.

3.2. Características y Componentes Clave

  • Autenticación de Usuario (Login, Registro)
  • Rutas Protegidas basadas en estado de autenticación y roles de usuario.
  • Dashboard para usuarios autenticados.
  • Evaluación de Proveedores (individual y masiva).
  • Visualización de Resultados y Resúmenes de Evaluaciones.
  • Búsqueda de Empresas.
  • Gestión de Tenants (configuraciones, usuarios).
  • Funcionalidades de Admin (dashboard, visualización de registros).
  • Gestión de estado global para información de Auth y Tenant.

4. Backend (server/src/)

La API del backend está construida con Node.js, Express y TypeScript, ubicada en el directorio server/src.

4.1. Estructura

  • server/src/config: Archivos de configuración para base de datos (db.ts, database.ts), Swagger (swagger.ts).
  • server/src/controllers: Manejadores de solicitudes que interactúan con servicios y modelos (ej. auth.controller.ts, evaluation.controller.ts - asumido, user.controller.ts, tenant.controller.ts).
  • server/src/middleware: Funciones de middleware de Express (ej. auth.middleware.ts para autenticación, role.middleware.ts para control de acceso basado en roles).
  • server/src/models: Modelos de Mongoose definiendo el esquema de base de datos (ej. User.ts, Company.ts, Evaluation.ts, Tenant.model.ts, SheriffDataLog.ts).
  • server/src/routes: Módulos de router de Express definiendo endpoints de API (ej. auth.routes.ts, user.routes.ts, evaluation.routes.ts, tenant.routes.ts). El router principal es server/src/routes/index.ts.
  • server/src/scripts: Scripts de utilidad (ej. migrate-tenant-usage.ts).
  • server/src/services: Módulos de lógica de negocio que interactúan con modelos y servicios externos (ej. auth.service.ts, evaluationService.ts, userService.ts, OpenAIService.ts, siiService.ts, sheriffService.ts).
  • server/src/types: Definiciones de tipos TypeScript específicas del backend.
  • Punto de entrada principal: server/src/index.ts que configura la aplicación Express, middleware, rutas y arranca el servidor.
  • Configuración de Entorno: server/.env (aunque también se usa el .env principal en la raíz).

4.2. Características y Componentes Clave

  • API RESTful para interacción con el frontend.
  • Autenticación y autorización de usuarios (basada en JWT).
  • Operaciones CRUD para Usuarios, Tenants, Evaluaciones, Empresas.
  • Servicios para manejar lógica de negocio compleja relacionada con evaluaciones, gestión de usuarios, etc.
  • Integración con servicios externos (OpenAI, SII, Sheriff).
  • Documentación de API vía Swagger.
  • Medidas de seguridad (Helmet, limitación de velocidad).
  • Interacción con base de datos vía Mongoose.

5. Base de Datos

  • El proyecto utiliza MongoDB como su base de datos principal.
  • La configuración se gestiona en server/src/config/db.ts y la URI de conexión se especifica en el archivo .env (VITE_MONGODB_URI).
  • Mongoose se utiliza como el Object Data Mapper (ODM) para interactuar con MongoDB, con esquemas definidos en server/src/models.

6. Despliegue y Entorno

  • La aplicación se sirve vía Nginx, que actúa como un proxy reverso tanto para el frontend (aplicación React) como para la API del backend.
  • Nginx maneja la terminación SSL y redirección de HTTP a HTTPS.
  • Las variables de entorno se gestionan a través de archivos .env en la raíz del proyecto y dentro del directorio server/. Estas variables configuran conexiones de base de datos, claves de API (secreto JWT, token de API Sheriff), puertos del servidor y URLs base de API.
  • El backend incluye limitación de velocidad y headers de seguridad (Helmet) para preparación de producción.

7. Resumen de Funcionalidades Principales

  • Gestión de Usuarios: Registro, login, roles de usuario, gestión de contraseñas.
  • Gestión de Tenants: Instancias específicas de organización de la plataforma, gestión de usuarios dentro de tenants.
  • Evaluación de Proveedores:
    • Realizar evaluaciones individuales y masivas de proveedores.
    • Procesar y almacenar datos de evaluación.
    • Mostrar resultados y resúmenes de evaluaciones.
  • Información de Empresas: Búsqueda y visualización de detalles de empresas.
  • Scraping/Integración de Datos: Servicios como scraperService.ts, siiService.ts, sheriffService.ts sugieren integración con fuentes de datos externas o web scraping para enriquecer datos de proveedores.
  • Integración con IA: OpenAIService.ts sugiere el uso de OpenAI para algunas características, posiblemente relacionadas con análisis de datos o procesamiento en evaluaciones.
  • Administración: Dashboard para admins, logging (registros de datos Sheriff).

Este documento proporciona una visión general de alto nivel basada en la estructura de archivos del proyecto e interacciones previas. Se requeriría una inmersión más profunda en archivos específicos para una comprensión más granular de la implementación de cada componente.