# B01_Dashboard 구현 검증 계획 **상태:** 구현 전 설계 검증 단계 **참고:** 완료된 검증은 `.agent/complete_and_old/plan_register_split_validation_COMPLETED.md` 참조 --- ## 📋 B01_Dashboard 구현 체크리스트 B01_Dashboard 페이지는 로그인 후 메인 랜딩 페이지로, 역할에 따라 다양한 섹션을 동적으로 표시합니다. ### 현재 상태 - ✅ 기본 설계 완료 - ❌ **백엔드 API 미구현** (역할별 엔드포인트) - ❌ **프론트엔드 UI 미구현** (역할별 컴포넌트) - ❌ **DB 스키마 업데이트 미실행** (사용자/회사/조직 테이블) ### 구현 필요 항목 #### DB 스키마 업데이트 ``` [ ] users 테이블 컬럼 추가 [ ] role (ENUM: SYSTEM_ADMIN, ADMIN, USER) [ ] is_master (BOOLEAN) [ ] status (ENUM: PENDING_EMAIL, NO_COMPANY, PENDING, ACTIVE, INACTIVE, REJECTED) [ ] last_login (DATETIME) [ ] auth_expires_at (DATETIME) [ ] 신규 테이블 생성 [ ] join_requests 테이블 [ ] system_audit_logs 테이블 [ ] system_resources 테이블 ``` #### 백엔드 (B01_Dashboard) ``` [ ] B01_Dashboard_Router.py 신규 생성 # 공통 API [ ] GET /api/dashboard/me [ ] PATCH /api/dashboard/me # USER 역할 API [ ] GET /api/dashboard/user/projects [ ] GET /api/dashboard/user/company [ ] GET /api/dashboard/user/companies?q= [ ] POST /api/dashboard/user/company/create [ ] POST /api/dashboard/user/company/join # ADMIN 역할 API [ ] GET /api/dashboard/admin/members [ ] POST /api/dashboard/admin/members [ ] DELETE /api/dashboard/admin/members/{user_id} [ ] GET /api/dashboard/admin/join-requests [ ] PATCH /api/dashboard/admin/join-requests/{request_id} [ ] GET /api/dashboard/admin/projects # SYSTEM_ADMIN 역할 API [ ] GET /api/dashboard/admin/companies [ ] GET /api/dashboard/admin/users [ ] PATCH /api/dashboard/admin/users/{user_id}/role [ ] PATCH /api/dashboard/admin/users/{user_id}/company [ ] GET /api/dashboard/admin/join-requests-all [ ] PATCH /api/dashboard/admin/join-requests/{request_id}/approve [ ] GET /api/dashboard/admin/audit-logs [ ] GET /api/dashboard/admin/resources [ ] B01_Dashboard_Schema.py 신규 생성 [ ] UpdateUserRequest [ ] CreateCompanyRequest [ ] JoinCompanyRequest [ ] AddMemberRequest [ ] ProcessJoinRequest [ ] ChangeUserRoleRequest [ ] AssignCompanyRequest [ ] B01_Dashboard_Repository.py 신규 생성 [ ] 사용자 정보 조회/수정 SQL [ ] 회사 조회/생성 SQL [ ] 팀원 조회/추가/제거 SQL [ ] 가입 신청 조회/승인/거절 SQL [ ] 시스템 로그 조회 SQL [ ] 리소스 모니터링 SQL ``` #### 프론트엔드 (B01_Dashboard) ``` [ ] B01_Dashboard_UI_Page.ts 신규 생성 [ ] 역할별 섹션 조건부 렌더링 [ ] ProjectListSection (USER, ADMIN) [ ] CompanyInfoSection (USER, ADMIN) [ ] TeamMembersSection (ADMIN) [ ] JoinRequestsSection (ADMIN) [ ] ResourceStatusSection (SYSTEM_ADMIN) [ ] CompanyManagementSection (SYSTEM_ADMIN) [ ] UserManagementSection (SYSTEM_ADMIN) [ ] JoinRequestsManagementSection (SYSTEM_ADMIN) [ ] SystemAuditLogsSection (SYSTEM_ADMIN) [ ] SystemResourcesGraphSection (SYSTEM_ADMIN) [ ] ProfileSection (모든 역할) [ ] B01_Dashboard_Api_Fetch.ts 신규 생성 [ ] fetchDashboardMe() [ ] updateUserProfile() [ ] fetchUserProjects() [ ] fetchUserCompany() [ ] searchCompanies() [ ] createCompany() [ ] joinCompany() [ ] fetchCompanyMembers() [ ] addCompanyMember() [ ] removeCompanyMember() [ ] fetchCompanyJoinRequests() [ ] processJoinRequest() [ ] fetchCompanyProjects() [ ] fetchAllCompanies() [ ] fetchAllUsers() [ ] changeUserRole() [ ] assignUserToCompany() [ ] fetchAllJoinRequests() [ ] systemApproveJoinRequest() [ ] fetchAuditLogs() [ ] fetchSystemResources() [ ] B01_Dashboard_UI_Style.css 신규 생성 [ ] 역할별 섹션 레이아웃 [ ] 프로젝트 리스트 테이블 스타일 [ ] 워크플로우 진행도 시각화 [ ] 팝업 모달 스타일 [ ] 그래프/차트 영역 스타일 [ ] ui_template_locale.ts 확장 [ ] 역할별 섹션 제목 및 버튼 문구 [ ] 회사 관리, 팀원 관리, 가입 요청 관련 문구 [ ] 시스템 로그, 리소스 모니터링 관련 문구 ``` --- ## 기능 상세 검증 항목 ### 프로젝트 리스트 워크플로우 표시 **UI 검증 포인트:** - [ ] 각 프로젝트별 진행도 정상 계산 (B03~B09 단계 기준) - [ ] 워크플로우 단계 버튼 활성화/비활성화 정상 작동 - [ ] 완료된 단계 클릭 시 해당 페이지로 이동 - [ ] 진행 중 단계 클릭 시 현재 진행 상태 표시 - [ ] 미진행 단계 클릭 시 반응 없음 (비활성화 상태 유지) **데이터 검증 포인트:** - [ ] projects.status 값이 올바르게 매핑되는지 확인 - [ ] 프로젝트명, 지역, 수정일 정상 표시 - [ ] [+ 신규 프로젝트] 버튼 클릭 시 B02_ProjRegister로 이동 ### 회사 상태 섹션 (USER 역할) **상태별 UI 검증:** - [ ] `status = 'NO_COMPANY'`: "회사 미연결" + [회사 생성] [회사 찾기] 버튼 - [ ] `status = 'PENDING'`: "가입 승인 대기 중 (회사명)" 표시 - [ ] `status = 'ACTIVE'`: "회사명 (ACTIVE)" + [회사 변경] 버튼 **회사 생성 팝업 검증:** - [ ] [회사 생성] 클릭 시 모달 팝업 노출 - [ ] 회사 정보 입력 (이름, 사업자등록번호, 주소, 대표자명) - [ ] [생성] 클릭 시 API 호출 (로딩 오버레이 표시) - [ ] 성공 메시지 표시 후 페이지 자동 새로고침 - [ ] DB 확인: users.role = 'ADMIN', is_master = TRUE, status = 'ACTIVE' **회사 검색/신청 팝업 검증:** - [ ] [회사 찾기] 클릭 시 모달 팝업 노출 - [ ] 검색어 입력 → [검색] 클릭 - [ ] 회사 리스트 표시 (회사명, 사업자번호) - [ ] 회사 선택 후 [신청] 클릭 - [ ] DB 확인: join_requests 생성, users.status = 'PENDING' ### 팀원 관리 섹션 (ADMIN 역할) **팀원 추가 검증:** - [ ] [+ 팀원 추가] 클릭 시 모달 팝업 노출 - [ ] 기가입 사용자 이메일 입력 → [검색] - [ ] 사용자 정보 표시 (이메일, 이름, 직급) - [ ] [추가] 클릭 시 API 호출 - [ ] DB 확인: users.company_id 업데이트 - [ ] 중복 추가 시 "이미 팀원입니다" 오류 메시지 **팀원 리스트 표시:** - [ ] 현재 회사의 모든 팀원 조회 (테이블) - [ ] 이메일, 이름, 직급, 부서, 역할, 상태 정상 표시 - [ ] [제거] 버튼 클릭 시 팀원 제거 ### 가입 요청 섹션 (ADMIN 역할) **가입 요청 리스트 검증:** - [ ] 이 회사에 신청한 사용자 리스트 표시 - [ ] 신청자 이메일, 신청일, 상태 정상 표시 - [ ] [승인] 클릭 시 join_requests.status = 'APPROVED' - [ ] [거절] 클릭 시 join_requests.status = 'REJECTED' - [ ] 사용자에게 결과 이메일 발송 ### 시스템 관리 섹션 (SYSTEM_ADMIN 역할) **리소스 현황 검증:** - [ ] CPU, 메모리, 디스크 사용률 실시간 표시 - [ ] 활성 사용자 수, 활성 프로젝트 수 표시 **회사 관리 검증:** - [ ] 전체 회사 리스트 조회 (테이블) - [ ] 회사명, 사업자번호, 상태, 사용자 수 정상 표시 - [ ] [+ 회사 추가] 버튼 (회사 신규 생성) **사용자 관리 검증:** - [ ] 전체 사용자 리스트 조회 (테이블) - [ ] 이메일, 이름, 역할, 회사, 상태 정상 표시 - [ ] [역할 변경] 클릭 시 역할 선택 팝업 - [ ] [회사 할당] 클릭 시 회사 선택 팝업 **시스템 로그 검증:** - [ ] 전체 로그 조회 (테이블) - [ ] 사용자, 행동(LOGIN, USER_CREATE 등), 대상, 타임스탬프 정상 표시 - [ ] 기간, 사용자, 행동 유형별 필터링 정상 작동 **리소스 모니터링 그래프:** - [ ] CPU 사용량 그래프 (시간대별) - [ ] 메모리 사용량 그래프 - [ ] 디스크 사용량 그래프 - [ ] 동시 접속자 수 추이 그래프 ### 인증 갱신 검증 **로그인 기반 인증 갱신:** - [ ] 로그인 성공 시 users.last_login 업데이트 - [ ] users.auth_expires_at = NOW() + 3개월 설정 - [ ] 유효한 인증: auth_expires_at > NOW() → 바로 대시보드 이동 - [ ] 만료된 인증: auth_expires_at <= NOW() → 재인증 모달 표시 --- ## 통합 테스트 시나리오 (다음 단계) ### 시나리오 1: 회사 생성 (USER → ADMIN 전환) **前提:** ```bash python main.py ``` **테스트 단계:** 1. 새로 가입한 계정으로 로그인 → B01_Dashboard 진입 2. 회사 상태: "회사 미연결" 표시 확인 3. [회사 생성] 클릭 → 모달 팝업 노출 4. 회사 정보 입력: ``` 회사명: "테스트회사" 사업자등록번호: "123-45-67890" 주소: "서울시 강남구" 대표자명: "김테스트" ``` 5. [생성] 클릭 → API 호출 6. 성공 메시지 → 페이지 자동 새로고침 **검증:** ```sql SELECT id, email, company_id, role, is_master, status FROM users WHERE email = 'test@example.com'; ``` **예상 결과:** - `company_id` = 생성된 회사 ID - `role` = 'ADMIN' - `is_master` = TRUE - `status` = 'ACTIVE' **라우팅 확인:** - B02_ProjRegister 접속 가능 ✅ - 팀원 관리, 가입 요청 섹션 표시 ✅ --- ### 시나리오 2: 회사 참여 신청 (USER → PENDING → ACTIVE) **전제:** 계정1이 회사 생성 완료 (시나리오 1 수행) **테스트 단계:** 1. 새로 가입한 계정2로 로그인 → B01_Dashboard 진입 2. 회사 상태: "회사 미연결" + [회사 찾기] 클릭 3. 검색 팝업 → "테스트회사" 검색 4. 회사 선택 → [신청] 클릭 → API 호출 **검증 (계정2):** ```sql SELECT * FROM join_requests WHERE user_id = 2; ``` - `status` = 'PENDING' ```sql SELECT status FROM users WHERE id = 2; ``` - `status` = 'PENDING' 5. 계정2로 B02_ProjRegister 접속 시도 → B01_Dashboard로 리다이렉트 (회사 승인 대기 알림) **관리자 승인 (계정1):** 1. 계정1로 로그인 → B01_Dashboard 2. "가입 요청" 섹션 → 계정2의 신청 표시 3. [승인] 클릭 **검증 (계정2):** ```sql SELECT status FROM users WHERE id = 2; ``` - `status` = 'ACTIVE' - `company_id` = 1 4. 계정2로 B02_ProjRegister 접속 가능 ✅ --- ### 시나리오 3: 팀원 추가 (ADMIN만 접근 가능) **전제:** 계정1이 회사 생성 완료, 계정2와 계정3이 회원가입 완료 **테스트 단계:** 1. 계정1 (ADMIN)로 로그인 → B01_Dashboard 2. "팀원 관리" 섹션 → [+ 팀원 추가] 3. 계정2의 이메일 입력 → [검색] 4. 계정2 선택 → [추가] **검증:** ```sql SELECT company_id FROM users WHERE id = 3; -- 계정2 ``` - `company_id` = 1 (회사ID) 5. 팀원 리스트에 계정2 표시 ✅ 6. 계정2로 로그인 → B02_ProjRegister 접속 가능 ✅ --- ### 시나리오 4: 시스템 관리자 기능 (SYSTEM_ADMIN만 접근) **전제:** SYSTEM_ADMIN 계정 준비 (DB에서 직접 역할 설정) **테스트 단계:** 1. SYSTEM_ADMIN 계정으로 로그인 → B01_Dashboard 2. "리소스 현황" 섹션 → CPU/MEM/DISK 사용률 표시 확인 3. "회사 관리" 섹션 → 전체 회사 리스트 조회 ✅ 4. "사용자 관리" 섹션 → 전체 사용자 리스트 조회 ✅ 5. "사용자 역할 변경" → 계정2를 ADMIN으로 전환 6. "가입 요청 관리" → 전체 가입 신청 조회/승인 ✅ 7. "시스템 로그" → 로그인/계정 생성 이력 필터링 조회 ✅ 8. "리소스 모니터링" → 그래프 표시 ✅ --- ## 최종 체크리스트 ### 구현 단계 ``` ✅ DB 스키마 설계 완료 (사용자/회사/조직 5개 테이블) ✅ 백엔드 API 설계 완료 (역할별 엔드포인트) ✅ 프론트엔드 구조 설계 완료 (역할별 컴포넌트) ⏳ DB 마이그레이션 (다음 AI 작업) ⏳ 백엔드 API 구현 (다음 AI 작업) ⏳ 프론트엔드 UI 구현 (다음 AI 작업) ``` ### 검증 단계 ``` [ ] 시나리오 1: 회사 생성 (USER → ADMIN 전환) [ ] 시나리오 2: 회사 참여 신청 (USER → PENDING → ACTIVE) [ ] 시나리오 3: 팀원 추가 (ADMIN) [ ] 시나리오 4: 시스템 관리자 기능 (SYSTEM_ADMIN) [ ] 인증 갱신 로직 검증 (로그인 기반 3개월 연장) ``` ### 라우팅 가드 검증 ``` [ ] NO_COMPANY 상태 → B02 접근 시 B01으로 리다이렉트 [ ] PENDING 상태 → B02 접근 시 B01으로 리다이렉트 [ ] ACTIVE 상태 → B02~B11 정상 접근 [ ] 역할별 대시보드 섹션 정상 표시 ``` --- ## 예상 완료 일정 - **계획/설계:** ✅ 완료 - **DB 마이그레이션:** 다음 세션 (코더 AI 담당) - **백엔드 API 구현:** 다음 세션 (코더 AI 담당) - **프론트엔드 UI 구현:** 다음 세션 (코더 AI 담당) - **통합 테스트 및 검증:** 다음 세션 (사용자 검증) --- **마지막 업데이트:** 2025-07-08 (설계 완료) **다음 단계:** DB 마이그레이션 및 백엔드 API 구현