docs обзвон: в отчёт смены 12 записан разбор задания до работы
This commit is contained in:
+57
-3
@@ -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` — заведён этот файл отчёта.
|
||||
|
||||
Reference in New Issue
Block a user