Skip to content

Voreger/ExpirationMaster

Repository files navigation

ExpirationMaster

Система управления сроками годности товаров для автоматического отслеживания и уведомления о приближающихся сроках годности.

Описание

ExpirationMaster - это комплексное решение для предприятий, которым необходимо контролировать сроки годности товаров. Система позволяет отслеживать партии товаров, автоматически определять приближающиеся к истечению сроки годности и отправлять уведомления, а также производить списания просроченных товаров.

Архитектура

Проект состоит из следующих компонентов:

API-сервер

  • Основной REST API для работы с товарами, партиями и списаниями
  • Использует PostgreSQL для хранения данных
  • Включает систему ролевой авторизации
  • Обрабатывает CORS и стандартные middleware для логирования и восстановления после паники

Notifier

  • Сервис уведомлений, который периодически опрашивает API для получения информации о товарах, приближающихся к окончанию срока годности
  • Отправляет уведомления в Telegram о скором истечении срока годности
  • Работает по таймеру с заданным интервалом

Integrator

  • Интеграционный сервис для обмена данными через RabbitMQ
  • Принимает данные о товарах из внешних систем
  • Взаимодействует с API для сохранения информации о товарах

UI

  • Веб-интерфейс на Bootstrap с возможностью темной темы
  • Отображает партии с риском (истекающие и просроченные)
  • Позволяет производить списания товаров

Сущности

Система работает с тремя основными сущностями:

  1. Product - информация о товаре (наименование, категория, цена и т.д.)
  2. Batch - партия товара с датой поступления и сроком годности
  3. Writeoff - запись о списании части или всего количества товара из партии

Технологии

  • Язык программирования: Go
  • База данных: PostgreSQL
  • Асинхронные сообщения: RabbitMQ
  • Веб-фреймворк: Chi
  • Веб-интерфейс: Bootstrap
  • Контейнеризация: Docker, Docker Compose

Установка и запуск

  1. Склонируйте репозиторий:
git https://github.com/Voreger/ExpirationMaster
  1. Скопируйте файл конфигурации:
cp .env.example .env
  1. Настройте переменные окружения в файле .env:
  • POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB - учетные данные для PostgreSQL
  • DATABASE_URL - строка подключения к базе данных
  • TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID - для уведомлений в Telegram
  • Другие параметры конфигурации
  1. Запустите приложение с помощью Docker Compose:
docker-compose up --build

API Endpoints

Товары

  • GET /products - получить список товаров
  • POST /products - создать новый товар
  • GET /products/{id} - получить информацию о товаре
  • PUT /products/{id} - обновить информацию о товаре
  • DELETE /products/{id} - удалить товар

Партии

  • GET /batches - получить список партий
  • POST /batches - создать новую партию
  • GET /batches/{id} - получить информацию о партии
  • PUT /batches/{id} - обновить информацию о партии
  • DELETE /batches/{id} - удалить партию

Списания

  • GET /writeoffs - получить список списаний
  • POST /writeoffs - создать новое списание
  • GET /writeoffs/{id} - получить информацию о списании

Уведомления

Система автоматически отправляет уведомления в Telegram за заданное количество дней до истечения срока годности товара. Для настройки уведомлений необходимо:

  1. Создать Telegram-бота
  2. Указать токен бота и ID чата в переменных окружения

Интеграция

Интеграция с внешними системами осуществляется через RabbitMQ. Интеграционный сервис присылает сообщения в очередь для сохранения информации о товарах.

Веб-интерфейс

Веб-интерфейс доступен по адресу http://localhost:8080/ui/ и предоставляет возможность:

  • Просматривать партии с риском (истекающие и просроченные)
  • Производить списания товаров
  • Просматривать историю списаний
  • Переключать светлую/темную тему

Безопасность

Система включает ролевую авторизацию для защиты API-эндпоинтов. Все запросы должны содержать корректный заголовок авторизации с ролью пользователя.

Логирование

Все запросы и ошибки логируются для возможности аудита и диагностики проблем в работе системы.

Мониторинг состояния

Система предоставляет эндпоинт /health для проверки состояния сервиса.

About

ExpirationMaster - система управления сроками годности товаров с автоматическим отслеживанием, уведомлениями и интеграцией через RabbitMQ.

Topics

Resources

Stars

Watchers

Forks

Contributors