---
name: zemlya-expert-report-bot-site-parity
description: "ЗБР: бот продавал экспертные отчёты по 1 200 ₽ и не давал их потратить — запуск был только надстройкой над Pro; приведён к сайту (D-68)"
metadata: 
  node_type: memory
  type: project
  originSessionId: d0c6c5aa-4d05-42e2-a1f9-034482b88603
  modified: 2026-08-02T11:16:32.983Z
---

**2026-08-02, «Земля без риска».** Бот продавал пакеты экспертных отчётов (1 200 / 2 999 / 4 499 ₽) и **не давал их потратить**. Экспертный отчёт запускался единственным способом — кнопкой под уже готовым **Pro**-отчётом. В выборе режима были только Free и Pro, а Pro при нулевом балансе отвечает «у вас закончились платные отчёты». Купил экспертный, нет Pro — тупик: надо доплатить 599 ₽ за Pro, чтобы получить то, что уже оплачено.

**Сайт всё это время делал иначе:** «Экспертный отчёт» — один из трёх тарифов, выбирается одним шагом, списывает **только** `ai_reports_remaining`. Одна цена означала разное в двух каналах.

**Решение владельца (D-68): бот приводится к сайту.** Третий пункт в выборе режима. Проверка-основа запускается **без списаний** и помечается `ai_prepaid` в `result_json`; платит человек ровно там же, где и раньше, — при генерации PDF, один экспертный отчёт. Денежный код не тронут ни строкой, поэтому двойного списания взяться неоткуда, а неудавшаяся проверка ничего не стоит и не требует возврата.

**Защита от дыры:** бесплатная проверка при наличии баланса позволяла бы гонять проверки Pro-уровня бесконечно. Правило — **одна невыкупленная проверка за раз** (`_outstanding_prepaid_check`: есть метка, проверка не провалилась, отчёта по ней нет). Провалившаяся из счёта исключена: застревать из-за молчащих источников человек не должен.

**Проверено живьём** на аккаунте (0 Pro, 1 экспертный): пункт виден при нулевом Pro; после проверки баланс `(0,1)`; после PDF `(0,0)` — списан только экспертный; вторая проверка без выкупа первой упирается в предупреждение с номером участка.

**Как это нашлось.** Не чтением кода, а попыткой пройти сценарий покупателя в живом боте. Экран выбора режима показал два пункта вместо трёх — дальше уже разбор.

**Правило на будущее:** у продукта, который продаётся в двух каналах, сценарий покупки проверять в обоих. Расхождение в цене-за-одно-и-то-же — дефект, а не особенность канала.

См. [[ui_position_not_presence]], [[zemlya_web_overview]], [[investpilot_plain_language]].
