178 lines
6.0 KiB
Bash
Executable File
178 lines
6.0 KiB
Bash
Executable File
#!/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 |