#!/bin/bash

# Drama Ling 報告建立工具
# 用途：快速建立分析報告或決策記錄
# 使用方法: ./create_report.sh [類型] "標題"

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPORTS_DIR="$SCRIPT_DIR/reports"
ISSUES_FILE="$SCRIPT_DIR/ISSUES.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 "是否要在 ISSUES.md 中建立對應的問題追蹤? (y/N): " add_issue
    if [[ $add_issue =~ ^[Yy]$ ]]; then
        add_to_issues "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 "$@"