Привет, друзья! 👋

Завершил второй спринт Jobs Service: 10 из 10 задач закрыты ✅

Цель была в том, чтобы сервис сам поддерживал вакансии в актуальном состоянии. Что получилось:

▪️ 🔄 Автообновление. Parser стал долгоживущим сервисом со своим планировщиком: у каждого источника своё расписание, а сбой одного не останавливает другой.

▪️ 🗑 Актуальность. Если вакансия пропала из источника, она автоматически помечается неактуальной, а если вернулась, снова попадает в выдачу.

▪️ 📐 Единый формат. Добавил период оплаты и формат работы (офис, удалёнка, гибрид), поэтому вакансии из обоих источников выглядят одинаково.

Автоматизированных тестов теперь больше 240, включая сценарии гонок, таймаутов и сбоев.

Главный вывод ретроспективы: основная сложность оказалась не в формате данных, а в надёжном жизненном цикле обновления: повторные попытки, конкурирующие операции, согласованность PostgreSQL и Redis. Теперь такие вещи проектирую с заранее описанных состояний и переходов.

Сегодня стартовал третий спринт, займусь дубликатами вакансий. Следите за продолжением! 🚀

#petproject #fullstack #scrum #python #nestjs