9fce28fda8
Для застройщиков, которые сидят только в Яндексе. По каждому номеру ищем в
Яндекс.Картах, но список рыхлый — поэтому КАЖДУЮ карточку открываем и оставляем
только те, где искомый номер реально есть. Это отсекает «Похожие места рядом»,
рекламу и рыхлые совпадения по бренду. Оба справочника объединяются
(CompositePhoneReverse), дубли по домену схлопываются.
Переиспользована готовая механика Яндекса: render-yandex-list.cjs (список) +
DirectoryParser::parseYandexCard (карточка). Браузерные адаптеры за интерфейсами
(YandexPhoneSearch/YandexCardReader) — логика TDD-ится на фейках; порог общей
линии считается по подтверждённым карточкам.
За отдельным тумблером AUTOPODBOR_PHONE_REVERSE_YANDEX (по умолчанию ВЫКЛ,
требует phone_reverse). Юнит 267/267, feature 150/150. План и находки —
docs/superpowers/{plans,findings}/2026-07-05-*.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.3 KiB
PHP
43 lines
2.3 KiB
PHP
<?php
|
|
|
|
use App\Services\Autopodbor\Agent\CompetitorAgent;
|
|
use App\Services\Autopodbor\Agent\RealCompetitorAgent;
|
|
use App\Services\Autopodbor\Agent\Study\DeepStudyCollector;
|
|
use App\Services\Autopodbor\Agent\Study\PhoneReverse;
|
|
|
|
it('при deep_study+phone_reverse в DeepStudyCollector проброшен реальный PhoneReverse', function () {
|
|
config()->set('autopodbor.deep_study', true);
|
|
config()->set('autopodbor.phone_reverse', true);
|
|
|
|
$agent = app(CompetitorAgent::class);
|
|
expect($agent)->toBeInstanceOf(RealCompetitorAgent::class);
|
|
|
|
$deep = (new ReflectionProperty(RealCompetitorAgent::class, 'deep'))->getValue($agent);
|
|
expect($deep)->toBeInstanceOf(DeepStudyCollector::class);
|
|
|
|
$reverse = (new ReflectionProperty(DeepStudyCollector::class, 'reverse'))->getValue($deep);
|
|
expect($reverse)->toBeInstanceOf(PhoneReverse::class);
|
|
});
|
|
|
|
it('при phone_reverse+phone_reverse_yandex reverse = композит (2ГИС + Яндекс)', function () {
|
|
config()->set('autopodbor.deep_study', true);
|
|
config()->set('autopodbor.phone_reverse', true);
|
|
config()->set('autopodbor.phone_reverse_yandex', true);
|
|
|
|
$agent = app(\App\Services\Autopodbor\Agent\CompetitorAgent::class);
|
|
$deep = (new ReflectionProperty(\App\Services\Autopodbor\Agent\RealCompetitorAgent::class, 'deep'))->getValue($agent);
|
|
$reverse = (new ReflectionProperty(\App\Services\Autopodbor\Agent\Study\DeepStudyCollector::class, 'reverse'))->getValue($deep);
|
|
expect($reverse)->toBeInstanceOf(\App\Services\Autopodbor\Agent\Study\CompositePhoneReverse::class);
|
|
});
|
|
|
|
it('только phone_reverse (без Яндекса) → reverse = 2ГИС-экспандер (не композит)', function () {
|
|
config()->set('autopodbor.deep_study', true);
|
|
config()->set('autopodbor.phone_reverse', true);
|
|
config()->set('autopodbor.phone_reverse_yandex', false);
|
|
|
|
$agent = app(\App\Services\Autopodbor\Agent\CompetitorAgent::class);
|
|
$deep = (new ReflectionProperty(\App\Services\Autopodbor\Agent\RealCompetitorAgent::class, 'deep'))->getValue($agent);
|
|
$reverse = (new ReflectionProperty(\App\Services\Autopodbor\Agent\Study\DeepStudyCollector::class, 'reverse'))->getValue($deep);
|
|
expect($reverse)->toBeInstanceOf(\App\Services\Autopodbor\Agent\Study\PhoneReverseExpander::class);
|
|
});
|