'use client'; // File: app/(dashboard)/settings/review-teams/page.tsx // หน้าจัดการ Review Teams (FR-001, FR-002) import { useState } from 'react'; import { Plus, Users, ChevronDown, ChevronUp } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { useReviewTeams, useCreateReviewTeam, useUpdateReviewTeam } from '@/hooks/use-review-teams'; import { ReviewTeamForm } from '@/components/review-team/ReviewTeamForm'; import { TeamMemberManager } from '@/components/review-team/TeamMemberManager'; import { ReviewTeam } from '@/types/review-team'; // TODO: ดึง projectPublicId จาก context หรือ URL param จริง const MOCK_PROJECT_ID = 'current-project-public-id'; export default function ReviewTeamsPage() { const [expandedTeam, setExpandedTeam] = useState(null); const [createOpen, setCreateOpen] = useState(false); const [editTeam, setEditTeam] = useState(null); const { data: teams = [], isLoading } = useReviewTeams({ projectPublicId: MOCK_PROJECT_ID, }); const createTeam = useCreateReviewTeam(); const updateTeam = useUpdateReviewTeam(); return (

Review Teams

จัดการทีมตรวจสอบแยกตาม Discipline สำหรับ Parallel Review

Create Review Team createTeam.mutate(values, { onSuccess: () => setCreateOpen(false), }) } isLoading={createTeam.isPending} />
{isLoading && (
Loading teams...
)}
{(teams as ReviewTeam[]).map((team) => (
{team.name} {!team.isActive && ( Inactive )} {(team.defaultForRfaTypes ?? []).map((type) => ( {type} ))}
{team.description && (

{team.description}

)}
{expandedTeam === team.publicId && (
Members ({(team.members ?? []).length})
)}
))} {!isLoading && (teams as ReviewTeam[]).length === 0 && (

No Review Teams yet. Create one to enable Parallel Review.

)}
{/* Edit Dialog */} setEditTeam(null)}> Edit Review Team {editTeam && ( updateTeam.mutate( { publicId: editTeam.publicId, data: values }, { onSuccess: () => setEditTeam(null) }, ) } isLoading={updateTeam.isPending} /> )}
); }