Spaces:
Sleeping
Sleeping
File size: 5,567 Bytes
a7d2fe5 7917bda a7d2fe5 7917bda a7d2fe5 7917bda a7d2fe5 7917bda d694796 61ac5f8 a7d2fe5 |
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
from assignment_engine import TaskAssignmentEngine
import pandas as pd
class TaskManager:
def __init__(self):
self.engine = TaskAssignmentEngine()
self.setup()
def setup(self):
"""Initialize the system"""
print("π TASK ASSIGNMENT SYSTEM STARTING...")
self.engine.load_data()
self.engine.load_model() # Load existing model if available
def assign_tasks(self):
"""Assign all pending tasks"""
print("\nπ― ASSIGNING TASKS...")
for _, task in self.engine.tasks.iterrows():
task_id = task['task_id']
# Check if task already completed
completed = self.engine.results[self.engine.results['task_id'] == task_id]
if len(completed) > 0:
print(f"Task {task_id} already completed")
continue
user_id, user_name = self.engine.assign_task(task_id)
def enter_result(self, task_id, user_id, time_taken, quality):
"""Enter task completion result"""
self.engine.add_result(task_id, user_id, time_taken, quality)
def update_progress(self, task_id, user_id, progress_percent, notes=""):
"""Update task progress"""
self.engine.update_task_progress(task_id, user_id, progress_percent, notes)
def retrain_ai(self):
"""Retrain the AI with new data"""
print("\nπ§ RETRAINING AI...")
self.engine.train_model()
def show_dashboard(self):
"""Show system dashboard"""
print("\n" + "="*50)
print("π TASK ASSIGNMENT DASHBOARD")
print("="*50)
self.engine.show_stats()
self.engine.get_user_skills()
self.engine.show_active_tasks()
print(f"\nπ€ AI Status: {'Trained' if self.engine.is_trained else 'Random Assignment'}")
def add_user(self, name):
"""Add new user"""
if len(self.engine.users) == 0:
new_id = 1
else:
new_id = int(self.engine.users['user_id'].max()) + 1
new_user = pd.DataFrame({'user_id': [new_id], 'name': [name]})
self.engine.users = pd.concat([self.engine.users, new_user], ignore_index=True)
self.engine.users.to_csv("users.csv", index=False)
print(f"β
Added user: {name} (ID: {new_id})")
return new_id
def add_task(self, task_type, complexity, deadline):
"""Add new task"""
if len(self.engine.tasks) == 0:
new_id = 1
else:
new_id = int(self.engine.tasks['task_id'].max()) + 1
new_task = pd.DataFrame({
'task_id': [new_id],
'type': [task_type],
'complexity': [complexity],
'deadline': [deadline]
})
self.engine.tasks = pd.concat([self.engine.tasks, new_task], ignore_index=True)
self.engine.tasks.to_csv("tasks.csv", index=False)
print(f"β
Added task: {task_type} (ID: {new_id}, Complexity: {complexity}, Deadline: {deadline}h)")
return new_id
def remove_user(self, user_id):
"""Remove a user by ID"""
user_id = int(user_id)
user_df = self.engine.users[self.engine.users['user_id'] == user_id]
if len(user_df) == 0:
print(f"β User ID {user_id} not found")
return False, None
user_name = user_df['name'].iloc[0]
# Remove user from dataframe
self.engine.users = self.engine.users[self.engine.users['user_id'] != user_id]
self.engine.users.to_csv("users.csv", index=False)
# Also remove user's results (optional - keeps data integrity)
self.engine.results = self.engine.results[self.engine.results['user_id'] != user_id]
self.engine.results.to_csv(self.engine.results_file, index=False)
# Remove from progress tracking
keys_to_remove = [k for k in self.engine.progress_data.keys() if f"_{user_id}" in k]
for key in keys_to_remove:
del self.engine.progress_data[key]
self.engine.save_progress_data()
print(f"β
Removed user: {user_name} (ID: {user_id})")
return True, user_name
def remove_task(self, task_id):
"""Remove a task by ID"""
task_id = int(task_id)
task_df = self.engine.tasks[self.engine.tasks['task_id'] == task_id]
if len(task_df) == 0:
print(f"β Task ID {task_id} not found")
return False, None
task_name = task_df['type'].iloc[0]
# Remove task from dataframe
self.engine.tasks = self.engine.tasks[self.engine.tasks['task_id'] != task_id]
self.engine.tasks.to_csv("tasks.csv", index=False)
# Also remove task's results
self.engine.results = self.engine.results[self.engine.results['task_id'] != task_id]
self.engine.results.to_csv(self.engine.results_file, index=False)
# Remove from progress tracking
keys_to_remove = [k for k in self.engine.progress_data.keys() if k.startswith(f"{task_id}_")]
for key in keys_to_remove:
del self.engine.progress_data[key]
self.engine.save_progress_data()
print(f"β
Removed task: {task_name} (ID: {task_id})")
return True, task_name
if __name__ == "__main__":
# Example usage
tm = TaskManager()
tm.show_dashboard()
tm.assign_tasks() |