fix(chat): клиенту наличие и цены — только с сайта, без прайсов поставщиков - #854
Merged
Merged
Conversation
…вщиков Заказчик (02.10.2026): «Он абсолютно неправильную информацию даёт… Бот откуда берёт данные? Пусть возьмёт только из сайта — цены и остатки». В диалоге этого утра ассистент предложил блоки питания DR-*-24 как «✅ В наличии», клиент ответил «их же нет в наличии» — и был прав. Разбор: по этим позициям сайт остаток НЕ подтверждал (`in_stock=NULL`), а `_attach_supply()` дополнял их данными июльского прайса SunWell/EKF, где стоит 34 шт. Клиентскому каналу уходило «есть у поставщика — уточнить только срок», а инструкция врезки прямо запрещала ставить этот факт под сомнение. Модель сжимала это до «✅ В наличии». Прайс — внутренний срез на дату файла, обещанием наличия он быть не может. - `OfferService.search(..., with_supply=...)`: догрузка остатков из прайсов отключается для клиентских каналов, фасад передаёт `with_supply=manager_ctx`. Менеджер видит прайс по-прежнему — с поставщиком, остатком и датой. - Правила врезки переписаны: «в наличии N шт.» — единственная пометка, которую можно называть наличием; «наличие уточняется» — не ставить галочку и не придумывать количество; «цена не указана» — цену не называть и не оценивать, такую позицию предлагать только через менеджера. Пояснение про прайсы ушло в менеджерскую ветку. - Ярлык для менеджера: «прайс, загружен DATE» вместо «прайс от DATE» — `as_of` это дата нашего разбора, а не дата файла, и «ОСТАТКИ 14.07» могли перечитать сегодня. Менеджер читал вчерашнюю дату и считал остаток свежим. Проверено на проде: по `dr-30w-24` клиентский канал теперь отдаёт четыре позиции с «наличие уточняется», менеджерский — «в наличии 34 шт.» с закупкой и датой загрузки прайса. ## NEWS ✅ **Наличие для клиента — только то, что подтверждает сайт** Ассистент мог написать «в наличии», опираясь на прайс поставщика, который обновлялся в последний раз месяц назад, — и обещать товар, которого на складе нет. Теперь в клиентских каналах наличие и цены берутся только из данных сайта: если остаток не подтверждён, он так и скажет, а не поставит галочку. Прайсы поставщиков остались менеджеру, где рядом видна дата их загрузки. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4 of 5 tasks
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
Фидбэк заказчика (02.10.2026): «Он абсолютно неправильную информацию даёт… Бот откуда берёт данные? Пусть возьмёт только из сайта — цены и остатки».
В утреннем диалоге ассистент предложил блоки питания DR-*-24 как «✅ В наличии», клиент ответил «их же нет в наличии» — и был прав.
Разбор по данным:
DR-30W-24in_stock = NULL, 8478 ₸in_stock = 1, qty = 34, закуп 6522 ₸Сайт остаток не подтверждал, а
_attach_supply()дополнял позицию июльским прайсом. Клиентскому каналу уходило «есть у поставщика — уточнить только срок», и правила врезки прямо запрещали ставить этот факт под сомнение — модель сжимала это до «✅ В наличии». Прайс это внутренний срез на дату файла, обещанием наличия он быть не может.OfferService.search(..., with_supply=...)— догрузка остатков из прайсов отключается для клиентских каналов, фасад передаётwith_supply=manager_ctx. Менеджер видит прайс как раньше: поставщик, остаток, дата.as_of— этоProductOffer.updated, то есть когда МЫ разобрали файл, а не дата файла: «ОСТАТКИ 14.07» могли перечитать сегодня, и менеджер читал вчерашнюю дату как свежий остаток.NEWS
✅ Наличие для клиента — только то, что подтверждает сайт
Ассистент мог написать «в наличии», опираясь на прайс поставщика, который обновлялся в последний раз месяц назад, — и обещать товар, которого на складе нет. Теперь в клиентских каналах наличие и цены берутся только из данных сайта: если остаток не подтверждён, он так и скажет, а не поставит галочку. Прайсы поставщиков остались менеджеру, где рядом видна дата их загрузки.
Test plan
supply, менеджерский несётruff check .+ruff format --check .— чистоdr-30w-24: клиентский канал → четыре позиции «наличие уточняется»; менеджерский → «в наличии 34 шт. · SunWell / EKF: закуп 6522₸ → клиенту 8479₸»🤖 Generated with Claude Code