docs(обзвон): владелец закрыл ВСЕ хвосты — 11 решений, план перестал врать

Разбор хвостов перед стройкой. Ждущих ответа вопросов у стройки больше нет:
шесть «Новое-1…6» из плана закрыты, плюс пять решений сверх них. Протокол
83 решения вместо 72.

Что решил владелец:
- Р73 этикетка чужого юрлица остаётся как есть;
- Р74 дорогу назад для рекламы чинит отдельная смена — до первых живых денег
  обзвона;
- Р75 юриста про голос за границу не спрашиваем, идём как есть. Риск законный
  и он остаётся — записан прямо, а не спрятан;
- Р76 правило часов одно на СМС и обзвон, живой СМС-модуль правим;
- Р77 пять номеров арендуем к первому живому обзвону — ОТМЕНЕНО решением Р83;
- Р78 тариф 2 плюс 10 остаётся, уточним по замеру;
- Р79 длину и содержание речи решает клиент, хвост про опенер снят;
- Р80 робота без слов-запиналок слушаем на приёмке;
- Р81 телефония уезжает на новую АТС, Манго — только испытание;
- Р82 расшифровка чужих записей живёт ШЕСТЬ месяцев, звук 30 дней;
- Р83 у Манго ничего не арендуем, переезд робота в план обзвона не заводим.

Три решения меняют сам план, и правки внесены:
- Р76 разблокировала З-3.1 целиком — развилка «одно правило или второй дом»
  стояла открытой и ждала ровно этого. Отмечено, что круг на боевой файл
  отдельный: своя приёмка, свои две строки про соседей, свой выкат;
- Р82 отменила мою страховку «расшифровка уходит вместе со звуком». Сроков
  теперь два, и чистка обязана стереть звук не тронув текст, а требование
  «сотрите меня» — достать до текста, когда звука уже нет;
- Р81 и Р83 превратили «до аренды» в «до новой АТС» в З-3.3.

Своя неточность названа вслух: в вопросе про часы я сказал «одна настройка»,
хотя решается общий код правила. Часы рассылки и часы обзвона остаются разными
числами — этого требует Т36 и проверка 8 в З-3.1. Записано и в протоколе,
и в плане, чтобы никто не прочитал Р76 как «одни часы на двоих».

Найдено при разборе: два вопроса владельцу, добавленные редактором, не попали
в промт смене 8 — «с какого кода звоним» и «расшифровки чужих записей». Оба
заданы и закрыты. Промт исправлен.

Работа, которая теперь не живёт нигде: перевод машины робота на новую АТС.
В план обзвона не заводим по решению владельца, но машина прописана на Манго
намертво. Названо вслух в протоколе и в промте.

ОБА СТОРОЖА ТЕКСТА БЫЛИ МЕРТВЫ — вскрылось при этом же коммите. Пакеты стояли
на месте, но внутри пустые: у одного остались только лицензия и схема, у другого
файл обрывался посреди строки. Причина — установка, оборванная на пакете,
которому нужен компилятор C++, а его на машине нет.

Два вывода записаны в промт смене 8:
- прежний датчик «посчитай папки в node_modules, должно быть под 750» ЛОЖНЫЙ:
  он показывал 745 при полностью мёртвых сторожах. Заменён на запуск самих
  программ;
- npx МАСКИРУЕТ поломку: не найдя программу на месте, молча качает чужую версию
  из сети, и проверка «проходит». Три отчёта «разметка чистая» в этой сессии
  опирались на неё и доказательством не были.

Починено: сломанные пакеты снесены и поставлены заново без сборки. Сторож
орфографии показан КРАСНЫМ на подсунутой ошибке — только после этого ему верю.
Он же нашёл настоящее: слово «запиналки» отсутствовало в словаре, добавлено.

Проверено командой: план 3341 строка, 21 раздел, 47 задач, по волнам
7·7·5·8·9·3·8. Протокол 83 решения, 7 разделов. Разметка и орфография чистые
живыми сторожами, а не скачанными.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-08-05 09:19:27 +03:00
parent 7c8618becc
commit 90cf01b374
4 changed files with 487 additions and 46 deletions
+2
View File
@@ -2842,3 +2842,5 @@ golosovoy
админское
непостроенным
транк
запиналки
запиналок
@@ -2023,6 +2023,325 @@
---
### Р73. Этикетка «Омега» остаётся как есть
**Решение владельца (05.08.2026, разбор хвостов перед стройкой):** чужое юрлицо
на экране у человека не меняем. Хвост снят с очереди, стройку не держит и больше
не поднимается.
**Почему это пришлось решать.** На экране у сотрудника клиента подписано ООО
«Лизинговая Омега» — это этикетка оператора связи, не наша. Робот при этом
представляется Лидеррой, а продаёт компания клиента: **три разных имени в одном
звонке**. Смена этикетки — заявка оператору примерно на десять дней плюс либо
товарный знак, либо перенос номеров на ИП.
Отрезано: «сменить этикетку до запуска» — упирается в десять дней ожидания
оператора и в бумаги, которых нет; ради косметики на экране стройка ждать не
будет. Отрезано «убрать имя с экрана вовсе» — владелец такого варианта не
выбирал, а самовольно прятать данные оператора нельзя.
🔴 **Чего это решение НЕ закрывает:**
- **человек на том конце по-прежнему может спросить «а кто вы такие»** — и увидит
третье имя. Скрипт на этот вопрос ответа не содержит;
- **если оператор потребует привести этикетку в соответствие** — а такое право у
него есть, — решение придётся переигрывать под срок оператора, а не под свой.
---
### Р74. Дорогу назад для рекламы чиним до первых живых денег обзвона
**Решение владельца (05.08.2026):** обзвон строим сейчас, а починку рекламы
делает **отдельная смена** — успеть надо до того, как обзвон впервые спишет
живые деньги живого клиента.
**Почему это пришлось решать.** Реклама, остановленная из-за нехватки денег,
обратно не поднимается **ни сама, ни руками** — состояние тупиковое. Обзвон
списывает из того же кошелька. Значит обзвон, загнав клиента в минус, гасит ему
Директ **навсегда**, и клиент узнаёт об этом сам.
Отрезано: «починить прямо сейчас, обзвон ждёт» — безопаснее всего, но
останавливает стройку ради беды, которая срабатывает только на живых деньгах.
Отрезано: «оставить как есть» — цена ошибки лежит на клиенте, а не на нас, и
молча.
🔴 **Чего это решение НЕ закрывает:**
- **починка идёт в БОЕВОМ рекламном модуле** — это не работа обзвона и не может
делаться той же сменой между кругами;
- **срок «до первых живых денег» надо чем-то мерить**. Сегодня ничто не мешает
обзвону списать раньше, чем реклама починена: сторожа, который бы это
остановил, нет;
- **уже остановленные клиенты** — если такие есть на бою прямо сейчас, их
реклама лежит уже теперь, и обзвон тут ни при чём.
---
### Р75. Юриста про голос за границу не спрашиваем
**Решение владельца (05.08.2026):** идём как есть. Считаем, что согласие на
передачу третьим лицам это покрывает. Вопрос закрыт.
**Почему это пришлось решать.** Голос человека и расшифровка разговора уходят
**иностранному поставщику речи**. В 96 требованиях об этом нет ни слова —
ворота вслепую нашли это как дыру §18.
Отрезано: «спросить юриста до первого звонка постороннему» — рекомендовал я,
владелец отклонил. Отрезано: «спрашивать по ходу, звонки не останавливая».
🔴 **Чего это решение НЕ закрывает:**
- 🔴 **решение принято владельцем без бумажной проверки, и я на нём не настаиваю
как на безопасном.** Записано как есть: риск не денежный, а законный, и он
остаётся;
- **в требованиях об этом по-прежнему ни слова** — то есть человек, который
придёт после нас, не узнает, что голос уезжает наружу, если не прочитает эту
строку;
- **на самих требованиях это не отражается** — Р75 закрывает вопрос «идти или
ждать», а не «написать в спеке».
---
### Р76. Правило часов — одно на двоих, правим живой СМС-модуль
**Решение владельца (05.08.2026):** «во сколько можно беспокоить человека» —
**одно правило** на СМС и на обзвон. Живой СМС-модуль правим. Это ровно первый
путь из развилки, которую план держал открытой в задаче З-3.1.
🔴 **Уточнение, которое я обязан назвать: в моём вопросе стояло «одна
настройка», и это было сказано неточно.** Решается **общий код правила**, а не
общее значение часов. Часы рассылки и часы обзвона остаются **разными числами**
этого требует Т36 и проверка 8 в З-3.1: админ, подвинув окно рассылок, окно
обзвона подвинуть не должен. Если владелец имел в виду именно одни часы на
двоих — это надо переспросить отдельно, потому что тогда придётся менять
требование.
**Почему это пришлось решать.** Правило уже живёт в СМС и работает у клиентов.
Обзвону оно нужно ровно такое же. Либо два похожих правила, которые со временем
разъедутся, либо одно на двоих — но тогда правка ложится в **боевой** код, к
которому прямо сейчас обращаются живые клиенты.
Отрезано: «своё правило у обзвона, СМС не трогаем» — рекомендовал я как самое
безопасное для боя, владелец выбрал честность устройства. Отрезано: «пока своё,
потом свести» — «потом» не наступает.
🔴 **Чего это решение НЕ закрывает:**
- 🔴 **это правка боевого кода живой рассылки** — значит своя приёмка, свой
сторож, показанный красным, и своя строка «что могло сломаться у соседей».
Круг на неё нельзя вести вместе с кругами обзвона: файл общий;
- **у СМС и у звонка разная вежливая граница.** Написать в 21:00 и позвонить в
21:00 — не одно и то же. Одна настройка означает, что граница будет по
строгому из двух, и это никто пока не подтверждал;
- **часовой пояс получателя** остаётся отдельной бедой: он определяется по коду
номера, и у Москвы с Питером регион записан парой — эту грабли ловили в СМС
03.08.
---
### Р77. Пять номеров арендуем к первому живому обзвону
**Решение владельца (05.08.2026):** пока строим и проверяем — хватает семи
свободных. Аренду недостающих пяти оформляем **перед первым живым объёмом**, не
раньше.
**Почему это пришлось решать.** По Р71 нужно двенадцать номеров, свободных у
оператора семь. Платить за простой пяти номеров всё время стройки не за что, но
и упереться в момент запуска нельзя — оформление занимает время.
Отрезано: «арендовать сейчас» — деньги висят зря месяц и больше. Отрезано:
«начнём на семи, доберём когда упрёмся» — упрёмся ровно в день, когда номера
нужны немедленно.
🔴 **Чего это решение НЕ закрывает:**
- **сколько занимает само оформление у оператора, не измерено.** «Перед первым
живым обзвоном» — срок без длины: если оформление идёт неделю, начинать надо
за неделю, и этого никто не проверял;
- **ритм 40–100 звонков в день на номер** — это оценка, не замер. Если
настоящий ритм окажется ниже, двенадцати номеров не хватит, и Р71 придётся
пересчитывать;
- **аренда — действие владельца в кабинете оператора.** Ни одна смена не может
её сделать за него.
---
### Р78. Цена звонка остаётся 2 + 10, уточняется по замеру
**Решение владельца (05.08.2026):** тариф не трогаем — 2 ₽ за минуту связи плюс
10 ₽ за работу робота. Когда пройдут первые живые звонки и станет видна
настоящая себестоимость, цифру пересчитаем.
**Почему это пришлось решать.** Тариф назначен вслепую: кабинета поставщика речи
у нас нет, сколько он берёт на самом деле — никто не видел.
Отрезано: «сначала узнать себестоимость» — упирается в получение доступа в чужой
кабинет и держит стройку. Отрезано: назвать свою цифру сейчас — владелец такой
не назвал.
🔴 **Чего это решение НЕ закрывает:**
- **цена обязана меняться настройкой, а не перестройкой.** Если тариф вшить в
код, «уточним по замеру» превратится в новую работу. Это требование к стройке,
а не к владельцу;
- **знака, что тариф ниже себестоимости, у нас нет.** Списываем с клиента 12 ₽,
платим поставщику неизвестно сколько — узнаем это по счёту, а не по портулу;
- **у МТС поле «сколько стоило» уже оказалось непригодным** в СМС — нет причин
считать, что у голоса будет лучше.
---
### Р79. Длину и содержание речи решает клиент — это не наша забота
**Поправка владельца (05.08.2026), важнее, чем вопрос, на который отвечала.**
Сейчас робот говорит **наш** текст. Дальше он будет говорить **по скрипту
клиента**: сколько по времени, что именно и в каком порядке — решает клиент.
Спор «41 секунда против 13 у чужого колцентра» снимается: это не наш выбор.
**Почему это меняет постановку.** Хвост «переписать опенер» исчезает целиком.
Но вместе с ним меняется и то, чья это ответственность: мы даём машину, текст
приносит клиент.
Отрезано: «сделать короткий вариант и сравнить на слух» — я это рекомендовал,
владелец отклонил как решение не за нас. Отрезано: «сократить сразу».
🔴 **Чего это решение НЕ закрывает:**
- 🔴 **до первого клиентского скрипта звучит наш текст** — в наших же проверках и
в первых живых звонках. Мина «трубку положили на 24-й секунде» сработала
**ровно на нём**, а не на клиентском;
- 🔴 **машина собирает скрипт сама** (требование Т7, задача З-4.2). Если текст
собирает машина, его длину задаём **мы**, а не клиент — и Р79 на этот случай
ответа не даёт;
- **запреты на речь остаются** (З-4.8): клиентская свобода не безгранична, робот
по-прежнему не имеет права утверждать согласие за клиента и обещать лишнее;
- **кто смотрит клиентский текст до выхода в бой** — сегодня ничья работа. Если
никто, то запреты проверяются только по записи, то есть **после** звонка.
---
### Р80. Робота без слов-запиналок слушаем на приёмке
**Решение владельца (05.08.2026):** отдельного звонка сейчас не делаем, послушаем
на общей приёмке готового обзвона.
**Почему это пришлось решать.** Слова-запиналки выключили три смены назад ради
скорости, и с тех пор **вживую робота так никто и не слышал** — есть только
замеры времени.
Отрезано: «позвонить самим себе ближайшим кругом» — рекомендовал я, владелец
отложил. Отрезано: «не проверять вовсе».
🔴 **Чего это решение НЕ закрывает:**
- **замер скорости не заменяет слух.** «Говорит быстрее» и «звучит живым» — не
одно и то же, и второе ничем не измерено;
- **приёмка идёт в конце.** Если голос без запиналок окажется мёртвым, чинить
придётся тогда, когда всё остальное уже построено вокруг него;
- **приёмку надо не забыть завести** пунктом с этим содержанием — иначе решение
«послушаем потом» растворится.
---
### Р81. Телефония переезжает на новую АТС — Манго это только испытание
**Решение владельца (05.08.2026):** под обзвон **подключается новая АТС**.
Нынешние восемь номеров у Манго — испытательные, не боевые. Вопрос «звонить
красноярским кодом человеку в Москве» снимается вместе с ними.
**Почему это пришлось решать.** Все восемь номеров оператора красноярские, код
391. Человек в Москве видит на экране чужой город и не снимает трубку — а доля
снявших трубку и есть главный показатель фичи.
Отрезано: «оставить как есть и мерить потери» — рекомендовал я, владелец
отклонил. Отрезано: «арендовать номера крупных городов у Манго» и «взять
восьмисотый» — оба про Манго, а Манго уходит.
🔴 **Чего это решение НЕ закрывает — и это самое важное здесь:**
- 🔴 **Р71 и Р77 повисли.** Они про аренду двенадцати номеров **у Манго**. Если
телефония уезжает, аренда пяти недостающих там может оказаться выброшенными
деньгами. Переспрошено отдельно;
- 🔴 **все замеры номеров — про Манго**: восемь у оператора, два заведены в
машину робота, одним звоним наружу. К новой АТС они не относятся ни одним
числом;
- 🔴 **машина робота настроена на Манго намертво**: в её телефонии прописан адрес
`vpbx…mangosip.ru` и две регистрации. Переезд — это работа на сервере робота,
и в плане такой задачи **нет вовсе**;
- **какая АТС, когда и кто подключает** — не названо. Пока не названо, срок
«к первому живому обзвону» повисает в воздухе;
- **стройку это не держит**: всё портальное — деньги, экраны, очередь, стоп-лист
— от оператора связи не зависит. Держит только живые звонки объёмом.
---
### Р82. Расшифровка чужих записей живёт шесть месяцев
**Решение владельца (05.08.2026):** записи, которые клиент приносит нам со
**своими** холодными разговорами: сам звук уходит через 30 дней (Т4, Т5),
**расшифровка живёт шесть месяцев**.
**Почему это пришлось решать.** У наших записей мы хозяева разговора, у чужих —
нет. Там имена, суммы и обстоятельства живых людей, которые про нас ничего не
знают. План до ответа страховался самым осторожным вариантом «расшифровка
уходит вместе со звуком» — это была моя страховка, а не решение.
Отрезано: «уходит вместе со звуком на 30-й день» — рекомендовал я, владелец
выбрал дольше. Отрезано: «живёт, но без имён и номеров» — обезличивание никогда
не чистит дочиста, а работа отдельная.
🔴 **Чего это решение НЕ закрывает:**
- 🔴 **пять месяцев расшифровка живёт без звука** — проверить её по записи будет
нечем. Если робот выучил из разговора неправду, источник уже стёрт;
- 🔴 **стирание по требованию обязано доставать и до расшифровки** (задача
З-2.5). Сегодня она написана про звук: «стереть» уберёт запись, а текст с
теми же именами останется лежать ещё до полугода;
- **от какой даты считать полгода** — от загрузки файла к нам или от даты
самого разговора — не задано. Разница может быть в месяцы;
- **чистка должна быть настоящей.** На машине робота чистки нет **никакой**
ни звука, ни текста; сроки без сторожа, который их исполняет, это надпись.
---
### Р83. У Манго ничего не арендуем, переезд робота — не работа обзвона
**Решение владельца (05.08.2026), два ответа сразу:**
1. **Пять недостающих номеров у Манго не арендуем** — ждём новую АТС. Двенадцать
наберём уже там, где и коды городов можно выбрать сразу.
2. **Перевод машины робота на новую АТС в план обзвона не заводим** — это
отдельная затея, не работа обзвона.
**Почему это пришлось решать.** Р71 и Р77 были приняты **про Манго**: двенадцать
номеров, из них пять докупить. Р81 сказало, что Манго — только испытание.
Значит аренда у Манго — деньги в пустоту, а старые решения надо было либо
подтвердить, либо снять.
**Что это меняет в решениях Р71 и Р77.** Арифметика Р71 остаётся: двенадцать
попыток дозвона требуют двенадцати номеров, иначе человек за двое суток видит
один и тот же номер и перестаёт брать трубку. Меняется только **где и когда**:
не у Манго и не «к первому живому обзвону», а на новой АТС. **Р77 в части
«арендовать пять у Манго» отменено.**
Отрезано: «арендовать всё равно, чтобы не зависеть от сроков АТС» — платим за
то, что выбросим. Отрезано: «отложить решение» — владелец решил сразу.
🔴 **Чего это решение НЕ закрывает:**
- 🔴 **живой обзвон объёмом упирается теперь в новую АТС, а не в аренду.** Пока
её нет, семь испытательных номеров Манго держат ритм примерно 40–100 звонков
в день на номер — и это оценка, не замер;
- 🔴 **работа «перевести робота на новую АТС» не живёт теперь НИГДЕ.** В план
обзвона не заводим по решению владельца — значит она должна лежать в затее про
АТС. Если такой затеи на бумаге нет, работа потеряется: сегодня в машине
робота прописан адрес Манго и две регистрации;
- **какая АТС, кто и когда подключает** — по-прежнему не названо;
- **номера в кодах городов** — Р81 назвало это причиной переезда, но выбор кодов
на новой АТС отдельно никто не подтверждал.
---
## Как складывается методика — собрано из решений Р1–Р37
**1. Вход. Без этого не беремся (Р3, Р15).**
@@ -110,7 +110,7 @@ grep -c '^### Р' docs/grilling/2026-08-03-metodika-lena-pod-klienta.md
— спека, 96 требований. **§18 — то, что нашли ворота: 27 дыр, которых в
требованиях нет.** Полноту меряют **от спеки**, а не от плана.
5. [docs/grilling/2026-08-03-metodika-lena-pod-klienta.md](../grilling/2026-08-03-metodika-lena-pod-klienta.md)
**72 решения владельца. Переоткрывать нельзя.**
**83 решения владельца. Переоткрывать нельзя.**
6. [2026-08-04-PROMT-golosovoy-kanal-smena-4.md](2026-08-04-PROMT-golosovoy-kanal-smena-4.md)
— устройство робота, доступ на сервер, команды.
@@ -126,10 +126,10 @@ grep -c '^### Р' docs/grilling/2026-08-03-metodika-lena-pod-klienta.md
|---|---|---|
| ветка | `feat/prospects-manual-testing-kp` | `git rev-parse --abbrev-ref HEAD` |
| вершина | `76e4862f9` | `git rev-parse --short HEAD` |
| план | 3258 строк, 20 разделов, **47 задач** | см. §0.5 |
| план | 3341 строка, 21 раздел, **47 задач** | см. §0.5 |
| задачи по волнам | 7 · 7 · 5 · 8 · 9 · 3 · 8 | `grep -o -E '^### З-[0-9]+\.[0-9]+'` |
| спека | 2126 строк, 18 разделов, **96 требований** | см. §0.5 |
| протокол | 2150 строк, **72 решения** | см. §0.5 |
| протокол | **83 решения** | см. §0.5 |
| полный прогон | 4760 тестов, **4755 прошли, 1 упал** | `php artisan test` из `app` |
🪤 **Прогон мерен на вершине `c11ee3ad8`. После него соседние смены положили ещё
@@ -153,14 +153,17 @@ grep -c '^### Р' docs/grilling/2026-08-03-metodika-lena-pod-klienta.md
- **Все 29 развилок пройдены**, 28 закрыты решениями, одна (плата за второе плечо
перевода) отложена владельцем осознанно и стройку **не держит**.
- **72 решения владельца** в протоколе, с отрезанными ветками и причинами.
- **83 решения владельца** в протоколе, с отрезанными ветками и причинами.
🔴 **Р73–Р83 приняты 05.08.2026 и закрыли ВСЕ вопросы владельцу** — см. §5.
- **96 требований** в спеке плюс §18 с уловом ворот.
- **План прошёл ворота вслепую, суд и редактора.** 47 задач, у каждой названы
файлы и проверки, порядок по узким горлам обязателен.
- **Замеры смены** (перепроверять не надо, но знать полезно):
- номеров у оператора Манго **восемь**: один рабочий штатный отдела продаж
«не трогать», пять свободных, один входящий на робота, один исходящий.
В телефонию машины робота заведено **два**, наружу звоним **одним**;
В телефонию машины робота заведено **два**, наружу звоним **одним**.
🔴 **Все восемь — испытательные** (Р81): телефония уезжает на новую АТС, и
ни одно из этих чисел к ней не относится;
- **письмо о нехватке денег — одно и боевое**: шлётся при списании за показы
Директа живым клиентам. Правка задевает бой;
- на машине робота **13 ГБ свободно из 19**, записей 68 МБ в 89 файлах,
@@ -175,8 +178,24 @@ grep -c '^### Р' docs/grilling/2026-08-03-metodika-lena-pod-klienta.md
Три прибора метода:
1. **Цело ли хозяйство:** `ls node_modules | wc -l` — должно быть под 750, не 8.
🪤 Оборванная установка молча ставит десятую часть и убивает сторожей текста.
1. 🔴 **Цело ли хозяйство — считать НЕ папки.** Прежний совет «`ls node_modules |
wc -l` должно быть под 750» **проверен и оказался ложным датчиком**: 05.08.2026
он показал 745, всё выглядело целым, а сторожа текста были мертвы. Папки стояли
на месте, но **внутри пустые** — файлы не распаковались. Честный датчик:
```bash
ls node_modules/.bin | grep -cE 'cspell|markdownlint' # ноль = сломано
node node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs --version
./node_modules/.bin/cspell --version
```
🪤 **`npx` маскирует поломку**: не найдя пакет на месте, он молча качает чужую
версию из сети, и проверка «проходит». Гонять только местными путями, как выше.
🪤 **Починка упирается в компилятор**: `npm install` падает на пакете
`better-sqlite3`, которому нужен Visual Studio, а его на машине нет. Лечится
`npm install --ignore-scripts`, но если папки уже пустые — нужна переустановка
с удалением, **а это разрешение владельца**.
2. **Полный прогон** (§2) — знать точку отсчёта до своих правок.
3. **Сервер робота:** `md5sum ~/lena-inworld/most.py` и
`systemctl show lena-inworld -p Environment`. Мост **дважды молча откатывался**
@@ -224,30 +243,48 @@ grep -c '^### Р' docs/grilling/2026-08-03-metodika-lena-pod-klienta.md
---
## 5. ХВОСТЫ, КОТОРЫЕ ЖДУТ ВЛАДЕЛЬЦА
## 5. ХВОСТЫ ВЛАДЕЛЬЦА — ✅ ВСЕ ЗАКРЫТЫ 05.08.2026
Их не решить своей волей. Стройку они **не держат**, но тикают.
🔴 **Ждущих хвостов у стройки НЕТ.** Владелец разобрал их все за один заход,
решения Р73–Р83 записаны в протоколе с отрезанными ветками. Переспрашивать
нельзя. Ниже — только то, что из этих решений **следует для стройки**.
1. 🔴 **Этикетка «Омега».** Человек видит на экране чужое юрлицо, робот
представляется Лидеррой, продаёт компания клиента — **три имени в одном
звонке**. Смена — заявка в Манго примерно на **десять дней** плюс товарный знак
или перенос номеров на ИП.
2. 🔴 **Аренда пяти номеров.** По решению Р71 нужно двенадцать, свободных семь.
3. 🔴 **Трансграничная передача голоса** — голос и расшифровка уходят иностранному
поставщику, в 96 требованиях об этом ни слова. Это к юристу.
4. 🔴 **Одно правило часов на всех или второй дом правилу** — правка **живого**
СМС-модуля. Без слова владельца не трогать.
5. 🔴 **Дорога назад для рекламы.** Состояние «остановлено из-за денег» тупиковое:
обратно не поднимается ни само, ни руками. Обзвон, загнав клиента в минус,
гасит ему Директ навсегда. Починка — **боевой рекламный модуль**, к обзвону
отношения не имеет.
6. **Цена звонка.** Тариф 2 ₽ + 10 ₽ назначен вслепую, кабинета поставщика голоса
у нас нет.
7. **Опенер** — 41 секунда против 13 у чужого колцентра, компанию не называет
вовсе. Чужой текст своей волей не переписываем: сделать короткий вариант и дать
владельцу сравнить на слух.
8. **Позвонить самим себе без филлеров** — выключены три смены назад, вживую
никто так и не слышал.
| было хвостом | решение | что делаешь ты |
|---|---|---|
| этикетка «Омега» | **Р73: оставить** | ничего. Первый обзвон идёт под чужим именем осознанно |
| голос уходит за границу | **Р75: идём как есть** | ничего. 🔴 Риск законный, остаётся; решение владельца, не твоё, спорить не надо |
| часы: одно правило или второй дом | **Р76: одно правило, живой СМС-модуль правим** | 🔴 З-3.1 разблокирована целиком, см. ниже |
| дорога назад для рекламы | **Р74: чинит другая смена** | живые списания обзвона **не начинать** раньше починки |
| цена звонка | **Р78: 2 ₽ + 10 ₽, уточним по замеру** | цена — **настройка**, не прошитое число |
| длинный опенер | **Р79: длину и текст решает клиент** | не переписываешь. 🔴 Но пока клиентского текста нет, звучит наш 41-секундный |
| робот без слов-запиналок | **Р80: слушаем на приёмке** | завести пунктом в приёмочный лист |
| с какого кода звоним | **Р81: уходим на новую АТС, Манго — испытание** | экраны не обещают «звоним с местных номеров» |
| расшифровки чужих записей | **Р82: текст живёт ШЕСТЬ месяцев, звук 30 дней** | 🔴 два разных срока, см. ниже |
| аренда пяти номеров | **Р83: у Манго не арендуем, ждём АТС** | строишь на семи испытательных |
### 🔴 Три решения меняют САМ ПЛАН — читай их в задачах, не здесь
1. **Р76 → З-3.1.** Правило часов остаётся **одно** на СМС и обзвон, значит
правим **боевой** `SmsQuietHours.php`. Круг на него — **отдельный**, не
одновременно с кругами обзвона, которые его читают. Своя приёмка, свои две
строки про соседей, свой выкат. 🪤 **Общий код — не общие числа:** окно
рассылок и окно обзвона остаются разными настройками, этого требует Т36.
2. **Р82 → З-2.3 и З-2.5.** У чужой записи **два срока**: звук 30 дней, текст
шесть месяцев. Значит команда чистки обязана стереть звук, **не тронув
текст**, а требование «сотрите меня» обязано достать до текста, когда звука
уже нет. 🪤 От какой даты считать полгода — не задано; до ответа считаем от
загрузки.
3. **Р81 + Р83 → З-3.3.** «До аренды» стало «**до новой АТС**». Пул придёт
другой и у другого оператора — распределение номеров обязано быть настройкой,
а не прошитым числом.
### 🔴 Одна работа теперь не живёт нигде — знай об этом
**Перевод машины робота на новую АТС.** Владелец решил не заводить её в план
обзвона — это не работа обзвона. Но работа настоящая: в телефонии машины
прописан адрес Манго и две регистрации. Если затеи про АТС нет на бумаге,
работа потеряется. **Не делай её и не бери в план — но если владелец спросит
«всё ли учтено», назови её вслух.**
---
@@ -16,7 +16,7 @@
**Дата:** 04.08.2026
**Ветка разработки:** отдельная, от `feat/prospects-manual-testing-kp` не зависит
**Спека:** `docs/superpowers/specs/2026-08-04-obzvon-pod-klienta.md` (Т1–Т98)
**Решения владельца:** `docs/grilling/2026-08-03-metodika-lena-pod-klienta.md` (Р1–Р72 — Р71 и Р72 приняты по ходу проверки)
**Решения владельца:** `docs/grilling/2026-08-03-metodika-lena-pod-klienta.md` (Р1–Р83 — Р71 и Р72 приняты по ходу проверки, 🔴 **Р73–Р83 приняты 05.08.2026 и закрыли ВСЕ шесть вопросов владельцу**, см. раздел «Что нужно от владельца»)
**Замер готовности:** фичи в портале нет вовсе — ни одного требования.
**Всего 47 задач в семи волнах.** Разделов «ещё не разобрано» в файле нет.
@@ -1274,6 +1274,24 @@ Asterisk и читает свой файл. Общий файл остаётся
непонятно было, кто им управляет. Правило: срок лежит в `system_settings`, читает
его **одна** команда.
🔴🔴 **Сроков ДВА, а не один — решение владельца Р82 от 05.08.2026.** Раньше здесь
стояла моя страховка «расшифровка уходит вместе со звуком». Она **отменена**:
| что | сколько живёт |
|---|---|
| **звук** чужой записи | **30 дней** (Т4, Т5) — как и было |
| **расшифровка** чужой записи | 🔴 **шесть месяцев** |
Значит: два разных срока в `system_settings`, две даты истечения на одной записи,
и команда из З-2.2 обязана уметь стереть **звук, не тронув текст**.
🪤 **Пять месяцев расшифровка живёт без звука** — проверить её по записи будет
нечем. Если робот выучил из разговора неправду, источник уже стёрт.
🪤 **От какой даты считать полгода — не задано** (от загрузки файла к нам или от
даты самого разговора). Разница может быть в месяцы. До ответа считаем **от
загрузки**: это единственная дата, которую мы знаем точно. Отметить в надписи.
**Проверки:**
1. Загрузили ноль — пускает вторым путём. Загрузили три — берёт в работу.
@@ -1391,10 +1409,17 @@ Asterisk и читает свой файл. Общий файл остаётся
4. Служба стирания чистит **и стоп-лист обзвона** — сегодня она не чистит ни один
из четырёх существующих.
🔴 **Трансграничная передача — вне этой задачи и вне моей власти.** Голос человека
и расшифровка уходят **иностранному поставщику**, и в 96 требованиях об этом нет
ни слова. Это вопрос к юристу и владельцу, а не к плану. Задача обязана назвать
его вслух и **не делать вид, что он закрыт**.
5. 🔴 **Стирание достаёт и до расшифровок ЧУЖИХ записей** — тех, что клиент принёс
сам (З-2.3). Решение владельца Р82 дало им **шесть месяцев** жизни, звуку —
тридцать дней. Значит после 30-го дня остаётся текст с именами и суммами живых
людей, и требование «сотрите меня» обязано доставать до него **отдельно**: звук
к тому времени уже стёрт сроком, а текст ещё лежит до полугода.
🔴 **Трансграничная передача — вне этой задачи.** Голос человека и расшифровка
уходят **иностранному поставщику**, и в 96 требованиях об этом нет ни слова.
**Решением Р75 владелец закрыл вопрос: идём как есть, юриста не спрашиваем.**
Задача этого не чинит и чинить не должна — но и делать вид, что риска нет,
нельзя: риск законный и он остаётся. Записано, чтобы следующий читатель знал.
**Файлы:** `app/app/Services/Pd/PdErasureService.php` (🔴 **общий с боевым
стиранием персональных данных** — правка точечная, отдельным заходом),
@@ -1405,6 +1430,9 @@ Asterisk и читает свой файл. Общий файл остаётся
1. Человек потребовал стереть данные — **звука нет, расшифровки нет**, сухие итоги
на месте, отчёт за квартал и счёт клиенту сходятся.
🔴 Проверять **и на чужой записи, у которой звук уже стёрт сроком, а
расшифровка ещё жива** (Р82): требование обязано убрать текст, а не
отчитаться «стирать нечего».
2. След стирания есть и отвечает на вопрос «что именно убрали и когда».
3. След **переживает** трёхмесячную чистку — проверять на звонке годовой давности.
4. Флаг «не обрабатывать мои данные» стоит — звонка **не было**, и в журнале
@@ -1457,13 +1485,29 @@ Asterisk и читает свой файл. Общий файл остаётся
| **править живой СМС-модуль**, добавив туда понятие «часы клиента» | трогаем то, что уже работает у живых клиентов | правило остаётся **одно**, как и написано в его шапке |
| **завести правилу второй дом** — своё окно у обзвона | у правила два хозяина, и однажды они разойдутся | боевого не трогаем |
🔴 **Моя рекомендация — первый путь**, и вот почему: беда, от которой охраняет
надпись «живёт здесь и больше нигде», — это звонок, который **по экрану ждёт утра,
а по факту уже идёт**. Второй дом ровно её и создаёт. Но правка живого модуля —
это правка боевого, и **решение владельца**, а не моё.
🔴 **Развилка ЗАКРЫТА владельцем 05.08.2026 — решение Р76: первый путь.**
Правило остаётся **одно**, живой СМС-модуль правим. Задача разблокирована
целиком, «базовой частью» больше не ограничиваемся.
**До ответа строим базовую часть** (общая рамка как есть, без клиентских часов)
она бесспорна и не трогает боевое.
Почему так: беда, от которой охраняет надпись «живёт здесь и больше нигде»,
это звонок, который **по экрану ждёт утра, а по факту уже идёт**. Второй дом
ровно её и создаёт.
🔴 **Общий код — не общие числа.** Р76 отдаёт в общее пользование **правило**, а
не значения часов. Окно рассылок и окно обзвона остаются разными настройками —
этого требует Т36 и проверка 8 ниже. Кто прочитает Р76 как «одни часы на двоих»
— сломает требование.
🔴 **Это правка БОЕВОГО кода живой рассылки, и круг на неё особый:**
- **своя приёмка и свой сторож, показанный красным**, — сверх проверок обзвона;
- **две строки про соседей обязательны**: что могло сломаться у живой рассылки
СМС и почему не сломалось. Не формальность — этим файлом прямо сейчас
пользуются клиенты;
- 🪤 **круг на `SmsQuietHours.php` нельзя вести одновременно с кругами обзвона**,
которые его читают: файл общий, это узкое горло;
- **выкат отдельно от обзвона**: правка живого модуля доезжает до боя своим
порядком и со словом владельца, а не «заодно».
**Файлы:** `app/app/Services/Obzvon/ObzvonOknoChasov.php` (новый — тонкая обёртка,
**не копия правила**), `app/app/Services/ClientSms/SmsQuietHours.php` (🔴 **боевой
@@ -1579,8 +1623,13 @@ Asterisk и читает свой файл. Общий файл остаётся
**Чего не строим до аренды:** поведение при блокировке номера пула и раздачу
номеров между клиентами — оба решения зависят от того, сколько номеров и чьи они.
🔴🔴 **«До аренды» стало «до новой АТС» — решения Р81 и Р83 от 05.08.2026.**
Пяти номеров у Манго **не будет**: телефония переезжает на новую АТС, а нынешние
восемь номеров — испытательные. Значит настройка распределения номеров тем более
обязана быть настройкой: пул придёт **другой и у другого оператора**.
🪤 **Сколько номеров есть сегодня — не мерил никто.** Ворота назвали восемь, замер
спеки дал один, на боевой не ходили. До аренды весь раздел обратных звонков
спеки дал один, на боевой не ходили. До новой АТС весь раздел обратных звонков
описывает работу, которой физически негде происходить, а человек, перезвонивший
по Т46, попадает **на нашу линию продаж**.
@@ -2901,7 +2950,7 @@ Asterisk и читает свой файл. Общий файл остаётся
| `app/app/Services/Obzvon/ObzvonStopList.php` | 2 | **З-3.2 → З-2.5** | пятый список «не звонить» |
| 🔴 `app/resources/js/views/DealsView.vue` + `app/resources/js/components/deals/DealsTable.vue` | 1 | **только З-2.4** | экран сделок (491 строка) и **сама таблица строк** (400 строк) — **соседи правят их прямо сейчас**. Пометки касаний Т67 рисуются в `DealsTable.vue`, а не в `DealsView.vue`: путь уточнён редактором, третья редакция называла только «views/…/DealsView.vue» |
| 🔴 `app/app/Services/Pd/PdErasureService.php` | 1 | **только З-2.5** | **боевое стирание персональных данных**. Правка точечная, отдельным заходом |
| 🔴 `app/app/Services/ClientSms/SmsQuietHours.php` | 1 | **только З-3.1, и только по слову владельца** | **боевой файл живого СМС-модуля.** Трогаем, лишь если владелец выбрал путь «одно правило часов на всех» |
| 🔴 `app/app/Services/ClientSms/SmsQuietHours.php` | 1 | **только З-3.1.**Слово владельца **дано** — решение Р76 | **боевой файл живого СМС-модуля.** Правим: правило остаётся одно на СМС и обзвон. 🔴 Круг на него — отдельный, не одновременно с кругами обзвона, которые его читают; своя приёмка, свои две строки про соседей, свой выкат |
| `bots/lena-golos/README.md` | 4 | **вместе с задачей, что его ломает** | описывает порядок работы; после каждой задачи волны 0 становится враньём |
### Что это значит для расстановки исполнителей
@@ -2934,6 +2983,40 @@ Asterisk и читает свой файл. Общий файл остаётся
**четыре новых**, и все четыре — не «уточнить формулировку», а деньги, закон или
правка боевого. 🔴 **Редактор добавил ещё два** — итого **шесть**.
---
## 🔴🔴 ВСЕ ШЕСТЬ ЗАКРЫТЫ ВЛАДЕЛЬЦЕМ 05.08.2026
Разбор хвостов перед стройкой. Ниже вопросы оставлены **как были** — намеренно,
чтобы позже не завести их заново, — но **ни один из них больше не ждёт ответа**.
| вопрос | решение | что это значит для стройки |
|---|---|---|
| Новое-1. Этикетка «Омега» | **Р73: оставить как есть** | ничего не делаем; первый живой обзвон идёт под чужим именем осознанно |
| Новое-2. Голос за границу | **Р75: юриста не спрашиваем, идём как есть** | ничего не делаем. 🔴 Риск законный, он остаётся; решение владельца, не моё |
| Новое-3. Часы: одно правило или второй дом | **Р76: одно правило, живой СМС-модуль правим** | 🔴 **З-3.1 разблокирована ЦЕЛИКОМ.** Правка боевого файла — своя приёмка, свой выкат, отдельный круг |
| Новое-4. Дорога назад для рекламы | **Р74: чинит отдельная смена до первых живых денег** | к обзвону работы не добавляет; но живые списания обзвона **не начинать** раньше починки |
| Новое-5. С какого кода звоним | **Р81: телефония уезжает на новую АТС, Манго — испытание** | 🔴 экраны (З-3.3, З-4.1, З-6.2) не обещают «звоним с местных номеров» |
| Новое-6. Расшифровки чужих записей | **Р82: расшифровка живёт ШЕСТЬ месяцев**, звук 30 дней | 🔴 моя страховка «уходит вместе со звуком» **отменена**; правит З-2.3 и З-2.5 |
🔴 **Сверх шести — три решения, которых в этом разделе не было:**
- **Р77 отменено решением Р83:** пять номеров у Манго **не арендуем**, ждём новую
АТС. Арифметика Р71 (двенадцать попыток — двенадцать номеров) остаётся, меняется
только где и когда;
- **перевод машины робота на новую АТС в этот план НЕ входит** (Р83) — решение
владельца. 🔴 Работа настоящая, машина прописана на Манго намертво, и лежать
она должна в затее про АТС, иначе потеряется;
- **Р78: тариф 2 + 10 остаётся**, уточняется по замеру. Требование к стройке:
цена меняется **настройкой, а не перестройкой** — это уже заложено в З-1.1;
- **Р79: длину и содержание речи решает клиент.** Хвост «переписать опенер»
снят. 🔴 Но пока клиентского скрипта нет, звучит **наш** 41-секундный текст —
тот самый, на котором трубку положили на 24-й секунде;
- **Р80: робота без слов-запиналок слушаем на приёмке** — пункт обязан попасть в
приёмочный лист, иначе «послушаем потом» растворится.
---
### 🔴 Новое-1. Менять ли этикетку «Омега» на экране у человека
Номера оформлены на **ООО «Лизинговая Омега»**, и человек видит на экране это имя.
@@ -3109,12 +3192,12 @@ awk '/^\| хвост \|/{f=1;next} f&&/^\|---/{next} f&&/^\| /{c++} f&&!/^\| /{p
| обед менеджера и несколько менеджеров с разными графиками | З-3.1 | окно — две границы дня, перерыва нет |
| админ сузил рамку — клиентское окно молча обрезалось | З-3.1 | строка в журнал, клиента не тревожим |
| обратный звонок гасит клиенту всю рекламу | З-1.7, З-6.1 | письмо называет обе остановки |
| блокировка общего номера остановит **всех** клиентов | З-3.3 | не строим до аренды |
| блокировка общего номера остановит **всех** клиентов | З-3.3 | не строим **до новой АТС** (Р81, Р83 — аренды у Манго не будет) |
| человек в списках двух клиентов | З-3.3, З-6.1 | с незнакомого номера — нейтральное представление |
| менеджер узнаёт о записи случайно; в договоре про это ничего | З-0.4 | бумажная работа, не назначена |
| что считается «тем же местом» при переписанном каркасе | З-4.4 | переписанный целиком = новое место |
| сколько живёт непринятая пометка | З-4.4 | бессрочно |
| **двенадцать против десяти** | З-3.3, З-4.1, З-6.2 | 🔴 **нужно слово владельца** |
| ~~**двенадцать против десяти**~~ | З-3.3, З-4.1, З-6.2 | **закрыто Р71 + Р83:** нужно двенадцать, но **аренды у Манго не будет** — ждём новую АТС. Строим на семи испытательных |
| кто включает рекламу обратно | З-1.7 | письмо говорит правду: вручную |
| можно ли скачать свои записи обратно | З-2.3 | не строим |
| срок хранения писем | З-3.5 | пишем след «кому и когда» |
@@ -3127,8 +3210,8 @@ awk '/^\| хвост \|/{f=1;next} f&&/^\|---/{next} f&&/^\| /{c++} f&&!/^\| /{p
| настоящий потолок оператора и сервера не измерен; общего предела на портал нет | З-0.1, З-3.3 | предел три на клиента, общего нет |
| попадает ли человек в стоп-лист сам, сказав роботу | З-3.2 | строим оба пути, самопопадание помечено |
| ~~подтверждение согласия в авто-режиме~~ | ~~З-5.1, З-5.2~~ | ✅ **закрыто решением Р72:** не спрашиваем, у наших лидов согласие уже есть. Хвостом больше не является |
| расшифровки **чужих** записей: живут или уходят со звуком | З-2.3, З-4.2 | 🔴 **поднято владельцу — «Новое-6».** Не мой выбор: у чужих записей мы не хозяева разговора. До ответа — уходят вместе со звуком на 30-й день |
| 🔴 **с какого кода мы звоним** (все восемь номеров красноярские) | З-3.3, З-4.1, З-6.2 | 🔴 **поднято владельцу — «Новое-5».** До ответа текст на экране говорит правду о сегодняшнем дне |
| ~~расшифровки **чужих** записей: живут или уходят со звуком~~ | З-2.3, З-2.5, З-4.2 | **закрыто решением Р82:** расшифровка живёт **шесть месяцев**, звук 30 дней. Моя страховка «уходят вместе со звуком» отменена. Осталось открытым: **от какой даты** считать полгода |
| ~~🔴 **с какого кода мы звоним** — все восемь номеров красноярские~~ | З-3.3, З-4.1, З-6.2 | **закрыто решением Р81:** телефония уезжает на **новую АТС**, Манго — только испытание. Экран по-прежнему говорит правду о сегодняшнем дне и **не обещает местных номеров** |
| 🔴 **база знаний робота продаёт Лидерру, а не клиента** (три файла `kb-*`) | З-0.7, З-4.8 | кладём в репозиторий и называем вслух, ничего не вырезая |
| 🔴 **порог «забираем правку в каркас» не назван**, и правила разбора нет | З-6.6 | считаем и показываем число; кто и когда забирает — работа людей |
| входит ли хранение звука в цену звонка | З-2.1 | не решаем, мерим место |