diff --git a/SPARC/analyzer.py b/SPARC/analyzer.py index 0215b26..7f61283 100644 --- a/SPARC/analyzer.py +++ b/SPARC/analyzer.py @@ -182,10 +182,13 @@ class CompanyAnalyzer: CompanyAnalysisResult with success/failure status """ try: - patents = SERP.query(company_name) - patent_count = len(patents.patents) if patents.patents else 0 + # Delegate to analyze_company which handles SERP/patent caching + analysis = self.analyze_company(company_name) - analysis = self.analyze_company(company_name, patents=patents) + # Determine patent count from cached SERP query + query_hash = hashlib.sha256(company_name.lower().encode()).hexdigest() + cached_ids = self.db.get_cached_serp_query(query_hash) + patent_count = len(cached_ids) if cached_ids else 0 # Check if analysis indicates failure if analysis.startswith("No patents found") or analysis.startswith( diff --git a/tests/test_analyzer.py b/tests/test_analyzer.py index 06dde64..4fd6aa3 100644 --- a/tests/test_analyzer.py +++ b/tests/test_analyzer.py @@ -501,7 +501,7 @@ class TestBatchProcessing: assert callback.call_count == 2 - def test_company_analysis_result_structure(self, mocker): + def test_company_analysis_result_structure(self, mocker, mock_db): """Test CompanyAnalysisResult has correct structure.""" mock_query = mocker.patch("SPARC.analyzer.SERP.query") mock_save = mocker.patch("SPARC.analyzer.SERP.save_patents") @@ -512,6 +512,9 @@ class TestBatchProcessing: patent = Patent(patent_id="US123", pdf_link="http://example.com/test.pdf") mock_query.return_value = Patents(patents=[patent]) + # Simulate DB caching: after store, subsequent get returns the IDs + mock_db.get_cached_serp_query.side_effect = [None, ["US123"]] + def save_side_effect(p): p.pdf_path = "patents/US123.pdf" return p