# 社区运营自动化工作流 — 端到端示例

**场景**：项目维护者希望自动处理社区的日常运营工作：新 Issue 自动分类、每周生成社区报告、版本发布时自动生成 Release Notes。

## 前置条件

- `gitlink-cli` 已安装并登录（`gitlink-cli auth status`）
- 目标仓库已确认（示例使用 `z2_cc/gitlink-cli`）
- `jq` 已安装（用于 JSON 解析）

## 工作流步骤

### Step 1：Issue 自动分拣

```bash
# 1.1 获取所有打开的 Issue
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state open --format json
```

**输出示例：**
```json
{
  "ok": true,
  "data": [
    {"number": 42, "subject": "登录页面报错：500 Internal Server Error", "state": 1},
    {"number": 43, "subject": "建议增加导出功能", "state": 1},
    {"number": 44, "subject": "README 中缺少安装说明", "state": 1}
  ]
}
```

```bash
# 1.2 分析 Issue 内容并进行关键词权重评分（AI 驱动）
#     Issue #42: "报错"(5) + "500"(0) = 5分 → Bug → 标签: bug
#     Issue #43: "建议"(8) + "增加"(5) = 13分 → 功能需求 → 标签: enhancement
#     Issue #44: "文档"(10) + "缺少"(4) = 14分 → 文档 → 标签: documentation

# 1.3 获取可用标签列表
gitlink-cli label +list --owner z2_cc --repo gitlink-cli
```

```bash
# 1.4 为 Issue #42 添加标签和分类评论（dry-run 模式）
DRY_RUN=true
if [ "$DRY_RUN" = "true" ]; then
  echo "[DRY-RUN] 将为 Issue #42 添加标签: bug"
  echo "[DRY-RUN] 将为 Issue #42 添加评论：自动分类结果"
fi
```

**Expected:** 所有未分类的 Issue 被分析并建议标签。dry-run 模式下不实际修改。

### Step 2：社区周报生成

```bash
# 2.1 采集周报数据
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state closed --limit 50 --format json
gitlink-cli pr +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli pr +list --owner z2_cc --repo gitlink-cli --state merged --limit 50 --format json
gitlink-cli commit +list --owner z2_cc --repo gitlink-cli --limit 50
gitlink-cli milestone +list --owner z2_cc --repo gitlink-cli --format json
```

**输出示例（Issue 数据）：**
```json
{
  "ok": true,
  "data": {
    "total_count": 16,
    "issues": [
      {"number": 1, "subject": "...", "state": 2, "created_at": "2026-05-20", "closed_at": "2026-05-21"},
      {"number": 2, "subject": "...", "state": 1, "created_at": "2026-06-01"}
    ]
  }
}
```

**AI 分析逻辑：**
```
总 Issue = 16（打开 2 + 关闭 14）
关闭率 = 14/16 = 87.5% → 🟢 优秀
平均响应时间 = 计算 closed_at - created_at 的平均天数
近 30 天净变化 = 新增 - 关闭
```

### Step 3：自动 Release Notes

```bash
# 3.1 获取最新 Release 确定基线版本
gitlink-cli release +list --owner z2_cc --repo gitlink-cli --format json
```

**输出示例：**
```json
{
  "ok": true,
  "data": [
    {"tag_name": "v0.2.0", "name": "v0.2.0", "created_at": "2026-06-17"}
  ]
}
```

```bash
# 3.2 获取提交历史
git log v0.2.0..HEAD --format="%H|%s|%an|%ad" --date=short
```

**输出示例：**
```
abc1234|feat: 新增 Webhook 投递监控|z2_cc|2026-06-20
abc1235|fix: 修复 Wiki 侧边栏残留|z2_cc|2026-06-22
abc1236|docs: 更新 CLI 帮助文档|z2_cc|2026-06-24
```

**AI 分析结果：**
```
共 3 次提交：feat 1、fix 1、docs 1
涉及 5 个文件，+120/-30 行
推荐版本：v0.3.0（有 feat，无 breaking）
```

```bash
# 3.3 创建 Release（dry-run 模式）
echo "[DRY-RUN] 将创建 Release: v0.3.0"
echo "[DRY-RUN] Release Notes 已生成到 _output/release-notes-v0.3.0.md"
```

## 完整命令速览

```bash
# Phase 1: Issue Triage
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state open --format json
gitlink-cli label +list --owner z2_cc --repo gitlink-cli

# Phase 2: Weekly Report
gitlink-cli issue +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli pr +list --owner z2_cc --repo gitlink-cli --state all --format json
gitlink-cli commit +list --owner z2_cc --repo gitlink-cli --limit 50

# Phase 3: Release Notes
gitlink-cli release +list --owner z2_cc --repo gitlink-cli --format json
git log <last_tag>..HEAD --format="%H|%s|%an|%ad" --date=short
```

## 注意事项

- 所有写操作默认 dry-run，确认后通过 `DRY_RUN=false` 实际执行
- 确保在仓库目录下运行（或显式指定 `--owner` 和 `--repo`）
- 周报的数据范围建议明确（如"最近 7 天"）
