170 lines
5.1 KiB
Bash
Executable File
170 lines
5.1 KiB
Bash
Executable File
#!/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 "$@" |