diff --git a/backend/mainService/app.py b/backend/mainService/app.py index 4c965bb..a40d7a9 100644 --- a/backend/mainService/app.py +++ b/backend/mainService/app.py @@ -18,6 +18,7 @@ origins = [ "http://localhost:5173", # Frontend running on localhost (React, Vue, etc.) + "https://cite-me.vercel.app" ] @@ -47,7 +48,7 @@ async def startup_event(app: FastAPI): app.add_middleware( CORSMiddleware, - allow_origins=origins, # Allow specific origins + allow_origins=["*"], # Allow specific origins. modify this to allow only the your desired origins allow_credentials=True, # Allow cookies & authentication headers allow_methods=["POST", "GET", "OPTIONS", "HEAD"], # Allow all HTTP methods (GET, POST, PUT, DELETE, etc.) allow_headers=["*"], # Allow all headers diff --git a/backend/mainService/src/services/citation_service.py b/backend/mainService/src/services/citation_service.py index c7a79c7..324734d 100644 --- a/backend/mainService/src/services/citation_service.py +++ b/backend/mainService/src/services/citation_service.py @@ -71,7 +71,7 @@ async def process_single_query(self, query: str) -> Dict[str, Any]: Dict[str, Any]: The processed results """ - logger.info(f"Processing query {query}") + logger.info(f"Processing query {query[:15]}") search_results = await self.PC.hybrid_query(query=query, top_k=5) formatted_results = format_for_rerank(search_results['matches']) reranked_results = await rerank(matches=formatted_results, query=query, top_n=1, rank_fields=["page_content"]) diff --git a/backend/mainService/src/services/source_credibility_metric_service.py b/backend/mainService/src/services/source_credibility_metric_service.py index 43b7c71..7ccd072 100644 --- a/backend/mainService/src/services/source_credibility_metric_service.py +++ b/backend/mainService/src/services/source_credibility_metric_service.py @@ -33,11 +33,11 @@ def _calculate_source_score(metric: Dict, source: Dict, rerank_score = source["rerank_score"] # Normalize rerank score to 0-1 range - normalized_rerank = min(max(rerank_score, 0), 1) + normalized_rerank = min(max(rerank_score, 0), 1)* 100 # Calculate weighted score and normalize to 0-100 range weighted_score = round((normalized_rerank * rerank_weight + - credibility_score * credibility_weight) * 100, 2) + credibility_score * credibility_weight) , 2) # Update the credibility score in the metric data metric["data"]["credibility_score"] = weighted_score @@ -54,7 +54,7 @@ async def get_credibility_metrics(sources: List[Dict]) -> List[Dict]: return [] # Configure timeout - timeout = aiohttp.ClientTimeout(total=10) + timeout = aiohttp.ClientTimeout(total=20) try: async with aiohttp.ClientSession(timeout=timeout) as session: diff --git a/backend/mainService/src/utils/format_rerank_result.py b/backend/mainService/src/utils/format_rerank_result.py index a70e3f5..2301dd4 100644 --- a/backend/mainService/src/utils/format_rerank_result.py +++ b/backend/mainService/src/utils/format_rerank_result.py @@ -112,7 +112,6 @@ def filter_mixbread_results( if doc.get("id") not in seen_ids and result.score >= benchmark: seen_ids.add(doc.pop("id")) doc["score"] = result.score - print(f"doc: {doc}") unique_results.append(doc) # with open("sample_output\\rerank_result_mixbread.json", "a") as f: # json.dump(unique_results, f, indent=4) diff --git a/backend/mainService/test/test_source_credibility_metric_service.py b/backend/mainService/test/test_source_credibility_metric_service.py index 5cb8257..229b572 100644 --- a/backend/mainService/test/test_source_credibility_metric_service.py +++ b/backend/mainService/test/test_source_credibility_metric_service.py @@ -91,7 +91,7 @@ async def test_calculate_overall_score_success(): assert isinstance(result, dict) assert "overall_score" in result assert "source_scores" in result - assert result["overall_score"] == 86.00 # (0.9 * 0.6 + 0.8 * 0.4) * 100 + assert result["overall_score"] == 54.32 # ((0.9 *100 )*0.6 + 0.8 * 0.4) @pytest.mark.asyncio async def test_calculate_overall_score_empty(): @@ -113,7 +113,7 @@ async def test_calculate_overall_score_mixed_status(): result = await calculate_overall_score(credibility_metrics, sources_with_scores) print(result) assert len(result["source_scores"]) == 2 - assert result["source_scores"][0] == 86.00 + assert result["source_scores"][0] == 54.32 @pytest.mark.asyncio async def test_calculate_overall_score_missing_data(): diff --git a/backend/metricsService/.env.example b/backend/metricsService/.env.example new file mode 100644 index 0000000..79ce8d2 --- /dev/null +++ b/backend/metricsService/.env.example @@ -0,0 +1,5 @@ +# Redis Configuration +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_DB=0 +REDIS_PASSWORD=your_redis_password_here \ No newline at end of file diff --git a/backend/metricsService/src/utils/cache_config.py b/backend/metricsService/src/utils/cache_config.py index a492ad7..c14016d 100644 --- a/backend/metricsService/src/utils/cache_config.py +++ b/backend/metricsService/src/utils/cache_config.py @@ -20,13 +20,13 @@ """ from typing import Optional +import os from redis import asyncio as aioredis from src.utils.logging_config import get_logger logger = get_logger(__name__) -# Redis connection settings -# REDIS_URL = "redis://localhost:6379" +# Redis connection settings from environment variables redis_client: Optional[aioredis.Redis] = None async def init_redis(): @@ -34,13 +34,12 @@ async def init_redis(): global redis_client try: redis_client = aioredis.Redis( - host='localhost', - port=6379, - db=0, - decode_responses=True -) - - + host=os.getenv('REDIS_HOST', 'localhost'), + port=int(os.getenv('REDIS_PORT', '6379')), + db=int(os.getenv('REDIS_DB', '0')), + password=os.getenv('REDIS_PASSWORD'), + decode_responses=True + ) except Exception as e: logger.error(f"Failed to initialize Redis connection: {str(e)}") raise