177 lines
5.3 KiB
Markdown
177 lines
5.3 KiB
Markdown
# 應用編輯錯誤修正報告
|
|
|
|
## 問題描述
|
|
|
|
### 1. 應用程式類型驗證錯誤
|
|
- **錯誤訊息**: "更新失敗:無效的應用程式類型"
|
|
- **原因**: API 路由中的有效類型列表與前端映射的類型不匹配
|
|
- **影響**: 無法更新應用程式
|
|
|
|
### 2. 所屬部門沒有正確帶出
|
|
- **問題**: 編輯應用時,所屬部門欄位顯示空白
|
|
- **原因**: 資料來源路徑問題
|
|
- **影響**: 用戶無法看到現有的部門資訊
|
|
|
|
## 修正方案
|
|
|
|
### 1. 修正 API 路由中的有效類型列表
|
|
|
|
**修改檔案**: `app/api/apps/[id]/route.ts`
|
|
|
|
**修正前**:
|
|
```typescript
|
|
const validTypes = ['web_app', 'mobile_app', 'desktop_app', 'api_service', 'ai_model', 'data_analysis', 'automation', 'other'];
|
|
```
|
|
|
|
**修正後**:
|
|
```typescript
|
|
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 函數**:
|
|
```typescript
|
|
// 轉換 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 函數**:
|
|
```typescript
|
|
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 有效類型列表
|
|
- 確認映射的有效性
|
|
|
|
**執行方式**:
|
|
```bash
|
|
npm run test:app-edit-fix
|
|
```
|
|
|
|
## 修正結果
|
|
|
|
### ✅ 應用程式類型驗證錯誤已解決
|
|
- API 路由現在接受所有前端映射的類型
|
|
- 前端到後端的類型轉換正常工作
|
|
- 不再出現 "無效的應用程式類型" 錯誤
|
|
|
|
### ✅ 所屬部門問題已解決
|
|
- 編輯應用時,所屬部門欄位會正確顯示現有值
|
|
- 資料來源優先從 `app.creator?.department` 獲取
|
|
- 支援多種資料結構格式
|
|
|
|
### ✅ 完整的功能支援
|
|
- 應用程式類型驗證正常
|
|
- 所屬部門正確顯示
|
|
- 圖示選擇和保存功能正常
|
|
- 編輯對話框所有欄位都能正確工作
|
|
|
|
## 使用說明
|
|
|
|
### 1. 測試修正
|
|
```bash
|
|
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
|
|
**測試狀態**: ✅ 已測試
|
|
**錯誤狀態**: ✅ 已解決 |