djimontyp / check

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Check service

Запуск проекту:

Для запуску проекту потрібно:

  1. Підняти docker compose
  2. Підтянути фікстури принтерів

Опис роботи сервісу:

1. Сервіс для обробки замовлення:

  • Отримує інформацію про нове замовлення.
  • Створює в базі даних (БД) чеки для всіх принтерів точки, зазначеної в замовленні.
  • Розміщує асинхронні завдання на генерацію PDF-файлів для цих чеків.
  • Повертає помилку, якщо точка не має жодного принтера.
  • Повертає помилку, якщо чеки для цього замовлення вже були створені.(передається номер замовлення)

2. Асинхронний воркер:

  • Використовує wkhtmltopdf для генерації PDF-файлу з HTML-шаблону.
  • Назва файлу має бути у форматі <ID замовлення>_<тип чека>.pdf (наприклад, 123456_client.pdf).
  • Файли зберігаються в папці media/pdf у корені проекту.

3. Програма для опитування сервісу:

  • Опитує сервіс на наявність нових чеків.
  • Запитує список чеків, які вже були згенеровані для конкретного принтера.
  • Завантажує PDF-файл для кожного чека.
  • Відправляє кожен PDF-файл на друк.
  • Змінює статус чеку після друку.

Моделі:

  1. Модель "Printer"

    Поле Тип Значення Опис
    name CharField Назва принтеру
    api_key CharField Ключ доступу до API
    check_type CharField kitchen/client Тип чеку який друкує принтер
    point_id IntegerField Точка до якої прив'язаний принтер
    • Кожен принтер друкує лише свій тип чеків.
    • Поле api_key набуває унікальних значень, по ньому однозначно визначається принтер.
    • Для цієї моделі повинні бути fixtures (принтери для обох типів чеків для кількох точок).
  2. Модель "Check"

    Поле Тип Значення Опис
    printer_id ForeignKey Принтер
    type CharField kitchen/client Тип чеку
    order JSONField Інформація про замовлення
    status CharField new/rendered/printed Статус чеку
    pdf_file FileField Посилання на створений PDF-файл
    • Для цієї моделі повинні бути fixtures (принтери для обох типів чеків для кількох точок).

API:

  • Опис доступних методів міститься у файлі api.yml (swagger-специфікація).

About

License:MIT License


Languages

Language:Python 90.4%Language:HTML 5.0%Language:Makefile 3.8%Language:Dockerfile 0.9%