Files
ai-showcase-platform/APP_EDIT_ERROR_FIX_REPORT.md

5.3 KiB

應用編輯錯誤修正報告

問題描述

1. 應用程式類型驗證錯誤

  • 錯誤訊息: "更新失敗:無效的應用程式類型"
  • 原因: API 路由中的有效類型列表與前端映射的類型不匹配
  • 影響: 無法更新應用程式

2. 所屬部門沒有正確帶出

  • 問題: 編輯應用時,所屬部門欄位顯示空白
  • 原因: 資料來源路徑問題
  • 影響: 用戶無法看到現有的部門資訊

修正方案

1. 修正 API 路由中的有效類型列表

修改檔案: app/api/apps/[id]/route.ts

修正前:

const validTypes = ['web_app', 'mobile_app', 'desktop_app', 'api_service', 'ai_model', 'data_analysis', 'automation', 'other'];

修正後:

const validTypes = [
  'web_app', 'mobile_app', 'desktop_app', 'api_service', 'ai_model', 
  'data_analysis', 'automation', 'productivity', 'educational', 'healthcare', 
  'finance', 'iot_device', 'blockchain', 'ar_vr', 'machine_learning', 
  'computer_vision', 'nlp', 'robotics', 'cybersecurity', 'cloud_service', 'other'
];

2. 修正前端資料載入

修改檔案: components/admin/app-management.tsx

修正 loadApps 函數:

// 轉換 API 資料格式為前端期望的格式
const formattedApps = (data.apps || []).map((app: any) => ({
  ...app,
  views: app.viewsCount || 0,
  likes: app.likesCount || 0,
  appUrl: app.demoUrl || '',
  type: mapApiTypeToDisplayType(app.type), // 將 API 類型轉換為中文顯示
  icon: app.icon || 'Bot',
  iconColor: app.iconColor || 'from-blue-500 to-purple-500',
  reviews: 0, // API 中沒有評論數,設為 0
  createdAt: app.createdAt ? new Date(app.createdAt).toLocaleDateString() : '未知'
}))

修正 handleEditApp 函數:

const handleEditApp = (app: any) => {
  setSelectedApp(app)
  setNewApp({
    name: app.name,
    type: app.type, // 這裡已經是中文類型了,因為在 loadApps 中已經轉換
    department: app.creator?.department || app.department || "HQBU", // 修正:優先從 creator.department 獲取
    creator: app.creator?.name || app.creator || "", // 修正:優先從 creator.name 獲取
    description: app.description,
    appUrl: app.appUrl || app.demoUrl || "", // 修正:同時檢查 appUrl 和 demoUrl
    icon: app.icon || "Bot",
    iconColor: app.iconColor || "from-blue-500 to-purple-500",
  })
  setShowEditApp(true)
}

類型映射對照表

前端中文類型 -> API 英文類型

前端類型 API 類型 狀態
文字處理 productivity
圖像生成 ai_model
圖像處理 ai_model
語音辨識 ai_model
推薦系統 ai_model
音樂生成 ai_model
程式開發 automation
影像處理 ai_model
對話系統 ai_model
數據分析 data_analysis
設計工具 productivity
語音技術 ai_model
教育工具 educational
健康醫療 healthcare
金融科技 finance
物聯網 iot_device
區塊鏈 blockchain
AR/VR ar_vr
機器學習 machine_learning
電腦視覺 computer_vision
自然語言處理 nlp
機器人 robotics
網路安全 cybersecurity
雲端服務 cloud_service
其他 other

測試腳本

新增檔案: scripts/test-app-edit-fix.js

功能:

  • 檢查現有應用程式的資料結構
  • 測試類型映射功能
  • 驗證 API 有效類型列表
  • 確認映射的有效性

執行方式:

npm run test:app-edit-fix

修正結果

應用程式類型驗證錯誤已解決

  • API 路由現在接受所有前端映射的類型
  • 前端到後端的類型轉換正常工作
  • 不再出現 "無效的應用程式類型" 錯誤

所屬部門問題已解決

  • 編輯應用時,所屬部門欄位會正確顯示現有值
  • 資料來源優先從 app.creator?.department 獲取
  • 支援多種資料結構格式

完整的功能支援

  • 應用程式類型驗證正常
  • 所屬部門正確顯示
  • 圖示選擇和保存功能正常
  • 編輯對話框所有欄位都能正確工作

使用說明

1. 測試修正

npm run test:app-edit-fix

2. 在管理後台使用

  1. 進入應用管理頁面
  2. 點擊應用程式的「編輯應用」按鈕
  3. 確認所屬部門欄位顯示正確
  4. 修改應用類型(應該不會再出現錯誤)
  5. 選擇應用圖示
  6. 點擊「更新應用」保存變更

注意事項

  1. 類型映射: 確保前端選擇的類型能正確映射到 API 接受的類型
  2. 資料結構: 確保 API 回應包含完整的 creator 資訊
  3. 向後相容: 修正保持向後相容性,不會影響現有功能
  4. 錯誤處理: 改進了錯誤處理,提供更清晰的錯誤訊息

技術細節

API 路由修正

  • 擴展了 validTypes 陣列,包含所有前端映射的類型
  • 保持了原有的驗證邏輯
  • 確保類型安全

前端資料處理修正

  • 保留了完整的 creator 物件資訊
  • 修正了資料來源路徑
  • 改進了錯誤處理

修正完成時間: 2025-01-XX 修正人員: AI Assistant 測試狀態: 已測試 錯誤狀態: 已解決