優化應用 APP 新增、編輯邏輯

This commit is contained in:
2025-08-06 16:33:11 +08:00
parent dc4594a4cd
commit af88c0f037
100 changed files with 5592 additions and 7160 deletions

View File

@@ -0,0 +1,155 @@
// 模擬前端類型映射函數
const mapApiTypeToDisplayType = (apiType) => {
const typeMap = {
'productivity': '文字處理',
'ai_model': '圖像生成',
'automation': '程式開發',
'data_analysis': '數據分析',
'educational': '教育工具',
'healthcare': '健康醫療',
'finance': '金融科技',
'iot_device': '物聯網',
'blockchain': '區塊鏈',
'ar_vr': 'AR/VR',
'machine_learning': '機器學習',
'computer_vision': '電腦視覺',
'nlp': '自然語言處理',
'robotics': '機器人',
'cybersecurity': '網路安全',
'cloud_service': '雲端服務',
'other': '其他'
};
return typeMap[apiType] || '其他';
};
// 模擬 handleEditApp 函數(修正後)
const handleEditApp = (app) => {
console.log('=== handleEditApp Debug ===');
console.log('Input app:', app);
console.log('app.type:', app.type);
console.log('app.department:', app.department);
console.log('app.creator:', app.creator);
// 處理類型轉換:如果類型是英文的,轉換為中文
let displayType = app.type;
if (app.type && !['文字處理', '圖像生成', '程式開發', '數據分析', '教育工具', '健康醫療', '金融科技', '物聯網', '區塊鏈', 'AR/VR', '機器學習', '電腦視覺', '自然語言處理', '機器人', '網路安全', '雲端服務', '其他'].includes(app.type)) {
displayType = mapApiTypeToDisplayType(app.type);
}
// 處理部門和創建者資料
let department = app.department;
let creator = app.creator;
// 如果 app.creator 是物件(來自詳細 API提取名稱
if (app.creator && typeof app.creator === 'object') {
creator = app.creator.name || "";
department = app.creator.department || app.department || "HQBU";
}
const newAppData = {
name: app.name,
type: displayType,
department: department || "HQBU",
creator: creator || "",
description: app.description,
appUrl: app.appUrl || app.demoUrl || "",
icon: app.icon || "Bot",
iconColor: app.iconColor || "from-blue-500 to-purple-500",
};
console.log('newAppData:', newAppData);
return newAppData;
};
async function testEditAppConsistency() {
console.log('🧪 測試編輯應用功能一致性...\n');
// 1. 模擬列表中的應用資料(來自 loadApps
const listApp = {
id: 'test123',
name: '測試應用程式',
description: '這是一個測試應用程式',
type: '文字處理', // 已經轉換為中文
department: 'HQBU',
creator: '測試創建者',
appUrl: 'https://example.com',
icon: 'Bot',
iconColor: 'from-blue-500 to-purple-500'
};
// 2. 模擬詳細 API 返回的應用資料
const detailApp = {
id: 'test123',
name: '測試應用程式',
description: '這是一個測試應用程式',
type: 'productivity', // 英文類型
department: 'HQBU',
creator: {
id: 'user123',
name: '測試創建者',
email: 'test@example.com',
department: 'HQBU',
role: 'developer'
},
demoUrl: 'https://example.com',
icon: 'Bot',
iconColor: 'from-blue-500 to-purple-500'
};
console.log('📋 測試列表中的編輯功能:');
console.log('輸入資料:', listApp);
const listResult = handleEditApp(listApp);
console.log('處理結果:', listResult);
console.log('\n📋 測試詳細對話框中的編輯功能:');
console.log('輸入資料:', detailApp);
const detailResult = handleEditApp(detailApp);
console.log('處理結果:', detailResult);
// 3. 驗證一致性
console.log('\n✅ 一致性檢查:');
const fieldsToCheck = ['name', 'type', 'department', 'creator', 'description', 'appUrl', 'icon', 'iconColor'];
fieldsToCheck.forEach(field => {
const listValue = listResult[field];
const detailValue = detailResult[field];
const isConsistent = listValue === detailValue;
console.log(` ${field}: ${listValue} vs ${detailValue} ${isConsistent ? '✅' : '❌'}`);
});
// 4. 測試不同類型的轉換
console.log('\n🔍 測試類型轉換:');
const testTypes = [
{ apiType: 'productivity', expected: '文字處理' },
{ apiType: 'ai_model', expected: '圖像生成' },
{ apiType: 'automation', expected: '程式開發' },
{ apiType: 'data_analysis', expected: '數據分析' },
{ apiType: 'educational', expected: '教育工具' },
{ apiType: 'healthcare', expected: '健康醫療' },
{ apiType: 'finance', expected: '金融科技' },
{ apiType: 'iot_device', expected: '物聯網' },
{ apiType: 'blockchain', expected: '區塊鏈' },
{ apiType: 'ar_vr', expected: 'AR/VR' },
{ apiType: 'machine_learning', expected: '機器學習' },
{ apiType: 'computer_vision', expected: '電腦視覺' },
{ apiType: 'nlp', expected: '自然語言處理' },
{ apiType: 'robotics', expected: '機器人' },
{ apiType: 'cybersecurity', expected: '網路安全' },
{ apiType: 'cloud_service', expected: '雲端服務' },
{ apiType: 'other', expected: '其他' }
];
testTypes.forEach(({ apiType, expected }) => {
const testApp = {
...detailApp,
type: apiType
};
const result = handleEditApp(testApp);
const isCorrect = result.type === expected;
console.log(` ${apiType} -> ${result.type} ${isCorrect ? '✅' : '❌'}`);
});
console.log('\n✅ 編輯應用功能一致性測試完成!');
}
testEditAppConsistency().catch(console.error);