#!/bin/bash # Drama Ling 報告建立工具 # 用途:快速建立分析報告或決策記錄 # 使用方法: ./create_report.sh [類型] "標題" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPORTS_DIR="$SCRIPT_DIR/reports" TASKS_FILE="$SCRIPT_DIR/TASKS.md" # 顏色定義 GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' RED='\033[0;31m' NC='\033[0m' # 顯示使用說明 show_help() { echo -e "${BLUE}報告建立工具使用說明:${NC}" echo "使用方法: $0 [類型] \"標題\"" echo "" echo -e "${BLUE}類型:${NC}" echo " analysis - 建立問題分析報告" echo " decision - 建立技術決策記錄" echo "" echo -e "${BLUE}範例:${NC}" echo " $0 analysis \"API modules structure check\"" echo " $0 decision \"Database technology selection\"" } # 建立分析報告 create_analysis_report() { local title="$1" local date=$(date +"%Y-%m-%d") local safe_title=$(echo "$title" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd '[:alnum:]-') local filename="${date}_${safe_title}-analysis.md" local filepath="$REPORTS_DIR/analysis/$filename" # 複製模板 cp "$REPORTS_DIR/templates/analysis-template.md" "$filepath" # 替換標題和日期 sed -i '' "1s/.*/# $title 分析報告/" "$filepath" sed -i '' "s/YYYY-MM-DD/$date/g" "$filepath" echo -e "${GREEN}✅ 分析報告已建立: $filepath${NC}" # 詢問是否要加入到任務系統 read -p "是否要在 TASKS.md 中建立對應的任務追蹤? (y/N): " add_task if [[ $add_task =~ ^[Yy]$ ]]; then add_to_tasks "analysis" "$title" "$filename" fi # 詢問是否要開啟編輯器 read -p "是否要開啟編輯器編輯報告? (y/N): " edit_report if [[ $edit_report =~ ^[Yy]$ ]]; then ${EDITOR:-nano} "$filepath" fi } # 建立決策記錄 create_decision_record() { local title="$1" local date=$(date +"%Y-%m-%d") local safe_title=$(echo "$title" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd '[:alnum:]-') local filename="${date}_${safe_title}-decision.md" local filepath="$REPORTS_DIR/decisions/$filename" # 複製模板 cp "$REPORTS_DIR/templates/decision-template.md" "$filepath" # 替換標題和日期 sed -i '' "1s/.*# $title 技術決策記錄/" "$filepath" sed -i '' "s/YYYY-MM-DD/$date/g" "$filepath" echo -e "${GREEN}✅ 決策記錄已建立: $filepath${NC}" # 詢問是否要加入到問題系統 read -p "是否要在 ISSUES.md 中建立對應的問題追蹤? (y/N): " add_issue if [[ $add_issue =~ ^[Yy]$ ]]; then add_to_issues "decision" "$title" "$filename" fi # 詢問是否要開啟編輯器 read -p "是否要開啟編輯器編輯記錄? (y/N): " edit_report if [[ $edit_report =~ ^[Yy]$ ]]; then ${EDITOR:-nano} "$filepath" fi } # 加入到問題系統 add_to_issues() { local type="$1" local title="$2" local filename="$3" echo "" echo "選擇問題優先級:" echo "1) 🔥 緊急" echo "2) ⚠️ 重要" echo "3) 📝 一般" read -p "請選擇 (1-3, 預設2): " priority case $priority in 1) section="## 🔥 緊急問題" ;; 3) section="## 📝 一般問題" ;; *) section="## ⚠️ 重要問題" ;; esac # 建立問題條目 local report_link="./reports/${type}s/$filename" if [ "$type" = "analysis" ]; then issue_line="- [ ] $title"$'\n'" - 📊 **分析報告**: [$title 分析報告]($report_link)"$'\n'" - 📋 **後續行動**: [待填寫]" else issue_line="- [ ] $title"$'\n'" - 📋 **決策記錄**: [$title 決策記錄]($report_link)"$'\n'" - 📋 **實施狀態**: [待實施]" fi # 添加到問題文件 if sed -i '' "/^$section$/a\\ $issue_line " "$ISSUES_FILE"; then echo -e "${GREEN}✅ 已加入到問題追蹤系統${NC}" else echo -e "${RED}❌ 加入問題追蹤失敗${NC}" fi } # 主程式 main() { if [ "$1" = "help" ] || [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ $# -eq 0 ]; then show_help exit 0 fi local type="$1" local title="$2" if [ -z "$title" ]; then echo -e "${RED}❌ 錯誤: 請提供報告標題${NC}" show_help exit 1 fi echo -e "${BLUE}📊 建立 Drama Ling 報告${NC}" echo "=================================" echo -e "${YELLOW}⚠️ 重要提醒:${NC}" echo " • 所有報告都應該透過此工具創建" echo " • 確保日期和格式的統一性和正確性" echo " • 手動建立報告可能導致系統不一致" echo "=================================" case $type in analysis|分析) create_analysis_report "$title" ;; decision|決策) create_decision_record "$title" ;; *) echo -e "${RED}❌ 未知類型: $type${NC}" echo "支援的類型: analysis, decision" show_help exit 1 ;; esac } # 執行主程式 main "$@"