gitlink-cli/workflows/contrib-report-zzx-coder-gi...

113 lines
5.2 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Contributor Leaderboard - zzx-coder/gitlink-cli</title>
<script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#f0f2f5;color:#333;padding:24px}
h1{text-align:center;margin-bottom:24px;font-size:1.6rem}
.cards{display:flex;gap:16px;justify-content:center;margin-bottom:24px;flex-wrap:wrap}
.card{background:#fff;border-radius:12px;padding:20px 28px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.06);min-width:160px}
.card .num{font-size:2rem;font-weight:700;color:#1890ff}
.card .label{font-size:.85rem;color:#888;margin-top:4px}
.chart-row{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.chart-box{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 8px rgba(0,0,0,.06);flex:1;min-width:320px;height:320px}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.06)}
th{background:#fafafa;padding:12px 16px;text-align:left;font-size:.85rem;color:#666;border-bottom:1px solid #f0f0f0}
td{padding:12px 16px;border-bottom:1px solid #f0f0f0}
tr:last-child td{border-bottom:none}
.badge{display:inline-block;padding:2px 10px;border-radius:10px;font-size:.8rem;font-weight:600}
.badge-champion{background:#fff7e6;color:#d48806}
.badge-core{background:#e6f7ff;color:#1890ff}
.badge-active{background:#f6ffed;color:#52c41a}
.badge-contributor{background:#f0f0f0;color:#666}
.rank-1{font-weight:700;color:#d48806}
.rank-2{font-weight:600;color:#8c8c8c}
.rank-3{color:#b87333}
.ahp{background:#fff;border-radius:12px;padding:16px;margin-top:24px;box-shadow:0 2px 8px rgba(0,0,0,.06);font-size:.85rem;color:#666}
.ahp h3{font-size:1rem;color:#333;margin-bottom:8px}
.ahp table{box-shadow:none}
.ahp th{background:#f9f9f9}
.footer{text-align:center;margin-top:24px;font-size:.8rem;color:#aaa}
</style>
</head>
<body>
<h1>Contributor Leaderboard</h1>
<p style="text-align:center;color:#888;margin-bottom:24px">zzx-coder/gitlink-cli &middot; 2026-07-02</p>
<div class="cards">
<div class="card"><div class="num">3</div><div class="label">Contributors</div></div>
<div class="card"><div class="num">76</div><div class="label">Total Issues</div></div>
<div class="card"><div class="num">18</div><div class="label">Merged PRs</div></div>
<div class="card"><div class="num">1600</div><div class="label">Lines Changed</div></div>
</div>
<div class="chart-row">
<div class="chart-box" id="pieChart"></div>
<div class="chart-box" id="barChart"></div>
</div>
<table>
<thead>
<tr><th>Rank</th><th>Contributor</th><th>Issues</th><th>Merged PRs</th><th>+/- Lines</th><th>Comments</th><th>Score</th><th>Badge</th></tr>
</thead>
<tbody>
<tr><td class="rank-1">1</td><td>@zzx-coder</td><td>44</td><td>8</td><td>+800</td><td>22</td><td>100.0</td><td><span class="badge badge-champion">Champion</span></td></tr>
<tr><td class="rank-2">2</td><td>@mengcheng</td><td>18</td><td>8</td><td>+600</td><td>18</td><td>80.9</td><td><span class="badge badge-champion">Champion</span></td></tr>
<tr><td class="rank-3">3</td><td>@nudt_zk</td><td>14</td><td>2</td><td>+200</td><td>4</td><td>36.2</td><td><span class="badge badge-contributor">Contributor</span></td></tr>
</tbody>
</table>
<div class="ahp">
<h3>AHP Scoring Model</h3>
<table>
<thead><tr><th>Dimension</th><th>Weight</th><th>Data Source</th></tr></thead>
<tbody>
<tr><td>Issues Created</td><td>15%</td><td>issue +list</td></tr>
<tr><td>PRs Merged</td><td>25%</td><td>pr +list state=merged</td></tr>
<tr><td>Code Changes</td><td>30%</td><td>pr +files (sampled)</td></tr>
<tr><td>Issue Comments</td><td>15%</td><td>PR journals</td></tr>
<tr><td>Team Member</td><td>15%</td><td>repo +members</td></tr>
</tbody>
</table>
</div>
<div class="footer">Auto-generated by gitlink-cli contributor-growth workflow &middot; 2026-07-02</div>
<script>
var pie = echarts.init(document.getElementById('pieChart'));
pie.setOption({
title:{text:'Score Distribution',left:'center',textStyle:{fontSize:14}},
tooltip:{trigger:'item',formatter:'{b}: {c} ({d}%)'},
series:[{
type:'pie',radius:['40%','70%'],
data:[
{value:100.0,name:'@zzx-coder',itemStyle:{color:'#d48806'}},
{value:80.9,name:'@mengcheng',itemStyle:{color:'#1890ff'}},
{value:36.2,name:'@nudt_zk',itemStyle:{color:'#8c8c8c'}}
],
label:{formatter:'{b}\n{d}%'}
}]
});
var bar = echarts.init(document.getElementById('barChart'));
bar.setOption({
title:{text:'Dimension Comparison',left:'center',textStyle:{fontSize:14}},
tooltip:{trigger:'axis'},
legend:{bottom:0,data:['Issues(15%)','PRs(25%)','Code(30%)','Comments(15%)','Member(15%)']},
xAxis:{type:'category',data:['@zzx-coder','@mengcheng','@nudt_zk']},
yAxis:{type:'value',max:30},
series:[
{name:'Issues(15%)',type:'bar',data:[15,6.1,4.8]},
{name:'PRs(25%)',type:'bar',data:[25,25,6.3]},
{name:'Code(30%)',type:'bar',data:[30,22.5,7.5]},
{name:'Comments(15%)',type:'bar',data:[15,12.3,2.7]},
{name:'Member(15%)',type:'bar',data:[15,15,15]}
]
});
window.addEventListener('resize',function(){pie.resize();bar.resize()});
</script>
</body>
</html>