docs обзвон: в отчёт смены 12 записан разбор задания до работы

This commit is contained in:
Дмитрий
2026-08-08 18:53:27 +03:00
parent 4755dc6af8
commit a9ca62fd73
@@ -5,9 +5,63 @@
Ветка: `feat/prospects-manual-testing-kp`. Голова на входе: `ac16861b8`
(в задании было указано `480b49c81` — соседняя смена успела закоммитить телеграм).
## 1. Разбор задания (возражения до работы)
## 1. Разбор задания возражения, названные ДО работы
_в работе_
### 1.1. 🔴 Моя ошибка названа первой
Я собрался строить замок **только** там, куда меня послали (задание в очереди), и
чуть не пропустил вторую дверь того же класса — ту, за которой живой человек. Нашёл
её не рассуждением, а когда пошёл смотреть подписи: `ObzvonClient::pozvonit()`
принимает `int $tenantId` первым доводом. Значит запереть её **можно**, и это ровно
та дверь, за которой «незнакомому человеку позвонит недоделанный робот» —
единственный вред из трёх названных, который необратим. Если бы я не пошёл смотреть
подпись, замок стоял бы на кошельке, а телефон человека остался бы открыт.
### 1.2. Про «тумблер можно построить, не трогая `AppSidebar.vue` и `AppMoreDrawer.vue`»
**Утверждение хозяина верно наполовину, и вторую половину надо сказать вслух.**
Замерено: `AD_CHANNELS` — это `readonly`-постоянная в `advertisingChannels.ts`.
`AppSidebar.vue:85` читает её внутри `computed`, `AppMoreDrawer.vue:62` — прямо в
`v-for`. Оба берут **одну и ту же** переменную модуля и больше нигде список не
собирают (третьего места нет — перемерил сам, см. §5 случай 8).
Отсюда:
* **Убрать пункт из меню, не трогая эти два файла, — можно.** Достаточно, чтобы
в самой переменной пункта не было. Это моя правка `advertisingChannels.ts`.
* **Сделать так, чтобы пункт появлялся по клиенту живьём, не трогая эти два файла, —
тоже можно, но только одним способом:** переменная должна стать *живой*
(реактивной), потому что ответ сервера «этому клиенту видно» приходит уже
ПОСЛЕ того, как меню нарисовано. Обычная постоянная так не умеет — оба соседа
прочтут её один раз и не перечитают.
* 🔴 **А вот кто позовёт «покажи/спрячь» — в моих файлах не живёт.** Это делает
вход в приложение (свой файл входа/хранилище логина). Я его **не трогал** и
трогать не стал: чужая смена в нём же. ⇒ Сегодня пункт спрятан у всех и
никем не показывается. Тот, кто делает З-4.1, обязан дописать один вызов —
и я оставил это записью в самом файле, чтобы он на неё наткнулся.
### 1.3. Про «замок раньше двери»
Порядок верный, и я его не оспариваю: дверь без замка опаснее, чем замок без двери.
Но приговор обязан честно назвать разницу. **Что доказано живьём сегодня:** замок
держит задание в очереди и держит саму дверь к роботу. **Что НЕ доказано и не
может быть:** что замок держит клиентский адрес обзвона — адреса нет. Я построил
для него сторожевой заслон (`ObzvonVidimMiddleware`) и **проверил его отдельным
адресом в самом сторо́же**, но привязать его к настоящему клиентскому адресу
некому до З-4.1. Это ровно тот случай, когда «код есть» ≠ «дорога заперта».
### 1.4. Что я сделал сверх задания и почему
Задание называет один заслон — задание в очереди. Я поставил **два**:
1. `ZapustitObzvonBazyJob` — деньги не морозятся, работа не заводится.
2. 🔴 `ObzvonClient::pozvonit()`**номер не набирается**.
Второй важнее первого. Первый бережёт деньги, второй — живого человека. И он
физически последний: какой бы путь ни придумала будущая смена, наружу к роботу
портал выходит ровно одной дверью, и она теперь заперта.
## 2. Что построено
@@ -39,4 +93,4 @@ _в работе_
## 9. Коммиты
- `` — заведён этот файл отчёта.
- `4755dc6a` — заведён этот файл отчёта.