ghtmarco commited on
Commit
ce3c51f
·
verified ·
1 Parent(s): d4c9dbf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -22
app.py CHANGED
@@ -11,17 +11,21 @@ feature_names = joblib.load('feature_names.pkl')['feature_names']
11
 
12
  def predict_task_priority(task_name, duration, deadline_str):
13
  try:
 
 
 
 
14
  # Parse deadline string to calculate days
15
  start_date = datetime.now()
16
  try:
17
  deadline = datetime.strptime(deadline_str, '%Y-%m-%d')
18
  except:
19
- return "Format tanggal harus YYYY-MM-DD"
20
 
21
  deadline_days = (deadline - start_date).days
22
 
23
  if deadline_days < 0:
24
- return "Deadline tidak boleh di masa lalu"
25
 
26
  # Buat DataFrame dengan feature names yang sesuai
27
  input_data = pd.DataFrame({
@@ -36,24 +40,36 @@ def predict_task_priority(task_name, duration, deadline_str):
36
  priority = model.predict(input_scaled)[0]
37
 
38
  priority_map = {
39
- 1: "Rendah",
40
  2: "Sedang",
41
- 3: "Tinggi"
42
  }
43
 
44
  # Generate response
45
  response = f"Analisis Tugas: {task_name}\n"
46
  response += f"Durasi: {duration} jam\n"
47
- response += f"Deadline: {deadline_days} hari lagi\n"
48
  response += f"Prioritas: {priority_map[priority]}\n\n"
49
 
50
- # Add recommendations
51
- if priority == 3:
52
  response += "Rekomendasi: Kerjakan segera! Deadline dekat dan membutuhkan waktu lama."
 
 
 
 
53
  elif priority == 2:
54
  response += "Rekomendasi: Buatlah jadwal yang tepat dan mulai kerjakan secara bertahap."
 
 
 
 
55
  else:
56
  response += "Rekomendasi: Dapat dikerjakan dengan lebih santai, tapi tetap pantau progress."
 
 
 
 
57
 
58
  return response
59
 
@@ -64,38 +80,40 @@ def predict_task_priority(task_name, duration, deadline_str):
64
  iface = gr.Interface(
65
  fn=predict_task_priority,
66
  inputs=[
67
- gr.Dropdown(
68
- choices=[
69
- "Meeting",
70
- "Bekerja",
71
- "Belajar",
72
- "Tugas Kuliah",
73
- "Project"
74
- ],
75
- label="Nama Tugas"
76
  ),
77
  gr.Slider(
78
  minimum=1,
79
  maximum=10,
80
  value=5,
81
  step=0.5,
82
- label="Durasi Tugas (dalam jam)"
 
83
  ),
84
  gr.Textbox(
85
- label="Deadline",
86
  placeholder="Contoh: 2024-12-31",
87
- # info=""
88
  )
89
  ],
90
- outputs=gr.Textbox(label="Hasil Analisis", lines=6),
91
  title="Sistem Prioritas Tugas",
92
  description="""
93
  Sistem ini akan membantu Anda menentukan prioritas tugas berdasarkan:
94
  1. Durasi pengerjaan tugas
95
  2. Jarak waktu ke deadline
96
 
97
- Hasil analisis akan memberikan rekomendasi pengelolaan waktu yang sesuai.
98
- """
 
 
 
 
 
 
99
  )
100
 
101
  if __name__ == "__main__":
 
11
 
12
  def predict_task_priority(task_name, duration, deadline_str):
13
  try:
14
+ # Validasi input task name
15
+ if not task_name.strip():
16
+ return "Error: Nama tugas tidak boleh kosong"
17
+
18
  # Parse deadline string to calculate days
19
  start_date = datetime.now()
20
  try:
21
  deadline = datetime.strptime(deadline_str, '%Y-%m-%d')
22
  except:
23
+ return "Error: Format tanggal harus YYYY-MM-DD (contoh: 2024-12-31)"
24
 
25
  deadline_days = (deadline - start_date).days
26
 
27
  if deadline_days < 0:
28
+ return "Error: Deadline tidak boleh di masa lalu"
29
 
30
  # Buat DataFrame dengan feature names yang sesuai
31
  input_data = pd.DataFrame({
 
40
  priority = model.predict(input_scaled)[0]
41
 
42
  priority_map = {
43
+ 1: "Tinggi",
44
  2: "Sedang",
45
+ 3: "Rendah"
46
  }
47
 
48
  # Generate response
49
  response = f"Analisis Tugas: {task_name}\n"
50
  response += f"Durasi: {duration} jam\n"
51
+ response += f"Deadline: {deadline_str} ({deadline_days} hari lagi)\n"
52
  response += f"Prioritas: {priority_map[priority]}\n\n"
53
 
54
+ # Add recommendations based on priority
55
+ if priority == 1:
56
  response += "Rekomendasi: Kerjakan segera! Deadline dekat dan membutuhkan waktu lama."
57
+ response += "\nTindakan yang disarankan:"
58
+ response += "\n• Fokus utama pada tugas ini"
59
+ response += "\n• Buat jadwal spesifik untuk pengerjaannya"
60
+ response += "\n• Siapkan semua resource yang dibutuhkan"
61
  elif priority == 2:
62
  response += "Rekomendasi: Buatlah jadwal yang tepat dan mulai kerjakan secara bertahap."
63
+ response += "\nTindakan yang disarankan:"
64
+ response += "\n• Bagi tugas menjadi beberapa milestone"
65
+ response += "\n• Alokasikan waktu setiap hari untuk progress"
66
+ response += "\n• Pantau perkembangan secara reguler"
67
  else:
68
  response += "Rekomendasi: Dapat dikerjakan dengan lebih santai, tapi tetap pantau progress."
69
+ response += "\nTindakan yang disarankan:"
70
+ response += "\n• Buat timeline longgar untuk pengerjaan"
71
+ response += "\n• Sesuaikan dengan jadwal tugas prioritas lain"
72
+ response += "\n• Review progress mingguan"
73
 
74
  return response
75
 
 
80
  iface = gr.Interface(
81
  fn=predict_task_priority,
82
  inputs=[
83
+ gr.Textbox(
84
+ label="Nama Tugas",
85
+ placeholder="Masukkan nama tugas Anda",
86
+ info="Contoh: Laporan Akhir, Presentasi Project, dll."
 
 
 
 
 
87
  ),
88
  gr.Slider(
89
  minimum=1,
90
  maximum=10,
91
  value=5,
92
  step=0.5,
93
+ label="Durasi Tugas (dalam jam)",
94
+ info="Perkiraan waktu yang dibutuhkan untuk menyelesaikan tugas"
95
  ),
96
  gr.Textbox(
97
+ label="Deadline (YYYY-MM-DD)",
98
  placeholder="Contoh: 2024-12-31",
99
+ info="Masukkan tanggal dalam format YYYY-MM-DD"
100
  )
101
  ],
102
+ outputs=gr.Textbox(label="Hasil Analisis", lines=10),
103
  title="Sistem Prioritas Tugas",
104
  description="""
105
  Sistem ini akan membantu Anda menentukan prioritas tugas berdasarkan:
106
  1. Durasi pengerjaan tugas
107
  2. Jarak waktu ke deadline
108
 
109
+ Hasil analisis akan memberikan rekomendasi pengelolaan waktu yang sesuai untuk membantu
110
+ Anda mengelola tugas dengan lebih efektif.
111
+ """,
112
+ examples=[
113
+ ["Laporan Akhir Semester", 8, "2024-11-30"],
114
+ ["Presentasi Project", 3, "2024-12-15"],
115
+ ["Revisi Proposal", 5, "2024-11-25"]
116
+ ]
117
  )
118
 
119
  if __name__ == "__main__":