콘텐츠로 이동
✍️ 수정가능누구나 고쳐도 됩니다. 고치면 하단 frontmatter의 갱신일·작성자·변경요약을 남겨 주세요.작성 Claude · 2026-06-04 · v12 재편·raw 컴파일·인간화

스터디룸 대시보드 FRD

스터디룸 대시보드(Home)를 역할별로 어떻게 조회하게 할지 정리한다. 운영 현황(출석·진도·과제·성취도)과 학습 흐름(공지·일정·활동 피드)을 한 화면에 요약하되, 누가 보느냐(LEADER/MEMBER/GUARDIAN)에 따라 위젯과 데이터 범위가 갈린다. 노출 매트릭스의 기준은 prd에, 진입 라우팅과 권한 확정 명세는 스터디룸 FRD §대시보드 진입에 있다.

기술 접근 · 아키텍처

  1. 인증·역할 확인 → 비회원 /login, 권한없음 /dashboard 리디렉션. 보호자는 StudentGuardianLink.status = ACTIVE만 진입.
  2. dashboard-summary 호출 → 역할별 위젯 집계(LEADER=전체·개별 / MEMBER=본인 / GUARDIAN=자녀).
  3. 요약 카드·공지·활동 로그·(강사)학생 리스트 렌더 → 카드 클릭 시 상세 피처(/study-rooms/{id}/{feature}) 라우팅. CTA는 역할별 분기(강사=노트작성·초대 / 학생=과제 확인 / 보호자=성장 리포트).
  4. 활동 로그는 폴링/소켓 갱신 시 aria-live="polite" 낭독, 로드 실패 시 전역 배너(role="alert"), 복귀 시 포커스 복원.

API · 데이터 모델

  • 진입 화면 /studyrooms/{publicId}/dashboard → 요약 집계 GET /study-rooms/{publicId}/dashboard-summary(룸 단위 진도율·출석·과제·성취도 집계). 위젯별 상세는 각 피처 API로 위임(원본 §4.7에 항목만 정의·Endpoint 미작성):
  • 학습 현황 요약 / 활동 로그(룸 내 최근 활동) / 공지 목록 / 학생 참여 현황(강사용) / 성장 리포트(보호자용).
  • Status: 200(데이터 반환) / 202(비동기 접수, 예: 활동 로그 갱신) / 400 / 401 / 403(권한 없음) / 404(룸/리소스 없음) / 409(상태 불일치) / 500(AlertDialog).
  • 트래킹: room_dashboard_view/refresh/card_click/invite_click/notice_write/note_create/report_view/error.
  • Request/Response 스키마는 원본 미작성 — 구현 시 확정.

의존성 · 영향 범위

  • 집계 대상은 studyroom 컨텍스트 내부 데이터(수업노트·과제·성취·출석). 도메인 모델 중복 정의 없이 studyroom · teaching-note · homework 참조.
  • 보호자 접근은 StudentGuardianLink.status = ACTIVE 조건(→ member).
  • 라우팅·권한 매트릭스 SSOT는 스터디룸 FRD §대시보드 진입 — 변경 시 동기화.

테스트 계획

  • 역할별 노출 매트릭스 검증(LEADER/MEMBER/GUARDIAN), 보호자 ACTIVE/비-ACTIVE 경계(403), 리디렉션 경로(비회원·권한없음).
  • 권한 분기 누락 시 데이터 과노출 위험 — 역할 매트릭스(prd §요구사항)를 서버에서 강제하는지 단언. 빈 위젯·집계 실패 시 빈 상태/에러 노출. 공통 전략 qa-playbook.

작업 분해 (이슈 링크)

  • dashboard-summary 집계 API·역할별 위젯 분기·활동 로그 갱신(폴링/소켓)·요약 카드 라우팅·CTA 역할 분기·보호자 ACTIVE 게이트. 위젯별 상세 API는 각 피처 컨테이너로 분기. 이슈 링크는 status.