Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
f_emosi_plus
|
127 |
-
f_emosi_min
|
128 |
-
f_ranking_plus
|
129 |
f_ranking_min = df_pending['new_keyword'].min()
|
130 |
|
131 |
-
emosi_denom
|
132 |
-
ranking_denom = f_ranking_plus - f_ranking_min
|
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']
|
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']
|
142 |
|
143 |
s_plus = df_pending['ultility'].max()
|
144 |
-
s_min
|
145 |
r_plus = df_pending['regret'].max()
|
146 |
-
r_min
|
147 |
|
148 |
-
df_pending['vikor'] = 0.5 * ((df_pending['ultility'] - s_min) / (s_plus - s_min
|
149 |
-
0.5 * ((df_pending['regret']
|
150 |
|
151 |
-
df_pending['
|
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 |
-
|
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
|