rishirajpathak commited on
Commit
4da4b6c
Β·
1 Parent(s): 03ddee5

Clean: Remove test data - all user input, AI only assigns

Browse files
Files changed (5) hide show
  1. app.py +144 -69
  2. results.csv +0 -6
  3. task_progress.json +1 -26
  4. tasks.csv +0 -9
  5. users.csv +0 -5
app.py CHANGED
@@ -4,6 +4,7 @@ from task_manager import TaskManager
4
  import os
5
 
6
  # AI Task Assignment System for Hugging Face Spaces
 
7
 
8
  # Initialize the task manager
9
  tm = TaskManager()
@@ -11,43 +12,64 @@ tm = TaskManager()
11
  def show_dashboard():
12
  """Display system dashboard"""
13
  try:
14
- # Capture dashboard information
15
  stats = []
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  # Basic stats
 
18
  if len(tm.engine.results) > 0:
19
- stats.append(f"πŸ“Š **SYSTEM STATISTICS**")
20
  stats.append(f"- Total completed tasks: {len(tm.engine.results)}")
21
  stats.append(f"- Average quality: {tm.engine.results['quality'].mean():.2f}/5")
22
  stats.append(f"- Average time: {tm.engine.results['time_taken'].mean():.1f}h")
23
- else:
24
- stats.append("πŸ“Š No results yet - system ready for assignments")
25
 
26
- # User performance
27
- if len(tm.engine.results) > 0:
28
  user_stats = tm.engine.results.merge(tm.engine.users, on='user_id').groupby('name').agg({
29
  'quality': 'mean',
30
  'time_taken': 'mean',
31
  'task_id': 'count'
32
  }).round(2)
33
 
34
- stats.append("\nπŸ‘₯ **USER PERFORMANCE**")
35
  for user, row in user_stats.iterrows():
36
- stats.append(f"- {user}: {row['quality']:.1f}/5 quality, {row['time_taken']:.1f}h avg, {int(row['task_id'])} tasks")
 
37
 
38
  # Active tasks
39
  if hasattr(tm.engine, 'progress_data') and tm.engine.progress_data:
40
  active_tasks = [task for task in tm.engine.progress_data.values()
41
  if task['status'] in ['assigned', 'in_progress']]
42
  if active_tasks:
43
- stats.append("\nπŸ“‹ **ACTIVE TASKS**")
44
  for task in active_tasks:
45
  status_icon = "πŸ”„" if task['status'] == 'in_progress' else "πŸ“‹"
46
- stats.append(f"{status_icon} Task {task['task_id']}: {task['user_name']} β†’ {task['task_type']}")
 
 
 
 
47
 
48
  # AI status
49
- ai_status = "πŸ€– **AI Status**: " + ("Trained βœ…" if tm.engine.is_trained else "Random Assignment ⚠️")
50
- stats.append(f"\n{ai_status}")
 
51
 
52
  return "\n".join(stats)
53
 
@@ -55,8 +77,14 @@ def show_dashboard():
55
  return f"Error: {str(e)}"
56
 
57
  def assign_tasks():
58
- """Assign pending tasks"""
59
  try:
 
 
 
 
 
 
60
  assignments = []
61
 
62
  for _, task in tm.engine.tasks.iterrows():
@@ -66,13 +94,23 @@ def assign_tasks():
66
  completed = tm.engine.results[tm.engine.results['task_id'] == task_id]
67
  if len(completed) > 0:
68
  continue
 
 
 
 
 
 
 
 
 
69
 
70
  user_id, user_name = tm.engine.assign_task(task_id)
71
  if user_name:
72
- assignments.append(f"βœ… Task {task_id} ({task['type']}) assigned to {user_name}")
 
73
 
74
  if not assignments:
75
- return "πŸ“‹ No pending tasks to assign"
76
 
77
  return "\n".join(assignments)
78
 
@@ -86,7 +124,10 @@ def add_user(name):
86
  return "❌ Please enter a valid name"
87
 
88
  tm.add_user(name.strip())
89
- return f"βœ… Added user: {name.strip()}"
 
 
 
90
 
91
  except Exception as e:
92
  return f"Error: {str(e)}"
@@ -102,7 +143,10 @@ def add_task(task_type, complexity, deadline):
102
  return "❌ Deadline must be positive"
103
 
104
  tm.add_task(task_type.strip(), complexity, deadline)
105
- return f"βœ… Added task: {task_type.strip()} (Complexity: {complexity}, Deadline: {deadline}h)"
 
 
 
106
 
107
  except Exception as e:
108
  return f"Error: {str(e)}"
@@ -110,25 +154,37 @@ def add_task(task_type, complexity, deadline):
110
  def update_progress(task_id, user_id, progress, notes):
111
  """Update task progress"""
112
  try:
 
 
113
  if not (0 <= progress <= 100):
114
  return "❌ Progress must be between 0 and 100"
115
 
116
  tm.update_progress(int(task_id), int(user_id), int(progress), notes.strip())
117
- return f"βœ… Updated progress: Task {task_id} β†’ {progress}%"
118
 
119
  except Exception as e:
120
  return f"Error: {str(e)}"
121
 
122
  def complete_task(task_id, user_id, time_taken, quality):
123
- """Complete a task"""
124
  try:
 
 
125
  if not (1 <= quality <= 5):
126
  return "❌ Quality must be between 1 and 5"
127
  if time_taken <= 0:
128
  return "❌ Time taken must be positive"
129
 
130
  tm.enter_result(int(task_id), int(user_id), float(time_taken), int(quality))
131
- return f"βœ… Task {task_id} completed successfully"
 
 
 
 
 
 
 
 
132
 
133
  except Exception as e:
134
  return f"Error: {str(e)}"
@@ -136,103 +192,122 @@ def complete_task(task_id, user_id, time_taken, quality):
136
  def retrain_ai():
137
  """Retrain the AI model"""
138
  try:
 
 
 
139
  tm.retrain_ai()
140
- return "βœ… AI model retrained successfully"
 
 
 
 
 
 
 
 
 
 
141
 
142
  except Exception as e:
143
  return f"Error: {str(e)}"
144
 
145
- def get_users_list():
146
- """Get list of users for dropdowns"""
147
- try:
148
- return [(f"{row['user_id']} - {row['name']}", row['user_id']) for _, row in tm.engine.users.iterrows()]
149
- except:
150
- return []
151
-
152
- def get_tasks_list():
153
- """Get list of tasks for dropdowns"""
154
- try:
155
- return [(f"Task {row['task_id']} - {row['type']}", row['task_id']) for _, row in tm.engine.tasks.iterrows()]
156
- except:
157
- return []
158
-
159
  # Create Gradio interface
160
  with gr.Blocks(title="🧠 AI Task Assignment System") as app:
161
  gr.Markdown("""
162
  # 🧠 AI Task Assignment System
163
 
164
- **Self-learning task assignment engine that gets smarter with every completed task!**
 
 
 
 
 
 
 
165
 
166
- - 🎯 Enter people and tasks
167
- - πŸ€– AI decides optimal assignments
168
- - πŸ“Š System learns from real results
169
- - πŸ“ˆ Continuous improvement
170
  """)
171
 
172
  with gr.Tabs():
173
  # Dashboard Tab
174
  with gr.Tab("πŸ“Š Dashboard"):
 
175
  dashboard_btn = gr.Button("πŸ”„ Refresh Dashboard", variant="primary")
176
  dashboard_output = gr.Markdown()
177
  dashboard_btn.click(show_dashboard, outputs=dashboard_output)
178
 
179
- # Assignment Tab
180
- with gr.Tab("🎯 Task Assignment"):
181
- gr.Markdown("### Assign pending tasks to optimal users")
182
- assign_btn = gr.Button("🎯 Assign Tasks", variant="primary")
183
- assign_output = gr.Markdown()
184
- assign_btn.click(assign_tasks, outputs=assign_output)
185
-
186
  # Add User Tab
187
  with gr.Tab("πŸ‘€ Add User"):
188
- gr.Markdown("### Add new team member")
189
- user_name = gr.Textbox(label="User Name", placeholder="Enter name...")
 
190
  add_user_btn = gr.Button("βž• Add User", variant="primary")
191
  add_user_output = gr.Markdown()
192
  add_user_btn.click(add_user, inputs=user_name, outputs=add_user_output)
193
 
194
  # Add Task Tab
195
  with gr.Tab("πŸ“‹ Add Task"):
196
- gr.Markdown("### Add new task")
 
 
197
  with gr.Row():
198
- task_type = gr.Textbox(label="Task Type", placeholder="e.g., coding, design, research...")
199
- task_complexity = gr.Slider(0, 1, value=0.5, label="Complexity (0=Easy, 1=Hard)")
200
- task_deadline = gr.Number(label="Deadline (hours)", value=24)
201
  add_task_btn = gr.Button("βž• Add Task", variant="primary")
202
  add_task_output = gr.Markdown()
203
  add_task_btn.click(add_task, inputs=[task_type, task_complexity, task_deadline], outputs=add_task_output)
204
 
 
 
 
 
 
 
 
 
 
 
 
205
  # Progress Update Tab
206
  with gr.Tab("πŸ“ˆ Update Progress"):
207
  gr.Markdown("### Update task progress")
 
208
  with gr.Row():
209
- prog_task_id = gr.Number(label="Task ID", precision=0)
210
- prog_user_id = gr.Number(label="User ID", precision=0)
211
- progress_pct = gr.Slider(0, 100, value=50, label="Progress %")
212
- progress_notes = gr.Textbox(label="Notes (optional)", placeholder="Progress notes...")
213
  update_prog_btn = gr.Button("πŸ“ˆ Update Progress", variant="primary")
214
  update_prog_output = gr.Markdown()
215
  update_prog_btn.click(update_progress, inputs=[prog_task_id, prog_user_id, progress_pct, progress_notes], outputs=update_prog_output)
216
 
217
  # Complete Task Tab
218
  with gr.Tab("βœ… Complete Task"):
219
- gr.Markdown("### Mark task as completed")
 
 
 
 
 
220
  with gr.Row():
221
- comp_task_id = gr.Number(label="Task ID", precision=0)
222
- comp_user_id = gr.Number(label="User ID", precision=0)
223
- time_taken = gr.Number(label="Time Taken (hours)", value=1)
224
- quality_score = gr.Slider(1, 5, value=3, label="Quality (1=Poor, 5=Excellent)", step=1)
225
  complete_btn = gr.Button("βœ… Complete Task", variant="primary")
226
  complete_output = gr.Markdown()
227
  complete_btn.click(complete_task, inputs=[comp_task_id, comp_user_id, time_taken, quality_score], outputs=complete_output)
228
 
229
  # AI Training Tab
230
- with gr.Tab("🧠 AI Training"):
231
- gr.Markdown("""
232
- ### Retrain AI Model
233
- After completing tasks and entering results, retrain the AI to improve future assignments.
234
- """)
235
- retrain_btn = gr.Button("🧠 Retrain AI", variant="primary")
 
 
 
 
 
236
  retrain_output = gr.Markdown()
237
  retrain_btn.click(retrain_ai, outputs=retrain_output)
238
 
@@ -240,4 +315,4 @@ with gr.Blocks(title="🧠 AI Task Assignment System") as app:
240
  app.load(show_dashboard, outputs=dashboard_output)
241
 
242
  if __name__ == "__main__":
243
- app.launch(share=True, theme=gr.themes.Soft())
 
4
  import os
5
 
6
  # AI Task Assignment System for Hugging Face Spaces
7
+ # All data is USER INPUT - AI only handles assignment optimization
8
 
9
  # Initialize the task manager
10
  tm = TaskManager()
 
12
  def show_dashboard():
13
  """Display system dashboard"""
14
  try:
 
15
  stats = []
16
 
17
+ # Show current users
18
+ if len(tm.engine.users) > 0:
19
+ stats.append("πŸ‘₯ **REGISTERED USERS**")
20
+ for _, user in tm.engine.users.iterrows():
21
+ stats.append(f"- ID {user['user_id']}: {user['name']}")
22
+ else:
23
+ stats.append("πŸ‘₯ **No users yet** - Add users in the 'Add User' tab")
24
+
25
+ # Show current tasks
26
+ stats.append("")
27
+ if len(tm.engine.tasks) > 0:
28
+ stats.append("πŸ“‹ **REGISTERED TASKS**")
29
+ for _, task in tm.engine.tasks.iterrows():
30
+ status = "βœ… Completed" if task['task_id'] in tm.engine.results['task_id'].values else "⏳ Pending"
31
+ stats.append(f"- ID {task['task_id']}: {task['type']} (Complexity: {task['complexity']}, Deadline: {task['deadline']}h) [{status}]")
32
+ else:
33
+ stats.append("πŸ“‹ **No tasks yet** - Add tasks in the 'Add Task' tab")
34
+
35
  # Basic stats
36
+ stats.append("")
37
  if len(tm.engine.results) > 0:
38
+ stats.append("πŸ“Š **PERFORMANCE STATISTICS**")
39
  stats.append(f"- Total completed tasks: {len(tm.engine.results)}")
40
  stats.append(f"- Average quality: {tm.engine.results['quality'].mean():.2f}/5")
41
  stats.append(f"- Average time: {tm.engine.results['time_taken'].mean():.1f}h")
 
 
42
 
43
+ # User performance
 
44
  user_stats = tm.engine.results.merge(tm.engine.users, on='user_id').groupby('name').agg({
45
  'quality': 'mean',
46
  'time_taken': 'mean',
47
  'task_id': 'count'
48
  }).round(2)
49
 
50
+ stats.append("\nπŸ† **USER PERFORMANCE (AI Learning Data)**")
51
  for user, row in user_stats.iterrows():
52
+ skill = "⭐Expert" if row['quality'] >= 4 else "✨Good" if row['quality'] >= 3 else "πŸ“šLearning"
53
+ stats.append(f"- {user}: {row['quality']:.1f}/5 quality, {row['time_taken']:.1f}h avg, {int(row['task_id'])} tasks [{skill}]")
54
 
55
  # Active tasks
56
  if hasattr(tm.engine, 'progress_data') and tm.engine.progress_data:
57
  active_tasks = [task for task in tm.engine.progress_data.values()
58
  if task['status'] in ['assigned', 'in_progress']]
59
  if active_tasks:
60
+ stats.append("\nπŸ”„ **ACTIVE TASKS**")
61
  for task in active_tasks:
62
  status_icon = "πŸ”„" if task['status'] == 'in_progress' else "πŸ“‹"
63
+ progress = ""
64
+ if task.get('progress_updates'):
65
+ latest = task['progress_updates'][-1]
66
+ progress = f" ({latest['progress_percent']}%)"
67
+ stats.append(f"{status_icon} Task {task['task_id']}: {task['user_name']} β†’ {task['task_type']}{progress}")
68
 
69
  # AI status
70
+ stats.append("")
71
+ ai_status = "πŸ€– **AI Status**: " + ("Trained βœ… (Making smart assignments)" if tm.engine.is_trained else "Learning Mode ⚠️ (Need completed tasks to learn)")
72
+ stats.append(ai_status)
73
 
74
  return "\n".join(stats)
75
 
 
77
  return f"Error: {str(e)}"
78
 
79
  def assign_tasks():
80
+ """Assign pending tasks using AI"""
81
  try:
82
+ if len(tm.engine.users) == 0:
83
+ return "❌ No users registered! Add users first in the 'Add User' tab."
84
+
85
+ if len(tm.engine.tasks) == 0:
86
+ return "❌ No tasks registered! Add tasks first in the 'Add Task' tab."
87
+
88
  assignments = []
89
 
90
  for _, task in tm.engine.tasks.iterrows():
 
94
  completed = tm.engine.results[tm.engine.results['task_id'] == task_id]
95
  if len(completed) > 0:
96
  continue
97
+
98
+ # Check if already assigned
99
+ task_key = None
100
+ for key, data in tm.engine.progress_data.items():
101
+ if data['task_id'] == task_id and data['status'] in ['assigned', 'in_progress']:
102
+ task_key = key
103
+ break
104
+ if task_key:
105
+ continue
106
 
107
  user_id, user_name = tm.engine.assign_task(task_id)
108
  if user_name:
109
+ confidence = "AI Optimized" if tm.engine.is_trained else "Random (AI learning)"
110
+ assignments.append(f"βœ… Task {task_id} ({task['type']}) β†’ **{user_name}** [{confidence}]")
111
 
112
  if not assignments:
113
+ return "πŸ“‹ No pending tasks to assign (all tasks are either completed or already assigned)"
114
 
115
  return "\n".join(assignments)
116
 
 
124
  return "❌ Please enter a valid name"
125
 
126
  tm.add_user(name.strip())
127
+
128
+ # Return updated user list
129
+ user_list = "\n".join([f"- ID {u['user_id']}: {u['name']}" for _, u in tm.engine.users.iterrows()])
130
+ return f"βœ… Added user: **{name.strip()}**\n\n**Current Users:**\n{user_list}"
131
 
132
  except Exception as e:
133
  return f"Error: {str(e)}"
 
143
  return "❌ Deadline must be positive"
144
 
145
  tm.add_task(task_type.strip(), complexity, deadline)
146
+
147
+ # Return updated task list
148
+ task_list = "\n".join([f"- ID {t['task_id']}: {t['type']} (Complexity: {t['complexity']})" for _, t in tm.engine.tasks.iterrows()])
149
+ return f"βœ… Added task: **{task_type.strip()}**\n\n**Current Tasks:**\n{task_list}"
150
 
151
  except Exception as e:
152
  return f"Error: {str(e)}"
 
154
  def update_progress(task_id, user_id, progress, notes):
155
  """Update task progress"""
156
  try:
157
+ if task_id <= 0 or user_id <= 0:
158
+ return "❌ Please enter valid Task ID and User ID"
159
  if not (0 <= progress <= 100):
160
  return "❌ Progress must be between 0 and 100"
161
 
162
  tm.update_progress(int(task_id), int(user_id), int(progress), notes.strip())
163
+ return f"βœ… Progress updated: Task {int(task_id)} β†’ {int(progress)}%"
164
 
165
  except Exception as e:
166
  return f"Error: {str(e)}"
167
 
168
  def complete_task(task_id, user_id, time_taken, quality):
169
+ """Complete a task - THIS IS HOW AI LEARNS"""
170
  try:
171
+ if task_id <= 0 or user_id <= 0:
172
+ return "❌ Please enter valid Task ID and User ID"
173
  if not (1 <= quality <= 5):
174
  return "❌ Quality must be between 1 and 5"
175
  if time_taken <= 0:
176
  return "❌ Time taken must be positive"
177
 
178
  tm.enter_result(int(task_id), int(user_id), float(time_taken), int(quality))
179
+
180
+ return f"""βœ… Task {int(task_id)} completed!
181
+
182
+ **Result recorded:**
183
+ - Time taken: {time_taken}h
184
+ - Quality: {int(quality)}/5
185
+
186
+ 🧠 **AI is learning from this result!**
187
+ Retrain the AI in the 'AI Training' tab to improve future assignments."""
188
 
189
  except Exception as e:
190
  return f"Error: {str(e)}"
 
192
  def retrain_ai():
193
  """Retrain the AI model"""
194
  try:
195
+ if len(tm.engine.results) == 0:
196
+ return "❌ No completed tasks yet! Complete some tasks first so AI can learn from them."
197
+
198
  tm.retrain_ai()
199
+ return f"""βœ… AI model retrained successfully!
200
+
201
+ **AI learned from {len(tm.engine.results)} completed tasks.**
202
+
203
+ The AI will now make smarter assignments based on:
204
+ - User performance patterns
205
+ - Task complexity matching
206
+ - Time efficiency
207
+ - Quality consistency
208
+
209
+ Try assigning new tasks to see improved recommendations!"""
210
 
211
  except Exception as e:
212
  return f"Error: {str(e)}"
213
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
  # Create Gradio interface
215
  with gr.Blocks(title="🧠 AI Task Assignment System") as app:
216
  gr.Markdown("""
217
  # 🧠 AI Task Assignment System
218
 
219
+ **A self-learning task assignment engine powered by AI**
220
+
221
+ ### How It Works:
222
+ 1. **πŸ‘€ Add Users** - Enter your team members
223
+ 2. **πŸ“‹ Add Tasks** - Enter tasks with complexity & deadlines
224
+ 3. **🎯 Get AI Assignments** - AI recommends optimal person for each task
225
+ 4. **βœ… Complete Tasks** - Enter results (time taken, quality)
226
+ 5. **🧠 AI Learns** - System improves with every completed task
227
 
228
+ > ⚑ **All data is YOUR input** - AI only handles assignment optimization based on observed performance!
 
 
 
229
  """)
230
 
231
  with gr.Tabs():
232
  # Dashboard Tab
233
  with gr.Tab("πŸ“Š Dashboard"):
234
+ gr.Markdown("### System Overview - Users, Tasks & Performance")
235
  dashboard_btn = gr.Button("πŸ”„ Refresh Dashboard", variant="primary")
236
  dashboard_output = gr.Markdown()
237
  dashboard_btn.click(show_dashboard, outputs=dashboard_output)
238
 
 
 
 
 
 
 
 
239
  # Add User Tab
240
  with gr.Tab("πŸ‘€ Add User"):
241
+ gr.Markdown("### Register a new team member")
242
+ gr.Markdown("*Enter the name of the person you want to add to the system.*")
243
+ user_name = gr.Textbox(label="User Name", placeholder="Enter name (e.g., John, Sarah, etc.)...")
244
  add_user_btn = gr.Button("βž• Add User", variant="primary")
245
  add_user_output = gr.Markdown()
246
  add_user_btn.click(add_user, inputs=user_name, outputs=add_user_output)
247
 
248
  # Add Task Tab
249
  with gr.Tab("πŸ“‹ Add Task"):
250
+ gr.Markdown("### Create a new task")
251
+ gr.Markdown("*Enter task details - AI will assign it to the best person.*")
252
+ task_type = gr.Textbox(label="Task Name/Type", placeholder="e.g., Website Design, Data Analysis, Report Writing...")
253
  with gr.Row():
254
+ task_complexity = gr.Slider(0, 1, value=0.5, label="Complexity (0=Very Easy, 1=Very Hard)")
255
+ task_deadline = gr.Number(label="Deadline (hours)", value=24, minimum=1)
 
256
  add_task_btn = gr.Button("βž• Add Task", variant="primary")
257
  add_task_output = gr.Markdown()
258
  add_task_btn.click(add_task, inputs=[task_type, task_complexity, task_deadline], outputs=add_task_output)
259
 
260
+ # Assignment Tab
261
+ with gr.Tab("🎯 AI Assignment"):
262
+ gr.Markdown("""### Let AI assign pending tasks
263
+
264
+ AI analyzes each user's past performance and assigns tasks to the most suitable person.
265
+
266
+ *If no performance data exists yet, AI will make random assignments and learn from results.*""")
267
+ assign_btn = gr.Button("🎯 Assign All Pending Tasks", variant="primary", size="lg")
268
+ assign_output = gr.Markdown()
269
+ assign_btn.click(assign_tasks, outputs=assign_output)
270
+
271
  # Progress Update Tab
272
  with gr.Tab("πŸ“ˆ Update Progress"):
273
  gr.Markdown("### Update task progress")
274
+ gr.Markdown("*Track how work is progressing on assigned tasks.*")
275
  with gr.Row():
276
+ prog_task_id = gr.Number(label="Task ID", precision=0, minimum=1)
277
+ prog_user_id = gr.Number(label="User ID", precision=0, minimum=1)
278
+ progress_pct = gr.Slider(0, 100, value=50, label="Progress %")
279
+ progress_notes = gr.Textbox(label="Notes (optional)", placeholder="Any updates or blockers...")
280
  update_prog_btn = gr.Button("πŸ“ˆ Update Progress", variant="primary")
281
  update_prog_output = gr.Markdown()
282
  update_prog_btn.click(update_progress, inputs=[prog_task_id, prog_user_id, progress_pct, progress_notes], outputs=update_prog_output)
283
 
284
  # Complete Task Tab
285
  with gr.Tab("βœ… Complete Task"):
286
+ gr.Markdown("""### Mark task as completed
287
+
288
+ **⚑ This is how AI learns!** Enter the actual results so AI can improve future assignments.""")
289
+ with gr.Row():
290
+ comp_task_id = gr.Number(label="Task ID", precision=0, minimum=1)
291
+ comp_user_id = gr.Number(label="User ID (who completed it)", precision=0, minimum=1)
292
  with gr.Row():
293
+ time_taken = gr.Number(label="Actual Time Taken (hours)", value=1, minimum=0.1)
294
+ quality_score = gr.Slider(1, 5, value=3, label="Quality of Work (1=Poor, 5=Excellent)", step=1)
 
 
295
  complete_btn = gr.Button("βœ… Complete Task", variant="primary")
296
  complete_output = gr.Markdown()
297
  complete_btn.click(complete_task, inputs=[comp_task_id, comp_user_id, time_taken, quality_score], outputs=complete_output)
298
 
299
  # AI Training Tab
300
+ with gr.Tab("🧠 Train AI"):
301
+ gr.Markdown("""### Retrain AI with new data
302
+
303
+ After completing tasks, retrain the AI to improve its assignment accuracy.
304
+
305
+ **The AI learns:**
306
+ - Which users perform best on which task types
307
+ - Time efficiency patterns
308
+ - Quality consistency
309
+ - Optimal user-task matching""")
310
+ retrain_btn = gr.Button("🧠 Retrain AI Model", variant="primary", size="lg")
311
  retrain_output = gr.Markdown()
312
  retrain_btn.click(retrain_ai, outputs=retrain_output)
313
 
 
315
  app.load(show_dashboard, outputs=dashboard_output)
316
 
317
  if __name__ == "__main__":
318
+ app.launch()
results.csv CHANGED
@@ -1,7 +1 @@
1
  task_id,user_id,time_taken,quality
2
- 1,1,8,4
3
- 2,2,3,5
4
- 3,3,25,2
5
- 4,1,6,5
6
- 5,2,2,5
7
- 6,1,15,4
 
1
  task_id,user_id,time_taken,quality
 
 
 
 
 
 
task_progress.json CHANGED
@@ -1,26 +1 @@
1
- {
2
- "7_2": {
3
- "task_id": 7,
4
- "user_id": 2,
5
- "user_name": "Amit",
6
- "task_type": "design",
7
- "complexity": 0.5,
8
- "deadline": 30.0,
9
- "start_time": "2026-01-11T13:40:39.520692",
10
- "status": "assigned",
11
- "progress_updates": [],
12
- "completion_time": null
13
- },
14
- "8_2": {
15
- "task_id": 8,
16
- "user_id": 2,
17
- "user_name": "Amit",
18
- "task_type": "add login page",
19
- "complexity": 1.0,
20
- "deadline": 6.0,
21
- "start_time": "2026-01-11T13:40:39.545921",
22
- "status": "assigned",
23
- "progress_updates": [],
24
- "completion_time": null
25
- }
26
- }
 
1
+ {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
tasks.csv CHANGED
@@ -1,10 +1 @@
1
  task_id,type,complexity,deadline
2
- 1,study,0.6,48.0
3
- 2,fitness,0.4,24.0
4
- 3,project,0.9,72.0
5
- 4,study,0.7,36.0
6
- 5,fitness,0.3,12.0
7
- 6,project,0.8,48.0
8
- 7,design,0.5,30.0
9
- 8,add login page,1.0,6.0
10
- 9,login page,0.5,6.0
 
1
  task_id,type,complexity,deadline
 
 
 
 
 
 
 
 
 
users.csv CHANGED
@@ -1,6 +1 @@
1
  user_id,name
2
- 1,Rishiraj
3
- 2,Amit
4
- 3,Rahul
5
- 4,Priya
6
- 5,Utkarsh
 
1
  user_id,name