Skip to content

fix(chat): клиенту наличие и цены — только с сайта, без прайсов поставщиков - #854

Merged
ShaerWare merged 1 commit into
mainfrom
local/fix/client-site-only-stock
Oct 2, 2026
Merged

ShaerWare merged 1 commit into
mainfrom
local/fix/client-site-only-stock

Conversation

@ShaerWare

Copy link
Copy Markdown
Owner

Summary

Фидбэк заказчика (02.10.2026): «Он абсолютно неправильную информацию даёт… Бот откуда берёт данные? Пусть возьмёт только из сайта — цены и остатки».

В утреннем диалоге ассистент предложил блоки питания DR-*-24 как «✅ В наличии», клиент ответил «их же нет в наличии» — и был прав.

Разбор по данным:

site supplier (прайс SunWell/EKF)
DR-30W-24 in_stock = NULL, 8478 ₸ in_stock = 1, qty = 34, закуп 6522 ₸

Сайт остаток не подтверждал, а _attach_supply() дополнял позицию июльским прайсом. Клиентскому каналу уходило «есть у поставщика — уточнить только срок», и правила врезки прямо запрещали ставить этот факт под сомнение — модель сжимала это до «✅ В наличии». Прайс это внутренний срез на дату файла, обещанием наличия он быть не может.

  • OfferService.search(..., with_supply=...) — догрузка остатков из прайсов отключается для клиентских каналов, фасад передаёт with_supply=manager_ctx. Менеджер видит прайс как раньше: поставщик, остаток, дата.
  • Правила врезки переписаны: «в наличии N шт.» — единственная пометка, которую можно называть наличием; «наличие уточняется» — галочку не ставить и количество не придумывать; «цена не указана» — цену не называть и не оценивать, такую позицию предлагать только через менеджера. Пояснение про прайсы ушло в менеджерскую ветку.
  • Ярлык для менеджера: «прайс, загружен DATE» вместо «прайс от DATE». as_of — это ProductOffer.updated, то есть когда МЫ разобрали файл, а не дата файла: «ОСТАТКИ 14.07» могли перечитать сегодня, и менеджер читал вчерашнюю дату как свежий остаток.

NEWS

✅ Наличие для клиента — только то, что подтверждает сайт

Ассистент мог написать «в наличии», опираясь на прайс поставщика, который обновлялся в последний раз месяц назад, — и обещать товар, которого на складе нет. Теперь в клиентских каналах наличие и цены берутся только из данных сайта: если остаток не подтверждён, он так и скажет, а не поставит галочку. Прайсы поставщиков остались менеджеру, где рядом видна дата их загрузки.

Test plan

  • Новый тест: клиентский поиск не несёт supply, менеджерский несёт
  • Тест ярлыка дополнен проверкой «загружен»
  • Весь procurement-набор — 74 passed
  • ruff check . + ruff format --check . — чисто
  • Проверено на проде по dr-30w-24: клиентский канал → четыре позиции «наличие уточняется»; менеджерский → «в наличии 34 шт. · SunWell / EKF: закуп 6522₸ → клиенту 8479₸»

🤖 Generated with Claude Code

…вщиков

Заказчик (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>
@ShaerWare
ShaerWare merged commit b22d53c into main Oct 2, 2026
3 checks passed
@ShaerWare
ShaerWare deleted the local/fix/client-site-only-stock branch October 2, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant