7.0 KiB
7.0 KiB
대시보드 관리 기능 검증 보고서 (Validation Report)
본 문서는 .agent/plan_dashboard_management.md 계획서를 기준으로 B01_Dashboard 관련 프론트엔드 및 백엔드 코드를 검증한 결과를 담고 있습니다.
1. 종합 평가
- 백엔드 (FastAPI/Python): 계획서상 정의된 핵심 비즈니스 로직(역할 변경 및 제약조건, 마지막 ADMIN 보호 등)은 일정 부분 반영되었으나, 자동화 로직의 USER 조회 권한 누수 등 계획서 명세와 다른 부분이 발견되었습니다.
- 프론트엔드 (TypeScript): 프로젝트 수정/삭제, 사용자 수정/삭제/역할변경, 자동화 설계 로직 모달 등 계획서 9번에 정의된 주요 UI 컴포넌트(모달) 및 권한 검증 헬퍼가 대부분 미구현(누락) 상태입니다.
- 다국어 (i18n): 계획서 8번에서 명시한 다국어 문구 키들이
ui_template_locale.ts에 전혀 반영되지 않았습니다.
2. 세부 검증 항목 및 대조 결과
2.1 UI 컴포넌트 및 제어 (프론트엔드)
| 요구 기능 (계획서 9. UI 컴포넌트) | 구현 상태 | 확인 코드 및 위치 | 특이사항 / 개선 필요 사항 |
|---|---|---|---|
프로젝트 수정 모달 (openEditProjectModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
프로젝트 목록에 수정 버튼 및 모달이 존재하지 않음 |
프로젝트 삭제 확인 모달 (openDeleteProjectModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
프로젝트 삭제 버튼 및 경고 모달 없음 |
사용자 추가 모달 (openAddUserModal) |
⚠️ 부분구현 | openAddMemberModal | 가입 계정 목록 조회 형식이 아니라 단순 이메일 입력 방식임 |
사용자 수정 모달 (openEditUserModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
사용자 수정 액션 및 모달 없음 |
사용자 역할 변경 모달 (openChangeRoleModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
역할 변경 모달 없음 |
사용자 삭제 확인 모달 (openDeleteUserModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
삭제 버튼은 있으나 단순 API 호출 처리 (경고 모달 없음) |
자동화 로직 생성/수정 모달 (openAutomationModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
대시보드 UI에 자동화 설계 로직 섹션이 완전 누락됨 |
자동화 로직 삭제 확인 모달 (openDeleteAutomationModal) |
❌ 미구현 | B01_Dashboard_UI_Page.ts |
위와 동일 |
2.2 권한 검증 헬퍼 (프론트엔드)
| 요구 헬퍼 함수 (계획서 9. 권한 검증 헬퍼) | 구현 상태 | 개선 필요 사항 |
|---|---|---|
canEditProject(user, project) |
❌ 미구현 | UI 단의 권한 체크 분기 부재 |
canDeleteProject(user) |
❌ 미구현 | SYSTEM_ADMIN 분기 처리 미흡 |
canAddUser(user) |
❌ 미구현 | - |
canChangeRole(user, targetUser) |
❌ 미구현 | - |
canDeleteUser(user, targetUser) |
❌ 미구현 | - |
canManageAutomation(user, automation) |
❌ 미구현 | - |
isLastAdmin(user, company) |
❌ 미구현 | 프론트엔드 예외 처리 없음 (백엔드만 동작) |
2.3 API 및 백엔드 권한 검증 (백엔드)
| API 엔드포인트 / 기능 | 계획서 스펙 | 실제 구현 위치 | 검증 결과 |
|---|---|---|---|
| 프로젝트 수정 API | /api/projects/{id} |
dashboard_update_project | 통과 (경로명 상이): 실 주소는 /api/dashboard/projects/{project_id} 임 |
| 프로젝트 삭제 API | /api/projects/{id} (SYSTEM_ADMIN만) |
dashboard_delete_project | 통과 (경로명 상이): require_system_admin 데코레이터 적용 완료 |
| 사용자 추가 API | /api/companies/{cid}/users |
admin_add_member | 통과: require_company_admin으로 가입 계정 추가 제어 |
| 사용자 정보 수정 API | /api/users/{id} (필드 제한) |
admin_update_user | 부분 통과: USER일 때 status를 강제 비우는 세이프가드는 있으나, 다른 관리자 필드 차단 확인 필요 |
| 사용자 역할 변경 API | /api/users/{id}/role |
system_change_role | 통과: SYSTEM_ADMIN 변경 방지 및 마지막 ADMIN 변경 불가 보장 |
| 사용자 삭제 API | /api/companies/{cid}/users/{uid} |
admin_remove_member | 통과: 맴버 삭제 처리 로직 작동 |
| 자동화 로직 조회 API | /api/projects/{pid}/automations |
dashboard_project_automations | ❌ 위반: 일반 USER 권한도 조회 가능하게 설계되어 계획서의 USER 조회 불가(매트릭스 2.4) 위반 |
3. 핵심 수정 필요 사항
- 다국어 키 반영:
ui_template_locale.ts파일 하단에 계획서 8번의 다국어 문구 객체를 온전히 삽입해야 합니다. - 백엔드 권한 통제 강화:
B01_Dashboard_Router.py의dashboard_project_automations등에서USER권한을 가진 사용자의 자동화 로직 조회를 차단해야 합니다. - 프론트엔드 UI/UX 완성:
계획서에 제시된 수정/삭제 모달 창을
B01_Dashboard_UI_Page.ts에 추가 구현하고 관련 버튼들을 조건부 활성화 및 노출 처리해야 합니다.