Инструкция по локальному запуску лежит в ветке v1.0localrun
- Клонируйте репозиторий на локальную машину:
git clone https://github.com/Ilnur786/fabrique-test.git
- Убедитесь что на вашей машине установлен docker и docker-compose
- Заполните поля в конфиг файле config/.env.prod:
- JWT_TOKEN - токен для взаимодействия со сторонним сервисом осуществления рассылки
- MAIL_USERNAME - логин от почты отправителя (mail.ru или gmail.com)
- MAIL_PASSWORD - пароль приложения (https://help.mail.ru/mail/security/protection/external, https://support.google.com/accounts/answer/185833?hl=ru)
- RECIPIENT_MAIL - эл.почта получателя статистики
- Находясь в папке проекта запустите команду в терминале:
docker-compose up
- Документация по адресу /docs/
- Админ панель по адресу /admin/
Проект разрабатывался и тестировался на Windows 10 64bit (python 3.8.0).
- Разбить проект на модули:
- Отделить классы ОРМ моделей
- Перенести функции
- Перенести декораторы
- Перенести руты (опционально)
- Дописать руты для получения статистики
- Отказаться от flask-sqlalchemy (опционально) и использовать оригинальный sqlalchemy по причинам:
- Многое не очевидно в реализации flask-sqlalchemy, куцая документация
- Нет необходимости в использовании фич flask-sqlalchemy
- Будет проще при вынесении ОРМ классов в отдельный файл
- Применение моделей в разных приложениях в рамках одного проекта
- Статья по этому поводу: https://towardsdatascience.com/use-flask-and-sqlalchemy-not-flask-sqlalchemy-5a64fafe22a4
- Нарисовать схему архитектуры БД
- Нарисовать схемы функционирования API (опционально)
- Написать декоратор-диспетчер метода запроса
- [-] Дополнить классы зефира полями и функцией, формирующей результат контроллера (опционально). Обновление: не имеет смысла, т.к. message у рутов разный и зависит не только от объектов marshmallow.
- Написать CBV и документацию для сущностей:
- Рассылка
- Статистика
- Клиент
- Решить проблему с обработкой ошибок. marshal_with не позволяет сделать это адекватно.
- Заменить обработку кастомных ошибок на общие, чтобы приложение не падало из-за неверного запроса, а отдавала текст ошибки. Обновление: Ошибки не относящиеся к валидации, будут отдавать сообщение External Error
- Созданы ОРМ модели базы данных
- Созданы схемы валидации marshmallow
- Написать все необходимые руты
- Создать сервис, мониторящий дату рассылок и обращающийся к стороннему API для осуществления рассылок
- Реализовать отправку статистики раз в сутки на email
- Добавить логгирование (loguru or logging)
- Написать документацию
- Создать админ панель c помощью flask-admin
- Обернуть в docker-compose