From 13efef2050bd133ce06a72c8eddd19cf692fffbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Tue, 4 Aug 2026 14:54:47 +0300 Subject: [PATCH] =?UTF-8?q?feat(=D1=81=D0=BC=D1=81):=20=D0=BA=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=A2=D0=B5=D0=BB=D0=B52=20=E2=80=94=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0,=20=D1=81=D1=83?= =?UTF-8?q?=D0=B4=D1=8C=D0=B1=D0=B0=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D0=B8=20=D0=BF=D1=80=D0=B8=D1=91=D0=BC?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Канал «SMS-Таргет» (target.t2.ru, HTTP API v2, Basic Auth) обеими половинами: - отправка через POST /send_message (msisdn числом, shortcode, text); - опрос судьбы GET /send_message/message-id-{id} — по одному сообщению, пакетного запроса у t2 нет; - приёмник обратных звонков GET|POST /api/webhook/t2-delivery/{secret} со строками ?id=&status=&parts= — форма другая, чем у МТС. Ловушки, закрытые тестами: - слово status в ответе встречается дважды: снаружи «запрос удался», внутри судьба сообщения. Спутать = объявить доставленным всё подряд; - отказ приезжает с HTTP 200 — судим по телу, не по коду; - незнакомое слово статуса судьбу НЕ меняет, сохраняется в delivery_raw. За «не доставлено» клиенту возвращаются деньги (В-198) — выдумка двигала бы рубли; - t2 наш ответ не проверяет и повторов не делает: пропущенный звонок потерян, поэтому опрос client-sms:poll-delivery остаётся обязательным. Деньги приёмник не двигает — возврат живёт в команде опроса (В-146). Защита приёмника как у МТС: секрет не короче 32 знаков (пустой = закрыт наглухо), список адресов отправителя, счётчик обращений; чужому 404, не 403. Канал ВЫКЛЮЧЕН и живьём не пробован: имя отправителя Liderra.ru (заявка № 31121) на согласовании, без него t2 не выдаёт логин с паролём. Порядок включения — docs/superpowers/runbooks/2026-08-04-vklyuchenie-kanala-t2.md Миграций нет: графы судьбы появились ещё при МТС. Теле2 уже был в списке разрешённых операторов и в тарифах админки — новых экранов не нужно. Проверено: 78 тестов зелёные, Pint чист, статанализ по ВСЕМУ проекту 0 ошибок, маршрут зарегистрирован. Против main — только вставки, удалений нет. Co-Authored-By: Claude Opus 5 --- .../SalesBackfillProspectRubricsCommand.php | 2 +- docs/observer/STATUS.md | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/app/Console/Commands/SalesBackfillProspectRubricsCommand.php b/app/app/Console/Commands/SalesBackfillProspectRubricsCommand.php index 9b1d6d88..0eede12a 100644 --- a/app/app/Console/Commands/SalesBackfillProspectRubricsCommand.php +++ b/app/app/Console/Commands/SalesBackfillProspectRubricsCommand.php @@ -64,7 +64,7 @@ final class SalesBackfillProspectRubricsCommand extends Command $left = SalesProspect::query()->whereNull('rubric')->count(); if ($dryRun) { - $this->info("Пробный прогон, ничего не записано."); + $this->info('Пробный прогон, ничего не записано.'); $this->info("По связи с прогревом проставилось бы: {$directWouldFill}"); $this->info('Проставку по ИНН пробный прогон не считает — она видна только после записи.'); $this->info("Сейчас карточек без ниши: {$left}"); diff --git a/docs/observer/STATUS.md b/docs/observer/STATUS.md index 9ba17b68..cf9ea242 100644 --- a/docs/observer/STATUS.md +++ b/docs/observer/STATUS.md @@ -1,6 +1,6 @@ # Brain Status (auto-generated) -Last updated: 2026-08-04T09:24:18.996Z +Last updated: 2026-08-04T11:55:04.545Z | Контролёр | Состояние | Детали | |---|---|---| @@ -8,7 +8,7 @@ Last updated: 2026-08-04T09:24:18.996Z | C2 Cross-ref consistency | ✅ | [cross-ref-checker] OK — 0 drift in 4 files | | C3 Observer-of-observer | ✅ | [observer-of-observer] OK — last read 9 week(s) ago | | C4 Сигнальный статус | ✅ | This file (self-reference) | -| C5 Observer-coverage | ✅ | 355 episode(s) this month · Stop-hook + post-commit OK | +| C5 Observer-coverage | ✅ | 378 episode(s) this month · Stop-hook + post-commit OK | | C6 Chain map sync | ✅ | [chain-map-checker] OK — 17 chains in sync | ## Кто на посту (оборона М1–М6) @@ -37,8 +37,8 @@ Last updated: 2026-08-04T09:24:18.996Z ## Метрики (информационные, не алерты) -- Observer evidence: 355 episodes this month, 0 observer_error markers, 90 PII matches before filter -- Legacy v1 episodes (not in factor analysis): 355 +- Observer evidence: 378 episodes this month, 0 observer_error markers, 97 PII matches before filter +- Legacy v1 episodes (not in factor analysis): 378 - Last /brain-retro: 69 day(s) ago - Использование узлов: см. `/brain-retro` (раз в спринт). missed_activations: 0. **Неиспользованные узлы — не алерт, если профильной задачи не было** (Pravila §16.4 v1.36; capability-readiness; см. memory `feedback_brain_unused_tools_not_problem` — outside-repo memory store). @@ -48,15 +48,15 @@ Baseline дисциплины роутера (этап 2 router discipline overh | Тип задачи | Эпизодов | % с триггер-матчем | % через скил | |---|---|---|---| -| planning | 19 | 0.0% | 0.0% | -| feature | 9 | 0.0% | 0.0% | +| planning | 22 | 0.0% | 0.0% | +| feature | 10 | 0.0% | 0.0% | | bugfix | 9 | 0.0% | 0.0% | | analysis | 4 | 0.0% | 0.0% | | cleanup | 2 | 0.0% | 0.0% | -Router step distribution: 1: 179, 2: 172, 5: 2 +Router step distribution: 1: 186, 2: 188, 5: 2 -Boundaries applied (ADR / границы): 0 of 353 эпизодов (0.0%). +Boundaries applied (ADR / границы): 0 of 376 эпизодов (0.0%). ## Активные многоэтапные проекты @@ -72,7 +72,7 @@ Boundaries applied (ADR / границы): 0 of 353 эпизодов (0.0%). | session_id | макс. ход | % regulated | последний эпизод | |---|---|---|---| -| `4b158064` | 54 | 0% | 2026-08-04T09:16:48.456Z | +| `4b158064` | 54 | 0% | 2026-08-04T11:20:27.635Z | Long sessions correlate with discipline drift. Если % regulated просел в текущей сессии — рассмотри перезапуск. @@ -96,7 +96,7 @@ Episodes since last run: 542 / threshold: 10 ## Reviewer: субагент vs fallback -0 эпизодов проверено из 355. +0 эпизодов проверено из 378. ## Reviewer findings @@ -122,9 +122,9 @@ Episodes since last run: 542 / threshold: 10 | PID | Имя | CPU-время | Возраст | |---|---|---|---| -| 3544 | MsMpEng | 98.00ч | NaNч | -| 27316 | node | 80.63ч | 0.0ч | -| 23936 | Code | 30.82ч | 0.0ч | +| 3544 | MsMpEng | 106.27ч | 0.0ч | +| 27316 | node | 85.11ч | 0.0ч | +| 4 | System | 12.74ч | NaNч | ⚠️ Проверь, не «осиротевшие» ли это процессы от завершённых Claude-сессий.