// ===================================================== // 團隊管理 API // ===================================================== import { NextRequest, NextResponse } from 'next/server'; import { TeamService } from '@/lib/services/database-service'; // 獲取所有團隊 export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const search = searchParams.get('search') || ''; const department = searchParams.get('department') || ''; let teams = await TeamService.getAllTeams(); // 應用篩選 if (search) { teams = teams.filter(team => team.name.toLowerCase().includes(search.toLowerCase()) || team.leader_name?.toLowerCase().includes(search.toLowerCase()) ); } if (department && department !== 'all') { teams = teams.filter(team => team.department === department); } return NextResponse.json({ success: true, message: '團隊列表獲取成功', data: teams }); } catch (error) { console.error('獲取團隊列表失敗:', error); return NextResponse.json({ success: false, message: '獲取團隊列表失敗', error: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } } // 創建團隊 export async function POST(request: NextRequest) { try { const body = await request.json(); // 驗證必填字段 if (!body.name || !body.leader_id || !body.department || !body.contact_email) { return NextResponse.json({ success: false, message: '請填寫所有必填字段', error: '缺少必填字段' }, { status: 400 }); } // 檢查團隊名稱是否已存在 const existingTeam = await TeamService.getTeamByName(body.name); if (existingTeam) { return NextResponse.json({ success: false, message: '團隊名稱已存在', error: '團隊名稱重複' }, { status: 409 }); } // 創建團隊 const teamId = await TeamService.createTeam({ name: body.name, leader_id: body.leader_id, department: body.department, contact_email: body.contact_email, description: body.description }); // 如果提供了成員列表,添加成員 if (body.members && Array.isArray(body.members)) { for (const member of body.members) { if (member.user_id && member.role) { await TeamService.addTeamMember(teamId, member.user_id, member.role); } } } // 如果提供了應用列表,綁定應用 if (body.apps && Array.isArray(body.apps)) { for (const appId of body.apps) { await TeamService.bindAppToTeam(teamId, appId); } } // 獲取創建後的團隊信息 const createdTeam = await TeamService.getTeamById(teamId); return NextResponse.json({ success: true, message: '團隊創建成功', data: createdTeam }); } catch (error) { console.error('創建團隊失敗:', error); return NextResponse.json({ success: false, message: '創建團隊失敗', error: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } }