#!/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