forked from Gitlink/gitlink-cli
fix: Issue 分拣脚本实际执行命令被注释的问题
- 取消了 issue +update 和 issue +comment 的注释 - 添加了关键词权重匹配逻辑(自动分类 bug/enhancement/docs) - 未匹配的 Issue 保持原样不变
This commit is contained in:
parent
c5f892bc92
commit
9811cd8fdc
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue