Skip to content

Latest commit

 

History

History
185 lines (133 loc) · 10.2 KB

README_ru.md

File metadata and controls

185 lines (133 loc) · 10.2 KB

Full Projects Logo API учета показаний газа и воды Full Projects Logo

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

Это API, разработанное для управления показаниями клиентов по различным услугам. Приложение использует Node.js, TypeScript, Prisma, Express.js и другие технологии для обеспечения надежного и масштабируемого бэкенда.

Статус: В Разработке

Работа бэкенда с Docker POST-запрос для создания клиента

📏 FrontEnd

🛠️ Используемые технологии

  • Node.js: Среда выполнения JavaScript на стороне сервера.
  • TypeScript: Суперсет JavaScript, добавляющий статическую типизацию в код.
  • Express.js: Минималистичный веб-фреймворк для Node.js.
  • Prisma: ORM, который упрощает доступ к базе данных.
  • MySQL: Используемая база данных в процессе разработки.
  • ESLint: Инструмент для линтинга, помогающий поддерживать код в чистоте и стандарте.
  • Jest: Фреймворк для тестирования, используемый для обеспечения качества кода.
  • Mocha: Используется для дополнительных тестов.
  • Google Generative AI: Интегрирован для анализа изображений счетчиков и извлечения числовых значений показаний.
  • Swagger: Интегрирован для генерации документации для маршрутов.

📁 Структура проекта

Проект следует модульной структуре для облегчения обслуживания и масштабируемости. Основные папки и файлы:

  • src/: Содержит исходный код приложения.
    • controllers/: Логика управления, где обрабатываются запросы.
    • db/: Генерирует экземпляр Prisma для подключения к базе данных для всего приложения.
    • exceptions/: Создает пользовательские исключения для обработки ошибок во время выполнения приложения.
    • interfaces/: Создает интерфейсы и типы для управления параметрами и возвращаемыми значениями функций.
    • middlewares/: Промежуточные функции для проверок и обработки.
    • models/: Логика подключения к базе данных.
    • services/: Уровень сервисов, взаимодействующий с Prisma и выполняющий бизнес-операции.
    • routes/: Определение маршрутов API.
    • utils/: Утилитарные функции, такие как работа с изображениями и взаимодействие с API Google Generative AI.
    • tests/: Автоматизированные тесты для проверки функциональности.

⚙️ Функциональности

  • Список показаний: Позволяет просматривать все показания конкретного клиента с фильтрацией по типу показания.
  • Управление изображениями: Изображения показаний сохраняются и извлекаются через временные URL-адреса, используя Base64.
  • Проверка параметров: Промежуточное ПО для проверки входных параметров, обеспечивающее целостность запросов.
  • Анализ изображений с помощью Google Generative AI: API анализирует изображения показаний и извлекает значение потребления.

🚀 Как запустить проект

Требования

  • Node.js
  • Docker (опционально для окружения разработки)

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/SamuelRocha91/apiShopper.git
    cd apiMeasureWaterAndGas
  2. Установите зависимости:

    npm install
  3. Настройте переменные окружения:

    • Создайте файл .env с необходимыми конфигурациями.
    • Пример:
      DATABASE_URL="file:./dev.db"
      GEMINI_API_KEY="ваш_api_ключ_google"
      HOST="http://localhost:3000"
  4. Выполните миграции базы данных:

    npx prisma migrate dev
  5. Запустите сервер:

    npm run dev

Docker

Вы можете запустить проект с использованием Docker. Для этого выполните:

docker-compose up --build

🧪 Тесты

Тесты выполняются с помощью Jest и Mocha. Чтобы запустить все тесты:

npm run test

📜 Доступные скрипты

  • start: Запускает приложение.
  • dev: Запускает приложение в режиме разработки.
  • build: Компилирует код TypeScript в JavaScript.
  • lint: Запускает ESLint для проверки соответствия кода.
  • lint:fix: Запускает ESLint и автоматически исправляет проблемы.
  • prisma:generate: Генерирует типы Prisma.
  • prisma:migrate: Выполняет миграции базы данных.
  • prisma:seed: Заполняет базу данных начальными данными.
  • docker: Устанавливает зависимости, генерирует типы Prisma, выполняет миграции и запускает сервер с использованием Nodemon.
  • test: Запускает все тесты с использованием Mocha и Jest.

🖼️ Настройка изображения

Утилитарные функции для сохранения и генерации URL-адресов для изображений:

  • saveBase64Image: Сохраняет изображение в формате Base64 в файл на сервере.
  • getImageUrl: Генерирует временный URL для доступа к изображению.
  • extractMimeType: Извлекает тип MIME из изображения в формате Base64.
  • extractSize: Вычисляет размер изображения в формате Base64.

🔍 Анализ изображений с помощью Google Generative AI

Функция checkMeasureValue использует Google Generative AI для анализа изображений показаний и извлечения значения потребления.

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


  ]);
  return result.content?.[0]?.text ?? 0;
}

📦 Другие API