# 场景 1：仓库级科研项目洞察

## 目标

对单个 GitLink 仓库进行深度分析，生成综合项目画像报告，包括项目定位、技术栈、活动健康、贡献者网络和热度评分。

## 参数

| 参数 | 必需 | 说明 |
|------|------|------|
| `--owner` | 是 | 仓库所有者 |
| `--repo` | 是 | 仓库名称 |
| `--output` | 否 | 输出文件路径 |

## 数据收集步骤

### Step 1: 仓库元数据
```bash
gitlink-cli repo +info --owner $OWNER --repo $REPO --format json
```
提取：name, description, language, stars_count, forks_count, open_issues_count, updated_at, created_at, owner 信息

### Step 2: 技术栈检测
```bash
gitlink-cli api GET "/v1/$OWNER/$REPO/sub_entries?ref=master" --format json
```
扫描根目录文件，匹配技术生态文件：
- `go.mod` → Go
- `package.json` → Node.js
- `requirements.txt` / `pyproject.toml` / `setup.py` / `setup.cfg` → Python
- `Cargo.toml` → Rust
- `CMakeLists.txt` / `Makefile` → C/C++
- `pom.xml` / `build.gradle` / `build.gradle.kts` → Java/Kotlin
- `Gemfile` → Ruby
- `CITATION.cff` → 有引文文件（科研加分项）

同时统计文件扩展名分布（.py, .js, .go, .rs, .java, .r, .ipynb 等）

### Step 3: 项目定位提取
```bash
gitlink-cli api GET "raw/$OWNER/$REPO/master/README.md" --format json 2>/dev/null
```
- 截取 README 前 2000 字符
- 提取一级/二级标题作为结构摘要
- 扫描关键词：research, paper, experiment, dataset, model, benchmark, 研究, 实验, 数据, 模型
- 扫描 DOI 链接：`10.\d{4,}/[\w.\-/]+`

### Step 4: 活动健康指标
```bash
# Issue 数据
gitlink-cli issue +list --owner $OWNER --repo $REPO --state open --limit 100 --format json
gitlink-cli issue +list --owner $OWNER --repo $REPO --state closed --limit 100 --format json

# PR 数据
gitlink-cli pr +list --owner $OWNER --repo $REPO --state merged --limit 100 --format json
gitlink-cli pr +list --owner $OWNER --repo $REPO --state open --limit 50 --format json

# Release 数据
gitlink-cli release +list --owner $OWNER --repo $REPO --limit 20 --format json

# CI 数据
gitlink-cli ci +builds --owner $OWNER --repo $REPO --limit 20 --format json
```

指标计算：
- Issue 流速：最近 30/90 天创建和关闭的 Issue 数
- PR 合并率：merged / (merged + closed)
- 发布频率：最近 3 次发布的间隔天数
- CI 通过率：成功构建数 / 总构建数
- 平均 Issue 响应时间（估算）

### Step 5: 贡献者网络
```bash
gitlink-cli repo +members --owner $OWNER --repo $REPO --limit 50 --format json
```
- 提取所有贡献者列表
- 从 Issue/PR 数据中提取贡献者共现关系
- 构建合作邻接矩阵（两个贡献者参与同一 Issue/PR 则建立边）

## 热度评分公式

```
Hotness = stars_norm    * 0.15
        + forks_norm    * 0.10
        + issues_30d    * 0.20
        + prs_30d       * 0.20
        + releases_90d  * 0.15
        + commits_30d   * 0.10
        + recency       * 0.10
```

其中各项均归一化到 0-100：
- stars_norm = min(stars / max_repo_stars * 100, 100)
- recency = updated_within_30d ? 100 : (updated_within_90d ? 50 : 10)

热度等级：Hot (>=50) / Warm (30-49) / Cool (<30)

## 输出

1. **HTML 报告** (`output/research-insights-{repo}-{date}.html`)：
   - 摘要卡片（名称、语言、星标、Fork、热度评分）
   - 技术栈饼图
   - 活动时间线折线图
   - 贡献者网络力导向图
   - 健康评分仪表盘

2. **Wiki Markdown** — 精简版报告发布到 GitLink Wiki：
```bash
gitlink-cli wiki +create --owner $OWNER --repo $REPO \
  --title "[Research:Insights] $REPO 项目洞察 $(date +%Y-%m-%d)" \
  --content "$WIKI_CONTENT"
```

## 可执行脚本

直接运行 `workflows/06-research-insights.sh`：
```bash
bash workflows/06-research-insights.sh --owner zzx-coder --repo gitlink-cli
```

---

## 场景 1 补充：科研项目画像维度

除了基础的项目洞察外，针对科研项目增加以下分析维度：

### 科研特征识别

从 README、描述和代码中识别科研特征：

| 特征 | 检测方式 |
|------|---------|
| 引用论文 | DOI 模式 `10.\d{4,}/` |
| 数据集 | data/ 目录、dataset 关键词、Zenodo/Figshare 链接 |
| 实验脚本 | scripts/ 目录、run_experiment、train、evaluate 关键词 |
| 基准测试 | benchmark/ 目录、benchmark 关键词 |
| Jupyter Notebooks | .ipynb 文件存在 |
| 预训练模型 | .pt/.pth/.h5/.onnx 文件或 model/checkpoint 目录 |
| Docker | Dockerfile 或 docker-compose.yml |
| 结果可视化 | 图片目录、图表关键词 |

### 科研影响力量化

```
Research Impact = 0.30 * citation_count_estimate
                + 0.25 * dataset_availability
                + 0.20 * paper_links
                + 0.15 * fork_productivity（fork 后是否产生新研究）
                + 0.10 * cross_repo_references
```
