feat(procurement): суточный ре-парсинг прайсов поставщиков - #850
Merged
Merged
Conversation
У каталога сайта суточная задача была, у поставщиков — нет: прайсы разбирались только руками через `POST /admin/procurement/sync-suppliers`, и положенный в папку свежий файл никто не подхватывал. На проде офферы поставщиков из-за этого простояли нетронутыми с 24.07 по 28.09.2026 — два месяца ассистент считал цены и остатки по июльскому срезу. - `procurement_supplier_sync` — ежесуточно в 23:50 UTC, после каталога (23:30): оба источника пишут в одну таблицу, расходиться по времени им дешевле, чем толкаться. - Расчёт времени до цели вынесен в `_seconds_until()` — общий для обеих задач, с тестами: ошибка тут не падает, а тихо сдвигает синк на сутки. - Пустая папка прайсов аварией не считается: `sync_all_suppliers` логирует FileNotFoundError по каждому поставщику и не роняет остальных. Прод настроен под это: прайсы переехали в постоянный каталог вне репозитория `/var/lib/ai-secretary/supplier-prices` (прежний `/tmp/stalker_prices` слетал при ребуте, а внутри репо его снёс бы `git clean`), `SUPPLIER_PRICES_DIR` прописан в `.env`. ## NEWS 🔄 **Цены и остатки поставщиков обновляются сами** Раньше прайсы поставщиков разбирались только вручную, и если этого никто не делал, ассистент месяцами считал по старому срезу. Теперь система перечитывает их каждую ночь: достаточно положить свежий файл в папку — и утром цены, остатки и сроки уже актуальные. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
У каталога сайта суточная задача была, у поставщиков — нет: прайсы разбирались только руками через
POST /admin/procurement/sync-suppliers. На проде офферы поставщиков из-за этого простояли нетронутыми с 24.07 по 28.09.2026 — два месяца ассистент считал цены и остатки по июльскому срезу.procurement_supplier_sync— ежесуточно в 23:50 UTC, после каталога (23:30): оба источника пишут в одну таблицу, расходиться по времени им дешевле, чем толкаться._seconds_until()— общий для обеих задач. Ошибка тут не падает, а тихо сдвигает синк на сутки, поэтому он под тестами.sync_all_suppliersлогируетFileNotFoundErrorпо каждому поставщику и не роняет остальных.Прод уже настроен под это (вне этого PR): прайсы переехали в постоянный каталог вне репозитория
/var/lib/ai-secretary/supplier-prices— прежний/tmp/stalker_pricesслетал при ребуте, а внутри репо его снёс быgit clean;SUPPLIER_PRICES_DIRпрописан в.env. Ре-синк по новому парсеру уже прогнан: все 20 738 ложных «НЕТ в наличии» ушли (в каждом поставщикеin_stock=0теперь ноль), 3 548 позиций подтверждены в наличии, остальные честно «уточняется».NEWS
🔄 Цены и остатки поставщиков обновляются сами
Раньше прайсы поставщиков разбирались только вручную, и если этого никто не делал, ассистент месяцами считал по старому срезу. Теперь система перечитывает их каждую ночь: достаточно положить свежий файл в папку — и утром цены, остатки и сроки уже актуальные.
Test plan
pytest tests/unit/test_procurement_task_schedule.py— 4 теста: цель впереди, цель прошла (переносится на завтра), точное попадание ждёт сутки, а не крутит пустой цикл, и синк поставщиков идёт позже каталогаruff check .+ruff format --check .— чистоsync_all_suppliers()на проде с новымSUPPLIER_PRICES_DIR: 6/6 поставщиков, 27 645 офферов (SunWell 20 728, ЭКТ 2 998, Аксима 1 921, Chint РРЦ 1 637, X-Trade 250, Мегазаказ 111)procurement supplier sync scheduled in Nh, назавтра в 23:50 UTC — строка с числом офферов🤖 Generated with Claude Code