主要功能更新: - 崗位描述保存功能:保存後資料寫入資料庫 - 崗位清單自動刷新:切換模組時自動載入最新資料 - 崗位清單檢視功能:點擊「檢視」按鈕載入對應描述 - 管理者頁面擴充:新增崗位資料管理與匯出功能 - CSV 批次匯入:支援崗位與職務資料批次匯入 後端 API 新增: - Position Description CRUD APIs - Position List Query & Export APIs - CSV Template Download & Import APIs 文件更新: - SDD.md 更新至版本 2.1 - README.md 更新功能說明與版本歷史 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
91 lines
3.0 KiB
Python
91 lines
3.0 KiB
Python
"""
|
||
修正 Gemini 模型名稱和關閉按鈕
|
||
"""
|
||
|
||
# 1. 修正 llm_config.py 中的 Gemini 模型
|
||
with open('llm_config.py', 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
# 備份
|
||
with open('llm_config.py.backup', 'w', encoding='utf-8') as f:
|
||
f.write(content)
|
||
|
||
# 替換模型名稱:gemini-pro -> gemini-2.0-flash-exp
|
||
old_model = 'gemini-pro'
|
||
new_model = 'gemini-2.0-flash-exp' # 使用最新的 Gemini 2.0 Flash
|
||
|
||
content = content.replace(
|
||
f'models/{old_model}:generateContent',
|
||
f'models/{new_model}:generateContent'
|
||
)
|
||
|
||
if 'gemini-2.0-flash-exp' in content:
|
||
print(f"SUCCESS: Updated Gemini model to {new_model}")
|
||
else:
|
||
print("ERROR: Could not update model")
|
||
|
||
with open('llm_config.py', 'w', encoding='utf-8') as f:
|
||
f.write(content)
|
||
|
||
|
||
# 2. 修正 index.html 中的關閉按鈕
|
||
with open('index.html', 'r', encoding='utf-8') as f:
|
||
html_content = f.read()
|
||
|
||
# 備份
|
||
with open('index.html.backup3', 'w', encoding='utf-8') as f:
|
||
f.write(html_content)
|
||
|
||
# 找到並修正關閉按鈕
|
||
# 問題:onclick 使用了複雜的選擇器,可能失效
|
||
# 解決:使用更簡單可靠的方式
|
||
|
||
old_close_button = '''<button onclick="this.closest('[style*=\\'position: fixed\\']').remove()"'''
|
||
new_close_button = '''<button onclick="closeErrorModal(this)"'''
|
||
|
||
if old_close_button in html_content:
|
||
html_content = html_content.replace(old_close_button, new_close_button)
|
||
print("SUCCESS: Updated close button onclick")
|
||
else:
|
||
print("INFO: Close button pattern not found (might be already fixed)")
|
||
|
||
# 添加 closeErrorModal 函數(如果不存在)
|
||
if 'function closeErrorModal' not in html_content:
|
||
close_modal_function = '''
|
||
// 關閉錯誤訊息對話框
|
||
function closeErrorModal(button) {
|
||
const modal = button.closest('[style*="position: fixed"]');
|
||
if (modal) {
|
||
modal.style.opacity = '0';
|
||
setTimeout(() => modal.remove(), 300);
|
||
}
|
||
}
|
||
'''
|
||
|
||
# 在 showCopyableError 函數後添加
|
||
if 'function showCopyableError' in html_content:
|
||
html_content = html_content.replace(
|
||
' // 複製錯誤訊息到剪貼板',
|
||
close_modal_function + '\n // 複製錯誤訊息到剪貼板'
|
||
)
|
||
print("SUCCESS: Added closeErrorModal function")
|
||
|
||
# 同時修正底部的確定按鈕
|
||
old_confirm_button = '''<button onclick="this.closest('[style*=\\'position: fixed\\']').remove()"'''
|
||
if old_confirm_button in html_content:
|
||
html_content = html_content.replace(old_confirm_button, new_close_button)
|
||
print("SUCCESS: Updated confirm button onclick")
|
||
|
||
with open('index.html', 'w', encoding='utf-8') as f:
|
||
f.write(html_content)
|
||
|
||
print("\nAll fixes applied!")
|
||
print("\nChanges made:")
|
||
print(f"1. Gemini model: {old_model} -> {new_model}")
|
||
print("2. Close button: Fixed onclick handler")
|
||
print("3. Added closeErrorModal function")
|
||
print("\nNext steps:")
|
||
print("1. Restart Flask server")
|
||
print("2. Reload browser page (Ctrl+F5)")
|
||
print("3. Test AI generation")
|