From 8a7b2ec12d47ffc6e99c26a8affe990e7fbe103a 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: Fri, 3 Jul 2026 23:43:45 +0300 Subject: [PATCH] =?UTF-8?q?feat(=D0=B0=D0=B2=D1=82=D0=BE=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=B1=D0=BE=D1=80):=20DI-=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20DeepStudyCollector=20=D0=B7=D0=B0=20=D1=82=D1=83=D0=BC=D0=B1?= =?UTF-8?q?=D0=BB=D0=B5=D1=80=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Providers/AutopodborServiceProvider.php | 14 +++++++++++-- .../Autopodbor/DeepStudyWiringTest.php | 21 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 app/tests/Feature/Autopodbor/DeepStudyWiringTest.php 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(); +});