Skip to content

Commit 069f665

Browse files
committed
fix: all ranking
1 parent 279c43d commit 069f665

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

src/utils.ts

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ export function useVisualLeaderboard() {
105105
export function useAllLeaderboard() {
106106
// 新增变量
107107
const allLeaderboards = ref<any[]>()
108+
const allModelResults = ref([]);
108109
const selectedCategory = ref<string>() // 用于存储外层分类 (如"text")
109110

110111
// 直接返回顶层数组作为leaderboard,这样导航栏会显示不同的语言选项
@@ -213,6 +214,20 @@ export function useAllLeaderboard() {
213214
onMounted(async () => {
214215
const response = await fetch('https://raw.githubusercontent.com/multi-swe-bench/experiments/refs/heads/dist/leaderboard.json')
215216
allLeaderboards.value = await response.json()
217+
aggregateModelResults(allLeaderboards,allModelResults);
218+
allModelResults.value.sort((a, b) => b.resolved - a.resolved);
219+
const newLanguage = {
220+
name: 'All',
221+
data: [
222+
{
223+
results: allModelResults // 将模型统计结果插入
224+
}
225+
]
226+
};
227+
if(allLeaderboards.value){
228+
allLeaderboards.value.unshift(newLanguage);
229+
console.log(allLeaderboards)
230+
}
216231
console.log(allLeaderboards.value)
217232
})
218233

@@ -231,3 +246,78 @@ export function useAllLeaderboard() {
231246
total
232247
}
233248
}
249+
250+
function aggregateModelResults(allLeaderboards,allModelResults) {
251+
let num = 0
252+
let totalNum = 0
253+
let easyNum = 0
254+
let mediumNum = 0
255+
let highNum = 0
256+
console.log("this is continue")
257+
const modelMap = {}; // 存储模型的累计结果
258+
const modelNames = new Set(); // 存储所有模型名称
259+
const languageCount = allLeaderboards.value.length; // 语言数量
260+
const allLeaderboardsValue = allLeaderboards.value
261+
// 遍历所有语言的结果
262+
allLeaderboardsValue.forEach(leaderboard => {
263+
leaderboard.data.forEach(languageData => {
264+
console.log(languageData.name)
265+
totalNum += languageData.data.all_ids.length
266+
easyNum += languageData.data.easy_ids.length
267+
mediumNum += languageData.data.medium_ids.length
268+
highNum += languageData.data.hard_ids.length
269+
languageData.results.forEach(result => {
270+
const { resolved, resolvedEasy, resolvedMedium, resolvedHard,site,orgIcon, date} = result;
271+
let {name} = result
272+
if (!name.startsWith('M')) {
273+
name = 'm' + name.toLowerCase()
274+
}else{
275+
name = name.toLowerCase()
276+
}
277+
278+
// 初始化模型数据,如果是第一次看到这个模型
279+
if (!modelMap[name]) {
280+
modelMap[name] = {
281+
resolved: 0,
282+
resolvedEasy: 0,
283+
resolvedMedium: 0,
284+
resolvedHard: 0,
285+
resolvedEasyRate: 0,
286+
resolvedMediumRate: 0,
287+
resolvedHardRate: 0,
288+
count: 0, // 统计每个模型出现过的语言数
289+
site: site,
290+
orgIcon: orgIcon,
291+
date: date
292+
};
293+
}
294+
295+
// 累加当前语言的模型分数
296+
modelMap[name].resolved += resolved;
297+
modelMap[name].resolvedEasy += resolvedEasy;
298+
modelMap[name].resolvedMedium += resolvedMedium;
299+
modelMap[name].resolvedHard += resolvedHard;
300+
modelMap[name].count += 1;
301+
modelMap[name].date = modelMap[name].date > date ? modelMap[name].date : date
302+
modelNames.add(name);
303+
num = num +1
304+
});
305+
});
306+
});
307+
allModelResults.value = Object.keys(modelMap)
308+
.filter(name => modelMap[name].count === languageCount) // 只保留在每个语言中都存在的模型
309+
.map(name => ({
310+
name,
311+
resolved: modelMap[name].resolved,
312+
resolvedEasy: modelMap[name].resolvedEasy,
313+
resolvedMedium: modelMap[name].resolvedMedium,
314+
resolvedHard: modelMap[name].resolvedHard,
315+
resolvedRate: modelMap[name].resolved / totalNum,
316+
resolvedEasyRate: modelMap[name].resolvedEasy / easyNum,
317+
resolvedMediumRate: modelMap[name].resolvedMedium / mediumNum,
318+
resolvedHardRate: modelMap[name].resolvedHard / highNum,
319+
site: modelMap[name].site,
320+
orgIcon: modelMap[name].orgIcon,
321+
date: modelMap[name].date,
322+
}));
323+
}

0 commit comments

Comments
 (0)