diff --git a/design/uiux/uiux.md b/design/uiux/uiux.md index db678ce..f4f16a9 100644 --- a/design/uiux/uiux.md +++ b/design/uiux/uiux.md @@ -628,12 +628,12 @@ graph TD #### 개요 - **목적**: 실시간 회의 진행 및 AI 기반 회의록 자동 작성 -- **관련 유저스토리**: UFR-MEET-030, UFR-STT-010/020, UFR-AI-010, UFR-AI-040, UFR-COLLAB-010, UFR-RAG-010/020 +- **관련 유저스토리**: UFR-MEET-030, UFR-STT-010/020, UFR-AI-010, UFR-AI-040, UFR-COLLAB-010, UFR-RAG-010/020, UFR-PART-010/020/030, UFR-HOST-010/020, UFR-TERM-010/020 - **비즈니스 중요도**: 높음 (핵심 화면) -- **접근 경로**: 템플릿선택 → "이 템플릿으로 시작" -- **권한**: - - 회의 시작/종료: 회의 생성자 전용 - - 참석자 초대: 모든 참석자 +- **접근 경로**: 대시보드 → "참여하기" 버튼 (페이지 전환) +- **권한** (MVP 개선): + - **회의 생성자 전용**: 회의 종료, 녹음 제어 (일시정지/재개/종료) + - **모든 참석자**: 회의 참여, AI 주요 내용 체크, 용어 확인, 관련 회의록 확인, 중도 퇴장 #### 주요 기능 1. 음성 녹음 및 실시간 텍스트 변환 (STT) diff --git a/design/userstory.md b/design/userstory.md index 12088f8..b721a6e 100644 --- a/design/userstory.md +++ b/design/userstory.md @@ -255,9 +255,13 @@ ### UFR-MEET-030: [회의시작] 회의 생성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다. +**회의 진입 경로:** +- **경로 1**: 대시보드(02-대시보드.html) → "바로시작" FAB 버튼 → 템플릿 선택(04-템플릿선택.html) → 회의 진행(05-회의진행.html) +- **경로 2**: 대시보드 → 진행 중 회의 "참여하기" 버튼 → 회의 진행(05-회의진행.html) + **수행절차:** -1. 템플릿 선택 완료 또는 대시보드에서 진행 중 회의 "참여하기" 클릭 -2. 회의 진행 화면(05-회의진행.html) 표시 +1. 위 경로 중 하나를 통해 회의 진행 화면(05-회의진행.html) 진입 +2. 회의 진행 화면 표시 3. 녹음 시작 확인 (자동 또는 수동) 4. 타이머 시작 (회의 진행 시간 표시) 5. 웨이브폼 애니메이션 표시 (녹음 상태 시각화) @@ -302,8 +306,12 @@ ### UFR-MEET-040: [회의종료] 회의 생성자로서 | 나는, 회의를 종료하고 회의록을 정리하기 위해 | 회의를 종료하고 요약 내용을 확인한 후 다음 단계를 선택하고 싶다. +**권한:** +- 회의 생성자만 회의를 종료할 수 있음 +- 일반 참석자는 "회의 종료" 버튼이 표시되지 않음 + **수행절차:** -1. 회의 진행 화면에서 "회의 종료" 버튼 클릭 +1. 회의 진행 화면에서 "회의 종료" 버튼 클릭 (생성자 전용) 2. 종료 확인 모달: "회의를 종료하시겠습니까?" 확인 3. 회의 종료 화면(07-회의종료.html) 표시 (확인 전용, 편집 불가) 4. 통계 확인 (4열 그리드): @@ -742,19 +750,29 @@ --- -### UFR-AI-040: [관련회의록연결] 회의 참석자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결해주기를 원한다. +### UFR-AI-040: [관련회의록연결] 회의 참석자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결하고 유사 내용을 요약해주기를 원한다. + +**기능 개선 사항 (v2.3.1):** +- **최대 개수**: 5개 → 3개로 축소 (MVP) +- **관련도 표시 방식**: 배지(높음/중간/낮음) → 퍼센트(95%, 78%)로 변경 +- **유사 내용 요약 추가** (신규): + - AI가 추천한 각 회의록에서 현재 회의와 유사한 부분 자동 추출 + - 유사한 내용을 3-5개 문장으로 요약하여 표시 + - 전체 회의록을 열지 않아도 핵심 내용 파악 가능 + - "전체 회의록 보기" 버튼으로 상세 내용 확인 +- **성능 최적화**: + - 과거 회의록 저장 시 요약본 미리 생성 (배치 처리) + - 실시간 요약은 캐싱된 데이터 활용 + - 성능 목표: 1초 이내 표시 **수행절차:** 1. 회의 종료 시 또는 회의록 작성 중 AI가 현재 회의 내용 분석 2. 벡터 유사도 검색을 통해 관련 회의록 탐색 - 같은 폴더 내 회의록 우선 - 키워드, 참석자, 안건 유사도 분석 -3. 관련도가 높은 회의록 자동 연결 (최대 5개) -4. 관련도 배지 부여: - - 높음 (80% 이상) - - 중간 (60-80%) - - 낮음 (40-60%) -5. 회의 종료 화면, 회의록 수정 화면, 회의록 상세 조회 화면에 표시 +3. 관련도가 높은 회의록 자동 연결 (최대 3개로 축소) +4. 각 회의록에서 유사한 내용 추출 및 요약 (신규 추가) +5. 회의 진행 화면, 회의 종료 화면, 회의록 수정 화면, 회의록 상세 조회 화면에 표시 6. 사용자가 수동으로 추가/제거 가능 **입력:** @@ -762,10 +780,12 @@ - 과거 회의록 데이터 (벡터 DB) **출력/결과:** -- 관련 회의록 목록 (최대 5개): +- 관련 회의록 목록 (최대 3개): - 회의록 제목 - 날짜 - - 관련도 배지 (높음/중간/낮음) + - 관련도 점수 (퍼센트, 예: 95%, 78%) + - **유사 내용 요약 (3-5개 문장)** ← 신규 + - "전체 회의록 보기" 버튼 - 회의록 링크 - 회의록 수정 화면: "추가" 버튼, "X" 제거 버튼 - 회의록 상세 조회 화면: 관련회의록 섹션 표시 @@ -773,6 +793,7 @@ **예외처리:** - 관련 회의록 없음: 빈 목록 표시 - 벡터 검색 실패: 최근 회의록 기준 정렬로 대체 +- 유사 내용 요약 실패: 회의록 제목과 날짜만 표시 - 네트워크 오류: 로컬 캐시 사용 또는 빈 목록 **관련 유저스토리:** @@ -1281,9 +1302,243 @@ --- +# MVP 개선 사항 (v2.3.1) + +## 회의 참석자 권한 및 기능 단순화 + +### UFR-PART-010: [회의입장] 회의 참석자로서 | 나는, 예정된 회의에 참여하기 위해 | 대시보드에서 "참여하기" 버튼으로 회의에 입장하고 싶다. + +**수행절차:** +1. 대시보드에서 진행 중 또는 예정된 회의 확인 +2. "참여하기" 버튼 클릭 +3. 회의진행 화면으로 페이지 전환 (같은 탭) +4. 회의 참석자로 입장 완료 + +**입력:** +- 회의 ID +- 사용자 ID + +**출력/결과:** +- 회의진행 화면 표시 +- 참석자 목록에 추가 + +**예외처리:** +- 회의 종료됨: "이미 종료된 회의입니다" 안내 +- 권한 없음: "참석 권한이 없습니다" 안내 + +**관련 유저스토리:** +- UFR-MEET-030: 회의시작 + +--- + +### UFR-PART-020: [AI주요내용체크] 회의 참석자로서 | 나는, 중요한 내용을 표시하기 위해 | AI가 추출한 주요 내용을 체크박스로 선택하고 싶다. + +**수행절차:** +1. 회의 진행 중 AI가 실시간으로 주요 내용 추출 +2. "AI 주요 내용" 탭에 체크박스 항목으로 표시 +3. 참석자는 중요하다고 생각하는 항목 체크 +4. 체크 데이터 개인별로 저장 (다른 참석자 체크 여부 안 보임) +5. 회의 종료 시 AI 요약 시 체크 수에 따라 가중치 부여 + +**입력:** +- 회의 ID +- AI 추출 주요 내용 +- 사용자 체크 선택 + +**출력/결과:** +- 체크된 항목 저장 +- AI 요약 시 가중치 데이터로 활용 + +**예외처리:** +- AI 추출 실패: 빈 목록 표시 + +**관련 유저스토리:** +- UFR-AI-030: 실시간 AI 제안 +- UFR-MEET-040: 회의종료 + +--- + +### UFR-PART-030: [회의중도퇴장] 회의 참석자로서 | 나는, 회의를 중간에 나가야 할 때 | "나가기" 버튼으로 회의에서 퇴장하고 싶다. + +**수행절차:** +1. 회의진행 화면 상단 "나가기" 버튼 클릭 +2. 확인 모달 표시: "회의에서 나가시겠습니까? 회의는 계속 진행됩니다" +3. 확인 클릭 시 퇴장 이벤트 서버 전송 +4. 대시보드로 페이지 전환 + +**입력:** +- 회의 ID +- 사용자 ID + +**출력/결과:** +- 대시보드 화면으로 복귀 +- 회의록은 종료 시 공유됨 + +**예외처리:** +- 네트워크 오류: 로컬 처리 후 재시도 + +**관련 유저스토리:** +- UFR-MEET-030: 회의시작 + +--- + +## 회의 생성자 전용 기능 + +### UFR-HOST-010: [회의종료권한] 회의 생성자로서 | 나는, 회의를 마무리하기 위해 | "회의 종료" 버튼으로만 회의를 종료하고 싶다. + +**수행절차:** +1. 회의진행 화면에서 "회의 종료" 버튼은 생성자에게만 표시 +2. 일반 참석자에게는 버튼 숨김 처리 +3. 생성자가 "회의 종료" 클릭 시 회의 종료 프로세스 진행 + +**입력:** +- 회의 ID +- 사용자 ID (생성자 여부 확인) + +**출력/결과:** +- 생성자: 회의 종료 버튼 표시 및 동작 +- 일반 참석자: 버튼 숨김 + +**예외처리:** +- 권한 없음: 버튼 미표시 + +**관련 유저스토리:** +- UFR-MEET-040: 회의종료 + +--- + +### UFR-HOST-020: [녹음제어권한] 회의 생성자로서 | 나는, 녹음을 관리하기 위해 | 녹음 일시정지/재개/종료 권한을 가지고 싶다. + +**수행절차:** +1. 회의진행 화면에서 녹음 제어 버튼은 생성자에게만 표시 +2. 일반 참석자에게는 버튼 숨김 처리 + +**입력:** +- 회의 ID +- 사용자 ID (생성자 여부 확인) + +**출력/결과:** +- 생성자: 녹음 제어 버튼 표시 및 동작 +- 일반 참석자: 버튼 숨김 + +**예외처리:** +- 권한 없음: 버튼 미표시 + +**관련 유저스토리:** +- UFR-STT-010: 음성녹음인식 + +--- + +## 용어 설명 기능 (MVP 단순화) + +### UFR-TERM-010: [용어자동감지] 회의 참석자로서 | 나는, 전문용어를 이해하기 위해 | AI가 자동으로 감지한 용어를 "용어" 탭에서 확인하고 싶다. + +**수행절차:** +1. AI가 STT 분석 중 중요 용어 자동 감지 +2. "용어" 탭에 실시간으로 표시 +3. 용어 항목 클릭 시 상세 설명 모달 표시 + +**입력:** +- STT 텍스트 +- 회사 용어 사전 (JSON) + +**출력/결과:** +- 용어 목록 표시 +- 회사 용어는 ⭐ 배지 표시 + +**예외처리:** +- 용어 감지 실패: 빈 목록 표시 + +**관련 유저스토리:** +- UFR-RAG-010: 전문용어감지 (기존 기능 유지) + +--- + +### UFR-TERM-020: [회사용어사전] 회의 참석자로서 | 나는, 회사 특화 용어를 정확히 이해하기 위해 | 회사 용어 사전에 등록된 용어를 우선 표시받고 싶다. + +**수행절차:** +1. 용어 감지 시 회사 용어 사전(JSON) 먼저 확인 +2. 사전에 있으면 회사 특화 설명 + ⭐ 표시 +3. 사전에 없으면 AI가 일반 설명 + 회의 맥락 제공 + +**입력:** +- 용어 +- 회사 용어 사전 (terms-dictionary.json) +- 회의 맥락 + +**출력/결과:** +- 회사 용어: 정의 + 맥락 + ⭐ +- 일반 용어: AI 설명 + +**예외처리:** +- 사전 로드 실패: AI 설명으로 대체 + +**관련 유저스토리:** +- UFR-RAG-020: 맥락기반용어설명 (기존 기능 유지) + +--- + +### UFR-TERM-030: [용어관리] 관리자로서 | 나는, 회사 특화 용어를 관리하기 위해 | 용어 사전을 등록/수정하고 싶다. + +**수행절차:** +1. 관리자 페이지에서 용어 사전 관리 +2. JSON 파일 직접 편집 또는 관리 UI 사용 +3. 용어 추가/수정/삭제 + +**입력:** +- 용어명 +- 정의 +- 맥락 +- 카테고리 + +**출력/결과:** +- terms-dictionary.json 업데이트 + +**예외처리:** +- 권한 없음: "관리자 권한이 필요합니다" 안내 + +--- + +## 기존 유저스토리 수정 + +### UFR-MEET-040 수정 (회의종료권한) +**기존**: "회의 생성자 또는 참석자가 회의 종료 버튼을 눌러 회의를 종료한다" +**변경**: "회의 생성자만 '회의 종료' 버튼으로 회의를 종료할 수 있다" +**적용 위치**: [UFR-MEET-040: 회의종료](#ufr-meet-040-회의종료) + +--- + +### UFR-MEET-030 개선 (회의 진입 경로) +**변경**: 대시보드에서 회의 진행 화면 진입 경로 명확화 +- **경로 1**: 대시보드 → "바로시작" FAB 버튼 → 템플릿 선택 → 회의 진행 +- **경로 2**: 대시보드 → 진행 중 회의 "참여하기" 버튼 → 회의 진행 +**적용 위치**: [UFR-MEET-030: 회의시작](#ufr-meet-030-회의시작) + +--- + +### UFR-AI-040 개선 (관련회의록연결) + +**변경 및 개선 사항**: +1. **최대 개수**: 5개 → 3개로 축소 (MVP) +2. **관련도 표시 방식**: 배지(높음/중간/낮음) → 퍼센트(95%, 78%)로 변경 +3. **유사 내용 요약 추가** (신규): + - AI가 추천한 각 회의록에서 현재 회의와 유사한 부분 자동 추출 + - 유사한 내용을 3-5개 문장으로 요약하여 표시 + - 전체 회의록을 열지 않아도 핵심 내용 파악 가능 + - "전체 회의록 보기" 버튼으로 상세 내용 확인 +4. **성능 최적화**: + - 과거 회의록 저장 시 요약본 미리 생성 (배치 처리) + - 실시간 요약은 캐싱된 데이터 활용 + - 성능 목표: 1초 이내 표시 + +**적용 위치**: [UFR-AI-040: 관련회의록연결](#ufr-ai-040-관련회의록연결) + +--- + ## 문서 이력 | 버전 | 날짜 | 작성자 | 변경 내용 | |------|------|--------|-----------| +| v2.3.1 | 2025-10-27 | 팀 전체 | • MVP 개선: 회의 참석자 권한 단순화
• 신규 유저스토리: UFR-PART-010/020/030 (참석자 공통), UFR-HOST-010/020 (생성자 전용)
• 신규 유저스토리: UFR-TERM-010/020/030 (용어 기능 MVP 단순화)
• UFR-MEET-040 수정: 회의 종료 권한 생성자 전용으로 명확화
• UFR-MEET-030 개선: 회의 진입 경로 2가지 명시 (바로시작, 참여하기)
• UFR-AI-040 개선: 관련 회의록 유사 내용 요약 추가 (최대 3개, 퍼센트 표시, 3-5문장 요약)
• 메모 기능 단순화: 체크박스 방식으로 변경
• 용어 설명 단순화: JSON 용어 사전 방식 도입 | | v2.3.0 | 2025-10-24 | 이미준 | • 프로토타입 분석을 통한 유저스토리 전면 재정비
• 신규 유저스토리 추가: UFR-MEET-015 (참석자 실시간 초대), UFR-NOTI-010 (알림 발송)
• 알림 아키텍처 폴링 방식으로 통일 (실시간 발송 → 주기적 폴링)
• 10개 프로토타입 화면 반영 완료
• 마이크로서비스 구성 재정의 (User, Meeting, STT, AI, Notification)
• 기존 24개 유저스토리 ID 승계 및 정리 | | v2.2.0 | 2025-10-23 | 이미준 | 이전 버전 |