dramaling-app/tools/issue.sh

178 lines
6.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 互動式問題管理工具 - 不需要記任何參數!
# 使用方法: ./issue.sh
ISSUE_FILE="ISSUES.md"
# 顏色定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'
# 顯示歡迎訊息
echo -e "${BLUE}🚨 Drama Ling 問題管理工具${NC}"
echo "================================"
echo -e "${YELLOW}💡 使用提醒:請使用此工具管理問題,避免直接編輯 ISSUES.md${NC}"
echo "================================"
# 確保問題文件存在
if [ ! -f "$ISSUE_FILE" ]; then
echo -e "${RED}❌ 找不到 $ISSUE_FILE${NC}"
echo "請確認您在正確的目錄中執行此腳本"
exit 1
fi
# 主選單
while true; do
echo ""
echo -e "${YELLOW}請選擇操作:${NC}"
echo "1) 📝 記錄新問題"
echo "2) 📊 查看問題狀態"
echo "3) ✅ 標記問題為已解決"
echo "4) 📋 查看完整問題列表"
echo "5) 🚪 退出"
echo ""
read -p "請選擇 (1-5): " choice
case $choice in
1)
# 記錄新問題
echo ""
echo -e "${BLUE}📝 記錄新問題${NC}"
echo "---------------"
read -p "問題描述: " problem_desc
if [ -z "$problem_desc" ]; then
echo -e "${RED}❌ 問題描述不能為空${NC}"
continue
fi
echo ""
echo "選擇優先級:"
echo "1) 🔥 緊急 - 阻擋開發的嚴重問題"
echo "2) ⚠️ 重要 - 影響進度的重要問題"
echo "3) 📝 一般 - 可以延後的問題"
read -p "請選擇 (1-3, 預設3): " priority
case $priority in
1)
section="## 🔥 緊急問題"
priority_text="🔥 緊急"
;;
2)
section="## ⚠️ 重要問題"
priority_text="⚠️ 重要"
;;
*)
section="## 📝 一般問題"
priority_text="📝 一般"
;;
esac
# 詢問相關文件 (可選)
read -p "相關文件路徑 (可選直接按Enter跳過): " file_path
# 建立問題條目
issue_line="- [ ] $problem_desc"
if [ -n "$file_path" ]; then
issue_line="$issue_line (檔案: $file_path)"
fi
# 添加到文件
if sed -i '' "/^$section$/a\\
$issue_line
" "$ISSUE_FILE"; then
echo -e "${GREEN}✅ 問題已記錄到: $priority_text${NC}"
else
echo -e "${RED}❌ 記錄失敗${NC}"
fi
;;
2)
# 查看問題狀態
echo ""
echo -e "${BLUE}📊 問題狀態總覽${NC}"
echo "=================="
urgent=$(sed -n '/## 🔥 緊急問題/,/## ⚠️ /p' "$ISSUE_FILE" | grep -c "^- \[ \]")
important=$(sed -n '/## ⚠️ 重要問題/,/## 📝 /p' "$ISSUE_FILE" | grep -c "^- \[ \]")
normal=$(sed -n '/## 📝 一般問題/,/## 🤖 /p' "$ISSUE_FILE" | grep -c "^- \[ \]")
resolved=$(sed -n '/# 📚 已完成歷史/,$p' "$ISSUE_FILE" | grep -c "^- \[x\]")
echo "🔥 緊急問題: $urgent"
echo "⚠️ 重要問題: $important"
echo "📝 一般問題: $normal"
echo "✅ 已解決: $resolved"
total_open=$((urgent + important + normal))
echo ""
echo "📊 總計: $total_open 個待處理問題"
if [ $urgent -gt 0 ]; then
echo ""
echo -e "${RED}🚨 緊急問題:${NC}"
sed -n '/## 🔥 緊急問題/,/## /p' "$ISSUE_FILE" | grep "^- \[ \]" | head -3
fi
;;
3)
# 標記問題為已解決
echo ""
echo -e "${BLUE}✅ 標記問題為已解決${NC}"
echo "----------------------"
# 顯示未解決的問題
echo "待處理的問題:"
echo ""
# 顯示緊急問題
urgent_issues=$(sed -n '/## 🔥 緊急問題/,/## ⚠️ /p' "$ISSUE_FILE" | grep "^- \[ \]")
if [ -n "$urgent_issues" ]; then
echo -e "${RED}🔥 緊急問題:${NC}"
echo "$urgent_issues" | nl -w2 -s') '
echo ""
fi
# 顯示重要問題
important_issues=$(sed -n '/## ⚠️ 重要問題/,/## 📝 /p' "$ISSUE_FILE" | grep "^- \[ \]")
if [ -n "$important_issues" ]; then
echo -e "${YELLOW}⚠️ 重要問題:${NC}"
echo "$important_issues" | nl -w2 -s') '
echo ""
fi
# 顯示一般問題
normal_issues=$(sed -n '/## 📝 一般問題/,/## 🤖 /p' "$ISSUE_FILE" | grep "^- \[ \]")
if [ -n "$normal_issues" ]; then
echo -e "${BLUE}📝 一般問題:${NC}"
echo "$normal_issues" | nl -w2 -s') '
echo ""
fi
echo -e "${YELLOW}💡 提示: 請直接編輯 $ISSUE_FILE 文件來標記問題為已解決${NC}"
echo "將 '[ ]' 改為 '[x]' 並移動到 '# 📚 已完成歷史' 區域下的對應日期"
;;
4)
# 查看完整問題列表
echo ""
echo -e "${BLUE}📋 完整問題列表${NC}"
echo "=================="
cat "$ISSUE_FILE"
;;
5)
# 退出
echo ""
echo -e "${GREEN}👋 再見!${NC}"
exit 0
;;
*)
echo -e "${RED}❌ 無效選擇,請輸入 1-5${NC}"
;;
esac
done