- Работа приложения основана на открытом API сервиса, который доступен каждому без аутентификации.
- Приложение разрабатывается в ознакомительных с программированием и технологиями целях.
- Коммерческие цели не преследуются.
- Собранная информация с сайта не манипулируется, не распространяется и так далее и тому подобное...
- Злых умыслов разработчик не преследует. Всё ради занятия любимым делом и +1 pet-project :)
- выборка объявлений по конкретным поколениям модели (по определенным годам выпуска)
- выборка объявлений по всевозможным критериям, таким как: тип двигателя, наличие ABS, цвет и т.д.
- уведомление о новых объявлениях конкретной модели или поколения
- соответственно (предыд. пункт) реализовать подписки юзера на появление новых объявлений
- тесты
- CI; workflow piplines
- выявление "перекупов" путём наличия одинаковых мобильных номеров в разных объявлениях. Ставить красный флаг, когда при этом еще и указаны разные имена
- реализация Telegram бота для взаимодействия
- fastapi для реализации API
- docker
- возможно реализация кэша для снижения нагрузки на бд.
- защита от троттлинга API эндпоинтов
- продумать в какое время запускать сбор всех объявлений, обновление мобильных телефонов и тд.
- Выборка всех объявлений с сайта за 3-4 минуты (более 57000 штук)
- Выборка списка брендов с сайта (BMW, Mercedes, Alfa Romeo и т.д.)
- Выборка моделей конкретного бренда (для Audi это A3, A4, A5, A6 и т.д.)
- Выборка номера мобильного телефона с объявления
- Работа с БД
- Полностью асинхронный код (asyncpg, HTTPX, SQLAlchemy[asyncio])
- Оптимизировано по скорости сохранение в БД большого количества записей за один запрос.
- Продуман момент, когда в БД уже имеются найденные объявления на сайте. Если на сайте другое то только тогда обновить запись в БД конкретным способом. Всё работает за ровно 1 запрос к БД.
- Несмотря на работу с немалым объемом информации, приложение в пике занимает не больше 300 МБ (настраивается)
- Доступна регулировка баланса производительностью и оптимизацией ресурсов сервера (выше скорость - больше ресурсов сервера)
- Python3.10
- HTTPX
- SQLAlchemy 2.0 [async]
- Alembic
- TODO: fastapi, aiogram