diff --git a/app/app/Providers/AutopodborServiceProvider.php b/app/app/Providers/AutopodborServiceProvider.php index 139a5d87..0334595d 100644 --- a/app/app/Providers/AutopodborServiceProvider.php +++ b/app/app/Providers/AutopodborServiceProvider.php @@ -28,6 +28,8 @@ use App\Services\Autopodbor\Agent\LiveFindCompetitors; use App\Services\Autopodbor\Agent\RealCompetitorAgent; use App\Services\Autopodbor\Agent\Similarity\AitunnelEmbedder; use App\Services\Autopodbor\Agent\Similarity\EmbeddingRelevance; +use App\Services\Autopodbor\Agent\Study\DeepStudyCollector; +use App\Services\Autopodbor\Agent\Study\SiteOpener; use App\Services\Autopodbor\AutopodborDedup; use App\Services\Autopodbor\AutopodborNormalizer; use Illuminate\Http\Client\Factory as HttpFactory; @@ -51,16 +53,24 @@ class AutopodborServiceProvider extends ServiceProvider concurrency: (int) config('services.xfetch.concurrency', 4), ); + $siteFetcher = new CurlPlaywrightFetcher; $fetcher = new CompositeFetcher( - siteFetcher: new CurlPlaywrightFetcher, + siteFetcher: $siteFetcher, directoryFetcher: new XfetchDirectoryFetcher($xfetch), ); + $deep = config('autopodbor.deep_study') + ? new DeepStudyCollector( + xfetch: $xfetch, + opener: new SiteOpener($siteFetcher), + ) + : null; + $liveFind = config('autopodbor.real_find') ? $this->buildLiveFind($xfetch) : null; - return new RealCompetitorAgent($fetcher, new FakeCompetitorAgent, liveFind: $liveFind); + return new RealCompetitorAgent($fetcher, new FakeCompetitorAgent, liveFind: $liveFind, deep: $deep); }); } diff --git a/app/tests/Feature/Autopodbor/DeepStudyWiringTest.php b/app/tests/Feature/Autopodbor/DeepStudyWiringTest.php new file mode 100644 index 00000000..be68eb92 --- /dev/null +++ b/app/tests/Feature/Autopodbor/DeepStudyWiringTest.php @@ -0,0 +1,21 @@ +set('autopodbor.deep_study', true); + config()->set('services.xfetch.key', 'test'); + $agent = app(CompetitorAgent::class); + expect($agent)->toBeInstanceOf(RealCompetitorAgent::class); + $ref = new ReflectionProperty(RealCompetitorAgent::class, 'deep'); + expect($ref->getValue($agent))->not->toBeNull(); +}); + +it('deep_study ВЫКЛ → deep равен null', function () { + config()->set('autopodbor.deep_study', false); + config()->set('services.xfetch.key', 'test'); + $agent = app(CompetitorAgent::class); + $ref = new ReflectionProperty(RealCompetitorAgent::class, 'deep'); + expect($ref->getValue($agent))->toBeNull(); +});