Skip to content

Latest commit

 

History

History
191 lines (137 loc) · 7.8 KB

README_es.md

File metadata and controls

191 lines (137 loc) · 7.8 KB

Full Projects Logo API de medición de cuentas de gas y agua Full Projects Logo

🌐 Português Español English Русский 中文 العربية

Se trata de una API desarrollada para gestionar las mediciones de clientes en diferentes tipos de servicios. La aplicación utiliza Node.js, TypeScript, Prisma, Express.js y otras tecnologías para ofrecer un backend robusto y escalable.

Estado: En Desarrollo

Corriendo backend con docker Solicitud POST para crear cliente

📏 FrontEnd

🛠️ Tecnologías Utilizadas

  • Node.js: Entorno de ejecución para JavaScript en el backend.
  • TypeScript: Superconjunto de JavaScript que añade tipado estático al código.
  • Express.js: Framework web minimalista para Node.js.
  • Prisma: ORM que facilita el acceso a la base de datos.
  • MySQL: Base de datos utilizada durante el desarrollo.
  • ESLint: Herramienta de linting para mantener el código limpio y estandarizado.
  • Jest: Framework de pruebas utilizado para garantizar la calidad del código.
  • Mocha: Utilizado para pruebas adicionales.
  • Google Generative AI: Integrado para analizar imágenes de medidores y extraer valores numéricos de las mediciones.
  • Swagger: Integrado para generar documentación para las rutas.

📁 Estructura del Proyecto

El proyecto sigue una estructura modular para facilitar el mantenimiento y la escalabilidad. Las principales carpetas y archivos son:

  • src/: Contiene el código fuente de la aplicación.
    • controllers/: Lógica de control, donde se procesan las solicitudes.
    • db/: Genera una instancia de prisma para la conexión con la base de datos para toda la aplicación.
    • exceptions/: Crea excepciones personalizadas para manejar errores durante la ejecución de la aplicación.
    • interfaces/: Crea interfaces y tipos para manejar parámetros y retornos de funciones.
    • middlewares/: Middlewares para validaciones y tratamientos.
    • models/: Lógica de conexión con la base de datos.
    • services/: Capa de servicios que interactúa con Prisma y realiza operaciones de negocio.
    • routes/: Definición de las rutas de la API.
    • utils/: Funciones utilitarias, como manipulación de imágenes e interacción con la API de Google Generative AI.
    • tests/: Pruebas automatizadas para validar las funcionalidades.

⚙️ Funcionalidades

  • Listar Mediciones: Permite listar todas las mediciones de un cliente específico, filtrando por tipo de medición.
  • Gestión de Imágenes: Las imágenes de mediciones se guardan y recuperan a través de URLs temporales, utilizando Base64.
  • Validación de Parámetros: Middleware para validar parámetros de entrada, garantizando la integridad de las solicitudes.
  • Análisis de Imágenes con Google Generative AI: La API analiza imágenes de mediciones y extrae el valor de consumo mostrado.

🚀 Cómo Ejecutar el Proyecto

Requisitos

  • Node.js
  • Docker (opcional para el entorno de desarrollo)

Instalación

  1. Clona el repositorio:

    git clone /~https://github.com/SamuelRocha91/apiShopper.git
    cd apiMeasureWaterAndGas
  2. Instala las dependencias:

    npm install
  3. Configura las variables de entorno:

    • Crea un archivo .env con las configuraciones necesarias.
    • Ejemplo:
      DATABASE_URL="file:./dev.db"
      GEMINI_API_KEY="tu_clave_api_google"
      HOST="http://localhost:3000"
  4. Ejecuta las migraciones de la base de datos:

    npx prisma migrate dev
  5. Inicia el servidor:

    npm run dev

Docker

Puedes ejecutar el proyecto utilizando Docker. Para ello, ejecuta:

docker-compose up --build

🧪 Pruebas

Las pruebas se ejecutan con Jest y Mocha. Para ejecutar todas las pruebas:

npm run test

📜 Scripts Disponibles

  • start: Inicia la aplicación.
  • dev: Inicia la aplicación en modo de desarrollo.
  • build: Compila el código TypeScript a JavaScript.
  • lint: Ejecuta ESLint para verificar la conformidad del código.
  • lint:fix: Ejecuta ESLint y corrige problemas automáticamente.
  • prisma:generate: Genera los tipos de Prisma.
  • prisma:migrate: Ejecuta migraciones de la base de datos.
  • prisma:seed: Población de la base de datos con datos iniciales.
  • docker: Instala las dependencias, genera los tipos de Prisma, ejecuta migraciones e inicia el servidor utilizando Nodemon.
  • test: Ejecuta todas las pruebas usando Mocha y Jest.

🖼️ Configuración de Imagen

Funciones utilitarias para guardar y generar URLs para imágenes:

  • saveBase64Image: Guarda una imagen Base64 en un archivo en el servidor.
  • getImageUrl: Genera una URL temporal para acceder a la imagen.
  • extractMimeType: Extrae el tipo MIME de una imagen Base64.
  • extractSize: Calcula el tamaño de una imagen Base64.

🔍 Análisis de Imágenes con Google Generative AI

La función checkMeasureValue utiliza Google Generative AI para analizar imágenes de mediciones y extraer el valor de consumo.

async function checkMeasureValue(mime: string, base64: string): Promise<number> {
  const result = await model.generateContent([
    {
      inlineData: {
        mimeType: mime,
        data: base64
      }
    },
    { text: PROMPT }
  ]);

  return Number(result.response.text().match(/\d+/)[0]);
}

Esta función se utiliza para garantizar que el valor de la medición sea extraído con precisión a partir de la imagen proporcionada.

🔗 Otros Repositorios:

/~https://github.com/SamuelRocha91/paymentAPI/blob/main/README_es.md)