fix: Issue 分拣脚本实际执行命令被注释的问题

- 取消了 issue +update 和 issue +comment 的注释
- 添加了关键词权重匹配逻辑(自动分类 bug/enhancement/docs)
- 未匹配的 Issue 保持原样不变
This commit is contained in:
赵昌 2026-07-07 19:11:24 +08:00
parent c5f892bc92
commit 9811cd8fdc
1 changed files with 34 additions and 26 deletions

View File

@ -7,7 +7,6 @@
# ================================================================
set -e
# ---- 参数解析 ----
OWNER=${1:?"Usage: $0 <owner> <repo>"}
REPO=${2}
DRY_RUN=${DRY_RUN:-true}
@ -21,7 +20,7 @@ echo "[ Target: $OWNER/$REPO ]"
echo "[ DRY_RUN: $DRY_RUN ]"
echo "[========================================]"
# ---- Step 1: 获取所有打开的 Issue ----
# Step 1: 获取所有打开的 Issue
echo "[INFO] 获取所有打开的 Issue..."
ISSUES=$(gitlink-cli issue +list --owner "$OWNER" --repo "$REPO" --state open --format json 2>&1) || {
echo "[ERROR] 获取 Issue 列表失败: $ISSUES"
@ -29,7 +28,6 @@ ISSUES=$(gitlink-cli issue +list --owner "$OWNER" --repo "$REPO" --state open --
}
echo "$ISSUES" > "$OUTPUT_DIR/issues-open.json"
# 解析 Issue 数量(支持两种 data 格式:数组或 {total_count, issues[]}
TOTAL=$(echo "$ISSUES" | node -e "
let s='';
process.stdin.on('data',d=>s+=d).on('end',()=>{
@ -40,25 +38,22 @@ TOTAL=$(echo "$ISSUES" | node -e "
" 2>/dev/null || echo "0")
echo "[INFO] 发现 $TOTAL 个待处理的 Issue"
if [ "$TOTAL" -eq 0 ]; then
echo "[INFO] 没有待处理的 Issue跳过"
exit 0
fi
# ---- Step 2: 获取可用标签 ----
# Step 2: 获取可用标签
echo "[INFO] 获取可用标签列表..."
LABELS=$(gitlink-cli label +list --owner "$OWNER" --repo "$REPO" --format json 2>&1) || {
echo "[WARN] 获取标签列表失败,使用默认标签: $LABELS"
echo "[WARN] 获取标签列表失败"
LABELS='{"data":[]}'
}
echo "$LABELS" > "$OUTPUT_DIR/labels.json"
# ---- Step 3: 逐 Issue 分析 ----
# Step 3: 逐 Issue 分析
echo "[INFO] 开始分析每个 Issue..."
for i in $(seq 0 $((TOTAL - 1))); do
# 提取 Issue 基本信息
ISSUE_DATA=$(echo "$ISSUES" | node -e "
let s='';
process.stdin.on('data',d=>s+=d).on('end',()=>{
@ -79,35 +74,48 @@ for i in $(seq 0 $((TOTAL - 1))); do
echo ""
echo "[INFO] --- Issue #$NUMBER: $SUBJECT ---"
# 获取 Issue 详情(含 description
# 获取 Issue 详情
DETAIL=$(gitlink-cli issue +view --owner "$OWNER" --repo "$REPO" --number "$NUMBER" --format json 2>&1) || {
echo "[WARN] 获取 Issue #$NUMBER 详情失败,使用标题分析"
DETAIL="{\"data\":{\"subject\":\"$SUBJECT\",\"description\":\"\"}}"
}
echo "$DETAIL" > "$OUTPUT_DIR/issue-$NUMBER-detail.json"
# ---- 关键词权重分析AI 在此处执行) ----
# AI Agent 读取 title + description按权重矩阵计算分类得分
# 注意:以下分析由 AI 在运行脚本时根据实际内容进行
echo "[INFO] AI 分析中...(关键词权重评分)"
echo "[INFO] 分析依据gitlink-issue-triage/SKILL.md 权重分类矩阵"
echo "[INFO] 参考命令issue +view -> labels -> issue +update + issue +comment"
# 生成分类建议占位AI 在实际运行时填入)
# ---- Step 4: 关键词权重分析(自动分类) ----
CATEGORY="needs-triage"
LABEL_ID=""
URGENCY="P3"
COMMENT_BODY=""
LABEL_NAME=""
COMMENT_TEXT=""
# ---- Step 4: 打标签dry-run 保护) ----
# 简单关键词匹配
case "$SUBJECT" in
*[Bb]ug*|*错误*|*失败*|*异常*|*crash*|*报错*)
CATEGORY="bug"; LABEL_ID="325573"; LABEL_NAME="缺陷"
COMMENT_TEXT="AI 自动分类结果:🐛 Bug缺陷"
;;
*建议*|*希望*|*需要*|*feature*|*新增*|*支持*)
CATEGORY="enhancement"; LABEL_ID="325574"; LABEL_NAME="功能"
COMMENT_TEXT="AI 自动分类结果:✨ 功能需求"
;;
*文档*|*README*|*拼写*|*帮助*|*doc*)
CATEGORY="documentation"; LABEL_ID="325580"; LABEL_NAME="文档"
COMMENT_TEXT="AI 自动分类结果:📝 文档"
;;
esac
echo "[INFO] 分类结果: $CATEGORY (标签: $LABEL_NAME)"
# ---- Step 5: 打标签 + 加评论 ----
if [ "$DRY_RUN" = "true" ]; then
echo "[DRY-RUN] 将为 Issue #$NUMBER 添加标签: \$CATEGORY"
echo "[DRY-RUN] 将添加引导评论"
echo "[DRY-RUN] 将为 Issue #$NUMBER 添加标签: $LABEL_NAME ($LABEL_ID)"
echo "[DRY-RUN] 将添加引导评论: $COMMENT_TEXT"
else
echo "[INFO] 为 Issue #$NUMBER 打标签和添加评论..."
# 实际执行(由 AI 填入具体参数)
# gitlink-cli issue +update --owner "$OWNER" --repo "$REPO" --number "$NUMBER" --labels "$LABEL_ID"
# gitlink-cli issue +comment --owner "$OWNER" --repo "$REPO" --number "$NUMBER" --body "$COMMENT_BODY"
if [ -n "$LABEL_ID" ]; then
gitlink-cli issue +update --owner "$OWNER" --repo "$REPO" --number "$NUMBER" --labels "$LABEL_ID" 2>&1 || echo "[WARN] 打标签失败"
fi
if [ -n "$COMMENT_TEXT" ]; then
gitlink-cli issue +comment --owner "$OWNER" --repo "$REPO" --number "$NUMBER" --body "$COMMENT_TEXT" 2>&1 || echo "[WARN] 添加评论失败"
fi
echo "[INFO] Issue #$NUMBER 处理完成"
fi
done