import time class BackBoardManager: def __init__(self): self.backboards = {} # user_id: Backboard def add_backboard(self, user_id, folder): self.backboards[user_id] = Backboard(user_id, folder) def get_backboard(self, user_id): if user_id not in self.backboards: return None return self.backboards[user_id] class Backboard: def __init__(self, user_id, folder): self.user_id = user_id self.folder = folder self.create_time = time.time() self.enter_chapter_time = time.time() self.history = [] self.file_tree = "[]" self.active_file_path = "" self.active_file_content = "" self.pasted_file_path = "" self.pasted_content = "" def next_chapter(self): self.enter_chapter_time = time.time() def get_info_prompt(self): five_history = "" for h in self.history[-5:]: five_history += h['type'] + "\n" + h.get('filePath', '') + "\n\n" return (f"###Global Info:###" f"- User is {self.user_id}" f"- User's total study time is {self.get_deltatime_mmss(self.create_time, time.time())}" f"- User's current chapter study time is {self.get_deltatime_mmss(self.enter_chapter_time, time.time())}" f"- Activated file path: {self.active_file_path}" f"- Activated file content (current editing 10 lines): " f"```" f"{self.active_file_content[-10:]}" f"```" f"- Last five action:{five_history}" f"- File tree: {self.file_tree}") def add_history(self, realtime_action): if(realtime_action['type']=='config'):return if len(self.history)!=0: if (self.history[-1]['type']=='edit'): if(self.history[-1]['filepath'] == realtime_action['filepath']): self.history[-1]['content'] = realtime_action['content'] return self.history.append(realtime_action) def get_deltatime_mmss(self, start_time, end_time): elapsed_time = end_time - start_time hours = int(elapsed_time // 3600) minutes = int((elapsed_time % 3600) // 60) seconds = int(elapsed_time % 60) return f"{hours:02d}:{minutes:02d}:{seconds:02d}"