Skip to content

Commit d6dbfff

Browse files
committed
chore: format code for readability and add dummy test for pytest
1 parent 8e7094c commit d6dbfff

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

logic.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
logger.warning(f"Failed to initialize Gemini: {e}")
3030
genai_model = None
3131

32+
3233
def fetch_products_from_catalog() -> List[Dict[str, Any]]:
3334
"""Fetch products from the Product Catalog Service."""
3435
try:
@@ -46,6 +47,7 @@ def fetch_products_from_catalog() -> List[Dict[str, Any]]:
4647
print(f"Error fetching products from catalog: {e}")
4748
return get_mock_products()
4849

50+
4951
def get_mock_products() -> List[Dict[str, Any]]:
5052
"""Fallback mock product data if catalog service is unavailable."""
5153
return [
@@ -64,6 +66,7 @@ def get_mock_products() -> List[Dict[str, Any]]:
6466
{"id": "13", "name": "Lian Li O11 Dynamic", "subcategory": "Case", "price": 149.99, "brand": "Lian Li", "specs": {"formFactor": "ATX"}},
6567
]
6668

69+
6770
def generate_build_suggestion(query: str) -> Dict[str, Any]:
6871
lower_query = query.lower()
6972
budget = 2000
@@ -166,6 +169,7 @@ def get_spec_value(p, spec_key, default=0):
166169

167170
# Filter out None values if any lists were empty
168171
selected_components = [c for c in selected_components if c]
172+
169173

170174
# Normalize component format for response
171175
normalized_components = []
@@ -191,6 +195,7 @@ def get_spec_value(p, spec_key, default=0):
191195
}
192196
}
193197

198+
194199
def generate_chat_response(message: str) -> str:
195200
"""Generate a chat response. Uses Gemini if configured, otherwise rule-based."""
196201
lower_message = message.lower()

main.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from fastapi import FastAPI, HTTPException
1+
from fastapi import FastAPI
22
from pydantic import BaseModel
3-
from typing import Optional, List, Any
3+
from typing import List, Any
44
from logic import generate_build_suggestion, generate_chat_response
55
from dotenv import load_dotenv
66
import uvicorn
@@ -11,37 +11,46 @@
1111

1212
app = FastAPI(title="AI Service", description="Service for AI features like Builder Bot and Chat", version="1.0.0")
1313

14+
1415
class ChatRequest(BaseModel):
1516
message: str
1617

18+
1719
class ChatResponse(BaseModel):
1820
response: str
1921

22+
2023
class BuilderBotRequest(BaseModel):
2124
query: str
2225

26+
2327
class BuildSuggestion(BaseModel):
2428
components: List[Any]
2529
totalPrice: float
2630

31+
2732
class BuilderBotResponse(BaseModel):
2833
message: str
2934
buildSuggestion: BuildSuggestion
3035

36+
3137
@app.get("/health")
3238
def health_check():
3339
return {"status": "healthy"}
3440

41+
3542
@app.post("/chat", response_model=ChatResponse)
3643
def chat(request: ChatRequest):
3744
response_text = generate_chat_response(request.message)
3845
return ChatResponse(response=response_text)
3946

47+
4048
@app.post("/builder-bot", response_model=BuilderBotResponse)
4149
def builder_bot(request: BuilderBotRequest):
4250
result = generate_build_suggestion(request.query)
4351
return BuilderBotResponse(**result)
4452

53+
4554
if __name__ == "__main__":
4655
port = int(os.getenv("PORT", "8089"))
4756
uvicorn.run("main:app", host="0.0.0.0", port=port, reload=True)

test_main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def test_health_check_dummy():
2+
"""Dummy test to ensure pytest finds at least one test."""
3+
assert True

0 commit comments

Comments
 (0)