Spaces:
Runtime error
Runtime error
Upload goal_tracker.py
Browse files- goal_tracker.py +41 -0
goal_tracker.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
import uuid
|
| 3 |
+
from datetime import datetime
|
| 4 |
+
|
| 5 |
+
class GoalTracker:
|
| 6 |
+
def __init__(self):
|
| 7 |
+
self.goals = {}
|
| 8 |
+
|
| 9 |
+
def add_goal(self, user_id: str, goal_text: str):
|
| 10 |
+
goal_id = str(uuid.uuid4())
|
| 11 |
+
self.goals[goal_id] = {
|
| 12 |
+
"user_id": user_id,
|
| 13 |
+
"goal": goal_text,
|
| 14 |
+
"created": datetime.utcnow().isoformat(),
|
| 15 |
+
"subtasks": [],
|
| 16 |
+
"completed": False
|
| 17 |
+
}
|
| 18 |
+
return goal_id
|
| 19 |
+
|
| 20 |
+
def add_subtask(self, goal_id: str, task_text: str):
|
| 21 |
+
if goal_id in self.goals:
|
| 22 |
+
self.goals[goal_id]["subtasks"].append({"task": task_text, "done": False})
|
| 23 |
+
|
| 24 |
+
def complete_subtask(self, goal_id: str, index: int):
|
| 25 |
+
if goal_id in self.goals and 0 <= index < len(self.goals[goal_id]["subtasks"]):
|
| 26 |
+
self.goals[goal_id]["subtasks"][index]["done"] = True
|
| 27 |
+
|
| 28 |
+
def list_goals(self, user_id: str):
|
| 29 |
+
return {gid: g for gid, g in self.goals.items() if g["user_id"] == user_id}
|
| 30 |
+
|
| 31 |
+
def mark_complete(self, goal_id: str):
|
| 32 |
+
if goal_id in self.goals:
|
| 33 |
+
self.goals[goal_id]["completed"] = True
|
| 34 |
+
|
| 35 |
+
def summarize_goal(self, goal_id: str):
|
| 36 |
+
g = self.goals.get(goal_id, {})
|
| 37 |
+
summary = f"🎯 Goal: {g.get('goal')}\n"
|
| 38 |
+
for i, task in enumerate(g.get("subtasks", [])):
|
| 39 |
+
check = "✅" if task["done"] else "🔲"
|
| 40 |
+
summary += f"{check} {i+1}. {task['task']}\n"
|
| 41 |
+
return summary.strip()
|