# MAA測試問題追蹤系統 一個基於Node.js和SQLite的問題追蹤系統,專為MAA(Mobile Application Automation)測試團隊設計。 ## 功能特色 - 🐛 **問題管理**: 建立、編輯、刪除和追蹤問題 - 📁 **專案管理**: 組織問題到不同專案中 - 🏷️ **標籤系統**: 狀態(待處理、處理中、已完成)和優先級(高、中、低) - 💬 **評論功能**: 為問題添加評論和討論 - 📊 **統計儀表板**: 即時顯示問題統計資料 - 🔍 **篩選搜尋**: 按專案、狀態、優先級篩選問題 - 📱 **響應式設計**: 支援桌面和行動裝置 - 🎨 **現代化UI**: 美觀且易用的使用者介面 ## 技術架構 - **後端**: Node.js + Express.js - **資料庫**: SQLite3 - **前端**: 原生HTML/CSS/JavaScript - **樣式**: 自定義CSS + Font Awesome圖示 ## 快速開始 ### 環境需求 - Node.js 14.0.0 或更高版本 - npm 或 yarn 套件管理器 ### 安裝步驟 1. **複製專案** ```bash git clone cd maa-test-issues ``` 2. **安裝依賴套件** ```bash npm install ``` 3. **啟動應用程式** ```bash npm start ``` 4. **開發模式**(自動重啟) ```bash npm run dev ``` 5. **開啟瀏覽器** 訪問 `http://localhost:3000` ### 預設資料 系統會自動建立範例資料,包括: - 3個範例專案 - 5個範例問題 - 相關評論 ## API 文件 ### 問題 API #### 取得問題列表 ``` GET /api/issues 參數: - project_id: 專案ID(可選) - status: 狀態(可選) - priority: 優先級(可選) - page: 頁碼(預設1) - limit: 每頁數量(預設10) ``` #### 取得單一問題 ``` GET /api/issues/:id ``` #### 建立問題 ``` POST /api/issues Body: { "title": "問題標題", "description": "問題描述", "project_id": 1, "priority": "high", "assignee": "開發者姓名", "reporter": "回報者姓名" } ``` #### 更新問題 ``` PUT /api/issues/:id Body: 同建立問題,所有欄位可選 ``` #### 刪除問題 ``` DELETE /api/issues/:id ``` #### 新增評論 ``` POST /api/issues/:id/comments Body: { "author": "評論者姓名", "content": "評論內容" } ``` ### 專案 API #### 取得專案列表 ``` GET /api/projects ``` #### 取得單一專案 ``` GET /api/projects/:id ``` #### 建立專案 ``` POST /api/projects Body: { "name": "專案名稱", "description": "專案描述", "status": "active" } ``` #### 更新專案 ``` PUT /api/projects/:id Body: 同建立專案,所有欄位可選 ``` #### 刪除專案 ``` DELETE /api/projects/:id ``` #### 取得專案統計 ``` GET /api/projects/:id/stats ``` ## 部署到Gogs ### 1. 準備部署檔案 建立 `.gitignore` 檔案: ```gitignore node_modules/ *.log .env database/maa_test.db .DS_Store ``` ### 2. 推送到Gogs倉庫 ```bash # 初始化Git倉庫 git init # 添加遠端倉庫 git remote add origin # 添加檔案 git add . # 提交變更 git commit -m "Initial commit: MAA測試問題追蹤系統" # 推送到Gogs git push -u origin main ``` ### 3. 伺服器部署 在目標伺服器上: ```bash # 複製倉庫 git clone cd maa-test-issues # 安裝依賴 npm install # 設定環境變數(可選) export NODE_ENV=production export PORT=3000 # 啟動應用程式 npm start ``` ### 4. 使用PM2進行進程管理 ```bash # 安裝PM2 npm install -g pm2 # 啟動應用程式 pm2 start server.js --name "maa-issues" # 設定開機自啟 pm2 startup pm2 save ``` ### 5. 使用Nginx反向代理 建立Nginx配置檔案: ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; } } ``` ## 環境變數 | 變數名稱 | 預設值 | 說明 | |---------|--------|------| | PORT | 3000 | 伺服器端口 | | NODE_ENV | development | 執行環境 | ## 資料庫結構 ### projects 表格 - `id`: 主鍵 - `name`: 專案名稱 - `description`: 專案描述 - `status`: 專案狀態 - `created_at`: 建立時間 - `updated_at`: 更新時間 ### issues 表格 - `id`: 主鍵 - `project_id`: 專案ID(外鍵) - `title`: 問題標題 - `description`: 問題描述 - `status`: 問題狀態 - `priority`: 優先級 - `assignee`: 指派給 - `reporter`: 回報者 - `created_at`: 建立時間 - `updated_at`: 更新時間 ### issue_comments 表格 - `id`: 主鍵 - `issue_id`: 問題ID(外鍵) - `author`: 評論者 - `content`: 評論內容 - `created_at`: 建立時間 ## 開發指南 ### 專案結構 ``` maa-test-issues/ ├── database/ │ ├── init.js # 資料庫初始化 │ └── maa_test.db # SQLite資料庫檔案 ├── routes/ │ ├── issues.js # 問題相關路由 │ └── projects.js # 專案相關路由 ├── public/ │ ├── index.html # 主頁面 │ ├── styles.css # 樣式檔案 │ └── script.js # 前端JavaScript ├── server.js # 主伺服器檔案 ├── package.json # 專案配置 └── README.md # 說明文件 ``` ### 添加新功能 1. 在 `routes/` 目錄下建立新的路由檔案 2. 在 `server.js` 中引入並使用新路由 3. 更新前端頁面以支援新功能 4. 更新資料庫結構(如需要) ### 測試 ```bash # 執行測試 npm test ``` ## 故障排除 ### 常見問題 1. **資料庫連線失敗** - 檢查SQLite檔案權限 - 確認資料庫檔案路徑正確 2. **端口被占用** - 更改PORT環境變數 - 或終止占用端口的進程 3. **依賴安裝失敗** - 檢查Node.js版本 - 清除npm快取:`npm cache clean --force` ## 授權 MIT License ## 貢獻 歡迎提交Issue和Pull Request來改善這個專案! ## 聯絡資訊 如有問題或建議,請聯繫MAA測試團隊。