@@ -105,6 +105,7 @@ export function useVisualLeaderboard() {
105
105
export function useAllLeaderboard ( ) {
106
106
// 新增变量
107
107
const allLeaderboards = ref < any [ ] > ( )
108
+ const allModelResults = ref ( [ ] ) ;
108
109
const selectedCategory = ref < string > ( ) // 用于存储外层分类 (如"text")
109
110
110
111
// 直接返回顶层数组作为leaderboard,这样导航栏会显示不同的语言选项
@@ -213,6 +214,20 @@ export function useAllLeaderboard() {
213
214
onMounted ( async ( ) => {
214
215
const response = await fetch ( 'https://raw.githubusercontent.com/multi-swe-bench/experiments/refs/heads/dist/leaderboard.json' )
215
216
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
+ }
216
231
console . log ( allLeaderboards . value )
217
232
} )
218
233
@@ -231,3 +246,78 @@ export function useAllLeaderboard() {
231
246
total
232
247
}
233
248
}
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