docs(billing): Phase 3 cleanup — refresh orphan comments to live classes

After ProcessWebhookJob/WebhookReceiveController removal — обновлены 8
docblock/inline комментариев, ссылавшихся на удалённый код:

- DealController: ProcessWebhookJob → SupplierWebhookController/RouteSupplierLeadJob
- SupplierWebhookController: убрана legacy backward-compat note
- ImportLeadsJob: паритет с RouteSupplierLeadJob
- RouteSupplierLeadJob: убрана ссылка на ProcessWebhookJob-pattern
- NewLeadNotification mailable: триггер в RouteSupplierLeadJob
- FailedWebhookJob model: ссылка на RouteSupplierLeadJob::failed()
- SupplierLeadCost model: создаётся в LedgerService::chargeForDelivery
- CsvLeadsParser: паритет с RouteSupplierLeadJob парсером

Code-функциональность не затронута, только doc-rot fix.
This commit is contained in:
Дмитрий
2026-05-24 16:51:20 +03:00
parent d3ed266830
commit dffefe7fc0
8 changed files with 13 additions and 13 deletions
@@ -24,9 +24,9 @@ use Illuminate\Support\Facades\DB;
* вынесены в `DealBulkActionController`, `export()` в `DealExportController`.
* Этот класс остаётся только для CRUD по одной записи.
*
* NB: webhook-flow (автосоздание из crm.bp-gr.ru) отдельный endpoint
* `WebhookReceiveController` + `ProcessWebhookJob` (асинхронно через очередь
* с advisory lock + dedup). Этот controller для ручных action'ов из UI.
* NB: webhook-flow (приём из crm.bp-gr.ru) отдельный endpoint
* `SupplierWebhookController` + `RouteSupplierLeadJob` (шеринг-канал).
* Этот controller для ручных action'ов из UI.
*
* J1 (Sprint 3F): auth:sanctum+tenant, tenant_id из auth()->user().
*
@@ -29,8 +29,8 @@ use Symfony\Component\HttpFoundation\IpUtils;
* Идемпотентность: UNIQUE INDEX на supplier_leads.vid. При дубле возвращаем
* 200 OK без re-dispatch (поставщик может ретранслировать одни и те же лиды).
*
* Backward-compat: legacy /api/webhook/{token} (per-tenant) живёт параллельно
* на WebhookReceiveController не пересекается.
* Единственный приёмник входящих лидов от crm.bp-gr.ru (legacy per-tenant
* webhook был удалён вместе с ProcessWebhookJob).
*
* Plan 2.6 fix #ii (10.05.2026): пустой `supplier_ip_allowlist = '[]'` на
* production env теперь fail-closed (`verifyIpAllowlist` возвращает false если
+1 -1
View File
@@ -26,7 +26,7 @@ use Throwable;
*
* Жизненный цикл import_log: pending processing done | failed.
* RLS: каждый доступ к БД задаёт SET LOCAL app.current_tenant_id (воркер
* вне middleware-контекста паритет с ProcessWebhookJob).
* вне middleware-контекста паритет с RouteSupplierLeadJob).
*/
class ImportLeadsJob implements ShouldQueue
{
+2 -2
View File
@@ -312,8 +312,8 @@ class RouteSupplierLeadJob implements ShouldQueue
actorTenantUserId: null, actorAdminUserId: null, ip: null,
);
// ProcessWebhookJob-pattern: setRelation чтобы NotificationService
// мог подтянуть deal->project без N+1 lookup'а под RLS.
// setRelation чтобы NotificationService мог подтянуть
// deal->project без N+1 lookup'а под RLS.
$deal->setRelation('project', $project);
$notifier->notifyNewLead($tenant, $deal);
+1 -1
View File
@@ -18,7 +18,7 @@ use Illuminate\Queue\SerializesModels;
*
* Отправляется получателям тенанта, у которых в notification_preferences
* включён канал email для события new_lead. Триггер успешное создание
* сделки в ProcessWebhookJob::chargeNewLead.
* сделки в RouteSupplierLeadJob.
*/
class NewLeadNotification extends Mailable
{
+1 -1
View File
@@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* Webhook-job упавший после 3 ретраев (см. ProcessWebhookJob::failed()).
* Webhook-job упавший после 3 ретраев (см. RouteSupplierLeadJob::failed()).
*
* Tenant-aware с RLS. Хранит raw payload + текст исключения для ручного
* retry из админки SaaS (`retried_at`/`retried_by` заполняются админом).
+2 -2
View File
@@ -11,8 +11,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
* Себестоимость каждого лида (Ю-2: реселлерская модель).
*
* Партиционирована по `received_at` синхронно с `deals` composite PK
* (id, received_at). В `ProcessWebhookJob` создаётся в той же транзакции,
* что и Deal + BalanceTransaction.
* (id, received_at). Создаётся в `LedgerService::chargeForDelivery` в той же
* транзакции, что и Deal + BalanceTransaction.
*
* cost_rub snapshot suppliers.cost_rub на момент приёма (исторические
* записи не пересчитываются при изменении закупочной цены, см. §20.12.5).
+1 -1
View File
@@ -95,7 +95,7 @@ final class CsvLeadsParser
return null;
}
// Префикс B[123]_ из названия проекта срезается (паритет с ProcessWebhookJob).
// Префикс B[123]_ из названия проекта срезается (паритет с RouteSupplierLeadJob парсером).
$projectName = (string) preg_replace('/^B[123]_/', '', trim($project));
if ($projectName === '') {
$errors[] = ['line' => $dataLine, 'message' => 'Пустое название проекта'];