| import os |
| import json |
| from pathlib import Path |
| from dataclasses import dataclass, field |
| from dotenv import load_dotenv |
|
|
| load_dotenv() |
|
|
| @dataclass |
| class SystemConfig: |
| base_dir: Path = Path(__file__).parent.parent |
| prefs_file: Path = base_dir / "user_preferences.json" |
| |
| |
| groq_key: str = os.getenv("GROQ_API_KEY") |
| serper_key: str = os.getenv("SERPER_API_KEY") |
| openai_api_key: str = os.getenv("OPENAI_API_KEY") |
| |
| |
| user_name: str = "Misti" |
| location: str = "Colorado Springs, CO" |
| dietary_restrictions: str = "None" |
| user_avatar: str = "π©π»" |
| meal_times: dict = field(default_factory=lambda: { |
| "breakfast": {"start": "06:00 AM", "end": "10:00 AM"}, |
| "lunch": {"start": "11:30 AM", "end": "02:00 PM"}, |
| "dinner": {"start": "05:00 PM", "end": "08:00 PM"} |
| }) |
|
|
| def __post_init__(self): |
| self.load_preferences() |
|
|
| def load_preferences(self): |
| if self.prefs_file.exists(): |
| try: |
| with open(self.prefs_file, 'r') as f: |
| data = json.load(f) |
| self.user_name = data.get("user_name", self.user_name) |
| self.location = data.get("location", self.location) |
| self.dietary_restrictions = data.get("dietary_restrictions", self.dietary_restrictions) |
| self.meal_times = data.get("meal_times", self.meal_times) |
| self.user_avatar = data.get("user_avatar", self.user_avatar) |
| except: pass |
| else: |
| self.save_preferences() |
|
|
| def save_preferences(self): |
| data = { |
| "user_name": self.user_name, |
| "location": self.location, |
| "dietary_restrictions": self.dietary_restrictions, |
| "meal_times": self.meal_times, |
| "user_avatar": self.user_avatar |
| } |
| with open(self.prefs_file, 'w') as f: |
| json.dump(data, f, indent=4) |
|
|