mahfudl26 commited on
Commit
b760d6e
·
verified ·
1 Parent(s): 5405650

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -23
app.py CHANGED
@@ -118,44 +118,46 @@ def leaderboard():
118
  file_path = os.path.join('/tmp', 'vikor_fix.xlsx')
119
  final_df = pd.read_excel(file_path)
120
 
121
- df_pending = final_df[final_df['status'] != 'selesai'].copy()
122
-
123
- if df_pending.empty:
124
- return render_template('leaderboard.html', keluhan_prioritas=pd.DataFrame())
125
-
126
- f_emosi_plus = df_pending['new_emosi'].max()
127
- f_emosi_min = df_pending['new_emosi'].min()
128
- f_ranking_plus = df_pending['new_keyword'].max()
129
  f_ranking_min = df_pending['new_keyword'].min()
130
 
131
- emosi_denom = f_emosi_plus - f_emosi_min if f_emosi_plus != f_emosi_min else 1
132
- ranking_denom = f_ranking_plus - f_ranking_min if f_ranking_plus != f_ranking_min else 1
133
 
134
- df_pending['normalisasi_emosi'] = (f_emosi_plus - df_pending['new_emosi']) / emosi_denom
135
- df_pending['normalisasi_ranking'] = (f_ranking_plus - df_pending['new_keyword']) / ranking_denom
136
 
137
- df_pending['normalisasi_bobot_emosi'] = 0.5 * df_pending['normalisasi_emosi']
138
  df_pending['normalisasi_bobot_ranking'] = 0.5 * df_pending['normalisasi_ranking']
139
 
140
  df_pending['ultility'] = df_pending['normalisasi_bobot_emosi'] + df_pending['normalisasi_bobot_ranking']
141
- df_pending['regret'] = df_pending[['normalisasi_bobot_emosi', 'normalisasi_bobot_ranking']].max(axis=1)
142
 
143
  s_plus = df_pending['ultility'].max()
144
- s_min = df_pending['ultility'].min()
145
  r_plus = df_pending['regret'].max()
146
- r_min = df_pending['regret'].min()
147
 
148
- df_pending['vikor'] = 0.5 * ((df_pending['ultility'] - s_min) / (s_plus - s_min if s_plus != s_min else 1)) + \
149
- 0.5 * ((df_pending['regret'] - r_min) / (r_plus - r_min if r_plus != r_min else 1))
150
 
151
- df_pending['vikor'] = df_pending['vikor'].fillna(df_pending['vikor'].max() + 1)
152
- df_pending['rank'] = df_pending['vikor'].rank(ascending=True, method='dense').astype(int)
153
 
 
154
  prioritas_df = df_pending.sort_values(by='vikor', ascending=True).head(10)
155
 
156
- return render_template('leaderboard.html', keluhan_prioritas=prioritas_df)
157
-
158
-
 
 
159
  @app.route('/form', methods=['GET', 'POST'])
160
  def form():
161
  # Load dataframes
 
118
  file_path = os.path.join('/tmp', 'vikor_fix.xlsx')
119
  final_df = pd.read_excel(file_path)
120
 
121
+ # Filter hanya data yang belum selesai
122
+ df_pending = final_df[final_df['status'] != 'selesai']
123
+ df_pending['keyword'] = df_pending['keyword'].apply(lambda x: ast.literal_eval(x) if isinstance(x, str) else x)
124
+
125
+ # ----- Hitung VIKOR -----
126
+ f_emosi_plus = df_pending['new_emosi'].max()
127
+ f_emosi_min = df_pending['new_emosi'].min()
128
+ f_ranking_plus= df_pending['new_keyword'].max()
129
  f_ranking_min = df_pending['new_keyword'].min()
130
 
131
+ emosi_denom = f_emosi_plus - f_emosi_min
132
+ ranking_denom = f_ranking_plus - f_ranking_min
133
 
134
+ df_pending['normalisasi_emosi'] = (f_emosi_plus - df_pending['new_emosi']) / (emosi_denom if emosi_denom != 0 else 1)
135
+ df_pending['normalisasi_ranking'] = (f_ranking_plus - df_pending['new_keyword']) / (ranking_denom if ranking_denom != 0 else 1)
136
 
137
+ df_pending['normalisasi_bobot_emosi'] = 0.5 * df_pending['normalisasi_emosi']
138
  df_pending['normalisasi_bobot_ranking'] = 0.5 * df_pending['normalisasi_ranking']
139
 
140
  df_pending['ultility'] = df_pending['normalisasi_bobot_emosi'] + df_pending['normalisasi_bobot_ranking']
141
+ df_pending['regret'] = df_pending[['normalisasi_bobot_emosi', 'normalisasi_bobot_ranking']].max(axis=1)
142
 
143
  s_plus = df_pending['ultility'].max()
144
+ s_min = df_pending['ultility'].min()
145
  r_plus = df_pending['regret'].max()
146
+ r_min = df_pending['regret'].min()
147
 
148
+ df_pending['vikor'] = 0.5 * ((df_pending['ultility'] - s_min) / (s_plus - s_min)) + \
149
+ 0.5 * ((df_pending['regret'] - r_min) / (r_plus - r_min))
150
 
151
+ df_pending['rank'] = df_pending['vikor'].rank(ascending=True).astype(int)
 
152
 
153
+ # ----- Keluhan prioritas (10 skor vikor tertinggi) -------------------
154
  prioritas_df = df_pending.sort_values(by='vikor', ascending=True).head(10)
155
 
156
+ # ----- Render ke template -------------------------------------------
157
+ return render_template(
158
+ 'leaderboard.html',
159
+ keluhan_prioritas = prioritas_df
160
+ )
161
  @app.route('/form', methods=['GET', 'POST'])
162
  def form():
163
  # Load dataframes