2025年9月28日 星期日

🧭 AI Debug & 開發提示詞範本庫(Laravel 專用)

🧭 AI Debug & 開發提示詞範本庫(Laravel 專用)

這份範本庫提供一系列標準化的提示詞,幫助 PHP/Laravel 開發者在 Debug、功能開發與進階應用中高效利用 AI 作為程式副駕駛。範本適用於 Laravel 10/11 與 PHP 8.x 環境,可直接複製並根據需求修改。範本分為三大類:Debug、功能開發與進階應用,每個範本包含背景說明、提示詞範例與使用建議,確保 AI 回應精準且實用。


🐞 Debug 範本

1. 錯誤訊息分析

用途:快速診斷 Laravel 應用中的錯誤訊息,特別是資料庫、驗證或依賴注入問題。
提示詞

我在 Laravel 10 專案中遇到以下錯誤:
- 環境:PHP 8.2, Laravel 10, MySQL 8, Redis 6
- 錯誤訊息:[貼上完整錯誤訊息]
- 相關程式碼:
```php
[貼上觸發錯誤的程式碼]
  • 期待行為:[描述希望達到的功能]
  • 實際行為:[描述當前錯誤或異常輸出]
    請分析錯誤原因,提供具體修正建議,並解釋問題的底層原理(如資料庫連線、ORM 或依賴注入)。

**使用建議**:
- 提供完整的錯誤堆疊(Stack Trace)與環境資訊。
- 明確描述期待與實際行為,幫助 AI 定位問題。
- 要求底層原理解釋(如 Laravel 的 Eloquent 或 Service Container),以加深理解。

**範例**:

我在 Laravel 10 專案中遇到以下錯誤:

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 錯誤訊息:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'age'
  • 相關程式碼:
User::where('age', '>', 18)->get();
  • 期待行為:查詢年齡大於 18 的使用者
  • 實際行為:報錯,提示找不到 age 欄位
    請分析錯誤原因,提供修正建議,並解釋 Laravel Eloquent 的查詢機制。

---

### 2. 程式碼邏輯錯誤
**用途**:找出 Laravel 控制器、服務或前端邏輯中的錯誤,特別是業務邏輯或資料處理問題。  
**提示詞**:

以下是我的 Laravel 程式碼片段:

[貼上程式碼]
  • 環境:PHP 8.2, Laravel 10, [其他相關技術如 Vue]
  • 期待行為:[描述預期的功能或輸出]
  • 實際行為:[描述實際的錯誤輸出或行為]
    請檢查程式碼,找出邏輯錯誤,提供修正建議,並解釋錯誤原因(如狀態管理、資料流或邏輯判斷)。

**使用建議**:
- 提供完整的程式碼上下文(例如控制器、模型或前端組件)。
- 描述輸入與輸出,幫助 AI 理解邏輯問題。
- 若涉及前端(如 Vue),說明狀態管理(Pinia)或事件處理。

**範例**:

以下是我的 Laravel 程式碼片段:

public function update(Request $request, $id) {
    $user = User::find($id);
    $user->name = $request->name;
    $user->save();
    return response()->json(['status' => 'success']);
}
  • 環境:PHP 8.2, Laravel 10
  • 期待行為:更新用戶名稱並返回成功訊息
  • 實際行為:偶爾返回空 JSON,更新失敗
    請檢查程式碼,找出邏輯錯誤,提供修正建議,並解釋可能原因。

---

### 3. 效能瓶頸排查
**用途**:診斷 Laravel 應用中的效能問題,如 N+1 查詢或慢查詢。  
**提示詞**:

我有一段 Laravel 程式碼,執行效能不佳:

[貼上程式碼]
  • 環境:PHP 8.2, Laravel 10, MySQL 8, Redis 6
  • 問題描述:[描述效能問題,如查詢慢、頁面載入延遲]
  • 當前觀察:[描述已知的症狀,如慢查詢日誌或高 CPU 使用率]
    請檢查是否有 N+1 問題或其他效能瓶頸,建議優化方式(如 Eager Loading、快取),並解釋底層原理(如資料庫索引或 Laravel Queue)。

**使用建議**:
- 提供慢查詢日誌或 Telescope 數據(若有)。
- 說明系統負載場景(如高併發或大量資料)。
- 要求具體優化方法(如索引、快取)與原理解釋。

**範例**:

我有一段 Laravel 程式碼,執行效能不佳:

$posts = Post::all();
foreach ($posts as $post) {
    echo $post->user->name;
}
  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 問題描述:查詢 1000 筆貼文時,頁面載入時間超過 5 秒
  • 當前觀察:Telescope 顯示多次查詢 users 表
    請檢查是否有 N+1 問題,建議優化方式,並解釋 Eloquent 的關係載入機制。

---

## ⚙️ 功能開發範本

### 4. 建立 RESTful API
**用途**:快速開發符合 RESTful 原則的 Laravel API,包含驗證與回應格式。  
**提示詞**:

請幫我在 Laravel 10 專案中建立一個 [功能名稱] API。

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 需求:
    • 輸入:[列出輸入欄位,如 name, email]
    • 驗證規則:[列出驗證要求,如 email 唯一]
    • 回應格式:
      • 成功:[JSON 範例]
      • 失敗:[JSON 範例]
  • 請提供 Controller、FormRequest、Route 程式碼,並解釋實現邏輯。

**使用建議**:
- 明確定義 API 輸入與輸出格式。
- 說明驗證規則與錯誤處理需求。
- 若需要 CORS,特別註明跨域要求。

**範例**:

請幫我在 Laravel 10 專案中建立一個會員註冊 API。

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 需求:
    • 輸入:name, email, password
    • 驗證規則:email 唯一,password 至少 8 碼
    • 回應格式:
      • 成功:{ "status": "success", "user_id": 1 }
      • 失敗:{ "status": "error", "message": "Email already exists" }
  • 請提供 Controller、FormRequest、Route 程式碼,並解釋實現邏輯。

---

### 5. 新功能模組
**用途**:開發完整的 Laravel 功能模組,包含資料庫設計與 API 實現。  
**提示詞**:

我要在 Laravel 10 專案中新增 [功能名稱] 模組。

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 需求:
    • 功能描述:[描述功能,如文章留言]
    • 資料結構:[列出資料表欄位,如 user_id, content]
    • API 需求:[列出 API 端點,如新增、列表]
  • 請提供 Migration、Model 關聯、Controller 程式碼,並說明設計邏輯。

**使用建議**:
- 詳細描述資料表結構與關聯(一對多、多對多)。
- 說明 API 的輸入輸出與權限要求。
- 若涉及前端,註明是否需要 Vue 整合。

**範例**:

我要在 Laravel 10 專案中新增文章留言功能。

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 需求:
    • 功能描述:每篇文章可有多個留言
    • 資料結構:留言表(user_id, post_id, content, created_at)
    • API 需求:POST /comments 新增留言,GET /posts/{id}/comments 取得留言列表
  • 請提供 Migration、Model 關聯、Controller 程式碼,並說明設計邏輯。

---

### 6. 權限控管
**用途**:實現 Laravel 的權限管理,確保安全與靈活性。  
**提示詞**:

我需要在 Laravel 10 專案中實現 [功能名稱] 的權限控管。

  • 環境:PHP 8.2, Laravel 10
  • 需求:
    • 權限規則:[描述規則,如僅 admin 可刪除]
    • 使用場景:[描述場景,如文章管理]
  • 請提供 Policy、Middleware 或 Gate 的程式碼,並解釋實現邏輯與底層原理(如 Laravel 的授權機制)。

**使用建議**:
- 明確定義角色與權限規則。
- 說明是否需要整合第三方套件(如 Spatie Permission)。
- 要求底層原理(如 Gate vs. Policy)。

**範例**:

我需要在 Laravel 10 專案中實現文章管理權限。

  • 環境:PHP 8.2, Laravel 10
  • 需求:
    • 權限規則:僅 admin 可刪除文章,一般使用者可編輯自己的文章
    • 使用場景:文章 CRUD 操作
  • 請提供 Policy 程式碼,整合到 Controller,並解釋 Laravel 的授權機制。

---

## 🚀 進階應用範本

### 7. 單元測試
**用途**:為 Laravel 功能撰寫單元與整合測試,確保程式碼穩定性。  
**提示詞**:

請為以下 Laravel 程式碼撰寫 PHPUnit 測試:

[貼上程式碼]
  • 環境:PHP 8.2, Laravel 10
  • 測試需求:
    • 成功案例:[描述成功場景]
    • 失敗案例:[描述失敗場景,如驗證錯誤]
    • 權限案例:[描述權限相關場景]
  • 請提供測試程式碼,並說明測試邏輯與 Laravel 的測試框架原理。

**使用建議**:
- 提供完整的程式碼上下文(Controller 或 Service)。
- 明確測試場景(成功、失敗、邊界)。
- 若使用 Pest,特別註明。

**範例**:

請為以下 Laravel Controller 方法撰寫 PHPUnit 測試:

public function store(Request $request) {
    $data = $request->validate(['name' => 'required', 'email' => 'required|email|unique:users']);
    $user = User::create($data);
    return response()->json(['status' => 'success', 'user_id' => $user->id]);
}
  • 環境:PHP 8.2, Laravel 10
  • 測試需求:
    • 成功案例:成功創建用戶
    • 失敗案例:email 重複
    • 權限案例:未授權用戶無法訪問
  • 請提供測試程式碼,並說明 Laravel 的測試框架原理。

---

### 8. CI/CD 整合
**用途**:建置 Laravel 專案的自動化測試與部署流程。  
**提示詞**:

我想在 GitHub Actions 中為 Laravel 10 專案建置 CI/CD 流程。

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 需求:
    • 執行 composer install
    • 設定環境與資料庫遷移(php artisan migrate)
    • 執行 PHPUnit 測試
    • 部署到 [目標環境,如 AWS EC2]
  • 請提供 .yml workflow 範例,並解釋 CI/CD 流程與環境配置原理。

**使用建議**:
- 說明部署目標(例如 Laravel Vapor、AWS)。
- 若使用 Docker,註明容器化需求。
- 要求環境變數與安全性考量。

**範例**:

我想在 GitHub Actions 中為 Laravel 10 專案建置 CI/CD 流程。

  • 環境:PHP 8.2, Laravel 10, MySQL 8
  • 需求:
    • 執行 composer install
    • 執行 php artisan migrate
    • 執行 PHPUnit 測試
    • 部署到 AWS EC2
  • 請提供 .yml workflow 範例,並解釋 CI/CD 流程與環境配置原理。

---

### 9. 重構建議
**用途**:檢查 Laravel 程式碼是否符合最佳實務並提供重構建議。  
**提示詞**:

以下是我的 Laravel 程式碼:

[貼上程式碼]
  • 環境:PHP 8.2, Laravel 10
  • 需求:
    • 檢查是否違反 SOLID 原則
    • 提供重構建議,提升可維護性與效能
    • 解釋重構的底層原理(如依賴注入或模組化)
  • 請提供重構後的程式碼範例與說明。

**使用建議**:
- 提供完整的程式碼上下文(例如控制器或服務層)。
- 說明程式碼的當前問題(若已知)。
- 要求具體重構方法(如抽取 Service 層)。

**範例**:

以下是我的 Laravel 程式碼:

public function store(Request $request) {
    $user = new User;
    $user->name = $request->name;
    $user->email = $request->email;
    $user->password = bcrypt($request->password);
    $user->save();
    Mail::to($user->email)->send(new WelcomeMail($user));
    return response()->json(['status' => 'success']);
}
  • 環境:PHP 8.2, Laravel 10
  • 需求:
    • 檢查是否違反 SOLID 原則
    • 提供重構建議,提升可維護性
    • 解釋依賴注入與職責分離的原理
  • 請提供重構後的程式碼範例與說明。

---

### 10. 學習與解釋
**用途**:深入理解 Laravel 的核心概念與底層原理,適用於學習或培訓。  
**提示詞**:

請解釋 Laravel 的 [指定功能/機制] 運作方式。

  • 環境:PHP 8.2, Laravel 10
  • 需求:
    • 提供簡單的程式碼範例
    • 解釋底層原理(如 Service Container、Eloquent)
    • 比較相關方法或選項(如 register() vs. boot())
  • 請提供詳細說明與程式碼。

**使用建議**:
- 明確指定學習目標(如 Service Container、Middleware)。
- 要求簡單範例與原理解釋。
- 若涉及比較,列出比較對象。

**範例**:

請解釋 Laravel Service Container 的運作方式。

  • 環境:PHP 8.2, Laravel 10
  • 需求:
    • 提供綁定與解析的程式碼範例
    • 解釋底層原理(如依賴注入、反射)
    • 比較 register() 與 boot() 的差異
  • 請提供詳細說明與程式碼。


---

## 🎯 使用技巧
- **Debug 時**:
  - 提供完整錯誤訊息(包含堆疊追蹤)與環境資訊(PHP、Laravel 版本)。
  - 附上相關程式碼片段,明確期待與實際行為。
  - 要求底層原理(如 Eloquent 的 N+1 問題、CORS 機制)以加深理解。
- **開發時**:
  - 明確定義需求規格(輸入、輸出、驗證規則)。
  - 說明技術限制(如是否支援 CORS、是否需要 Vue 整合)。
  - 要求程式碼結構(例如 Controller、Model 分離)。
- **學習時**:
  - 要求 AI 提供簡單範例與底層原理。
  - 要求比較相關概念(如 Gate vs. Policy、bind() vs. singleton())。
  - 要求實務應用場景(如 Service Container 在 API 開發中的使用)。
- **通用建議**:
  - 使用具體、結構化的提示詞,避免模糊描述。
  - 若結果不理想,迭代提示詞,補充更多上下文或限制條件。
  - 保存常用範本,根據專案需求客製化。

---

## 🛠 進階建議
- **建立個人範本庫**:將常用提示詞儲存為範本,根據專案需求快速調整。
- **結合工具**:搭配 Laravel Telescope、Sentry 或 Blackfire,提供更精準的 Debug 資料。
- **學習路徑**:使用學習範本深入理解 Laravel 核心(如 Service Container、Eloquent),並應用於實務專案。
- **團隊協作**:將範本分享給團隊,標準化 AI 輔助開發流程,提升效率。

沒有留言:

張貼留言

熱門文章