Для запуску проекту потрібно:
- Підняти docker compose
- Підтянути фікстури принтерів
1. Сервіс для обробки замовлення:
- Отримує інформацію про нове замовлення.
- Створює в базі даних (БД) чеки для всіх принтерів точки, зазначеної в замовленні.
- Розміщує асинхронні завдання на генерацію PDF-файлів для цих чеків.
- Повертає помилку, якщо точка не має жодного принтера.
- Повертає помилку, якщо чеки для цього замовлення вже були створені.(передається номер замовлення)
2. Асинхронний воркер:
- Використовує wkhtmltopdf для генерації PDF-файлу з HTML-шаблону.
- Назва файлу має бути у форматі <ID замовлення>_<тип чека>.pdf (наприклад, 123456_client.pdf).
- Файли зберігаються в папці media/pdf у корені проекту.
3. Програма для опитування сервісу:
- Опитує сервіс на наявність нових чеків.
- Запитує список чеків, які вже були згенеровані для конкретного принтера.
- Завантажує PDF-файл для кожного чека.
- Відправляє кожен PDF-файл на друк.
- Змінює статус чеку після друку.
-
Модель "Printer"
Поле Тип Значення Опис name CharField Назва принтеру api_key CharField Ключ доступу до API check_type CharField kitchen/client Тип чеку який друкує принтер point_id IntegerField Точка до якої прив'язаний принтер - Кожен принтер друкує лише свій тип чеків.
- Поле
api_key
набуває унікальних значень, по ньому однозначно визначається принтер. - Для цієї моделі повинні бути
fixtures
(принтери для обох типів чеків для кількох точок).
-
Модель "Check"
Поле Тип Значення Опис printer_id ForeignKey Принтер type CharField kitchen/client Тип чеку order JSONField Інформація про замовлення status CharField new/rendered/printed Статус чеку pdf_file FileField Посилання на створений PDF-файл - Для цієї моделі повинні бути
fixtures
(принтери для обох типів чеків для кількох точок).
- Для цієї моделі повинні бути
- Опис доступних методів міститься у файлі api.yml (swagger-специфікація).