# HR 崗位管理系統 - AI 生成功能 Prompt 說明文件 > **文件版本**: v1.0 > **最後更新**: 2024-12-04 > **維護者**: AI(所以有問題真的不要問我) --- ## 📋 目錄 1. [總覽](#總覽) 2. [頁籤 1: 崗位基礎資料維護](#頁籤-1-崗位基礎資料維護) 3. [頁籤 2: 崗位招聘要求](#頁籤-2-崗位招聘要求) 4. [頁籤 3: 職務基礎資料](#頁籤-3-職務基礎資料) 5. [頁籤 4: 部門職責維護](#頁籤-4-部門職責維護) 6. [頁籤 5: 崗位描述 (JD)](#頁籤-5-崗位描述-jd) 7. [如何修改 Prompt](#如何修改-prompt) 8. [Prompt 設計原則](#prompt-設計原則) --- ## 總覽 系統中共有 **5 個頁籤**提供 AI 自動生成功能,每個頁籤都有一個 "✨ I'm feeling lucky" 按鈕。 ### 🎯 核心運作原理 1. **智能空白檢測**: 系統會檢測哪些欄位是空白的 2. **上下文感知**: 將已填寫的欄位作為上下文傳給 LLM 3. **精準生成**: 只生成尚未填寫的欄位 4. **JSON 格式回傳**: 要求 LLM 返回結構化的 JSON 資料 5. **自動填充**: 解析 JSON 並填入對應欄位 ### 🔗 對應函式與程式碼位置 | 頁籤名稱 | 函式名稱 | 程式碼位置 | 按鈕 ID/onclick | |---------|---------|-----------|----------------| | 崗位基礎資料維護 | `generatePositionBasic()` | [index.html:2179](index.html#L2179) | `onclick="generatePositionBasic()"` | | 崗位招聘要求 | `generatePositionRecruit()` | [index.html:2253](index.html#L2253) | `onclick="generatePositionRecruit()"` | | 職務基礎資料 | `generateJobBasic()` | [index.html:2330](index.html#L2330) | `onclick="generateJobBasic()"` | | 部門職責維護 | `generateDeptFunction()` | [index.html:3778](index.html#L3778) | `onclick="generateDeptFunction()"` | | 崗位描述 (JD) | `generateJobDesc()` | [index.html:2425](index.html#L2425) | `onclick="generateJobDesc()"` | --- ## 頁籤 1: 崗位基礎資料維護 ### 📍 函式位置 - **檔案**: `index.html` - **行數**: 2179-2251 - **函式**: `async function generatePositionBasic()` ### 📝 完整 Prompt ``` 請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 [如果有已填寫的資料,會附加此段] 已填寫的資料(請參考這些內容來生成相關的資料): {JSON格式的已填寫資料} 請「只生成」以下這些尚未填寫的欄位:[動態欄位列表] 欄位說明: - positionCode: 崗位編號(格式如 ENG-001, MGR-002, SAL-003) - positionName: 崗位名稱 - positionCategory: 崗位類別代碼(01=技術職, 02=管理職, 03=業務職, 04=行政職) - positionNature: 崗位性質代碼(FT=全職, PT=兼職, CT=約聘, IN=實習) - headcount: 編制人數(1-10之間的數字字串) - positionLevel: 崗位級別(L1到L7) - positionDesc: 崗位描述(2-3句話描述工作內容) - positionRemark: 崗位備注(可選的補充說明) 請直接返回JSON格式,只包含需要生成的欄位,不要有任何其他文字: { "positionCode": "...", "positionName": "...", ... } ``` ### 🎯 Prompt 設計依據 1. **上下文感知**: 如果使用者已填寫部分欄位,這些資料會被傳入作為參考 2. **精準指令**: 明確告知只生成「尚未填寫」的欄位,避免覆蓋已有資料 3. **格式規範**: 提供詳細的欄位格式說明和代碼對照表 4. **結構化輸出**: 要求返回純 JSON,方便程式解析 ### 📦 處理的欄位 ```javascript const allFields = [ 'positionCode', // 崗位編號 'positionName', // 崗位名稱 'positionCategory', // 崗位類別代碼 'positionNature', // 崗位性質代碼 'headcount', // 編制人數 'positionLevel', // 崗位級別 'positionDesc', // 崗位描述 'positionRemark' // 崗位備注 ]; ``` ### 🔧 如何修改此 Prompt 在 [index.html:2205-2223](index.html#L2205) 找到以下程式碼: ```javascript const prompt = `請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 ${contextInfo} 請「只生成」以下這些尚未填寫的欄位:${emptyFields.join(', ')} 欄位說明: - positionCode: 崗位編號(格式如 ENG-001, MGR-002, SAL-003) ... `; ``` **修改建議**: - 如果要改變生成風格:修改第一句的指令(例如:「請以專業正式的語氣生成...」) - 如果要新增欄位規則:在「欄位說明」中添加新的規範 - 如果要調整格式:修改格式範例(如改變編號規則) --- ## 頁籤 2: 崗位招聘要求 ### 📍 函式位置 - **檔案**: `index.html` - **行數**: 2253-2328 - **函式**: `async function generatePositionRecruit()` ### 📝 完整 Prompt ``` 請為HR崗位管理系統生成「{崗位名稱}」的招聘要求資料。請用繁體中文回覆。 已填寫的資料(請參考這些內容來生成相關的資料): {JSON格式的已填寫資料,包含 positionName} 請「只生成」以下這些尚未填寫的欄位:[動態欄位列表] 欄位說明: - minEducation: 最低學歷代碼(HS=高中職, JC=專科, BA=大學, MA=碩士, PHD=博士) - requiredGender: 要求性別(空字串=不限, M=男, F=女) - salaryRange: 薪酬范圍代碼(A=30000以下, B=30000-50000, C=50000-80000, D=80000-120000, E=120000以上, N=面議) - workExperience: 工作經驗年數(0=不限, 1, 3, 5, 10) - minAge: 最小年齡(18-30之間的數字字串) - maxAge: 最大年齡(35-55之間的數字字串) - jobType: 工作性質代碼(FT=全職, PT=兼職, CT=約聘, DP=派遣) - recruitPosition: 招聘職位代碼(ENG=工程師, MGR=經理, AST=助理, OP=作業員, SAL=業務) - jobTitle: 職位名稱 - jobDesc: 職位描述(2-3句話) - positionReq: 崗位要求(條列式,用換行分隔) - skillReq: 技能要求(用逗號分隔) - langReq: 語言要求 - otherReq: 其他要求 請直接返回JSON格式,只包含需要生成的欄位: { "minEducation": "...", ... } ``` ### 🎯 Prompt 設計依據 1. **職位名稱作為核心上下文**: 使用第一個頁籤的崗位名稱作為生成依據 2. **跨頁籤資料引用**: 會從「崗位基礎資料」頁籤讀取 `positionName` 3. **招聘專用代碼**: 提供完整的學歷、薪資、經驗等代碼對照 ### 📦 處理的欄位 ```javascript const allFields = [ 'minEducation', // 最低學歷 'requiredGender', // 要求性別 'salaryRange', // 薪酬范圍 'workExperience', // 工作經驗年數 'minAge', // 最小年齡 'maxAge', // 最大年齡 'jobType', // 工作性質 'recruitPosition', // 招聘職位 'jobTitle', // 職位名稱 'jobDesc', // 職位描述 'positionReq', // 崗位要求 'skillReq', // 技能要求 'langReq', // 語言要求 'otherReq' // 其他要求 ]; ``` ### 🔧 如何修改此 Prompt 在 [index.html:2275-2301](index.html#L2275) 找到程式碼。 **修改建議**: - **調整薪資範圍**: 修改 `salaryRange` 的代碼對照(例如增加更高薪資級別) - **新增性別選項**: 如果需要更多性別選項,在 `requiredGender` 中添加 - **調整經驗年限**: 修改 `workExperience` 的可用選項 --- ## 頁籤 3: 職務基礎資料 ### 📍 函式位置 - **檔案**: `index.html` - **行數**: 2330-2423 - **函式**: `async function generateJobBasic()` ### 📝 完整 Prompt ``` 請為HR職務管理系統生成職務基礎資料。請用繁體中文回覆。 [如果有已填寫的資料,會附加此段] 已填寫的資料(請參考這些內容來生成相關的資料): {JSON格式的已填寫資料} 請「只生成」以下這些尚未填寫的欄位:[動態欄位列表,可能包含 checkbox] 欄位說明: - jobCategoryCode: 職務類別代碼(MGR=管理職, TECH=技術職, SALE=業務職, ADMIN=行政職, RD=研發職, PROD=生產職) - jobCode: 職務編號(格式如 MGR-001, TECH-002) - jobName: 職務名稱 - jobNameEn: 職務英文名稱 - jobHeadcount: 編制人數(1-20之間的數字字串) - jobSortOrder: 排列順序(10, 20, 30...的數字字串) - jobRemark: 備注說明 - jobLevel: 職務層級(可以是 *保密* 或具體層級) - hasAttendanceBonus: 是否有全勤(true/false) - hasHousingAllowance: 是否住房補貼(true/false) 請直接返回JSON格式,只包含需要生成的欄位: { "jobCategoryCode": "...", ... } ``` ### 🎯 Prompt 設計依據 1. **職務 vs 崗位**: 這個頁籤處理的是「職務」(Job),與「崗位」(Position)不同 2. **Checkbox 處理**: 特殊處理 `hasAttendanceBonus` 和 `hasHousingAllowance` 兩個布林值欄位 3. **排序欄位**: `jobSortOrder` 使用 10 的倍數,方便後續插入新職務 ### 📦 處理的欄位 ```javascript const allFields = [ 'jobCategoryCode', // 職務類別代碼 'jobCode', // 職務編號 'jobName', // 職務名稱 'jobNameEn', // 職務英文名稱 'jobHeadcount', // 編制人數 'jobSortOrder', // 排列順序 'jobRemark', // 備注說明 'jobLevel' // 職務層級 ]; // 額外處理的 checkbox const checkboxes = [ 'hasAttendanceBonus', // 是否有全勤 'hasHousingAllowance' // 是否住房補貼 ]; ``` ### 🔧 如何修改此 Prompt 在 [index.html:2362-2382](index.html#L2362) 找到程式碼。 **修改建議**: - **新增職務類別**: 在 `jobCategoryCode` 中添加新的類別代碼 - **調整編號格式**: 修改 `jobCode` 的格式範例 - **修改保密設定**: 調整 `jobLevel` 的說明(如不允許保密) --- ## 頁籤 4: 部門職責維護 ### 📍 函式位置 - **檔案**: `index.html` - **行數**: 3778-3839 - **函式**: `function generateDeptFunction()` ### 📝 完整 Prompt ``` 請為HR部門職責管理系統生成部門職責資料。請用繁體中文回覆。 [如果有已填寫的資料,會附加此段] 已填寫的資料(請參考這些內容來生成相關的資料): {JSON格式的已填寫資料} 請「只生成」以下這些尚未填寫的欄位:[動態欄位列表] 欄位說明: - deptFunctionCode: 部門職責編號(格式如 DF-001, DF-002) - deptFunctionName: 部門職責名稱(例如:軟體研發部職責) - deptFunctionBU: 事業體代碼(SBU/MBU/HQBU/ITBU/HRBU/ACCBU 之一) - deptFunctionDept: 部門名稱 - deptManager: 部門主管職稱 - deptMission: 部門使命(使用「•」開頭的條列式,2-3項) - deptVision: 部門願景(使用「•」開頭的條列式,1-2項) - deptCoreFunctions: 核心職責(使用「•」開頭的條列式,4-6項) - deptKPIs: 關鍵績效指標(使用「•」開頭的條列式,3-4項) 請直接返回JSON格式,只包含需要生成的欄位,不要有任何其他文字: { "deptFunctionCode": "...", ... } ``` ### 🎯 Prompt 設計依據 1. **條列式格式**: 特別要求使用 `•` 開頭的條列式,符合部門職責文件慣例 2. **數量控制**: 明確指定每個欄位的條列項目數量(例如使命 2-3 項) 3. **事業體代碼**: 提供固定的事業體代碼選項 4. **管理導向**: 專注於部門管理層面的使命、願景、職責、KPI ### 📦 處理的欄位 ```javascript const allFields = [ 'deptFunctionCode', // 部門職責編號 'deptFunctionName', // 部門職責名稱 'deptFunctionBU', // 事業體代碼 'deptFunctionDept', // 部門名稱 'deptManager', // 部門主管職稱 'deptMission', // 部門使命(條列式) 'deptVision', // 部門願景(條列式) 'deptCoreFunctions', // 核心職責(條列式) 'deptKPIs' // 關鍵績效指標(條列式) ]; ``` ### 🔧 如何修改此 Prompt 在 [index.html:3800-3819](index.html#L3800) 找到程式碼。 **修改建議**: - **新增事業體**: 在 `deptFunctionBU` 中添加新的事業體代碼 - **調整條列數量**: 修改各欄位的條列項目數量要求 - **改變條列符號**: 將 `•` 改為其他符號(如 `1.`, `-`, `★`) --- ## 頁籤 5: 崗位描述 (JD) ### 📍 函式位置 - **檔案**: `index.html` - **行數**: 2425-2541 - **函式**: `async function generateJobDesc()` ### 📝 完整 Prompt ``` 請為HR崗位描述管理系統生成崗位描述資料。請用繁體中文回覆。 [如果有已填寫的資料,會附加此段] 已填寫的資料(請參考這些內容來生成相關的資料): {JSON格式的已填寫資料,欄位名稱已移除 jd_ 前綴} 請「只生成」以下這些尚未填寫的欄位:[動態欄位列表] 欄位說明: - empNo: 工號(格式如 A001234) - empName: 員工姓名 - positionCode: 崗位代碼 - versionDate: 版本日期(YYYY-MM-DD格式) - positionName: 崗位名稱 - department: 所屬部門 - positionEffectiveDate: 崗位生效日期(YYYY-MM-DD格式) - directSupervisor: 直接領導職務 - directReports: 直接下級(格式如「工程師 x 5人」) - workLocation: 任職地點代碼(HQ=總部, TPE=台北, TYC=桃園, KHH=高雄, SH=上海, SZ=深圳) - empAttribute: 員工屬性代碼(FT=正式員工, CT=約聘, PT=兼職, IN=實習, DP=派遣) - positionPurpose: 崗位設置目的(1句話說明) - mainResponsibilities: 主要崗位職責(用「1、」「2、」「3、」「4、」「5、」格式,每項換行,用\n分隔) - education: 教育程度要求 - basicSkills: 基本技能要求 - professionalKnowledge: 專業知識要求 - workExperienceReq: 工作經驗要求 - otherRequirements: 其他要求 請直接返回JSON格式,只包含需要生成的欄位: { "empNo": "...", ... } ``` ### 🎯 Prompt 設計依據 1. **最複雜的表單**: 包含最多欄位(18 個),涵蓋完整的 JD 內容 2. **日期格式規範**: 明確要求 YYYY-MM-DD 格式 3. **職責編號格式**: 特別指定使用「1、」「2、」格式,並用 `\n` 換行 4. **地點代碼對照**: 提供台灣與中國大陸的辦公室代碼 5. **欄位名稱映射**: 程式中會將 `jd_` 前綴移除後再傳給 API ### 📦 處理的欄位 ```javascript const allFields = [ 'jd_empNo', // 工號 'jd_empName', // 員工姓名 'jd_positionCode', // 崗位代碼 'jd_versionDate', // 版本日期 'jd_positionName', // 崗位名稱 'jd_department', // 所屬部門 'jd_positionEffectiveDate', // 崗位生效日期 'jd_directSupervisor', // 直接領導職務 'jd_directReports', // 直接下級 'jd_workLocation', // 任職地點 'jd_empAttribute', // 員工屬性 'jd_positionPurpose', // 崗位設置目的 'jd_mainResponsibilities', // 主要崗位職責 'jd_education', // 教育程度要求 'jd_basicSkills', // 基本技能要求 'jd_professionalKnowledge', // 專業知識要求 'jd_workExperienceReq', // 工作經驗要求 'jd_otherRequirements' // 其他要求 ]; ``` ### 🔧 如何修改此 Prompt 在 [index.html:2464-2492](index.html#L2464) 找到程式碼。 **特別注意**: 這個模組有欄位名稱映射機制([index.html:2499-2518](index.html#L2499)),修改欄位時需要同時更新 `fieldMapping` 物件。 **修改建議**: - **新增辦公室地點**: 在 `workLocation` 中添加新的辦公室代碼 - **調整職責數量**: 修改 `mainResponsibilities` 的編號範圍(如改為 1-10) - **新增員工屬性**: 在 `empAttribute` 中添加新的員工類型 --- ## 如何修改 Prompt ### 📝 通用修改步驟 所有 "I'm Feeling Lucky" 按鈕的 Prompt 都遵循相同的修改流程: #### 步驟 1: 找到對應函式 使用上方表格找到要修改的函式位置,例如: ``` 崗位基礎資料維護 → index.html:2179 ``` #### 步驟 2: 找到 prompt 變數 在函式中搜尋 `const prompt =` 或 `const prompt = \``: ```javascript const prompt = `請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 ... `; ``` #### 步驟 3: 修改 Prompt 內容 根據需求修改: **A. 修改生成風格** ```javascript // 修改前 const prompt = `請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 // 修改後(加入語氣要求) const prompt = `請以專業正式且友善的語氣,為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 ``` **B. 修改欄位說明** ```javascript // 修改前 - positionCode: 崗位編號(格式如 ENG-001, MGR-002, SAL-003) // 修改後(改變編號規則) - positionCode: 崗位編號(格式:部門縮寫-年份-流水號,如 ENG-2024-001) ``` **C. 新增欄位規則** ```javascript // 在「欄位說明」區塊新增 - positionPriority: 優先級(HIGH=高, MID=中, LOW=低) ``` **D. 調整輸出格式** ```javascript // 修改前 請直接返回JSON格式,只包含需要生成的欄位,不要有任何其他文字: // 修改後(要求更多資訊) 請直接返回JSON格式,只包含需要生成的欄位。每個欄位請加上「_note」後綴提供生成理由: { "positionCode": "ENG-001", "positionCode_note": "根據技術職的慣例生成", ... } ``` #### 步驟 4: 測試修改結果 1. 儲存 `index.html` 檔案 2. 重新整理瀏覽器頁面(Ctrl+F5 強制重新整理) 3. 點擊對應頁籤的 "✨ I'm feeling lucky" 按鈕 4. 檢查生成的內容是否符合預期 ### ⚠️ 修改時的注意事項 1. **保持 JSON 格式要求**: 必須要求 LLM 返回純 JSON,否則程式解析會失敗 2. **不要移除欄位動態列表**: `${emptyFields.join(', ')}` 這段必須保留 3. **維持上下文機制**: `${contextInfo}` 這段是自動填入已有資料的機制,不要刪除 4. **注意反引號**: Prompt 使用反引號 `` ` `` 包裹,內部不可再使用反引號 5. **測試跨欄位引用**: 有些頁籤會引用其他頁籤的資料(如招聘要求引用崗位名稱) --- ## Prompt 設計原則 ### 🎨 系統採用的 Prompt 設計原則 #### 1. **智能空白檢測** ```javascript const emptyFields = getEmptyFields(allFields); ``` - 只生成尚未填寫的欄位 - 避免覆蓋使用者已輸入的資料 - 提升生成效率 #### 2. **上下文感知生成** ```javascript const contextInfo = Object.keys(existingData).length > 0 ? `\n\n已填寫的資料(請參考這些內容來生成相關的資料):\n${JSON.stringify(existingData, null, 2)}` : ''; ``` - 將已填寫的資料作為上下文 - 讓 LLM 生成與現有資料一致的內容 - 提升資料連貫性 #### 3. **結構化輸出** ```javascript const prompt = `... 請直接返回JSON格式,只包含需要生成的欄位,不要有任何其他文字: { ${emptyFields.map(f => `"${f}": "..."`).join(',\n ')} }`; ``` - 要求 LLM 返回純 JSON - 提供 JSON 格式範本 - 方便程式解析 #### 4. **詳細的欄位說明** ```javascript 欄位說明: - positionCode: 崗位編號(格式如 ENG-001, MGR-002, SAL-003) - positionCategory: 崗位類別代碼(01=技術職, 02=管理職, 03=業務職, 04=行政職) ``` - 提供完整的代碼對照表 - 說明格式規範和範例 - 減少生成錯誤 #### 5. **繁體中文優先** ```javascript const prompt = `請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 ``` - 明確要求使用繁體中文 - 避免出現簡體字或英文 ### 🚀 進階 Prompt 技巧 #### 技巧 1: 加入企業特色 ```javascript // 在 prompt 開頭加入 const prompt = `你是一位專業的HR顧問,熟悉台灣半導體產業的人力資源管理。 請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。 ``` #### 技巧 2: 加入範例 ```javascript // 在欄位說明後加入 生成範例: { "positionCode": "ENG-001", "positionName": "前端工程師", "positionDesc": "負責開發和維護公司網站前端功能,提升使用者體驗。" } 請參考以上範例,生成類似格式的資料。 ``` #### 技巧 3: 加入條件邏輯 ```javascript // 根據職位類型調整 prompt const isManagerPosition = existingData.positionCategory === '02'; const extraInstruction = isManagerPosition ? '\n特別注意:這是管理職,請強調領導能力和團隊管理經驗。' : ''; const prompt = `請為HR崗位管理系統生成崗位基礎資料。請用繁體中文回覆。${extraInstruction} ``` #### 技巧 4: 加入驗證規則 ```javascript const prompt = `... 請確保生成的資料符合以下規則: 1. 崗位編號必須以部門代碼開頭 2. 編制人數必須為正整數 3. 崗位描述長度在 20-100 字之間 4. 所有代碼必須從提供的選項中選擇 ...`; ``` --- ## 🔍 偵錯與問題排查 ### 常見問題 1: LLM 返回格式錯誤 **現象**: 點擊按鈕後出現「生成失敗,請稍後再試」 **可能原因**: - LLM 返回的不是純 JSON 格式 - JSON 中包含多餘的文字說明 - JSON 格式不正確(缺少逗號、括號等) **解決方法**: 在 Prompt 中加強格式要求: ```javascript const prompt = `... 請直接返回JSON格式,不要包含任何markdown標記(如 \`\`\`json),不要有任何其他文字說明: { ${emptyFields.map(f => `"${f}": "..."`).join(',\n ')} }`; ``` ### 常見問題 2: 生成內容不符合預期 **現象**: 生成的內容格式正確,但內容不理想 **解決方法**: 1. 檢查上下文資料是否正確傳遞 2. 增加更詳細的欄位說明 3. 提供具體範例 4. 調整 Prompt 語氣和指令 ### 常見問題 3: 部分欄位未填充 **現象**: 只填充了部分欄位,其他欄位仍為空 **可能原因**: - LLM 返回的 JSON 缺少某些欄位 - 欄位名稱不匹配(大小寫、前綴問題) **解決方法**: 檢查欄位映射邏輯,特別是 `generateJobDesc()` 函式中的 `fieldMapping`: ```javascript const fieldMapping = { 'empNo': 'jd_empNo', 'empName': 'jd_empName', ... }; ``` --- ## 📚 參考資源 ### 相關檔案 - **主程式**: [index.html](index.html) - 包含所有 AI 生成函式 - **LLM API 配置**: [llm_config.py](llm_config.py) - LLM 模型設定 - **環境變數**: [.env](.env) - API Key 和模型設定 ### 相關函式 - **`callClaudeAPI(prompt)`**: 呼叫 LLM API 的核心函式 - **`getEmptyFields(allFields)`**: 檢測空白欄位 - **`fillIfEmpty(fieldId, value)`**: 只填充空白欄位 - **`setButtonLoading(btn, isLoading)`**: 設定按鈕載入狀態 ### LLM 模型設定 系統支援多種 LLM 模型,在 `.env` 檔案中設定: ```env # Gemini API Configuration GEMINI_API_KEY=your_api_key GEMINI_MODEL=gemini-1.5-flash # DeepSeek API Configuration DEEPSEEK_API_KEY=your_deepseek_api_key DEEPSEEK_API_URL=https://api.deepseek.com/v1 # OpenAI API Configuration OPENAI_API_KEY=your_openai_api_key OPENAI_API_URL=https://api.openai.com/v1 # Ollama API Configuration OLLAMA_API_URL=https://ollama_pjapi.theaken.com OLLAMA_MODEL=deepseek-reasoner ``` --- ## ✅ 最佳實踐 ### ✨ 撰寫好的 Prompt 的建議 1. **明確的指令**: 清楚說明要生成什麼類型的資料 2. **詳細的格式說明**: 提供完整的代碼對照表和格式範例 3. **上下文資訊**: 包含已填寫的資料作為參考 4. **結構化輸出**: 要求返回 JSON 格式,方便解析 5. **語言偏好**: 明確指定使用繁體中文 6. **錯誤處理**: 加入驗證規則,減少生成錯誤 ### 📝 Prompt 維護建議 1. **版本控制**: 重大修改前先備份原 Prompt 2. **測試驗證**: 每次修改後都要測試所有情境 3. **文件更新**: 修改後同步更新此說明文件 4. **使用者回饋**: 根據實際使用情況調整 Prompt --- ## 🎯 總結 ### 快速參考表 | 頁籤 | 函式 | 程式碼行數 | 主要用途 | 欄位數量 | |-----|------|-----------|---------|---------| | 崗位基礎資料 | `generatePositionBasic()` | 2179-2251 | 生成崗位基本資訊 | 8 | | 崗位招聘要求 | `generatePositionRecruit()` | 2253-2328 | 生成招聘需求 | 14 | | 職務基礎資料 | `generateJobBasic()` | 2330-2423 | 生成職務資訊 | 8+2 checkbox | | 部門職責維護 | `generateDeptFunction()` | 3778-3839 | 生成部門職責 | 9 | | 崗位描述 (JD) | `generateJobDesc()` | 2425-2541 | 生成完整JD | 18 | ### 核心機制 1. **智能檢測**: 自動識別空白欄位 2. **上下文感知**: 參考已填寫資料生成 3. **結構化輸出**: JSON 格式便於解析 4. **安全填充**: 只填充空白欄位,不覆蓋現有資料 --- > **維護提醒**: 當系統新增或修改欄位時,記得同步更新: > 1. HTML 表單欄位 > 2. JavaScript 函式中的 `allFields` 陣列 > 3. Prompt 中的欄位說明 > 4. 此說明文件 --- **文件結束** | 有問題請找 AI,不要找我 ¯\\_(ツ)_/¯