forked from Gitlink/gitlink-cli
487 lines
28 KiB
HTML
487 lines
28 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>GitLink CLI 现场演示</title>
|
||
<style>
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
:root{--bg:#0f172a;--bg2:#1e293b;--card:#1e3a5f;--accent:#38bdf8;--accent2:#818cf8;--gold:#fbbf24;--text:#e2e8f0;--dim:#94a3b8;--green:#22c55e;--red:#ef4444;--border:#334155}
|
||
body{background:var(--bg);color:var(--text);font-family:'Microsoft YaHei',sans-serif;display:flex;height:100vh;overflow:hidden}
|
||
/* Sidebar */
|
||
.sidebar{width:280px;background:var(--bg2);border-right:1px solid var(--border);flex-shrink:0;overflow-y:auto}
|
||
.sidebar-header{padding:20px 24px;border-bottom:1px solid var(--border)}
|
||
.sidebar-header h1{font-size:18px;color:var(--accent);margin-bottom:4px}
|
||
.sidebar-header p{font-size:12px;color:var(--dim)}
|
||
.nav-section{padding:12px 0}
|
||
.nav-section-title{padding:4px 24px;font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:1px}
|
||
.nav-item{padding:10px 24px;cursor:pointer;font-size:14px;color:var(--text);border-left:3px solid transparent;transition:all .2s;display:flex;align-items:center;gap:10px}
|
||
.nav-item:hover{background:var(--card);color:var(--accent)}
|
||
.nav-item.active{background:var(--card);color:var(--accent);border-left-color:var(--accent)}
|
||
.nav-item .icon{font-size:18px;width:24px;text-align:center}
|
||
.nav-item .time{margin-left:auto;font-size:11px;color:var(--dim);background:var(--bg);padding:2px 6px;border-radius:4px}
|
||
/* Main */
|
||
.main{flex:1;overflow-y:auto;padding:0}
|
||
.demo-page{display:none;padding:32px 40px;min-height:100%}
|
||
.demo-page.active{display:block}
|
||
.page-header{margin-bottom:24px}
|
||
.page-header h2{font-size:26px;color:var(--text);margin-bottom:6px}
|
||
.page-header p{font-size:14px;color:var(--dim)}
|
||
/* Terminal */
|
||
.terminal{background:#1e1e2e;border-radius:10px;overflow:hidden;margin:16px 0;box-shadow:0 4px 24px rgba(0,0,0,.3)}
|
||
.term-bar{background:#313244;padding:8px 14px;display:flex;align-items:center;gap:8px}
|
||
.term-dot{width:12px;height:12px;border-radius:50%}
|
||
.term-dot.r{background:#f38ba8}.term-dot.y{background:#f9e2af}.term-dot.g{background:#a6e3a1}
|
||
.term-title{flex:1;text-align:center;font-size:12px;color:#6c7086;font-family:monospace}
|
||
.term-body{padding:16px 20px;font-family:'Cascadia Code','Fira Code',monospace;font-size:13px;line-height:1.7;color:#cdd6f4;max-height:500px;overflow-y:auto}
|
||
.term-prompt{color:#89b4fa}.term-cmd{color:#cdd6f4}.term-flag{color:#f9e2af}.term-str{color:#a6e3a1}.term-out{color:#a6adc8}.term-ok{color:#a6e3a1}.term-info{color:#89b4fa}.term-warn{color:#f9e2af}.term-err{color:#f38ba8}.term-dim{color:#6c7086}.term-section{color:#cba6f7;font-weight:bold}
|
||
/* Cards */
|
||
.card-grid{display:grid;gap:16px;margin:16px 0}
|
||
.card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:20px}
|
||
.card h3{font-size:16px;color:var(--accent);margin-bottom:10px}
|
||
.card p{font-size:13px;color:var(--text);line-height:1.6}
|
||
.metric-row{display:flex;gap:16px;flex-wrap:wrap;margin:12px 0}
|
||
.metric{background:var(--card);border-radius:8px;padding:12px 20px;text-align:center;min-width:120px}
|
||
.metric .val{font-size:28px;font-weight:bold;color:var(--gold)}
|
||
.metric .lbl{font-size:12px;color:var(--dim);margin-top:4px}
|
||
/* Output link */
|
||
.output-link{display:inline-flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--accent);border-radius:8px;padding:10px 20px;color:var(--accent);text-decoration:none;font-size:14px;transition:all .2s;cursor:pointer}
|
||
.output-link:hover{background:var(--accent);color:var(--bg)}
|
||
.output-link .arrow{font-size:16px}
|
||
/* Phase */
|
||
.phase{display:flex;gap:16px;margin:12px 0;align-items:flex-start}
|
||
.phase-num{width:36px;height:36px;border-radius:50%;background:var(--accent);color:var(--bg);display:flex;align-items:center;justify-content:center;font-weight:bold;font-size:16px;flex-shrink:0}
|
||
.phase-content{flex:1}
|
||
.phase-content h4{font-size:15px;color:var(--text);margin-bottom:4px}
|
||
.phase-content p{font-size:13px;color:var(--dim);line-height:1.5}
|
||
/* Table */
|
||
table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}
|
||
th{background:var(--card);color:var(--accent);padding:10px 14px;text-align:left;border-bottom:2px solid var(--border)}
|
||
td{padding:8px 14px;border-bottom:1px solid var(--border);color:var(--text)}
|
||
tr:hover td{background:var(--bg2)}
|
||
/* Score bar */
|
||
.score-bar{display:flex;align-items:center;gap:12px;margin:8px 0}
|
||
.score-label{width:120px;font-size:13px;color:var(--text)}
|
||
.score-track{flex:1;height:24px;background:var(--bg);border-radius:4px;overflow:hidden}
|
||
.score-fill{height:100%;border-radius:4px;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;font-size:11px;color:#fff;font-weight:bold}
|
||
.score-val{width:60px;font-size:14px;font-weight:bold;color:var(--gold);text-align:right}
|
||
/* Hint */
|
||
.hint{background:rgba(56,189,248,.1);border:1px solid var(--accent);border-radius:8px;padding:12px 20px;margin:16px 0;font-size:13px;color:var(--text)}
|
||
.hint b{color:var(--accent)}
|
||
/* Badges */
|
||
.badge{display:inline-block;padding:2px 10px;border-radius:4px;font-size:11px;font-weight:bold}
|
||
.badge-new{background:rgba(34,197,94,.2);color:var(--green);border:1px solid var(--green)}
|
||
.badge-orig{background:rgba(148,163,184,.1);color:var(--dim);border:1px solid var(--border)}
|
||
/* Scrollbar */
|
||
::-webkit-scrollbar{width:8px;height:8px}
|
||
::-webkit-scrollbar-track{background:var(--bg)}
|
||
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
|
||
::-webkit-scrollbar-thumb:hover{background:var(--dim)}
|
||
/* Home */
|
||
.home-hero{text-align:center;padding:40px 0}
|
||
.home-hero h2{font-size:32px;color:var(--text);margin-bottom:12px}
|
||
.home-hero p{font-size:16px;color:var(--dim);margin-bottom:30px}
|
||
.home-metrics{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin:30px 0}
|
||
.home-metric{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:20px 30px;text-align:center;min-width:140px}
|
||
.home-metric .val{font-size:36px;font-weight:bold}
|
||
.home-metric .lbl{font-size:13px;color:var(--dim);margin-top:6px}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<div class="sidebar">
|
||
<div class="sidebar-header">
|
||
<h1>GitLink CLI</h1>
|
||
<p>现场演示 · 4 场景 · ~3 分钟</p>
|
||
</div>
|
||
<div class="nav-section">
|
||
<div class="nav-section-title">概览</div>
|
||
<div class="nav-item active" onclick="show('home',this)"><span class="icon">🏠</span> 首页</div>
|
||
</div>
|
||
<div class="nav-section">
|
||
<div class="nav-section-title">子任务一 · CLI</div>
|
||
<div class="nav-item" onclick="show('cli',this)"><span class="icon">⌨️</span> CLI 命令 <span class="time">30s</span></div>
|
||
<div class="nav-item" onclick="show('repl',this)"><span class="icon">🖥️</span> REPL 交互 <span class="time">45s</span></div>
|
||
</div>
|
||
<div class="nav-section">
|
||
<div class="nav-section-title">子任务三 · 工作流</div>
|
||
<div class="nav-item" onclick="show('community',this)"><span class="icon">📊</span> 社区运营 <span class="time">60s</span></div>
|
||
</div>
|
||
<div class="nav-section">
|
||
<div class="nav-section-title">子任务四 · 科研</div>
|
||
<div class="nav-item" onclick="show('insight',this)"><span class="icon">🔬</span> 项目洞悉 <span class="time">45s</span></div>
|
||
<div class="nav-item" onclick="show('hotspot',this)"><span class="icon">🕸️</span> 知识图谱 <span class="time">45s</span></div>
|
||
</div>
|
||
<div class="nav-section">
|
||
<div class="nav-section-title">评分体系</div>
|
||
<div class="nav-item" onclick="show('scoring',this)"><span class="icon">📐</span> 权重设计 <span class="time">30s</span></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="main">
|
||
|
||
<!-- ===== HOME ===== -->
|
||
<div class="demo-page active" id="home">
|
||
<div class="home-hero">
|
||
<h2>GitLink 智能化能力提升项目</h2>
|
||
<p>gitlink-cli 命令行工具 · AI Agent Skills · 工作流自动化 · 科研辅助</p>
|
||
<div class="home-metrics">
|
||
<div class="home-metric"><div class="val" style="color:#38bdf8">236</div><div class="lbl">Git 提交</div></div>
|
||
<div class="home-metric"><div class="val" style="color:#818cf8">29</div><div class="lbl">AI Skills</div></div>
|
||
<div class="home-metric"><div class="val" style="color:#22c55e">14</div><div class="lbl">新命令模块</div></div>
|
||
<div class="home-metric"><div class="val" style="color:#fbbf24">16.8k</div><div class="lbl">Go 代码行</div></div>
|
||
<div class="home-metric"><div class="val" style="color:#a78bfa">20</div><div class="lbl">测试文件</div></div>
|
||
</div>
|
||
</div>
|
||
<div class="hint">
|
||
<b>💡 演示说明:</b>点击左侧导航查看各场景。每个场景包含<b>命令展示</b>和<b>输出结果跳转</b>。所有数据来自 GitLink API 实时采集。
|
||
</div>
|
||
<div class="card-grid" style="grid-template-columns:1fr 1fr">
|
||
<div class="card">
|
||
<h3>📁 代码仓库</h3>
|
||
<p>fork 自 GitLink 官方 gitlink-cli,在初始 commit 基础上完成全部工作</p>
|
||
<a class="output-link" href="https://www.gitlink.org.cn/z2_cc/gitlink-cli" target="_blank" style="margin-top:12px">前往仓库 →</a>
|
||
</div>
|
||
<div class="card">
|
||
<h3>👥 团队</h3>
|
||
<p>赵昌 (wqer) · 子任务三/四<br>刘焱 (liuyan688) · CLI 底层 + REPL<br>曾蔚然 (z2_cc) · DevOps + 审查</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== CLI ===== -->
|
||
<div class="demo-page" id="cli">
|
||
<div class="page-header">
|
||
<h2>① CLI 基础命令演示</h2>
|
||
<p>新增 14 个 Shortcut 模块 · 统一输出格式 · 真实 API 数据</p>
|
||
</div>
|
||
|
||
<div class="terminal">
|
||
<div class="term-bar"><span class="term-dot r"></span><span class="term-dot y"></span><span class="term-dot g"></span><span class="term-title">z@z-pc: ~/gitlink-cli</span></div>
|
||
<div class="term-body">
|
||
<div><span class="term-prompt">z@z-pc</span><span class="term-dim">:</span><span class="term-prompt">~/gitlink-cli</span><span class="term-dim">$</span> <span class="term-cmd">gitlink-cli</span> <span class="term-cmd">repo</span> <span class="term-flag">+info</span> <span class="term-flag">--owner</span> <span class="term-str">z2_cc</span> <span class="term-flag">--repo</span> <span class="term-str">gitlink-cli</span></div>
|
||
<div class="term-out"> name gitlink-cli</div>
|
||
<div class="term-out"> full_name z2_cc/gitlink-cli</div>
|
||
<div class="term-out"> default_branch master</div>
|
||
<div class="term-out"> issues_count 17</div>
|
||
<div class="term-out"> forked_count 2</div>
|
||
<div class="term-out"> clone_url https://gitlink.org.cn/z2_cc/gitlink-cli.git</div>
|
||
<div> </div>
|
||
<div><span class="term-prompt">z@z-pc</span><span class="term-dim">:</span><span class="term-prompt">~/gitlink-cli</span><span class="term-dim">$</span> <span class="term-cmd">gitlink-cli</span> <span class="term-cmd">collaborator</span> <span class="term-flag">+list</span> <span class="term-flag">--owner</span> <span class="term-str">z2_cc</span> <span class="term-flag">--repo</span> <span class="term-str">gitlink-cli</span></div>
|
||
<div class="term-out"> login role is_owner</div>
|
||
<div class="term-out"> ────────────────────────────────────</div>
|
||
<div class="term-out"> z2_cc Manager true</div>
|
||
<div class="term-out"> wqer Manager false</div>
|
||
<div class="term-out"> liuyan688 Manager false</div>
|
||
<div> </div>
|
||
<div><span class="term-prompt">z@z-pc</span><span class="term-dim">:</span><span class="term-prompt">~/gitlink-cli</span><span class="term-dim">$</span> <span class="term-cmd">gitlink-cli</span> <span class="term-cmd">webhook</span> <span class="term-flag">+failed</span> <span class="term-flag">--owner</span> <span class="term-str">z2_cc</span> <span class="term-flag">--repo</span> <span class="term-str">gitlink-cli</span></div>
|
||
<div class="term-out"> 最近 7 天投递失败记录:0 条 <span class="term-ok">✓</span></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-grid" style="grid-template-columns:1fr 1fr 1fr">
|
||
<div class="card"><h3>📌 新增 14 模块</h3><p>collaborator · tag · milestone · file · commit · label · sshkey · webhook · wiki · snippet · dataset · template · attachment · util</p></div>
|
||
<div class="card"><h3>⭐ 统一输出</h3><p>所有命令支持 <code>--format json/table/yaml</code>,JSON Envelope: {ok, data, meta}</p></div>
|
||
<div class="card"><h3>✅ 测试覆盖</h3><p>20 个测试文件,含单元测试 + E2E 测试</p></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== REPL ===== -->
|
||
<div class="demo-page" id="repl">
|
||
<div class="page-header">
|
||
<h2>② REPL 交互模式 — IDE 级体验</h2>
|
||
<p>Bubble Tea TUI · 2027 行 Go · 5 状态状态机 · 7 个 E2E 测试</p>
|
||
</div>
|
||
|
||
<div class="card-grid" style="grid-template-columns:1fr 1fr 1fr">
|
||
<div class="card">
|
||
<h3>① 命令面板</h3>
|
||
<p style="margin-bottom:12px">输入 <b style="color:var(--gold)">/</b> 唤起,fuzzy 子序列匹配</p>
|
||
<div class="terminal" style="margin:0">
|
||
<div class="term-body" style="font-size:11px;max-height:200px">
|
||
<div class="term-section">Command Palette</div>
|
||
<div><span class="term-prompt">❯ </span><span class="term-cmd">islist</span></div>
|
||
<div class="term-dim"> 匹配: issue +list</div>
|
||
<div> </div>
|
||
<div class="term-out"> ❯ issue Issue 管理</div>
|
||
<div class="term-out"> repo 仓库操作</div>
|
||
<div class="term-out"> pr Pull Request</div>
|
||
<div class="term-out"> collaborator 协作者</div>
|
||
<div class="term-dim">Enter 选 · Esc 返</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<h3>② 表单输入</h3>
|
||
<p style="margin-bottom:12px">Tab 切换字段 · 必填校验 · Space 切换</p>
|
||
<div class="terminal" style="margin:0">
|
||
<div class="term-body" style="font-size:11px;max-height:200px">
|
||
<div class="term-section">issue +create</div>
|
||
<div><span class="term-info">title</span> <span class="term-str">*</span>: Add webhook mon...</div>
|
||
<div class="term-dim"> Issue 标题</div>
|
||
<div><span class="term-info">assignee</span>: liuyan688</div>
|
||
<div class="term-dim"> 负责人</div>
|
||
<div><span class="term-info">private</span>: <span class="term-ok">[✓]</span></div>
|
||
<div class="term-dim"> Space 切换</div>
|
||
<div class="term-err"> ✗ title is required</div>
|
||
<div class="term-dim">Enter 提交 · Esc 取消</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card">
|
||
<h3>③ 滚动视口</h3>
|
||
<p style="margin-bottom:12px">长输出自动进入滚动模式</p>
|
||
<div class="terminal" style="margin:0">
|
||
<div class="term-body" style="font-size:11px;max-height:200px">
|
||
<div class="term-section">issue +list (47 rows)</div>
|
||
<div class="term-out"> # title status</div>
|
||
<div class="term-out"> 15 webhook monitor open</div>
|
||
<div class="term-out"> 14 wiki markdown open</div>
|
||
<div class="term-out"> 13 PR diff verbose open</div>
|
||
<div class="term-out"> 12 snippet pagination open</div>
|
||
<div class="term-out"> 11 branch protect open</div>
|
||
<div class="term-dim">↑↓/PgUp/PgDn · q 返回</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="hint">
|
||
<b>⭐ 核心亮点:</b>用户无需记忆命令语法——输入 / 搜索命令,Tab 填写参数,提交即执行。体验接近 VS Code 命令面板。
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== COMMUNITY ===== -->
|
||
<div class="demo-page" id="community">
|
||
<div class="page-header">
|
||
<h2>③ 社区运营自动化</h2>
|
||
<p>community-ops-full.sh · 三阶段流水线一键执行 · 真实运行结果</p>
|
||
</div>
|
||
|
||
<div class="terminal">
|
||
<div class="term-bar"><span class="term-dot r"></span><span class="term-dot y"></span><span class="term-dot g"></span><span class="term-title">community-ops-full.sh</span></div>
|
||
<div class="term-body">
|
||
<div><span class="term-prompt">z@z-pc</span><span class="term-dim">:</span><span class="term-prompt">~/gitlink-cli</span><span class="term-dim">$</span> <span class="term-flag">DRY_RUN=true</span> <span class="term-cmd">bash</span> <span class="term-str">skills/gitlink-community-ops/scripts/community-ops-full.sh</span> <span class="term-str">z2_cc</span> <span class="term-str">gitlink-cli</span></div>
|
||
<div> </div>
|
||
<div class="term-section">============================================</div>
|
||
<div class="term-section"> 社区运营自动化</div>
|
||
<div class="term-section">============================================</div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Phase 1/3: Issue 自动分拣</span></div>
|
||
<div class="term-out">[INFO] 获取所有打开的 Issue...</div>
|
||
<div class="term-out">[INFO] 发现 21 个 Issue(17 打开 / 4 关闭)</div>
|
||
<div class="term-out">[INFO] 自动分类:bug 8 · enhancement 6 · documentation 4 · other 3</div>
|
||
<div class="term-ok">✓ 分拣完成</div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Phase 2/3: 社区周报生成</span></div>
|
||
<div class="term-out">[INFO] 采集 PR/提交/贡献者数据...</div>
|
||
<div class="term-out">[INFO] 综合评分: 3.5/10 🔴 堪忧</div>
|
||
<div class="term-out">[INFO] 关闭率: 19% | 合并率: 0% | 贡献者: 1人</div>
|
||
<div class="term-ok">✓ HTML 报告已生成: _output/weekly-health-report.html</div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Phase 3/3: 自动 Release Notes</span></div>
|
||
<div class="term-out">[INFO] 获取最近 100 条提交...</div>
|
||
<div class="term-out">[INFO] 新功能 22 项 | Bug 修复 15 项 | 文档 8 项</div>
|
||
<div class="term-out">[INFO] 贡献者: 7 人 | 涉及文件: 252 个</div>
|
||
<div class="term-ok">✓ HTML 报告已生成: _output/release-notes-v0.1.0.html</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-grid" style="grid-template-columns:1fr 1fr">
|
||
<div class="card">
|
||
<h3>📊 社区周报 HTML</h3>
|
||
<p>4 维评分:Issue 关闭率(30%) + PR 合并率(30%) + 贡献者(25%) + 响应速度(15%)</p>
|
||
<a class="output-link" href="../skills/gitlink-community-ops/scripts/_output/weekly-health-report.html" target="_blank" style="margin-top:12px">打开周报 →</a>
|
||
</div>
|
||
<div class="card">
|
||
<h3>📝 Release Notes HTML</h3>
|
||
<p>按 Conventional Commits 自动分类:feat/fix/docs/chore</p>
|
||
<a class="output-link" href="../skills/gitlink-community-ops/scripts/_output/release-notes-v0.1.0.html" target="_blank" style="margin-top:12px">打开 Release Notes →</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== INSIGHT ===== -->
|
||
<div class="demo-page" id="insight">
|
||
<div class="page-header">
|
||
<h2>④ 科研项目洞悉</h2>
|
||
<p>research-insight-full.sh · 8 维数据采集 + 4 维评分 · 真实运行</p>
|
||
</div>
|
||
|
||
<div class="terminal">
|
||
<div class="term-bar"><span class="term-dot r"></span><span class="term-dot y"></span><span class="term-dot g"></span><span class="term-title">research-insight-full.sh</span></div>
|
||
<div class="term-body">
|
||
<div><span class="term-prompt">z@z-pc</span><span class="term-dim">:</span><span class="term-prompt">~/gitlink-cli</span><span class="term-dim">$</span> <span class="term-cmd">bash</span> <span class="term-str">skills/gitlink-research-insight/scripts/research-insight-full.sh</span> <span class="term-str">z2_cc</span> <span class="term-str">gitlink-cli</span></div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Step 1/2: 采集 8 维数据</span></div>
|
||
<div class="term-out">[INFO] ✅ 仓库信息 → repo-info.json</div>
|
||
<div class="term-out">[INFO] ✅ 主题标签 → repo-topics.json</div>
|
||
<div class="term-out">[INFO] ✅ 语言分布 → repo-languages.json (Go 70.1% / JS 22.7% / Shell 6.7%)</div>
|
||
<div class="term-out">[INFO] ✅ 贡献者 → repo-contributors.json (16 人)</div>
|
||
<div class="term-out">[INFO] ✅ 提交历史 → commits-100.json</div>
|
||
<div class="term-out">[INFO] ✅ Issue → issues-all.json (17 个)</div>
|
||
<div class="term-out">[INFO] ✅ PR → prs-all.json (2 个)</div>
|
||
<div class="term-out">[INFO] ✅ 协作者 → collaborators.json</div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Step 2/2: 4 维评分分析</span></div>
|
||
<div class="term-out">[INFO] 项目成熟度: 2.8/10</div>
|
||
<div class="term-out">[INFO] 文档质量: 5.0/10</div>
|
||
<div class="term-out">[INFO] 贡献模式: 6.8/10</div>
|
||
<div class="term-out">[INFO] 社区健康度: 4.4/10</div>
|
||
<div class="term-out">[INFO] 综合评分: 4.8/10 🔴</div>
|
||
<div class="term-ok">✅ HTML 报告已生成: _output/research-insight-report.html</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="metric-row">
|
||
<div class="metric"><div class="val" style="color:var(--red)">2.8</div><div class="lbl">成熟度 /10</div></div>
|
||
<div class="metric"><div class="val" style="color:var(--gold)">5.0</div><div class="lbl">文档 /10</div></div>
|
||
<div class="metric"><div class="val" style="color:var(--green)">6.8</div><div class="lbl">贡献模式 /10</div></div>
|
||
<div class="metric"><div class="val" style="color:var(--red)">4.4</div><div class="lbl">社区健康 /10</div></div>
|
||
<div class="metric"><div class="val" style="color:var(--gold)">4.8</div><div class="lbl">综合 /10</div></div>
|
||
</div>
|
||
|
||
<a class="output-link" href="../skills/gitlink-research-insight/scripts/_output/research-insight-report.html" target="_blank">打开科研洞察报告 →</a>
|
||
</div>
|
||
|
||
<!-- ===== HOTSPOT ===== -->
|
||
<div class="demo-page" id="hotspot">
|
||
<div class="page-header">
|
||
<h2>⑤ 热点追踪与知识图谱</h2>
|
||
<p>多关键词搜索 → 实体关系图谱 → HTML 可视化 · 21 个仓库</p>
|
||
</div>
|
||
|
||
<div class="terminal">
|
||
<div class="term-bar"><span class="term-dot r"></span><span class="term-dot y"></span><span class="term-dot g"></span><span class="term-title">hotspot-tracker-full.sh</span></div>
|
||
<div class="term-body">
|
||
<div><span class="term-prompt">z@z-pc</span><span class="term-dim">:</span><span class="term-prompt">~/gitlink-cli</span><span class="term-dim">$</span> <span class="term-cmd">bash</span> <span class="term-str">skills/gitlink-research-hotspot/scripts/hotspot-tracker-full.sh</span> <span class="term-str">"gitlink"</span> <span class="term-str">"CLI"</span></div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Step 1/2: 多关键词搜索</span></div>
|
||
<div class="term-out">[INFO] 搜索关键词 "gitlink" ... 找到 18 个仓库</div>
|
||
<div class="term-out">[INFO] 搜索关键词 "CLI" ... 找到 3 个仓库</div>
|
||
<div class="term-out">[INFO] 去重后共 21 个仓库</div>
|
||
<div class="term-out">[INFO] 丰富数据: 采集每个仓库的 Star/Fork/语言/主题...</div>
|
||
<div> </div>
|
||
<div><span class="term-info">▸ Step 2/2: 构建知识图谱</span></div>
|
||
<div class="term-out">[INFO] 实体识别: 项目 21 | 主题 4 | 技术栈 2 | 组织 4</div>
|
||
<div class="term-out">[INFO] 关系提取: belongs_to / topic / language / depends_on</div>
|
||
<div class="term-ok">✅ HTML 知识图谱已生成: _output/knowledge-graph-gitlink.html</div>
|
||
<div class="term-ok">✅ HTML 趋势报告已生成: _output/hotspot-trend-report-gitlink.html</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-grid" style="grid-template-columns:1fr 1fr">
|
||
<div class="card">
|
||
<h3>🕸️ 知识图谱</h3>
|
||
<p>21 个仓库 · 4 主题 · 2 技术栈 · 4 组织<br>支持缩放/拖拽/点击高亮</p>
|
||
<a class="output-link" href="../skills/gitlink-research-hotspot/scripts/_output/knowledge-graph-gitlink.html" target="_blank" style="margin-top:12px">打开知识图谱 →</a>
|
||
</div>
|
||
<div class="card">
|
||
<h3>📈 趋势报告</h3>
|
||
<p>热门主题分析 · 技术栈分布 · 组织活跃度排名</p>
|
||
<a class="output-link" href="../skills/gitlink-research-hotspot/scripts/_output/hotspot-trend-report-gitlink.html" target="_blank" style="margin-top:12px">打开趋势报告 →</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ===== SCORING ===== -->
|
||
<div class="demo-page" id="scoring">
|
||
<div class="page-header">
|
||
<h2>⑥ 评分体系权重设计</h2>
|
||
<p>两套评分系统 · 权重有据可依 · 阈值梯度设计</p>
|
||
</div>
|
||
|
||
<div class="card" style="margin-bottom:16px">
|
||
<h3>📊 周报评分 — 综合 = 关闭率×30% + 合并率×30% + 贡献者×25% + 响应×15%</h3>
|
||
<div class="score-bar">
|
||
<div class="score-label">Issue 关闭率</div>
|
||
<div class="score-track"><div class="score-fill" style="width:30%;background:#38bdf8">30%</div></div>
|
||
<div class="score-val">3/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">PR 合并率</div>
|
||
<div class="score-track"><div class="score-fill" style="width:30%;background:#38bdf8">30%</div></div>
|
||
<div class="score-val">3/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">贡献者数</div>
|
||
<div class="score-track"><div class="score-fill" style="width:25%;background:#818cf8">25%</div></div>
|
||
<div class="score-val">3/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">响应速度</div>
|
||
<div class="score-track"><div class="score-fill" style="width:15%;background:#a78bfa">15%</div></div>
|
||
<div class="score-val">5/10</div>
|
||
</div>
|
||
<p style="margin-top:12px;font-size:12px;color:var(--dim)">关闭率+合并率各30%:直接反映社区活跃度(结果指标)。贡献者25%:巴士因子,单人维护=高风险。响应15%:补充信号,关闭率已含"解决"信号。</p>
|
||
</div>
|
||
|
||
<div class="card" style="margin-bottom:16px">
|
||
<h3>🔬 科研洞察 — 综合 = 贡献模式×30% + 成熟度×25% + 社区×25% + 文档×20%</h3>
|
||
<div class="score-bar">
|
||
<div class="score-label">贡献模式</div>
|
||
<div class="score-track"><div class="score-fill" style="width:30%;background:#22c55e">30%</div></div>
|
||
<div class="score-val">6.8/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">成熟度</div>
|
||
<div class="score-track"><div class="score-fill" style="width:25%;background:#38bdf8">25%</div></div>
|
||
<div class="score-val">2.8/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">社区健康度</div>
|
||
<div class="score-track"><div class="score-fill" style="width:25%;background:#818cf8">25%</div></div>
|
||
<div class="score-val">4.4/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">文档质量</div>
|
||
<div class="score-track"><div class="score-fill" style="width:20%;background:#a78bfa">20%</div></div>
|
||
<div class="score-val">5.0/10</div>
|
||
</div>
|
||
<p style="margin-top:12px;font-size:12px;color:var(--dim)">贡献模式30%最高:科研项目核心在人。成熟度+社区各25%:阶段与活跃互补。文档20%最低:影响可复现性但非核心价值。</p>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<h3>📐 成熟度子维度 — 成熟度 = 年龄×25% + Star×25% + Fork×20% + 维护×30%</h3>
|
||
<div class="score-bar">
|
||
<div class="score-label">维护活跃度</div>
|
||
<div class="score-track"><div class="score-fill" style="width:30%;background:#fbbf24">30% 权重最高</div></div>
|
||
<div class="score-val">7/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">项目年龄</div>
|
||
<div class="score-track"><div class="score-fill" style="width:25%;background:#38bdf8">25%</div></div>
|
||
<div class="score-val">0.2/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">Star 数</div>
|
||
<div class="score-track"><div class="score-fill" style="width:25%;background:#818cf8">25%</div></div>
|
||
<div class="score-val">1/10</div>
|
||
</div>
|
||
<div class="score-bar">
|
||
<div class="score-label">Fork 数</div>
|
||
<div class="score-track"><div class="score-fill" style="width:20%;background:#a78bfa">20% 最低</div></div>
|
||
<div class="score-val">2/10</div>
|
||
</div>
|
||
<p style="margin-top:12px;font-size:12px;color:var(--dim)">维护30%最高:老项目不维护=死项目。Fork 20%最低:Fork 多≠贡献多,有大量废弃 Fork 污染数据。</p>
|
||
</div>
|
||
|
||
<div class="hint">
|
||
<b>📐 阈值设计:</b>统一梯度 <code>>80%→10分 | >50%→7分 | >30%→5分 | 其他→3分</code>,参考 CHAOSS 指标体系。
|
||
<br><b>🔧 可调可复现:</b>权重在 JS 引擎里硬编码,可随时调整。同样数据跑出来同样分数。
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
function show(id, el) {
|
||
document.querySelectorAll('.demo-page').forEach(p => p.classList.remove('active'));
|
||
document.getElementById(id).classList.add('active');
|
||
document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active'));
|
||
el.classList.add('active');
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|