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:###\n\ # User is {self.user_id}\n\ # User's total study time is {self.get_deltatime_mmss(self.create_time, time.time())}\n\ # User's current chapter study time is {self.get_deltatime_mmss(self.enter_chapter_time, time.time())}\n\ # \n\n\ # Activated file path: {self.active_file_path}\n\ # Activated file content (current editing 10 lines): \n\ # ```\n\ # {self.active_file_content[-10:]}\n\ # ```\n\ # \n\n\ # Last five action:\n\ # {"\n".join(self.history[-5:])}\n\nFile tree: \n{self.file_tree}\n" 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}"