File size: 2,117 Bytes
a4d1533
 
 
 
 
5aeac76
 
 
 
 
 
 
 
a4d1533
5aeac76
 
 
 
 
a4d1533
5aeac76
 
a4d1533
 
5aeac76
a4d1533
 
 
5aeac76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a4d1533
 
5aeac76
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""
⚙️ Haven Kitchen OS Configuration
User preferences and system settings.
"""

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"
    
    # API Keys
    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")
    elevenlabs_key: str = os.getenv("ELEVENLABS_API_KEY")
    
    # User Defaults
    user_name: str = "Friend"
    location: str = "Denver, 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)