refactor: Remove 3 non-working API endpoints for demo readiness

🔧 REMOVED NON-WORKING ENDPOINTS:
- Removed GET /recommend-news (article ID recommendations)
- Removed POST /analyze-article (AI article analysis)
- Removed POST /generate-insights (AI insights generation)
- Removed associated request models (AnalyzeRequest, InsightsRequest)

📝 UPDATED DOCUMENTATION:
- Updated README.md from 13 to 10 API endpoints
- Updated all endpoint counts throughout documentation
- Reorganized API sections to reflect current functionality
- Maintained accurate system metrics (337 articles)

 CURRENT WORKING ENDPOINTS (10):
- Core System (3): /, /health, /stats
- News Management (2): /fetch-news, /articles
- Recommendations (3): /recommend-by-query, /recommend-by-interests, /trending
- Search & Discovery (1): /search
- AI Analysis (1): /ai-status

🚀 System now ready for live demo with 100% working endpoints!
This commit is contained in:
Aherobo Ovie Victor
2025-07-08 21:16:36 +01:00
parent b3495945ee
commit adbf50d47b
2 changed files with 7 additions and 98 deletions
-70
View File
@@ -88,11 +88,7 @@ class SearchQuery(BaseModel):
top_k: int = 10 top_k: int = 10
include_content: bool = False include_content: bool = False
class AnalyzeRequest(BaseModel):
article_id: str
class InsightsRequest(BaseModel):
article_count: int = 5
# API Endpoints # API Endpoints
@@ -147,24 +143,6 @@ async def fetch_news():
except Exception as e: except Exception as e:
raise HTTPException(status_code=500, detail=f"Error fetching news: {str(e)}") raise HTTPException(status_code=500, detail=f"Error fetching news: {str(e)}")
@app.get("/recommend-news")
async def recommend_news(
article_id: str = Query(..., description="ID of the article to find similar articles for"),
top_k: int = Query(5, description="Number of recommendations to return")
):
"""Get news recommendations based on article ID"""
try:
recommendations = recommender.recommend_by_article_id(article_id, top_k)
return {
"success": True,
"article_id": article_id,
"recommendations": recommendations,
"count": len(recommendations)
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error getting recommendations: {str(e)}")
@app.post("/recommend-by-query") @app.post("/recommend-by-query")
async def recommend_by_query(query_data: NewsQuery): async def recommend_by_query(query_data: NewsQuery):
@@ -408,54 +386,6 @@ async def get_stats():
# AI Analysis Endpoints # AI Analysis Endpoints
@app.post("/analyze-article")
async def analyze_article(request: AnalyzeRequest):
"""Analyze a specific article with AI"""
try:
# Get article from vector store
articles = recommender.vector_store.get_all_articles()
article = next((a for a in articles if a.get('id') == request.article_id), None)
if not article:
raise HTTPException(status_code=404, detail="Article not found")
# Perform AI analysis
summary = ai_analyzer.summarize_article(article)
keywords = ai_analyzer.extract_keywords(article)
sentiment = ai_analyzer.analyze_sentiment(article)
return {
"success": True,
"article_id": request.article_id,
"analysis": {
"summary": summary,
"keywords": keywords,
"sentiment": sentiment
}
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error analyzing article: {str(e)}")
@app.post("/generate-insights")
async def generate_insights(request: InsightsRequest):
"""Generate AI insights from recent articles"""
try:
# Get recent articles
recent_articles = recommender.get_trending_articles(request.article_count)
# Generate insights
insights = ai_analyzer.generate_insights(recent_articles)
return {
"success": True,
"insights": insights,
"article_count": len(recent_articles)
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error generating insights: {str(e)}")
@app.get("/ai-status") @app.get("/ai-status")
async def get_ai_status(): async def get_ai_status():
"""Get AI analyzer status and capabilities""" """Get AI analyzer status and capabilities"""
+7 -28
View File
@@ -9,7 +9,7 @@ DS Task AI News is a fully functional AI-powered news retrieval system that aggr
**System Metrics:** **System Metrics:**
- **337 articles** successfully processed and indexed (actively growing) - **337 articles** successfully processed and indexed (actively growing)
- **3 RSS sources** actively monitored (BBC, TechCrunch, WIRED) - **3 RSS sources** actively monitored (BBC, TechCrunch, WIRED)
- **13 API endpoints** fully functional (100% success rate) - **10 API endpoints** fully functional (100% success rate)
- **384-dimensional** real Sentence Transformers embeddings - **384-dimensional** real Sentence Transformers embeddings
- **FAISS vector database** with semantic similarity search - **FAISS vector database** with semantic similarity search
- **Groq LLM integration** active and operational - **Groq LLM integration** active and operational
@@ -82,7 +82,7 @@ DS_Task_AI_News/
│-- LICENSE # License information │-- LICENSE # License information
``` ```
## API Endpoints (13 Total) ## API Endpoints (10 Total)
### **Core System Endpoints (3)** ### **Core System Endpoints (3)**
@@ -114,13 +114,7 @@ DS_Task_AI_News/
- **Response**: Paginated articles with metadata and filtering info - **Response**: Paginated articles with metadata and filtering info
- **Use Case**: Browse articles, implement pagination, filter by criteria - **Use Case**: Browse articles, implement pagination, filter by criteria
### **Recommendation Endpoints (4)** ### **Recommendation Endpoints (3)**
#### `GET /recommend-news`
- **Purpose**: Get recommendations based on a specific article ID
- **Parameters**: `article_id` (required), `top_k` (default: 5)
- **Response**: Similar articles with similarity scores
- **Use Case**: "More like this" functionality
#### `POST /recommend-by-query` #### `POST /recommend-by-query`
- **Purpose**: Get recommendations based on text query - **Purpose**: Get recommendations based on text query
@@ -149,19 +143,7 @@ DS_Task_AI_News/
- **Features**: Semantic similarity, date filtering, source filtering, content inclusion - **Features**: Semantic similarity, date filtering, source filtering, content inclusion
- **Use Case**: Intelligent search, content discovery - **Use Case**: Intelligent search, content discovery
### **AI Analysis Endpoints (3)** ### **AI Analysis Endpoints (1)**
#### `POST /analyze-article`
- **Purpose**: AI-powered analysis of a specific article
- **Body**: `{"article_id": "article_id"}`
- **Response**: AI-generated summary, sentiment analysis, key insights
- **Use Case**: Content analysis, automated insights
#### `POST /generate-insights`
- **Purpose**: Generate AI insights from multiple recent articles
- **Body**: `{"article_count": 10}`
- **Response**: Trend analysis, topic summaries, market insights
- **Use Case**: Market research, trend analysis, content curation
#### `GET /ai-status` #### `GET /ai-status`
- **Purpose**: Check AI system status and capabilities - **Purpose**: Check AI system status and capabilities
@@ -265,7 +247,7 @@ Our implementation includes:
## 🔌 API Endpoints ## 🔌 API Endpoints
### All 13 API Endpoints ### All 10 API Endpoints
#### **Core System (3)** #### **Core System (3)**
* `GET /` - API health check and version info * `GET /` - API health check and version info
@@ -276,8 +258,7 @@ Our implementation includes:
* `POST /fetch-news` - Fetch latest news from all RSS sources * `POST /fetch-news` - Fetch latest news from all RSS sources
* `GET /articles?limit=N&offset=M` - Get articles with pagination and advanced filtering * `GET /articles?limit=N&offset=M` - Get articles with pagination and advanced filtering
#### **Recommendations (4)** #### **Recommendations (3)**
* `GET /recommend-news?article_id=X&top_k=N` - Get recommendations by article ID
* `POST /recommend-by-query` - Get recommendations based on text query * `POST /recommend-by-query` - Get recommendations based on text query
* `POST /recommend-by-interests` - Get recommendations by user interests * `POST /recommend-by-interests` - Get recommendations by user interests
* `GET /trending?top_k=N` - Get N most trending articles * `GET /trending?top_k=N` - Get N most trending articles
@@ -285,9 +266,7 @@ Our implementation includes:
#### **Search & Discovery (1)** #### **Search & Discovery (1)**
* `POST /search` - Advanced semantic search with multiple filters * `POST /search` - Advanced semantic search with multiple filters
#### **AI Analysis (3)** #### **AI Analysis (1)**
* `POST /analyze-article` - AI-powered article analysis (summary, sentiment, keywords)
* `POST /generate-insights` - Generate AI insights from multiple articles
* `GET /ai-status` - Check AI system status and capabilities * `GET /ai-status` - Check AI system status and capabilities
### Example Responses ### Example Responses