tututz commited on
Commit
e19cd23
·
verified ·
1 Parent(s): 3410c0f

Update recommendation_builder.py

Browse files
Files changed (1) hide show
  1. recommendation_builder.py +12 -6
recommendation_builder.py CHANGED
@@ -27,8 +27,8 @@ CLAUSES_FALLBACK = {
27
  "tinggi": "rekam IPK kumulatif yang solid",
28
  },
29
  "Jumlah_MK_Gagal": {
30
- "rendah": "rekam jejak mata kuliah yang bersih dari kegagalan",
31
- "tinggi": "adanya beban mata kuliah gagal yang menumpuk",
32
  },
33
  "Total_SKS_Gagal": {
34
  "rendah": "minimnya SKS yang terbuang",
@@ -42,6 +42,10 @@ CLAUSES_FALLBACK = {
42
  "rendah": "jumlah SKS yang masih di bawah target progres studi",
43
  "tinggi": "kemajuan pengambilan SKS yang sejalan dengan rencana studi",
44
  },
 
 
 
 
45
  }
46
 
47
  # --- KATA SAMBUNG ---
@@ -128,12 +132,12 @@ def _get_dynamic_clause(feature: str, condition: str, value: float) -> str:
128
  if value < 2.5:
129
  return "capaian IPS semester terakhir yang sedikit membaik namun masih rawan"
130
  elif value < 3.0:
131
- # Ini akan menangkap 2.62
132
  return "capaian IPS semester terakhir yang cukup aman"
133
  else:
134
  return "capaian IPS semester terakhir yang sangat memuaskan"
135
  else: # DT bilang "rendah"
136
- return "capaian IPS semester terakhir yang masih cukup rendah"
137
 
138
  # 2. IPK Terakhir (Skala 0-4)
139
  elif feature == "IPK_Terakhir":
@@ -142,6 +146,7 @@ def _get_dynamic_clause(feature: str, condition: str, value: float) -> str:
142
  # Ini akan menangkap 2.15
143
  return "IPK kumulatif yang baru saja lolos ambang batas kritis"
144
  elif value < 3.0:
 
145
  return "IPK kumulatif yang tergolong cukup baik"
146
  else:
147
  return "IPK kumulatif yang sangat solid"
@@ -162,12 +167,13 @@ def _get_dynamic_clause(feature: str, condition: str, value: float) -> str:
162
  if value < 3:
163
  return f"adanya {int(value)} mata kuliah gagal yang perlu segera diulang"
164
  else:
 
165
  return f"adanya beban {int(value)} mata kuliah gagal yang menumpuk"
166
 
167
  # 4. Tren
168
  elif feature == "Tren_IPS_Slope":
169
  if condition == "tinggi":
170
- if value < 0.3: # Jika naiknya sedikit
171
  return "tren performa yang cukup membaik"
172
  else:
173
  return "tren peningkatan nilai yang konsisten"
@@ -251,5 +257,5 @@ def generate_recommendation_paragraph(prediction_val: str, structured_rules: Lis
251
  # 4️⃣ Gabungkan template + hasil stitching
252
  # Format: [Paragraf Statis] + [Paragraf Dinamis]
253
  # \n\n digunakan untuk membuat paragraf baru
254
- final_text = f"{base_text}{dynamic_part}"
255
  return final_text
 
27
  "tinggi": "rekam IPK kumulatif yang solid",
28
  },
29
  "Jumlah_MK_Gagal": {
30
+ "rendah": "rekam jejak mata kuliah yang cukup baik",
31
+ "tinggi": "adanya beban mata kuliah gagal",
32
  },
33
  "Total_SKS_Gagal": {
34
  "rendah": "minimnya SKS yang terbuang",
 
42
  "rendah": "jumlah SKS yang masih di bawah target progres studi",
43
  "tinggi": "kemajuan pengambilan SKS yang sejalan dengan rencana studi",
44
  },
45
+ "Rentang_IPS": {
46
+ "rendah": "konsistensi performa yang stabil",
47
+ "tinggi": "fluktuasi performa yang tidak stabil"
48
+ }
49
  }
50
 
51
  # --- KATA SAMBUNG ---
 
132
  if value < 2.5:
133
  return "capaian IPS semester terakhir yang sedikit membaik namun masih rawan"
134
  elif value < 3.0:
135
+ # Ini akan menangkap 2.62 dan 2.92
136
  return "capaian IPS semester terakhir yang cukup aman"
137
  else:
138
  return "capaian IPS semester terakhir yang sangat memuaskan"
139
  else: # DT bilang "rendah"
140
+ return "capaian IPS semester terakhir yang cukup rendah"
141
 
142
  # 2. IPK Terakhir (Skala 0-4)
143
  elif feature == "IPK_Terakhir":
 
146
  # Ini akan menangkap 2.15
147
  return "IPK kumulatif yang baru saja lolos ambang batas kritis"
148
  elif value < 3.0:
149
+ # Ini akan menangkap 2.78
150
  return "IPK kumulatif yang tergolong cukup baik"
151
  else:
152
  return "IPK kumulatif yang sangat solid"
 
167
  if value < 3:
168
  return f"adanya {int(value)} mata kuliah gagal yang perlu segera diulang"
169
  else:
170
+ # Ini akan menangkap 4 Gagal
171
  return f"adanya beban {int(value)} mata kuliah gagal yang menumpuk"
172
 
173
  # 4. Tren
174
  elif feature == "Tren_IPS_Slope":
175
  if condition == "tinggi":
176
+ if value < 0.1: # Jika naiknya sedikit (kasus 0.066)
177
  return "tren performa yang cukup membaik"
178
  else:
179
  return "tren peningkatan nilai yang konsisten"
 
257
  # 4️⃣ Gabungkan template + hasil stitching
258
  # Format: [Paragraf Statis] + [Paragraf Dinamis]
259
  # \n\n digunakan untuk membuat paragraf baru
260
+ final_text = f"{base_text}\n\n{dynamic_part}"
261
  return final_text