ID: key_26_22_05_25_P2_2_5 Created date: 5월 25 2026 월요일

연관 문서


개요

프로젝트 기본 정보 수정 및 멤버 관리 UI를 구현한다.
역할(RBAC) 기반 권한 설정을 포함한다.

  • 예상 소요: 2~3일
  • 선행 조건: Phase 1 완료
  • 완료 기준: 프로젝트 관리자가 멤버 추가/제거/역할 변경 가능 확인

Claude Code 작업 수행서

작업 지시

CIRA 서버 + UI에 프로젝트 설정 기능을 구현해줘.

[서버 수행 작업]

1. 프로젝트 설정 API
   PUT    /api/v1/projects/{projectId}                        — 프로젝트 기본 정보 수정
   GET    /api/v1/projects/{projectId}/members                — 멤버 목록
   POST   /api/v1/projects/{projectId}/members                — 멤버 추가 (이메일로 초대)
   PUT    /api/v1/projects/{projectId}/members/{userId}/role  — 역할 변경
   DELETE /api/v1/projects/{projectId}/members/{userId}       — 멤버 제거

2. 권한 제어
   - 멤버 추가/제거/역할 변경: ADMIN 또는 프로젝트 Owner만 가능
   - Owner 자신을 제거 불가 (마지막 Admin 보호)
   - 역할: ADMIN, DEVELOPER, REPORTER, VIEWER

3. 멤버 초대
   - 이메일로 기존 users 테이블 검색
   - 없는 경우: 에러 (USER_NOT_FOUND) — 초대 이메일 발송은 Phase 3
   - 이미 멤버인 경우: 에러 (PROJECT_MEMBER_ALREADY_EXISTS)

[UI 수행 작업]

4. 설정 페이지 구조
   파일: src/app/(main)/projects/[projectId]/settings/
   ├── page.tsx          → /settings (기본 정보)
   ├── members/page.tsx  → /settings/members
   └── workflow/page.tsx → /settings/workflow (상태 전이 규칙)

5. 기본 정보 탭
   - 프로젝트 이름 수정
   - 설명 수정
   - 프로젝트 키 표시 (수정 불가 — 이슈 키에 영향)
   - 프로젝트 타입 (SCRUM / KANBAN)
   - 저장 버튼

6. 멤버 관리 탭
   컴포넌트: MemberTable
   - 컬럼: 아바타, 이름, 이메일, 역할 드롭다운, 제거 버튼
   - 역할 드롭다운: ADMIN만 변경 가능
   - 멤버 추가 버튼 → AddMemberModal
     * 이메일 입력 + 역할 선택
     * 추가 시 즉시 목록 반영

7. 워크플로우 탭 (간단 버전)
   - 현재 상태 목록 표시
   - 상태 추가/삭제 (Admin만)
   - 상태 전이 규칙 매트릭스 (체크박스 형태)
   - 저장 시 issue_transitions 테이블 일괄 업데이트

8. 설정 네비게이션
   - 좌측 사이드 탭 메뉴
   - 현재 사용자가 ADMIN이 아니면 설정 메뉴 비노출

완료 기준

항목기준
기본 정보 수정저장 후 즉시 반영
멤버 추가이메일 검색 → 추가 → 목록 반영
역할 변경ADMIN만 가능, 즉시 반영
멤버 제거확인 다이얼로그 → 제거
권한 제어비ADMIN 접근 시 버튼 비활성