Files
portal/app/tests/Feature/Autopodbor/SelfRenderWiringTest.php
T
Дмитрий 316924f00e feat(autopodbor): проводка флага self_render в провайдере (фаза 7)
Флаг autopodbor.self_render переключает слой добычи 2ГИС/Яндекс пары фетчер+ридер:
 ВКЛ  → SelfRenderClient (виртуалка+прокси; 2ГИС→initialState) + TwoGisJsonReader;
 ВЫКЛ → XfetchClient (xf4) + HtmlTwoGisReader (как сейчас).
SelfRenderClient один покрывает и 2ГИС (initialState), и Яндекс (html) — заменяет
и xfetch, и локальный Playwright-роутинг. DeepStudyCollector под self_render получает
yandexDir через виртуалку. 453/453 теста зелёные, Pint+Larastan чисто.

Известный хвост (follow-up): PlaywrightYandexDirectory (листинг Яндекс шаг 1) и
YandexPhoneReverse Playwright-классы остаются на ЛОКАЛЬНОМ Playwright (не xf4, но и
без прокси) — для полного прокси-покрытия Яндекса их надо развязать на PageFetcher.
Гарантия §5.7 «ни одной точки на xf4 при ВКЛ» соблюдена (локальный Playwright ≠ xf4).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 19:06:26 +03:00

43 lines
2.0 KiB
PHP

<?php
declare(strict_types=1);
use App\Providers\AutopodborServiceProvider;
use App\Services\Autopodbor\Agent\CompetitorAgent;
use App\Services\Autopodbor\Agent\Extract\HtmlTwoGisReader;
use App\Services\Autopodbor\Agent\Extract\TwoGisJsonReader;
use App\Services\Autopodbor\Agent\RealCompetitorAgent;
// Проводка флага self_render (§7): фетчер и 2ГИС-ридер меняются ПАРОЙ; граф собирается без ошибок в
// обоих режимах. Полная приёмка «фирма-в-фирму» — ручная на деве (§7.4).
it('twoGisReader: xf4 → HtmlTwoGisReader, self-render → TwoGisJsonReader (пара к фетчеру)', function () {
$p = new AutopodborServiceProvider(app());
config()->set('autopodbor.self_render', false);
expect($p->twoGisReader())->toBeInstanceOf(HtmlTwoGisReader::class);
config()->set('autopodbor.self_render', true);
expect($p->twoGisReader())->toBeInstanceOf(TwoGisJsonReader::class);
});
it('граф CompetitorAgent собирается под self_render (deep+real+reverse+yandex) без ошибок', function () {
config()->set('autopodbor.self_render', true);
config()->set('services.self_render', ['endpoint' => 'https://render.local/render', 'key' => 'k', 'concurrency' => 4]);
config()->set('autopodbor.deep_study', true);
config()->set('autopodbor.real_find', true);
config()->set('autopodbor.phone_reverse', true);
config()->set('autopodbor.phone_reverse_yandex', true);
expect(app()->make(CompetitorAgent::class))->toBeInstanceOf(RealCompetitorAgent::class);
});
it('граф собирается и в режиме xf4 (флаг ВЫКЛ) — регресс', function () {
config()->set('autopodbor.self_render', false);
config()->set('autopodbor.deep_study', true);
config()->set('autopodbor.real_find', true);
config()->set('autopodbor.phone_reverse', true);
expect(app()->make(CompetitorAgent::class))->toBeInstanceOf(RealCompetitorAgent::class);
});