diff --git a/design/uiux/prototype/02-대시보드-backup.html b/design/uiux/prototype/02-대시보드-backup.html deleted file mode 100644 index 738b5f6..0000000 --- a/design/uiux/prototype/02-대시보드-backup.html +++ /dev/null @@ -1,832 +0,0 @@ - - - - - - 대시보드 - 회의록 서비스 - - - - - - - - -
-
-

안녕하세요, 김민준님!

-

오늘의 일정을 확인하세요

-
- - -
- - -
-
-
-
-
김민준
-
minjun.kim@company.com
-
-
- -
-
- - -
- - -
-
-
📅
-
예정된 회의
-
3
-
-
-
-
진행 중 Todo
-
1
-
-
-
📈
-
Todo 완료율
-
33%
-
-
- - -
-
-

최근 회의

- 전체 보기 → -
-
- -
-
- - -
-
-

할당된 Todo

- 전체 보기 → -
-
- -
-
- - -
-
-

내 회의록

- 전체 보기 → -
-
- -
-
- -
- - - - - -
- - -
- -
- - - - - - - - diff --git a/design/uiux/prototype/05-회의진행_bk.html b/design/uiux/prototype/05-회의진행_bk.html deleted file mode 100644 index 28323dc..0000000 --- a/design/uiux/prototype/05-회의진행_bk.html +++ /dev/null @@ -1,2306 +0,0 @@ - - - - - 회의 진행 중 - 회의록 서비스 - - - - -
- -
-
-
-

2025년 1분기 제품 기획 회의

-
- -
-
-
- 00:28:06 -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- - -
-
- -
- -
-
회의 개요
-
논의 사항
-
결정 사항
-
액션 아이템
-
- - -
- -
- -
-
-

🤖 AI 요약

-
- 2분 전 생성 - -
-
-

- 2025년 1분기 신제품 개발을 위한 기획 회의입니다. AI 기반 회의록 자동화 서비스의 핵심 기능과 차별화 전략에 대해 논의하였으며, 예상 개발 일정은 3개월입니다. -

-
- - -
-
-

내용

- -
-
-

회의 목적: 2025년 1분기 신제품 개발 방향 수립

-

참석자: 김민준(PM), 박서연(AI), 이준호(Backend), 최유진(Frontend)

-

일시: 2025년 10월 25일 14:00 - 15:30

-

장소: 본사 2층 대회의실

-
-
- - -
- - -
-
- - - - - - - -
-
- - -
- - - - - -
- - -
-
-
-
-
-

참고자료

- -
-
- - - - - - - - - - - - - - -
-
-
- - -
- - -
-
- - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-17-09.png b/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-17-09.png deleted file mode 100644 index 0ef3662..0000000 Binary files a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-17-09.png and /dev/null differ diff --git a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-18.png b/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-18.png deleted file mode 100644 index c2db48c..0000000 Binary files a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-18.png and /dev/null differ diff --git a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-26.png b/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-26.png deleted file mode 100644 index 98b7ff3..0000000 Binary files a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-26.png and /dev/null differ diff --git a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-46.png b/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-46.png deleted file mode 100644 index 4bddd1f..0000000 Binary files a/design/uiux/ref_img/KakaoTalk_Photo_2025-10-21-16-18-46.png and /dev/null differ diff --git a/design/uiux/uiux.md b/design/uiux/uiux.md index f4873c8..4b1ea59 100644 --- a/design/uiux/uiux.md +++ b/design/uiux/uiux.md @@ -2,9 +2,9 @@ ## 문서 정보 - **작성일**: 2025-10-21 -- **최종 수정일**: 2025-10-28 +- **최종 수정일**: 2025-10-29 - **작성자**: 이미준 (서비스 기획자) -- **버전**: 1.5.9 +- **버전**: 1.6.0 - **설계 철학**: Mobile First Design --- @@ -13,24 +13,17 @@ 1. [설계 개요](#설계-개요) 2. [프로토타입 화면 목록](#프로토타입-화면-목록) 3. [화면 간 사용자 플로우](#화면-간-사용자-플로우) -4. [화면별 상세 설계](#화면별-상세-설계) - - [01-로그인](#01-로그인) - - [02-대시보드](#02-대시보드) - - [03-회의예약](#03-회의예약) - - [04-템플릿선택](#04-템플릿선택) - - [05-회의진행](#05-회의진행) - - [07-회의종료](#07-회의종료) - - [10-회의록상세조회](#10-회의록상세조회) - - [11-회의록수정](#11-회의록수정) - - [12-회의록목록조회](#12-회의록목록조회) -5. [공통 UI 컴포넌트](#공통-ui-컴포넌트) -6. [공통 에러 메시지 표준](#공통-에러-메시지-표준) -7. [화면 간 전환 및 네비게이션](#화면-간-전환-및-네비게이션) -8. [반응형 설계 전략](#반응형-설계-전략) -9. [접근성 보장 방안](#접근성-보장-방안) -10. [성능 최적화 방안](#성능-최적화-방안) -11. [변경 이력](#변경-이력) -12. [부록](#부록) +4. [화면 설계 표준](#화면-설계-표준) +5. [화면별 상세 설계](#화면별-상세-설계) +6. [공통 UI 컴포넌트](#공통-ui-컴포넌트) +7. [인터랙션 패턴 라이브러리](#인터랙션-패턴-라이브러리) +8. [공통 에러 메시지 표준](#공통-에러-메시지-표준) +9. [화면 간 전환 및 네비게이션](#화면-간-전환-및-네비게이션) +10. [반응형 설계 전략](#반응형-설계-전략) +11. [접근성 보장 방안](#접근성-보장-방안) +12. [성능 최적화 방안](#성능-최적화-방안) +13. [변경 이력](#변경-이력) + --- ## 설계 개요 @@ -56,29 +49,12 @@ - **표준 준수**: 플랫폼별 디자인 가이드라인 준수 ### 유저스토리 매핑 -본 설계는 다음 유저스토리를 기반으로 작성됨: -- **User 서비스**: UFR-USER-010 (사용자 인증) -- **Meeting 서비스**: UFR-MEET-010 ~ UFR-MEET-060 (회의 관리, 회의록 작성/공유) -- **STT 서비스**: UFR-STT-010, UFR-STT-020 (음성 인식 및 변환) -- **AI 서비스**: - - UFR-AI-010 (AI 회의록 자동 작성) - - UFR-AI-020 (Todo 자동 추출) - - UFR-AI-030 (프롬프팅 기반 회의록 개선) - - **UFR-AI-040 (관련 회의록 자동 연결)** ← 신규 반영 -- **RAG 서비스**: UFR-RAG-010, UFR-RAG-020 (맥락 기반 용어 설명) -- **Collaboration 서비스**: UFR-COLLAB-030 (안건별 검증완료 및 잠금 처리) - -### 주요 추가 기능 (v1.1) -1. **AI 기반 회의 내용 요약 자동 생성** - - 각 섹션 최상단에 AI가 자동으로 생성한 2-3문장 요약 표시 - - 참여자가 요약 내용 확인 후 수정 가능 - - 실시간 동기화 및 자동 저장 - -2. **참고자료 자동 연결 (UFR-AI-040)** - - 각 섹션 하단에 관련 회의록 자동 연결 - - 이전 회의록 및 맥락상 관련 회의록 링크 제공 - - 관련도 표시 (퍼센트 또는 별점) - - 최대 3개 자동 표시, 더보기로 전체 목록 확인 가능 +- **User 서비스**: UFR-USER-010, UFR-USER-020 +- **Meeting 서비스**: UFR-MEET-010 ~ UFR-MEET-060 +- **STT 서비스**: UFR-STT-010, UFR-STT-020 +- **AI 서비스**: UFR-AI-010, UFR-AI-020, UFR-AI-030, UFR-AI-040 +- **RAG 서비스**: UFR-RAG-010, UFR-RAG-020 +- **Collaboration 서비스**: UFR-COLLAB-030 [↑ 목차로 돌아가기](#목차) @@ -86,17 +62,17 @@ ## 프로토타입 화면 목록 -| 번호 | 화면명 | 관련 유저스토리 | 비즈니스 중요도 | 설명 | 사이드바 유무 | 이전화면 이동버튼 유무 | 비고 | -|------|--------|----------------|-------------------|------------------------|------------|------------------------|-------| -| 01 | 로그인 | UFR-USER-010 | 필수 | 사용자 인증 | X | X | | -| 02 | 대시보드 | UFR-USER-020 | 필수 | 메인 랜딩 페이지 | O | X | | -| 03 | 회의예약 | UFR-MEET-010 | 높음 | 회의 생성 | X | O | | -| 04 | 템플릿선택 | UFR-MEET-020 | 중간 | 회의록 템플릿 선택 | X | O | | -| 05 | 회의진행 | UFR-MEET-030, UFR-STT-010/020, UFR-AI-010 | 높음 | 실시간 회의 진행 및 회의록 작성 | X | X | | -| 07 | 회의종료 | UFR-MEET-040, UFR-MEET-050 | 높음 | 회의 통계 및 최종 확정 | X | X | | -| 10 | 회의록상세조회 | UFR-MEET-047 | 중간 | 회의록 상세 보기 | X | O | | -| 11 | 회의록수정 | UFR-MEET-055 | 중간 | 지난 회의록 수정 | X | O | | -| 12 | 회의록목록조회 | UFR-MEET-046 | 높음 | 회의록 목록 필터링/정렬/검색 | O | X | | +| 번호 | 화면명 | 관련 유저스토리 | 중요도 | 사이드바 | 뒤로가기 | +|------|--------|----------------|---------|----------|----------| +| 01 | 로그인 | UFR-USER-010 | 필수 | X | X | +| 02 | 대시보드 | UFR-USER-020 | 필수 | O | X | +| 03 | 회의예약 | UFR-MEET-010 | 높음 | X | O | +| 04 | 템플릿선택 | UFR-MEET-020 | 중간 | X | O | +| 05 | 회의진행 | UFR-MEET-030, UFR-STT-010/020, UFR-AI-010 | 높음 | X | X | +| 07 | 회의종료 | UFR-MEET-040, UFR-MEET-050 | 높음 | X | X | +| 10 | 회의록상세조회 | UFR-MEET-047 | 중간 | X | O | +| 11 | 회의록수정 | UFR-MEET-055 | 중간 | X | O | +| 12 | 회의록목록조회 | UFR-MEET-046 | 높음 | O | X | [↑ 목차로 돌아가기](#목차) @@ -104,44 +80,91 @@ ## 화면 간 사용자 플로우 -### 주요 사용자 시나리오별 플로우 +### 주요 시나리오 -#### 시나리오 1: 새 회의 진행 (Full Flow) +**시나리오 1: 새 회의 진행** ``` -로그인 → 대시보드 → 회의예약 → 템플릿선택 → 회의진행 -→ 회의종료 → 회의록수정 (선택) → 대시보드 +로그인 → 대시보드 → 회의예약 → 템플릿선택 → 회의진행 → 회의종료 → 회의록수정(선택) → 대시보드 ``` -#### 시나리오 2: 지난 회의록 조회 및 수정 +**시나리오 2: 회의록 조회/수정** ``` 로그인 → 대시보드 → 회의록상세조회 → 회의록수정 → 대시보드 ``` -#### 시나리오 3: 빠른 회의 시작 (템플릿 스킵) +**시나리오 3: 빠른 회의 시작** ``` -로그인 → 대시보드 → 회의진행 (기본 템플릿) → 회의종료 → 대시보드 +로그인 → 대시보드 → 회의진행(기본 템플릿) → 회의종료 → 대시보드 ``` -### 플로우 다이어그램 +[↑ 목차로 돌아가기](#목차) -```mermaid -graph TD - A[로그인] --> B[대시보드] - B --> C[회의예약] - C --> D[템플릿선택] - D --> E[회의진행] - E --> G[회의종료] - G --> H{회의록 수정?} - H -->|Yes| K[회의록수정] - H -->|No| B - K --> B +--- - B --> I[회의록상세조회] - I --> J{수정 필요?} - J -->|Yes| K - K --> I - J -->|No| B +## 화면 설계 표준 + +### 공통 화면 구조 템플릿 + +#### Mobile 기본 구조 (320px~768px) ``` +┌─────────────────────────┐ +│ 헤더 (Fixed) │ ← 뒤로가기, 타이틀, 액션버튼 +├─────────────────────────┤ +│ │ +│ 메인 콘텐츠 영역 │ +│ (스크롤 가능) │ +│ │ +├─────────────────────────┤ +│ 하단 네비게이션 (Fixed) │ ← 홈, 회의록 (2개) +└─────────────────────────┘ +``` + +#### Desktop 기본 구조 (768px+) +``` +┌──────┬──────────────────┐ +│ │ 헤더 (Fixed) │ +│ 사이 ├──────────────────┤ +│ 드바 │ │ +│ (固) │ 메인 콘텐츠 영역 │ +│ │ (최대 너비 제한) │ +│ │ │ +└──────┴──────────────────┘ +``` + +### 공통 레이아웃 패턴 + +#### 폼 레이아웃 +- **Mobile**: 단일 컬럼, 전체 너비 +- **Desktop**: 2컬럼 + 미리보기 패널(선택) + +#### 카드 리스트 +- **Mobile**: 단일 컬럼, 스택 레이아웃 +- **Tablet**: 2컬럼 그리드 +- **Desktop**: 2-3컬럼 그리드 + +#### 통계 카드 +- **Mobile**: 2열 그리드 (~80px 높이) +- **Desktop**: 가로 배치, 간격 증가 + +### 공통 데이터 타입 + +#### 회의 기본 정보 +- 회의 ID, 제목, 일시, 장소 +- 참여자 목록, 참여자 수 +- 생성자 ID, 상태(진행중/예정/완료) +- 생성일시, 수정일시 + +#### 회의록 정보 +- 회의록 ID, 회의 ID 참조 +- 상태(작성중/확정완료) +- 안건 구조, Todo 목록 +- 검증완료율(작성중만) + +#### 상태 배지 +- **진행중**: 빨강 배지, "진행중" +- **예정**: 파랑 배지, "예정" +- **작성중**: 주황 배지, "작성중" +- **확정완료**: 초록 배지, "확정완료" [↑ 목차로 돌아가기](#목차) @@ -152,1485 +175,421 @@ graph TD ### 01-로그인 #### 개요 -- **목적**: 사용자 인증 및 시스템 접근 권한 부여 +- **목적**: LDAP 인증 및 시스템 접근 - **관련 유저스토리**: UFR-USER-010 -- **비즈니스 중요도**: 필수 -- **접근 경로**: 애플리케이션 최초 진입 +- **접근 경로**: 앱 최초 진입 -#### 주요 기능 -1. 사번과 비밀번호를 이용한 LDAP 인증 +#### 고유 기능 +1. 사번/비밀번호 LDAP 인증 2. 로그인 상태 유지 옵션 3. 비밀번호 찾기/재설정 -4. 오류 처리 및 피드백 -#### UI 구성요소 - -**Mobile (320px~768px)** -- 상단: 서비스 로고 및 타이틀 -- 중앙: 로그인 폼 - - 사번 입력 필드 (필수) - - 비밀번호 입력 필드 (필수, 마스킹) - - "로그인 상태 유지" 체크박스 - - 로그인 버튼 (Primary CTA) -- 하단: "비밀번호 찾기" 링크 -- 오류 메시지 영역 - -**Tablet/Desktop (768px+)** -- 좌측: 서비스 소개 및 주요 기능 설명 (선택) -- 우측: 로그인 폼 (모바일과 동일 구조) +#### UI 구성 +- **Mobile**: 중앙 정렬 로그인 폼 ([폼 레이아웃](#폼-레이아웃) 참조) +- **Desktop**: 좌측 서비스 소개 + 우측 로그인 폼 #### 인터랙션 -1. **입력 검증** - - 실시간 필드 유효성 검사 (형식 오류 즉시 표시) - - 빈 필드 제출 시 해당 필드로 포커스 이동 +- [폼 검증 패턴](#폼-검증) 참조 +- Enter 키 → 다음 필드 이동/로그인 실행 +- 성공 시 대시보드로 페이드 전환 -2. **로그인 처리** - - 로그인 버튼 클릭 → 로딩 인디케이터 표시 - - 성공: 대시보드로 자동 이동 (페이드 전환) - - 실패: 오류 메시지 표시 (사번/비밀번호 불일치, 계정 잠금 등) - -3. **키보드 인터랙션** - - Enter 키로 다음 필드 이동 또는 로그인 실행 - - Tab 키로 포커스 이동 - -#### 데이터 요구사항 +#### 데이터 - **입력**: 사번(문자열), 비밀번호(문자열, 최소 8자) -- **출력**: 인증 토큰, 사용자 정보(이름, 권한) -- **연동**: User 서비스 - LDAP 인증 API +- **출력**: 인증 토큰, 사용자 정보 +- **연동**: User 서비스 -#### 에러 처리 -- **인증 실패**: "사번 또는 비밀번호가 올바르지 않습니다." (보안상 구체적 정보 제공 X) -- **계정 잠금**: "보안을 위해 계정이 일시적으로 잠겼습니다. 관리자에게 문의하세요." -- **네트워크 오류**: [공통 에러 메시지 - 네트워크 오류](#네트워크-오류) 참조 -- **서버 오류**: [공통 에러 메시지 - 서버 오류](#서버-오류) 참조 +#### 에러 +- 인증 실패: "사번 또는 비밀번호가 올바르지 않습니다" +- 계정 잠금: "계정이 일시적으로 잠겼습니다" +- [네트워크 오류](#네트워크-오류), [서버 오류](#서버-오류) 참조 --- ### 02-대시보드 #### 개요 -- **목적**: 주요 기능 접근 허브, 최근 활동 요약 제공 -- **관련 유저스토리**: UFR-USER-020 (대시보드 조회) -- **비즈니스 중요도**: 필수 +- **목적**: 주요 기능 허브, 최근 활동 요약 +- **관련 유저스토리**: UFR-USER-020 - **접근 경로**: 로그인 후 메인 화면 -#### 주요 기능 -1. 빠른 회의 시작 및 예약 -2. **최근 회의 목록** (최대 3개, 회의록 미생성 우선) - - 1순위: 진행중 회의 (참여 가능) - - 2순위: 예정된 회의 (시작 전) - - 3순위: 최근 종료된 회의 (회의록 있음, 1+2순위가 3개 미만일 때만 표시) -3. **통계 정보 표시** (예정된 회의, 작성중 회의록) -4. **내 회의록** (참여자/생성자로 등록된 최근 4개, 상태 포함) +#### 고유 기능 +1. **통계 카드** (2개): 예정된 회의, 작성중 회의록 +2. **최근 회의** (최대 3개): 진행중 우선 → 예정 → 완료 + - 정렬: 회의록 미생성 우선, 빠른 일시 순 + - 생성자 표시(👑), 상태 배지 +3. **내 회의록** (최대 4개, 2x2 그리드) + - 최근 생성 순, 상태 배지 + - "전체 보기" → 12-회의록목록조회 -#### UI 구성요소 - -**Mobile (320px~768px)** -- **헤더** (상단) - - "안녕하세요 👋" (H3, Bold) - - 부제: "오늘 {N}건의 회의가 예정되어 있어요" (Body, 회색) - - N = 예정된 회의 개수 (동적 업데이트) - - 예정된 회의가 없을 경우: "예정된 회의가 없습니다" - -- **메인 콘텐츠** (스크롤, padding-bottom: 80px, background: gray-50) - - **통계 카드** (2열 그리드) - - "📅 예정된 회의" 카드 - - 값: 전체 예정 + 진행 중 회의 개수 - - "📝 작성중 회의록" 카드 - - 값: 내가 참여한 회의 중 '작성중' 상태인 회의록 개수 - - 높이: ~80px - - 클릭 액션: 없음 (정보 표시만) - - 반응형: 태블릿 이상에서 간격 증가 - - - **최근 회의** 섹션 - - 헤더: "최근 회의" (H4) - - **정렬 기준** (UFR-USER-020 기준): - 1. **1순위**: 회의록 미생성 회의 (진행중 + 예정) 우선 표시 - 2. **2순위**: 1순위가 3개 미만이면 최근 종료된 회의(회의록 있음)로 나머지 채움 - 3. **각 그룹 내 정렬**: 빠른 일시 순 (시작 시간 기준) - 4. **최대 표시**: 3개 - - **회의 카드** (클릭 가능 블록): - - 상태 라벨 (배지) - - 진행중: "진행중" - - 예정: "예정" - - 완료: "작성중" 또는 "확정완료" - - 회의 제목 (H5) - - 생성자 표시 (👑 아이콘) - 내가 생성한 회의인 경우 - - 회의 일시 (아이콘: calendar_today) - - 참여자 수 (아이콘: people) - - 장소 정보 - - 상태 버튼 (표시용): - - 진행중: "참여하기" 버튼 - - 예정: 버튼 없음 (카드 클릭으로 처리) - - 완료: 버튼 없음 (카드 클릭으로 처리) - - 빈 상태: "예정된 회의가 없습니다" - - - **내 회의록** 카드 - - 헤더: "내 회의록" (H4) + "전체 보기 →" 링크 (회의록 목록 화면으로 이동) - - **최근 회의록 리스트** (최대 4개, 2x2 그리드): - - 필터: 내가 참여자 또는 생성자로 등록된 회의록 - - 정렬: 최근 생성 순 (createdAt 기준) - - 각 항목: - - 회의 제목 (H5) - - 회의 일시 (날짜 + 시간) - - 참여자 수 - - **상태 배지**: - - "작성중" (draft, 주황색 배지) - - "확정완료" (confirmed, 초록색 배지) - - 검증완료율 표시 (작성중인 경우만) - - 클릭 시: 회의록 상세 화면으로 이동 - - 빈 상태: "참여한 회의록이 없습니다" - -**Mobile (320px~768px)** - **v1.5.0 네비게이션 간소화** -- **하단 네비게이션**: 2개 메뉴만 표시 - - 홈 (대시보드) - 활성 상태 - - 회의록 (회의록 목록) - -**Tablet/Desktop (768px+)** -- **좌측 사이드바**: [Desktop 좌측 사이드바](#desktop-좌측-사이드바-768px) 참조 (대시보드 활성) - -- **메인 콘텐츠** (왼쪽 여백 240px) - - **헤더** - - "안녕하세요, {사용자명}님!" (H2) - - "오늘의 일정을 확인하세요" (부제) - - - **통계 카드 그리드** (2개) - **v1.5.0 변경** - - 예정된 회의 (📅) - - 작성중 회의록 (📝) - - - **최근 회의 그리드** (2-3컬럼) - - 회의 카드들 (진행중 우선) - - 참여하기/수정/보기 버튼 - - - **내 회의록 리스트** - - 화이트 카드 배경 - - 전체보기 → 12-회의록목록조회.html - -- **하단 네비게이션**: 숨김 (데스크톱에서는 사이드바 사용) +#### UI 구성 +- **헤더**: "안녕하세요 👋" + "오늘 N건의 회의가 예정되어 있어요" +- **통계 카드**: [통계 카드 레이아웃](#통계-카드) 참조 (2개) +- **네비게이션**: [하단 네비게이션](#mobile-하단-네비게이션-320px768px) / [사이드바](#desktop-좌측-사이드바-768px) 참조 #### 인터랙션 -1. **빠른 액션** - - "새 회의 시작" 클릭 → 템플릿선택 화면으로 이동 (페이드 전환) - - "회의 예약" 클릭 → 회의예약 화면으로 이동 - -2. **예정된/진행중 회의 인터랙션** - - **진행중 회의** (모든 참여자): - - "참여하기" 버튼 클릭 → 회의 진행 화면으로 즉시 이동 - - 회의 항목 클릭 → 회의 상세 정보 표시 (모달 또는 화면 이동) - - 애니메이션: "진행중" 배지 깜빡임 효과 (1초 간격) - - - **예정된 회의 - 생성자 (내가 생성한 회의)**: - - 회의 카드 클릭 → 회의예약 화면(수정 모드)으로 이동 - - 회의 제목, 일시, 참여자, 안건 등 수정 가능 - - 저장 시 참여자에게 변경 알림 발송 - - 크라운 아이콘 표시 (생성자 구분) - - - **예정된 회의 - 초대받은 참여자**: - - 회의 카드 클릭 → 시스템 알럿 표시 - - 메시지: "아직 회의 시간이 되지 않아 참여하실 수 없습니다" - - 다음 버전에서 회의 상세 조회 기능으로 개선 예정 - - - **공통**: - - 회의 항목 호버: 카드 그림자 증가 - - "전체 보기" 링크 클릭 → 회의 목록 화면으로 이동 - -3. **카드 인터랙션** - - 회의록 항목 클릭 → 회의록 상세 화면으로 이동 - - "전체 보기" 링크 클릭 → 해당 목록 화면으로 이동 - - 호버 효과: 카드 그림자 증가, 약간 상승 (transform: translateY(-2px)) - -4. **검색** - - 검색 아이콘 클릭: 전체 화면 검색 인터페이스 표시 - - 실시간 자동완성 및 최근 검색어 제공 - -#### 데이터 요구사항 -- **입력**: - - 사용자 ID (현재 로그인 사용자) - - 현재 날짜/시간 (예정된 회의 필터링용) +- **진행중 회의**: "참여하기" → 회의진행 화면 +- **예정 회의 - 생성자**: 카드 클릭 → 회의예약(수정 모드) +- **예정 회의 - 참여자**: 카드 클릭 → "아직 참여할 수 없습니다" 알럿 +- **완료 회의**: 카드 클릭 → 회의록상세조회 +- [카드 호버](#카드-인터랙션) 참조 +#### 데이터 +- **입력**: 사용자 ID, 현재 날짜/시간 - **출력**: - - **예정된/진행중 회의**: - - 회의 ID, 제목, 일시, 참여자 목록, 상태 (예정/진행중), D-day - - **생성자 ID** (권한 판별용) - - **현재 사용자 역할** (creator | attendee) - - **참여 가능 시간** (시작 시간 - 10분) - - 필터 조건: - - **진행중 회의**: 회의 시작 시간 <= 현재 시간 AND 회의 종료 안 됨, 사용자가 참여자 또는 생성자 - - **예정된 회의**: 회의 일시 >= 현재 시간, 사용자가 참여자 또는 생성자 - - 정렬 우선순위: - 1. 진행중 회의 우선 (상태 = ongoing) - 2. 예정된 회의 (회의 일시 순, 가까운 순) - - 최대 3개 (진행중 회의 우선) - - **버튼 표시 조건**: - - 진행중 회의: "참여하기" 버튼 (항상 표시) - - 예정된 회의 (생성자): "수정" 버튼 (항상 표시) - - 예정된 회의 (참여자): - - 현재 시간 >= 시작 시간 - 10분: "참여하기" 버튼 활성화 - - 현재 시간 < 시작 시간 - 10분: 버튼 비활성화 또는 타이머 표시 + - 통계: 예정/진행중 회의 수, 작성중 회의록 수 + - 최근 회의: 회의 기본 정보 + 생성자 ID + 현재 사용자 역할 + - 내 회의록: 회의록 정보 ([공통 데이터 타입](#공통-데이터-타입) 참조) +- **연동**: Meeting 서비스 - - **내 회의록**: - - 회의 ID, 제목, 일시, 참여자 수, 상태, 생성일시, 수정일시 - - 필터: 사용자가 참여자 또는 생성자 - - 정렬: 생성일시 (최근 순) - - 최대 3개 - - - **통계 데이터**: - - 예정된/진행중 회의 수 (진행중 회의 수 별도 배지) - - 작성중 회의록 수 - -- **연동**: - - Meeting 서비스 (회의 정보, 회의록 정보) - -#### 에러 처리 -- **데이터 로딩 실패**: - - 해당 카드에 "일시적으로 데이터를 불러올 수 없습니다." 표시 - - "다시 시도" 버튼 제공 (새로고침 아이콘) - - 로그 기록 및 에러 추적 - -- **부분 데이터 로딩 실패**: - - 실패한 섹션만 에러 표시, 나머지 섹션은 정상 표시 - - 사용자 경험 최소 방해 - -- **빈 상태** (각 섹션별): - - 예정된/진행중 회의: "예정된 회의가 없습니다" - - 내 회의록: "작성한 회의록이 없습니다. 첫 회의를 시작해보세요!" - -- **진행중 회의 참여 실패**: - - "회의에 참여할 수 없습니다." 토스트 메시지 - - 원인별 안내: - - 회의 종료됨: "이미 종료된 회의입니다" - - 권한 없음: [공통 에러 메시지 - 권한 오류](#권한-오류) 참조 - - 네트워크 오류: [공통 에러 메시지 - 네트워크 오류](#네트워크-오류) 참조 - -- **예정된 회의 접근 제한**: - - **시간 제한 (초대받은 참여자)**: - - "아직 참여할 수 없습니다. N분 후 참여 가능합니다." 토스트 메시지 - - 10분 전부터 참여 버튼 활성화 - - 타이머 자동 갱신 (1분 간격) - - **권한 제한 (수정 시도)**: - - [공통 에러 메시지 - 권한 오류](#권한-오류) 참조 - -- **회의 수정 실패** (생성자): - - "회의 정보를 수정할 수 없습니다." 토스트 메시지 - - 원인별 안내: - - 이미 시작된 회의: "진행 중인 회의는 수정할 수 없습니다" - - 네트워크 오류: [공통 에러 메시지 - 네트워크 오류](#네트워크-오류) 참조 - - 권한 변경됨: [공통 에러 메시지 - 권한 오류](#권한-오류) 참조 - -- **네트워크 오류**: [공통 에러 메시지 - 네트워크 오류](#네트워크-오류) 참조 +#### 에러 +- 데이터 로딩 실패: 해당 카드에 "다시 시도" 버튼 +- 부분 실패: 실패 섹션만 에러 표시 +- 진행중 회의 참여 실패: "회의에 참여할 수 없습니다" + 원인별 안내 --- ### 03-회의예약 #### 개요 -- **목적**: 예정된 회의 일정 등록 및 참여자 초대 +- **목적**: 회의 일정 등록 및 참여자 초대 - **관련 유저스토리**: UFR-MEET-010 -- **비즈니스 중요도**: 높음 -- **접근 경로**: 대시보드 → "회의 예약" 버튼 -- **권한**: 모든 사용자 (예약 생성 시 자동으로 회의 생성자가 됨) +- **접근 경로**: 대시보드 → "회의 예약" 또는 예정 회의 카드 클릭(생성자) -#### 주요 기능 +#### 고유 기능 1. 회의 기본 정보 입력 (제목, 날짜/시간, 장소) -2. 참여자 추가 (이메일 또는 조직도 검색) +2. 참여자 추가 (이메일/조직도 검색) 3. 회의 안건 사전 입력 (선택) 4. 참여자 초대 이메일 자동 발송 -5. 캘린더 연동 -#### UI 구성요소 - -**Mobile (320px~768px)** -- **헤더** - - 뒤로가기 버튼 - - "회의 예약" 타이틀 - - "저장" 버튼 (Primary) - -- **폼 섹션** (스크롤) - - **회의 제목** (필수) - - 텍스트 입력 필드 - - 최대 100자 카운터 - - - **날짜 및 시간** (필수) - - 날짜 선택기 (달력 UI) - - 시작 시간 선택기 - - 종료 시간 선택기 - - 종일 토글 (선택) - - - **장소** (선택) - - 텍스트 입력 필드 - - 온라인/오프라인 토글 - - 온라인 선택 시: 회의 링크 자동 생성 옵션 - - - **참여자** (필수, 최소 1명) - - 참여자 칩 (제거 가능) - - "참여자 추가" 버튼 - - 참여자 검색 (이메일 또는 이름) - - - **안건** (선택) - - 다중 라인 텍스트 입력 - -**Tablet/Desktop (768px+)** -- 좌측: 폼 (모바일과 동일) -- 우측: 미리보기 패널 (입력 내용 실시간 프리뷰) +#### UI 구성 +- **헤더**: 뒤로가기, "회의 예약", "저장" +- **폼**: [폼 레이아웃](#폼-레이아웃) 참조 + - 제목(필수, 100자), 날짜/시간(필수), 장소(선택) + - 참여자(필수, 최소 1명, 칩 UI) + - 안건(선택, 다중 라인) #### 인터랙션 -1. **날짜/시간 선택** - - 달력 UI: 과거 날짜 비활성화 - - 시간 선택: 30분 단위 드롭다운 - - 충돌 감지: 동일 시간대 다른 회의 있을 경우 경고 +- **날짜/시간**: 달력 UI, 과거 비활성화, 충돌 감지 +- **참여자 추가**: [참여자 관리 패턴](#참여자-관리) 참조 +- **저장**: [폼 검증](#폼-검증) → 성공 토스트 → 대시보드 -2. **참여자 추가** - - "참여자 추가" 클릭 → 검색 모달 표시 - - 실시간 검색 (이름, 이메일, 부서) - - 선택된 참여자는 칩 형태로 표시 - - 칩의 X 버튼으로 제거 가능 - -3. **저장 처리** - - 필수 필드 검증 - - 저장 성공: "회의가 예약되었습니다" 토스트 메시지, 대시보드로 이동 - - 초대 이메일 발송 확인 다이얼로그 - -#### 데이터 요구사항 -- **입력**: - - 제목(문자열, 최대 100자) - - 날짜(Date) - - 시작 시간(Time) - - 종료 시간(Time) - - 장소(문자열, 최대 200자, 선택) - - 참여자 목록(이메일 배열) - - 안건(문자열, 선택) -- **출력**: 회의 ID, 초대 이메일 발송 결과 +#### 데이터 +- **입력**: 제목, 날짜, 시간, 장소, 참여자 이메일, 안건 +- **출력**: 회의 ID, 초대 발송 결과 - **연동**: Meeting 서비스, Notification 서비스 -#### 에러 처리 -- **필수 필드 누락**: 해당 필드에 빨간색 테두리 및 오류 메시지 -- **참여자 0명**: "최소 1명의 참여자를 추가해주세요" -- **과거 날짜 선택**: "과거 날짜는 선택할 수 없습니다" -- **저장 실패**: "회의 예약에 실패했습니다. 다시 시도해주세요" +#### 에러 +- 필수 필드 누락: 빨간 테두리 + 오류 메시지 +- 참여자 0명: "최소 1명의 참여자를 추가해주세요" +- 과거 날짜: "과거 날짜는 선택할 수 없습니다" --- ### 04-템플릿선택 #### 개요 -- **목적**: 회의 유형에 맞는 회의록 템플릿 선택 및 커스터마이징 +- **목적**: 회의록 템플릿 선택 및 커스터마이징 - **관련 유저스토리**: UFR-MEET-020 -- **비즈니스 중요도**: 중간 -- **접근 경로**: 대시보드 → "새 회의 시작" 또는 회의예약 → "회의 시작" +- **접근 경로**: 회의예약 → "회의 시작" 또는 대시보드 → "새 회의 시작" - **권한**: 회의 생성자 전용 -#### 주요 기능 -1. 사전 정의된 템플릿 선택 (일반, 스크럼, 킥오프, 주간) +#### 고유 기능 +1. 사전 정의 템플릿 선택 (일반, 스크럼, 킥오프, 주간) 2. 템플릿 미리보기 3. 섹션 추가/삭제/순서 변경 4. 커스텀 템플릿 저장 -#### UI 구성요소 - -**Mobile (320px~768px)** -- **헤더** - - 뒤로가기 버튼 - - "템플릿 선택" 타이틀 - - "건너뛰기" 텍스트 버튼 (기본 템플릿 사용) - -- **템플릿 카드 리스트** - - 각 템플릿 카드: - - 템플릿 이름 및 아이콘 - - 간단한 설명 - - "선택" 버튼 - - "미리보기" 버튼 - -- **선택된 템플릿 상세** (모달 또는 전체 화면) - - 섹션 목록 (드래그하여 순서 변경 가능) - - 각 섹션: 이름, 삭제 버튼 - - "섹션 추가" 버튼 - - "이 템플릿으로 시작" 버튼 (Primary) - -**Tablet/Desktop (768px+)** -- 좌측: 템플릿 목록 -- 중앙: 선택된 템플릿 미리보기 -- 우측: 커스터마이징 패널 +#### UI 구성 +- **헤더**: 뒤로가기, "템플릿 선택", "건너뛰기" +- **템플릿 카드**: 이름, 아이콘, 설명, "선택"/"미리보기" 버튼 +- **커스터마이징**: 섹션 목록(드래그 가능), "섹션 추가", "이 템플릿으로 시작" #### 인터랙션 -1. **템플릿 선택** - - 템플릿 카드 클릭: 해당 템플릿 상세 보기 - - "선택" 버튼: 즉시 회의진행 화면으로 이동 +- 템플릿 카드 클릭 → 상세 보기 +- 섹션 드래그 → 순서 변경 +- "선택" → 회의진행 화면 +- [드래그 앤 드롭 패턴](#드래그-앤-드롭) 참조 -2. **커스터마이징** - - 섹션 드래그: 순서 변경 (터치/마우스) - - 섹션 삭제: 스와이프 또는 삭제 아이콘 - - 섹션 추가: "섹션 추가" → 섹션 이름 입력 모달 - -3. **저장 및 시작** - - "이 템플릿으로 시작": 회의진행 화면으로 전환 - - 커스텀 템플릿 저장 옵션 (선택) - -#### 데이터 요구사항 -- **입력**: 없음 (또는 회의 ID - 예약된 회의인 경우) -- **출력**: 선택된 템플릿 구조 (섹션 배열) +#### 데이터 +- **입력**: 회의 ID(선택) +- **출력**: 선택된 템플릿 구조 - **연동**: Meeting 서비스 -#### 에러 처리 -- **템플릿 로딩 실패**: "템플릿을 불러올 수 없습니다" + 재시도 버튼 -- **빈 템플릿**: "최소 1개의 섹션이 필요합니다" +#### 에러 +- 템플릿 로딩 실패: "다시 시도" 버튼 +- 빈 템플릿: "최소 1개의 섹션 필요" --- ### 05-회의진행 #### 개요 -- **목적**: 실시간 회의 진행 및 AI 기반 회의록 자동 작성 -- **관련 유저스토리**: UFR-MEET-030, UFR-STT-010/020, UFR-AI-010, UFR-AI-040, UFR-RAG-010/020, UFR-PART-020, UFR-HOST-010/020, UFR-TERM-010/020 -- **비즈니스 중요도**: 높음 (핵심 화면) -- **접근 경로**: 대시보드 → "참여하기" 버튼 (페이지 전환) -- **권한** (MVP 개선): - - **회의 생성자 전용**: 회의 종료, 녹음 제어 (일시정지/재개/종료) - - **모든 참여자**: 회의 참여, AI 기반 메모 작성, 용어 확인, 관련 회의록 확인, 중도 퇴장 +- **목적**: 실시간 회의 진행 및 AI 회의록 자동 작성 +- **관련 유저스토리**: UFR-MEET-030, UFR-STT-010/020, UFR-AI-010, UFR-AI-040, UFR-PART-020 +- **접근 경로**: 대시보드 → "참여하기" 버튼 +- **권한**: + - 생성자: 회의 종료, 녹음 제어 + - 참여자: 참여, AI 메모 작성, 용어 확인, 중도 퇴장 -#### 주요 기능 (MVP 스코프 축소 v1.5.0) -1. 음성 녹음 및 실시간 텍스트 변환 (STT) -2. AI 자동 회의록 작성 (구조화) -3. **AI 기반 메모 작성** (UFR-PART-020): AI가 실시간으로 감지한 주요 내용을 참여자가 선택하여 개인 메모로 저장 -4. 전문용어 자동 감지 및 맥락 기반 설명 -5. **참고자료 자동 연결** (이전 회의록, 관련 회의록) -6. 참여자 관리 및 초대 기능 -7. 회의 진행 시간 표시 +#### 고유 기능 +1. 음성 STT 및 AI 자동 회의록 작성 +2. **AI 기반 메모** (UFR-PART-020): AI가 감지한 주요 내용을 선택하여 개인 메모 저장 +3. 전문용어 자동 감지 및 맥락 기반 설명 +4. 참고자료 자동 연결 (관련 회의록 32건) +5. 참여자 관리 및 초대 -**변경사항 (v1.5.0)**: -- ✅ 변경: "AI 제안" 탭 → "AI 기반 메모" 탭으로 기능 변경 -- ✅ 추가: 개인 메모 입력 및 저장 기능 (각 참여자별 개별 저장) -- ✅ 정책: 메모는 회의 종료 전까지만 표시/편집 가능, 다른 참여자 메모는 볼 수 없음 +#### UI 구성 +- **헤더**: "회의 진행 중" + 경과시간 배지 + "회의 종료" +- **탭 네비게이션** (4개) + - 참여자 (인원수), AI 기반 메모, 용어 사전, 관련 자료(32건) -#### UI 구성요소 +#### 탭 콘텐츠 +**참여자 탭**: +- 참여자 추가 폼 (이메일 + "초대") +- 참여자 목록 (아바타 + 이름) -**전체 레이아웃** -- **헤더** (Fixed, 상단) - - 좌측: "회의 진행 중" 제목 + 경과시간 배지 (빨강, 01:03) - - 우측: "회의 종료" 버튼 (민트 그린 테두리) +**AI 기반 메모 탭**: +- 메모 입력창 + "저장" +- AI가 감지한 주요 내용 리스트 ("[HH:MM] 내용") +- 클릭 시 메모 입력창에 자동 추가 +- 정책: 개인별 저장, 회의 종료 전까지만 표시 -- **메인 콘텐츠 영역: 정보 패널** (탭 구조) - - **탭 네비게이션** (4개 탭) - - 참여자 (3명) - - AI 기반 메모 - - 용어 사전 - - 관련 자료 (32건) +**용어 사전 탭**: +- 검색 입력창 +- 용어 카드 (용어명 + 배지 + 정의 + 컨텍스트) +- 언급된 용어는 민트 그린 배경 + 💬 아이콘 - - **참여자 탭** (4명) - - 제목: "참여자 (4명)" (동적으로 인원수 업데이트) - - **참여자 추가 폼**: - - 이메일 입력 필드: placeholder "이메일 주소 입력", form-control 스타일 - - "초대" 버튼: btn btn-primary btn-sm - - 레이아웃: Flex (gap: 8px), 입력창(flex: 1) + 버튼 - - 하단 여백: 16px (margin-bottom: var(--space-md)) - - **참여자 목록** (아바타 + 이름) - - 김민준 (초록 아바타) - - 박서연 (파랑 아바타) - - 이준호 (노랑 아바타) - - 최유진 (핑크 아바타) - - **각 참여자 아이템**: - - 컬러 아바타 (avatar-sm: 32x32) - - 이름 (text-small font-medium, 14px) - - flex layout, 하단 구분선 (마지막 제외) - - 상태 표시 제거됨 (발언 중/온라인 등 표시 안 함) - - - **AI 기반 메모 탭** (UFR-PART-020) - - 제목: "AI 기반 메모" - - - **메모 입력 영역** (상단): - - **메모 입력 텍스트박스**: - - placeholder: "메모를 입력하세요..." - - 다중 행 입력 지원 (textarea) - - 배경: 화이트 (#FFFFFF) - - 테두리: 회색 실선 (1px solid #E5E7EB) - - 테두리 둥글기: 8px - - 내부 패딩: 12px - - 최소 높이: 80px - - **저장 버튼**: - - 텍스트: "저장" - - 스타일: btn btn-primary (민트 그린) - - 위치: 메모 입력창 하단 우측 - - 여백: 상단 8px - - **구분선**: - - 메모 입력 영역 하단에 회색 구분선 (1px solid #E5E7EB) - - 상하 여백: 16px - - - **AI가 감지한 주요 내용 영역** (하단): - - **섹션 헤더**: - - 텍스트: "AI가 감지한 주요 내용" - - 폰트: 16px Bold, gray-800 - - 하단 여백: 12px - - - **주요 내용 리스트**: - - **리스트 아이템 디자인**: - - 배경: 연한 회색 (#FAFAFA) - - 테두리: 회색 점선 (1px dashed #D0D0D0) - - 테두리 둥글기: 8px - - 내부 패딩: 12px - - 아이템 간 여백: 8px - - 호버 시: 민트 그린 배경 (#E8F9F3), 커서 포인터 - - - **아이템 구조**: - - 시간 태그 (좌측): - - 형식: "[HH:MM]" - - 폰트: 12px Bold, 민트 그린 (#4DD5A7) - - 배경: 민트 그린 연한 배경 (#E8F9F3) - - 패딩: 4px 8px - - 테두리 둥글기: 4px - - 주요 내용 텍스트 (우측): - - 폰트: 14px, gray-700 - - flex-grow: 1 - - 좌측 여백: 8px - - - **아이템 예시**: - - `[15:32] 예산 책정 관련 결정` - - `[15:35] 다음 회의 일정 합의` - - `[15:38] API 설계 패턴 논의` - - `[15:42] 마이크로서비스 아키텍처 채택` - - - **클릭 인터랙션**: - - 아이템 클릭 시 → 메모 입력창에 "[시간] 내용" 형식으로 자동 추가 - - 기존 메모가 있으면 줄바꿈 후 추가 - - 입력된 메모는 수정 가능 - - - **정책**: - - 각 참여자별로 개별 저장 (다른 참여자의 메모는 볼 수 없음) - - 메모는 회의 종료 전까지만 표시 및 편집 가능 - - 회의 종료 시 AI가 회의록 생성할 때 모든 참여자의 메모 참조 - - - **용어 사전 탭** - - 제목: "용어 사전" - - 용어 검색 입력 필드 (placeholder: "용어 검색...") - - **카드 디자인** (gappa 스타일): - - 기본 상태: - - 배경: 화이트 (#FFFFFF) - - 테두리: 회색 실선 (1px solid #E5E7EB) - - 테두리 둥글기: 8px - - 내부 패딩: 16px - - 카드 간 여백: 12px - - 하이라이트 상태 (현재 회의에서 언급된 용어): - - 배경: 민트 그린 연한 배경 (#E8F9F3) - - 테두리: 민트 그린 실선 (1px solid #4DD5A7) - - 호버 시: 회색 배경 (#F9FAFB) - - - **용어 카드 구조**: - - 용어명 (16px bold) + 카테고리 배지 (민트 그린 연한 배경) + 언급 아이콘 (💬, 언급된 경우만) - - 정의: 14px 일반 텍스트 (gray-600) - - 컨텍스트 (11px, gray-500, 상단 회색 구분선): - - "회의에서 N회 언급됨" (현재 회의에서 언급) - - "관련 회의록에서 언급됨" (관련 회의록에만 언급) - - "회의에서 언급됨 (HH:MM)" (시간 정보 포함) - - "{관련 회의록명} (날짜)에서 {컨텍스트 정보}" (특정 관련 회의록 정보) - - - **용어 카드 예시**: - - AI + 기술 배지 + 💬 - - 정의: Artificial Intelligence의 약자로, 인공지능을 의미합니다. 이 프로젝트에서는 회의록 자동 작성에 활용됩니다. - - 컨텍스트: "회의에서 5회 언급됨" - - API Gateway + 아키텍처 배지 + 💬 - - 정의: 클라이언트와 백엔드 마이크로서비스 사이의 단일 진입점 역할을 하는 서버 - - 컨텍스트: "API 설계 리뷰 회의 (2024-09-28)에서 AWS API Gateway 채택 결정" - - 마이크로서비스 + 아키텍처 배지 (하이라이트 없음) - - 정의: 애플리케이션을 작고 독립적인 서비스로 분할하는 소프트웨어 아키텍처 스타일 - - 컨텍스트: "관련 회의록에서 언급됨" - - MVP + 방법론 배지 + 💬 - - 정의: Minimum Viable Product의 약자 - - 컨텍스트: "회의에서 언급됨 (14:23)" - - RESTful API + 기술 배지 + 💬 - - 정의: REST 아키텍처 스타일로 작성한 웹 서비스 API 설계 방식 - - 컨텍스트: "회의에서 3회 언급됨" - - - 카드 클릭 시: 상세 설명 모달 표시 - - - **관련 자료 탭** (32건) - - 제목: "관련 회의록 (32건)" - - **카드 디자인** (gappa 스타일): - - 배경: 회색 (#F5F5F5) - - 테두리: 회색 점선 (1px dashed #9CA3AF) - - 테두리 둥글기: 8px - - 내부 패딩: 16px - - 카드 간 여백: 12px - - 호버 시: 회색 배경 (#F3F4F6) - - 구조: 헤더 + 메타정보 + 요약 텍스트 - - - **관련 회의록 카드 구조**: - - 헤더: 회의록 제목 (16px bold) - - 메타정보: 날짜 + 관련도 (12px, gray-500) - - 요약: 회의록 핵심 내용 또는 관련 컨텍스트 (14px 일반, gray-600) - - - **관련 회의록 예시**: - - "2024년 4분기 제품 기획 회의" - - 메타정보: 2024-10-15 | 관련도 92% - - 요약: 신규 회의록 서비스의 MVP 범위와 일정을 논의. AI 기반 회의 요약 기능의 우선순위를 높게 설정. - - "API 설계 리뷰 회의" - - 메타정보: 2024-09-28 | 관련도 78% - - 요약: RESTful API 설계 패턴과 API Gateway 채택. 마이크로서비스 간 통신 방식 결정. - - "스프린트 회고 회의" - - 메타정보: 2024-10-01 | 관련도 65% - - 요약: 협업 도구 사용성 개선과 MVP 개발 프로세스 최적화 논의. - - - 카드 클릭 시: **새 탭으로 열기** (target="_blank") - -**반응형 디자인** -- **Mobile (320px~768px)** - - 헤더: 고정 상단, 좁은 너비 - - 메인 콘텐츠: 전체 너비 사용 - - 탭 콘텐츠: 세로 스크롤 - - 하단 버튼 영역: 고정 하단 - -- **Desktop (768px+)** - - 헤더: 고정 상단, 넓은 너비 - - 메인 콘텐츠: 최대 너비 제한 없이 반응형 - - 탭 콘텐츠: 더 넓은 영역 활용 - - 하단 버튼 영역: 고정 하단 +**관련 자료 탭**: +- 관련 회의록 카드 (제목 + 날짜 + 관련도 + 요약) +- 카드 클릭 → 새 탭 열기 #### 인터랙션 +- 탭 전환: 클릭으로 콘텐츠 교체 +- 참여자 초대: [참여자 관리 패턴](#참여자-관리) 참조 +- AI 메모 저장: "저장" 클릭 → "N개 메모 저장됨" 토스트 +- 용어 검색: 실시간 필터링 +- 회의 종료: 확인 다이얼로그 → 07-회의종료 -1. **탭 전환** - - **참여자 탭**: 현재 회의 참여자 목록 표시 (4명) 및 참여자 추가 기능 - - **참여자 추가 폼** (상단): - - 이메일 입력 필드 (form-control 스타일, placeholder: "이메일 주소 입력") - - "초대" 버튼 (btn btn-primary btn-sm) - - 이메일 입력 후 "초대" 클릭 시: - 1. 이메일 유효성 검증 (정규식: /^[^\s@]+@[^\s@]+\.[^\s@]+$/) - 2. 빈 값 체크: 빈 값이면 "이메일 주소를 입력해주세요" 경고 토스트 - 3. 잘못된 형식: "올바른 이메일 형식이 아닙니다" 오류 토스트 - 4. 유효한 이메일: "{email}에게 초대 링크가 전송되었습니다" 성공 토스트 - 5. 입력창 초기화 (value = '') - 6. 실제 구현 시 서버 API 호출 (/api/meetings/invite) - - **참여자 목록** (하단): - - 각 참여자: 아바타 + 이름 - - 상태 표시 없음 (발언 중/온라인 등 제거) - - 참여자 수 동적 업데이트 (초대 성공 시) +#### 데이터 +- **입력**: 회의 ID, 오디오 스트림, 참여자 이메일 +- **출력**: STT 텍스트, AI 주요 내용, 개인 메모, 용어 사전, 관련 회의록 +- **연동**: STT, AI, RAG, PARTICIPANT 서비스 - - **AI 기반 메모 탭** (UFR-PART-020): AI가 감지한 주요 내용을 참여자가 선택하여 개인 메모로 저장 - - **메모 작성 및 저장**: - - 메모 입력창에 자유롭게 메모 작성 가능 - - "저장" 버튼 클릭 시 개인 메모로 저장 (각 참여자별 개별 저장) - - 저장 성공 시 "{n}개의 메모가 저장되었습니다" 성공 토스트 - - 저장 실패 시 "메모 저장에 실패했습니다" 오류 토스트 - - **AI가 감지한 주요 내용**: - - 음성→텍스트 변환 후 AI가 실시간으로 회의 내용 분석 - - **중요한 내용으로 판단된 경우에만** 주요 내용 항목 표시 - - 각 항목: "[시간] 주요 내용 텍스트" 형식 (예: "[15:32] 예산 책정 관련 결정") - - 실시간 업데이트: 새로운 항목은 하단에 추가 - - 항목 클릭 시: - 1. 메모 입력창에 "[시간] 내용" 형식으로 자동 추가 - 2. 기존 메모가 있으면 줄바꿈 후 추가 - 3. 입력된 메모는 수정 가능 (자동/수동 구분 표시) - 4. 저장 버튼 활성화 - - **정책**: - - 메모는 회의 종료 전까지만 표시/편집 가능 - - 각 참여자의 메모는 다른 참여자에게 보이지 않음 - - 회의 종료 시 AI가 모든 참여자의 메모를 참조하여 회의록 생성 - - - **용어 사전 탭**: 회의에서 언급된 전문용어 설명 - - **용어 검색 기능**: - - 검색 입력창 (placeholder: "용어 검색...", form-control 스타일) - - 검색 버튼 (btn btn-primary btn-sm) - - Enter 키 지원 - - 검색 동작: - 1. 용어명과 정의 모두 검색 - 2. 일치하는 용어만 표시, 나머지는 숨김 - 3. 검색 결과에 하이라이트 효과 적용 - 4. 검색 결과 없으면 전체 목록 다시 표시 - 5. 입력창이 비어있으면 전체 목록 표시 - - 용어 카드: 용어명 + 카테고리 배지 + 간단한 정의 - - 카드 클릭 → 확장하여 상세 설명 표시 - - 상세 설명: 이 회의에서의 의미, 관련 회의록 링크 - - - **관련 자료 탭**: AI가 찾은 관련 회의록 (32건) - - 회의록 링크 클릭 → **새 탭(target="_blank")에서 해당 회의록 열기** - - **녹음 중인 페이지 이탈 방지**: 모든 링크는 새 탭으로 열림 - - 관련도 표시: 퍼센트 또는 별점으로 시각화 - -2. **회의 종료** - - 헤더의 "회의 종료" 버튼 클릭 - - 확인 다이얼로그 표시: "회의를 종료하시겠습니까?" - - 확인 → 회의 종료 처리 및 07-회의종료.html로 이동 - -3. **실시간 업데이트** - - STT 음성 인식 결과 실시간 반영 (3-5초 주기) - - AI 제안 실시간 업데이트 - - 용어 사전 자동 업데이트 (새로운 전문용어 감지 시) - - 관련 회의록 목록 동적 갱신 - -#### 데이터 요구사항 -- **입력**: - - 회의 ID - - 오디오 스트림 (실시간 STT용) - - 참여자 초대 이메일 -- **출력**: - - 실시간 텍스트 변환 결과 (STT) - - **AI가 감지한 주요 내용 목록** (시간 + 내용) - - **개인 메모** (각 참여자별 개별 저장) - - **전문용어 및 설명** (용어 사전) - - **관련 회의록 목록** (32건, 관련도 포함) - - 참여자 목록 -- **연동**: - - STT 서비스 (UFR-AI-010) - - AI 서비스 (주요 내용 감지, UFR-AI-040) - - RAG 서비스 (관련 회의록 검색, 전문용어 자동 감지) - - PARTICIPANT 서비스 (메모 저장, UFR-PART-020) - -#### 에러 처리 -- **마이크 권한 거부**: "마이크 권한이 필요합니다" 토스트 + 설정 안내 링크 -- **STT 실패**: "음성 인식에 실패했습니다" 토스트 + 재시도 안내 -- **AI 주요 내용 감지 실패**: "AI 주요 내용 감지에 실패했습니다" 토스트 (회의 계속 진행 가능) -- **메모 저장 실패**: "메모 저장에 실패했습니다" 토스트 + 재시도 버튼 -- **용어 사전 로드 실패**: "용어 사전을 불러올 수 없습니다" 메시지 표시 -- **관련 자료 검색 실패**: "관련 회의록을 찾을 수 없습니다" 메시지 표시 -- **참여자 초대 실패**: "초대 링크 전송에 실패했습니다" 토스트 + 재시도 버튼 -- **회의 종료 실패**: "회의 종료 중 오류가 발생했습니다" 토스트 + 재시도 버튼 +#### 에러 +- 마이크 권한 거부: "마이크 권한 필요" + 설정 안내 +- STT 실패: "음성 인식 실패" + 재시도 +- 메모 저장 실패: "메모 저장 실패" + 재시도 +- 용어/자료 로드 실패: 빈 상태 메시지 --- ### 07-회의종료 #### 개요 -- **목적**: 회의 종료 후 AI 요약 내용 확인 및 다음 단계 선택 +- **목적**: AI 요약 확인 및 다음 단계 선택 - **관련 유저스토리**: UFR-MEET-040, UFR-MEET-050, UFR-AI-010, UFR-AI-020, UFR-AI-036 -- **비즈니스 중요도**: 높음 -- **접근 경로**: 회의진행 → "회의 종료" 버튼 +- **접근 경로**: 회의진행 → "회의 종료" - **권한**: 회의 생성자 전용 -- **화면 정책**: **확인 전용 화면 (편집 불가)** - - 모든 내용은 읽기 전용 - - 안건 내용 수정 불가 - - Todo 수정 불가 - - 확인 후 다음 단계 선택만 가능 +- **정책**: 확인 전용 화면 (편집 불가) -#### 주요 기능 -1. 회의 통계 표시 (시간, 참여자, 발언 횟수 등) -2. 주요 키워드 클라우드 -3. **안건별 AI 요약 전체 표시** (신규) - - 안건별 AI 한줄 요약 (30자 이내, 편집 불가) - - 안건별 상세 요약 정리 - - 안건별 Todo 자동 추출 결과 -4. **3가지 선택 옵션 제공** (신규) - - 옵션 1: 회의록 수정 화면으로 이동 - - 옵션 2: 바로 최종 확정 - - 옵션 3: 대시보드로 이동 +#### 고유 기능 +1. 회의 통계 (시간, 참여자, 키워드) +2. **안건별 AI 요약 전체 표시** + - AI 한줄 요약 (30자, 읽기 전용, 🔒) + - 상세 요약 정리 + - Todo 자동 추출 결과 +3. **3가지 선택 옵션** + - 회의록 수정 (11번 화면) + - 바로 최종 확정 (모든 안건 자동 검증완료) + - 대시보드로 이동 (작성중 상태 유지) -#### UI 구성요소 - -**Mobile (320px~768px)** -- **헤더** - - "회의가 종료되었습니다" 메시지 - - 회의 제목 - -- **통계 카드** - - 회의 총 시간 - - 참여자 수 - - 주요 키워드 (태그 클라우드) - -- **안건별 AI 요약 섹션** (신규) - - **안건 카드** (안건 개수만큼 반복): - - **안건 제목** (H4, Bold) - - **AI 한줄 요약** (읽기 전용, 회색 배경 박스) - - 30자 이내 간결한 표현 - - 🔒 "편집 불가" 아이콘 표시 - - 민트 그린 좌측 액센트 라인 - - **상세 요약 정리** (읽기 전용) - - 발언자별 의견 - - 결정 사항 - - 보류 사항 - - **Todo 자동 추출 결과** (있는 경우) - - Todo 항목 리스트 - - 담당자, 마감일, 우선순위 표시 - - 읽기 전용 (체크박스 비활성화) - -- **3가지 선택 옵션** (하단 액션 바) - - **옵션 1**: "회의록 수정" 버튼 (Secondary) - - 회의록 수정 화면(11-회의록수정)으로 이동 - - 회의록 상태: 작성중 - - **옵션 2**: "바로 최종 확정" 버튼 (Primary, 강조) - - 확인 다이얼로그: "AI가 정리한 내용 그대로 최종 확정하시겠습니까?" - - 모든 안건 자동 검증 완료 처리 - - 회의록 상태: 확정완료 - - 참여자에게 확정 알림 발송 - - **옵션 3**: "대시보드로 이동" 버튼 (Ghost) - - 회의록 상태: 작성중 (추후 편집 가능) - - 대시보드로 이동 - -**Tablet/Desktop (768px+)** -- 상단: 통계 카드 (Grid Layout) -- 중앙: 안건별 AI 요약 섹션 (2열 그리드) -- 하단: 3가지 선택 옵션 버튼 (가로 배치) +#### UI 구성 +- **헤더**: "회의가 종료되었습니다" + 회의 제목 +- **통계 카드**: 회의 시간, 참여자, 키워드 클라우드 +- **안건 카드**: 제목 + AI 한줄 요약(회색 배경, 민트 그린 액센트) + 상세 요약 + Todo +- **액션 바**: "회의록 수정"(Secondary), "바로 최종 확정"(Primary), "대시보드로 이동"(Ghost) #### 인터랙션 -1. **통계 표시** - - 애니메이션 효과로 숫자 카운트업 - - 차트는 페이드인 효과 +- 안건 카드 확장/축소 +- AI 한줄 요약 호버 → "편집 불가" 툴팁 +- **옵션 1**: 11-회의록수정 이동 (작성중 상태) +- **옵션 2**: 확인 다이얼로그 → 모든 안건 검증완료 처리 → 확정완료 → 10-회의록상세조회 +- **옵션 3**: 대시보드 이동 (작성중 상태) -2. **안건별 AI 요약 확인** (읽기 전용) - - **안건 카드 확장/축소**: - - 초기: 안건 제목 + AI 한줄 요약만 표시 - - 클릭 시: 상세 요약 + Todo 전체 펼침 - - **편집 불가 안내**: - - AI 한줄 요약 영역에 🔒 아이콘 표시 - - 호버 시: "이 내용은 편집할 수 없습니다" 툴팁 - - **Todo 확인**: - - 체크박스 비활성화 (disabled) - - 읽기 전용 표시 - -3. **다음 단계 선택** - - **옵션 1: 회의록 수정** - - 11-회의록수정.html로 이동 - - URL 파라미터: meetingId - - 회의록 상태: 작성중 - - **옵션 2: 바로 최종 확정** (UFR-MEET-050 시나리오 2) - - 확인 다이얼로그 표시: "바로 최종 확정하시겠습니까? AI가 정리한 내용 그대로 확정됩니다." - - 확인 시: - - 모든 안건 검증률 100% 자동 설정 - - 안건별 검증완료 처리 - - 회의록 상태: "작성중" → "확정완료"로 변경 - - 확정 시간 기록 - - 참여자에게 확정 알림 발송 - - 성공 토스트: "회의록이 최종 확정되었습니다" - - 10-회의록상세조회.html로 이동 - - **시나리오 2 특징 (바로 확정)**: - - 회의록 수정 단계를 건너뜀 - - AI 생성 내용을 그대로 확정 - - 모든 안건이 자동으로 검증완료 처리됨 - - 확정 후에도 회의 생성자는 수정 가능 (잠금 해제 필요) - - **옵션 3: 대시보드로 이동** - - 회의록 상태: 작성중 - - 02-대시보드.html로 이동 - - 추후 회의록 목록에서 편집 가능 - -#### 데이터 요구사항 +#### 데이터 - **입력**: 회의 ID -- **출력**: - - 회의 통계 (시간, 참여자 수, 발언 통계, 키워드) - - **안건별 AI 요약 데이터**: - - 안건 제목 - - AI 한줄 요약 (30자 이내) - - 상세 요약 정리 (논의 주제, 발언자별 의견, 결정 사항, 보류 사항) - - 안건별 Todo 목록 (제목, 담당자, 마감일, 우선순위) - - 회의록 상태 (작성중/확정완료) -- **연동**: Meeting 서비스, AI 서비스 +- **출력**: 통계, 안건별 AI 요약(한줄 + 상세), Todo 목록, 회의록 상태 +- **연동**: Meeting, AI 서비스 -#### 에러 처리 -- **통계 생성 실패**: "통계를 생성할 수 없습니다" + 건너뛰기 옵션 -- **AI 요약 생성 실패**: "AI 요약을 생성할 수 없습니다. 회의록 수정 화면에서 직접 작성해주세요" -- **바로 확정 실패**: "회의록 확정에 실패했습니다. 다시 시도해주세요" -- **네트워크 오류**: 자동 재시도 3회, 실패 시 재시도 버튼 제공 +#### 에러 +- 통계 생성 실패: "건너뛰기" 옵션 +- AI 요약 실패: "회의록 수정 화면에서 직접 작성해주세요" +- 바로 확정 실패: "다시 시도" 버튼 +- [네트워크 오류](#네트워크-오류) 참조 (자동 재시도 3회) --- ### 10-회의록상세조회 #### 개요 -- **목적**: 지난 회의록의 전체 내용 및 상세 정보 확인 +- **목적**: 회의록 전체 내용 및 상세 정보 확인 - **관련 유저스토리**: UFR-MEET-047, UFR-AI-040, UFR-MEET-048 -- **비즈니스 중요도**: 중간 -- **접근 경로**: 대시보드 → "내 회의록" 항목 클릭 -- **권한**: 모든 회의 참여자 (조회 전용) +- **접근 경로**: 대시보드 → "내 회의록" 클릭 +- **권한**: 모든 참여자 (조회 전용) -#### 주요 기능 (MVP 스코프 축소 v1.5.0) -1. 회의 기본 정보 표시 -2. **안건별 AI 요약 표시** (안건 최상단) -3. 안건별 상세 내용 표시 -4. **참고자료 표시** (안건 하단) -5. **Todo 단순 조회** (UFR-MEET-047): 제목, 담당자만 표시 (D-day, 우선순위 라벨 제거) -6. 첨부파일 다운로드 -7. 회의록 수정/공유 액션 +#### 고유 기능 +1. 회의 기본 정보 + 상태 배지 +2. **2개 탭 구조**: 대시보드 / 회의록 +3. **대시보드 탭**: 핵심내용, 결정사항, Todo, 참고자료 요약 +4. **회의록 탭**: 안건별 구조 (AI 요약 + 내용 + 참고자료) -**변경사항 (v1.5.0)**: -- ❌ 제거: Todo 관리 화면 연동 링크 (화면 자체가 제거됨) -- ❌ 제거: Todo D-day 라벨, 우선순위 배지 표시 -- ✅ 변경: Todo는 단순 조회만 가능 (제목 + 담당자 + 마감일만 표시) -- ✅ 변경: "수정" 버튼을 회의 제목 우측으로 이동 +#### UI 구성 +- **헤더**: 뒤로가기, 회의 제목, "수정"(우측), 메뉴 +- **기본 정보 카드**: 일시, 참여자, 장소, 상태, 작성자 +- **탭 네비게이션**: 대시보드 (기본) / 회의록 -#### UI 구성요소 +**대시보드 탭**: +- 핵심내용 (4-5개 포인트, 키워드 클라우드, 통계) +- 결정사항 (카드 리스트) +- Todo 진행상황 (제목 + 담당자 + 마감일만, D-day/우선순위 제거) +- 참고자료 (관련 회의록/문서, 관련도 배지) -**Mobile (320px~768px)** -- **헤더** - - 뒤로가기 버튼 - - 회의 제목 - - "수정" 버튼 (회의 제목 우측, 아이콘 또는 텍스트 버튼) - - 메뉴 버튼 (삭제, 공유 등) - -- **기본 정보 카드** - - 회의 일시 - - 참여자 아바타 및 이름 (역할 구분) - - 회의 장소 - - 회의록 상태 배지 (작성중/확정완료) - - 작성자 및 최종 수정 시간 - -- **탭 네비게이션** (상단, Fixed) - - "대시보드" 탭 (기본 활성) - - "회의록" 탭 - -- **회의록 탭 콘텐츠** (안건별 구조) - - 각 안건: - - 안건 제목 - - 검증 완료 배지 (검증된 경우) - - **AI 회의 내용 요약 영역** (안건 최상단, 강조 박스) - - 요약 아이콘 (💡) - - AI 자동 생성 요약 (2-3문장) - - 요약 생성/수정 시간 - - "수정" 버튼 (권한 있는 경우) - - 안건 내용 (마크다운 렌더링) - - **참고자료 영역** (안건 하단, 별도 영역) - - "참고자료" 라벨 - - 관련 회의록 링크 리스트 (최대 3개): - - 링크 아이콘 (📄) - - 회의 제목 (클릭 가능) - - 회의 날짜 - - 관련도 표시 (퍼센트, 색상 코딩) - - 1-2줄 요약 - - "더보기" 버튼 (3개 초과 시) - - 접기/펼치기 버튼 (선택) - -- **대시보드 탭 콘텐츠** (11-회의록대시보드.html 구조 참조) - - **핵심내용 섹션** (💡) - - 번호 매김된 핵심 포인트 (4-5개) - - 주요 키워드 태그 클라우드 - - 회의 통계 (참여자 수, 시간, 발언 횟수, 주요 의제 수) - - - **결정사항 섹션** (✅) - - 결정사항 카드 리스트 - - 각 카드: 결정 내용 + 결정자 + 시간 + 배경 설명 - - - **Todo 진행상황 섹션** (📋) - MVP 스코프 축소 - - **단순 조회만 제공** (UFR-MEET-047) - - Todo 리스트: - - 각 Todo: 제목 + 담당자 + 마감일만 표시 - - ❌ 제거: D-day 라벨, 우선순위 배지, 진행률 바, 상태별 필터 - - ❌ 제거: Todo 관리 화면 연동 (클릭 액션 없음) - - - **참고자료 섹션** (📚) - - 참고자료 탭 (관련 회의록/프로젝트 문서/이슈 트래커/위키 페이지) - - 각 참고자료 카드: - - 아이콘 + 제목 + 메타정보 (날짜, 작성자) - - 관련도 점수 배지 (92%, 88% 등) - - 2-3줄 요약 - - - **Todo 섹션** (단순 조회) - MVP 스코프 축소 - - Todo 항목 리스트: - - Todo 내용 (제목) - - 담당자 이름 - - 마감일 - - ❌ 제거: 체크박스, 우선순위 배지, D-day 라벨 - - - **첨부파일 섹션** - - 파일 아이콘 + 파일명 - - 다운로드 버튼 - -- **하단 액션 바** (Fixed) - MVP 스코프 축소 - - "공유" 버튼 - - ❌ 제거: "수정" 버튼 (헤더로 이동) - -**Tablet/Desktop (768px+)** -- **상단**: 탭 네비게이션 - - 대시보드 (기본 활성) - - 회의록 -- **메인 영역**: - - 회의록 탭: 전체 회의록 내용 (안건별 구조) - - 대시보드 탭: 핵심내용, 결정사항, Todo 진행상황, 참고자료 (11-회의록대시보드.html 구조 참조) +**회의록 탭**: +- 각 안건: 제목 + 검증 배지 + AI 요약(강조 박스) + 내용 + 참고자료(링크 리스트) #### 인터랙션 -1. **탭 전환** - - "회의록" 탭: 전체 회의록 내용 표시 (안건별 구조) - - "대시보드" 탭: 핵심내용, 결정사항, Todo, 참고자료 요약 표시 - - 탭 전환 시 URL 변경 없이 클라이언트 사이드 렌더링 +- 탭 전환: 클라이언트 사이드 렌더링 +- 안건 네비게이션: 제목 클릭 → 스크롤 +- AI 요약 편집: "수정" → 인라인 편집 (권한 있는 경우) +- 참고자료 링크: 새 탭 열기, 관련도 색상 코딩 +- "수정" 버튼: 11-회의록수정 +- "공유" 버튼: 회의록공유 화면 -2. **회의록 탭 인터랙션** - - **안건 네비게이션**: 안건 제목 클릭 → 해당 안건으로 스크롤 - - **접기/펼치기**: 긴 내용은 초기 접힌 상태, 클릭으로 펼침 - - **AI 요약 편집**: - - "수정" 버튼 클릭 (권한 있는 경우) → 인라인 편집 모드 - - 수정 내용 자동 저장 (30초 간격) - - 실시간 동기화 - - **참고자료 링크**: - - 회의록 링크 클릭 → 새 탭에서 해당 회의록 열기 - - 관련도 색상 코딩: 90%+ (초록), 70-89% (노랑), 70% 미만 (회색) - - "더보기" 클릭 → 전체 참고자료 목록 모달 - -3. **대시보드 탭 인터랙션** - MVP 스코프 축소 - - **핵심내용 섹션**: - - 키워드 태그 클릭 → 해당 키워드 관련 안건으로 스크롤 - - 통계 항목 클릭 → 상세 정보 툴팁 표시 - - **결정사항 섹션**: - - 결정사항 카드 클릭 → 회의록 탭의 해당 안건으로 이동 - - 배경 설명 접기/펼치기 - - **Todo 진행상황** (단순 조회만): - - ❌ 제거: 필터 탭, 진행률 바, Todo 관리 화면 연동 - - Todo는 읽기 전용으로만 표시 (클릭 액션 없음) - - **참고자료 섹션**: - - 탭 전환 (관련 회의록/프로젝트 문서/이슈 트래커/위키 페이지) - - 참고자료 카드 클릭 → 해당 문서로 이동 - - 관련도 점수: 배지로 표시 (92%, 88% 등) - -4. **Todo 인터랙션** - MVP 스코프 축소 - - ❌ 제거: Todo 체크박스, Todo 관리 화면 연동 - - Todo는 단순 조회만 가능 (클릭 액션 없음) - -5. **첨부파일 다운로드** - - 파일명 클릭: 다운로드 시작 - - 진행 상황 표시 - -6. **수정 및 공유** - - "수정" 버튼: 회의록수정 화면으로 이동 - - "공유" 버튼: 회의록공유 화면으로 이동 - -#### 데이터 요구사항 -- **입력**: 회의록 ID, 활성 탭 (회의록/대시보드/타임라인) +#### 데이터 +- **입력**: 회의록 ID, 활성 탭 - **출력**: - - **회의 기본 정보**: 제목, 일시, 참여자, 장소, 상태, 작성자, 수정 시간 - - **안건별 AI 요약**: 자동 생성 요약, 수정 이력 - - **안건별 내용**: 마크다운 형식 - - **참고자료 목록**: - - 관련 회의록 (제목, 날짜, 관련도, 요약) - - 프로젝트 문서 (제목, 작성자, 관련도) - - 이슈 트래커 링크 - - 위키 페이지 링크 - - **대시보드 데이터** (대시보드 탭 선택 시): - - 핵심내용 (4-5개 포인트) - - 주요 키워드 - - 회의 통계 (참여자 수, 시간, 발언 횟수, 의제 수) - - 결정사항 리스트 (결정 내용, 결정자, 시간, 배경) - - Todo 진행상황 (담당자별 그룹, 진행률) - - **Todo 목록 및 진행 상황** - - **첨부파일 목록** -- **연동**: Meeting 서비스, AI 서비스 (UFR-AI-040) + - 회의 기본 정보, 안건별 AI 요약, 안건별 내용 + - 참고자료 (회의록/문서, 관련도) + - 대시보드 데이터 (핵심내용, 결정사항, Todo, 통계) +- **연동**: Meeting, AI 서비스 -#### 에러 처리 -- **회의록 로딩 실패**: "회의록을 불러올 수 없습니다" + 재시도 버튼 -- **AI 요약 로딩 실패**: "요약을 불러올 수 없습니다" (안건 내용은 정상 표시) -- **참고자료 로딩 실패**: "참고자료를 불러올 수 없습니다" (빈 상태 표시) -- **대시보드 데이터 로딩 실패**: "대시보드를 불러올 수 없습니다" + 재시도 버튼 -- **권한 없음**: "수정" 버튼 비활성화, "조회 권한만 있습니다" 메시지 -- **첨부파일 다운로드 실패**: "파일 다운로드에 실패했습니다" +#### 에러 +- 회의록 로딩 실패: "다시 시도" +- AI 요약 로딩 실패: 안건 내용은 정상 표시 +- 참고자료 로딩 실패: 빈 상태 +- 대시보드 로딩 실패: "다시 시도" +- 권한 없음: "수정" 비활성화 --- ### 11-회의록수정 #### 개요 -- **목적**: 지난 회의록 조회 및 수정 +- **목적**: 회의록 조회 및 수정 - **관련 유저스토리**: UFR-MEET-055, UFR-AI-040, UFR-COLLAB-030 -- **비즈니스 중요도**: 중간 -- **접근 경로**: 10-회의록상세조회 → 하단 액션 바 "수정" 버튼 클릭 +- **접근 경로**: 10-회의록상세조회 → "수정" 버튼 - **권한 제어**: - - **검증완료 전**: 모든 참여자가 수정 가능 - - **검증완료 후**: 회의 생성자만 수정 가능 (참여자는 "수정" 버튼 비활성화) + - 검증완료 전: 모든 참여자 수정 가능 + - 검증완료 후: 회의 생성자만 수정 가능 -#### 주요 기능 (MVP 스코프 축소 v1.5.2) -1. 회의 기본 정보 표시 및 수정 - - 회의 제목: 수정 가능 - - 회의 일시/장소: 읽기 전용 (회의 예약 화면에서만 변경 가능) - - 참여자 관리: 회의 생성자만 추가/삭제 가능 -2. **회의록 내용 수정 (안건별)** - 용어 변경: 섹션 → 안건 -3. **AI 요약 표시 및 재생성 (안건별, UFR-AI-036)** - - AI 한줄 요약 표시 (30자 이내, 읽기 전용) - - 텍스트 편집 영역에서 안건 내용 수정 가능 - - "AI 재생성" 버튼: 텍스트 편집 영역 내용 기반으로 한줄 요약만 재생성 (2-5초 처리) - - 재생성된 한줄 요약은 회의록 상세조회 화면의 대시보드 및 회의록 탭에 즉시 반영 -4. **참고자료 편집** (추가/제거) -5. **Todo 단순 조회** (제목 + 담당자 + 마감일만 표시) -6. **안건별 검증 완료 체크박스 (UFR-COLLAB-030)** - - 회의 생성자: 검증 완료 체크박스 활성화, 잠금 해제 후 수정 가능 - - 참여자: 검증완료 안건은 읽기 전용 -7. 자동 저장 (30초 간격) -8. 수정 이력 관리 -9. 상태 변경 (검증완료 → 작성중으로 자동 변경) +#### 고유 기능 +1. 회의 기본 정보 수정 + - 제목: 수정 가능 + - 일시/장소: 읽기 전용 + - 참여자: 생성자만 추가/삭제 +2. **안건별 편집** + - AI 요약 (한줄, 30자, 읽기 전용) + - 텍스트 편집 영역 (안건 내용 자유 작성) + - "AI 재생성" 버튼 (한줄 요약 재생성, 2-5초) + - 참고자료 추가/제거 +3. **Todo 단순 조회** (제목 + 담당자 + 마감일만) +4. **안건별 검증 완료 체크박스** + - 생성자: 체크박스 활성, 잠금 해제 가능 + - 참여자: 검증완료 안건 읽기 전용 +5. 자동 저장 (30초 간격) +6. 상태 변경 (확정완료 → 작성중) -**변경사항 (v1.5.2)**: -- ✅ 명칭 변경: "AI 상세 요약" → "AI 요약" -- ✅ 기능 통합: AI 재생성 버튼 클릭 시 텍스트 편집 영역 내용 기반으로 한줄 요약 생성 (UFR-AI-036) -- ❌ 제거: AI 상세 요약 및 한줄 요약 분리 표시 (한줄 요약만 표시) -- ❌ 제거: 실시간 협업 표시 ("편집 중" 표시 제거) -- ❌ 제거: Todo 편집 기능 (체크박스, 담당자/마감일/우선순위 변경, 추가/삭제) -- ❌ 제거: 검증률 표시 및 최종 확정 버튼 -- ✅ 정책: Last Write Wins (마지막 저장 우선) 적용 - -#### UI 구성요소 - -**Mobile (320px~768px)** -- **헤더** - - 뒤로가기 버튼 (10-회의록상세조회로 이동) - - "회의록 수정" 타이틀 - - "저장" 버튼 (Primary) - - 자동 저장 인디케이터 ("저장됨", "저장 중...") - -- **회의 기본 정보 영역** - - 회의 제목: 편집 가능 (텍스트 필드) - - 회의 일시: 읽기 전용 (📅 아이콘 + 날짜/시간 표시) - - 회의 장소: 읽기 전용 (📍 아이콘 + 장소명) - - 참여자 목록: - - 회의 생성자: 추가/삭제 가능 (05-회의진행 화면과 동일한 UI) - - 참여자: 읽기 전용 표시 - - 각 참여자: 아바타 + 이름, 삭제(×) 버튼 (생성자는 삭제 불가) - - "참여자 추가" 버튼 (이메일 입력 + 초대) - - 회의록 상태 배지 (자동 관리) - -- **편집 화면** (MVP 스코프 축소) - - **안건별 편집 영역** (용어 변경: 섹션 → 안건) - - 각 안건: - - **안건 헤더** - - 안건 제목 (H4, Bold) - - 검증 상태 배지 (검증완료/미검증) - - ❌ 제거: "편집 중" 표시 (실시간 협업 기능 제거) - - **AI 요약** (읽기 전용, UFR-AI-036) - - 💡 "AI 요약" 레이블 - - AI 한줄 요약 표시 (30자 이내) - - 읽기 전용 영역 (회색 배경, 민트 그린 좌측 액센트 라인) - - 호버 시: "이 내용은 편집할 수 없습니다" 툴팁 - - **텍스트 편집 영역** - - 안건 내용 편집 필드 (textarea) - - 논의 주제, 발언자별 의견, 결정 사항, 보류 사항 등 자유 작성 - - "AI 재생성" 버튼: 텍스트 편집 영역 내용 기반으로 AI 요약의 한줄 요약 재생성 - - 마지막 수정 시간 표시 - - **참고자료 편집 영역** - - 기존 참고자료 목록 (제거 버튼 포함) - - "참고자료 추가" 버튼 - - 회의록 검색 및 선택 UI - - **Todo 섹션 단순 조회** (편집 불가) - - Todo 목록 표시 (읽기 전용) - - 각 Todo 항목: - - Todo 제목 - - 담당자 - - 마감일 - - ❌ 제거: 체크박스, 우선순위 배지, D-day 라벨, 편집/삭제 버튼 - - **안건별 검증 영역** (UFR-COLLAB-030) - - **회의 생성자 화면**: - - 검증 완료 체크박스 (활성화) - - "잠금 해제" 버튼 (검증완료 안건만 표시) - - **참여자 화면**: - - 🔒 "읽기 전용" 배지 (검증완료 안건) - - 안내 텍스트: "(잠금됨 · 회의 생성자만 수정 가능)" - - 자동 저장 상태 표시 ("저장됨", "저장 중...") - -**Tablet/Desktop (768px+)** -- **헤더**: Mobile과 동일 (뒤로가기, 타이틀, 저장 버튼, 자동 저장 인디케이터) -- **메인 영역**: - - 회의 기본 정보 영역 (Mobile과 동일) - - 편집 화면 (안건별 편집, AI 한줄/상세 요약, 참고자료, Todo, 안건별 검증) -- **우측 패널** (선택사항): - - 수정 이력 (v2.0 고도화 예정) - - 미리보기 +#### UI 구성 +- **헤더**: 뒤로가기, "회의록 수정", "저장", 자동 저장 인디케이터 +- **기본 정보**: 제목(편집), 일시(읽기), 장소(읽기), 참여자(생성자만 편집) +- **안건 편집**: + - 헤더 (제목 + 검증 배지) + - AI 요약 (읽기 전용, 회색 배경, 민트 액센트) + - 텍스트 편집 (textarea) + "AI 재생성" + - 참고자료 편집 ("참고자료 추가") + - Todo 섹션 (읽기 전용) + - 검증 영역 (체크박스 + "잠금 해제") #### 인터랙션 -1. **화면 진입** - - 10-회의록상세조회 → "수정" 버튼 클릭 - - 권한 확인: 검증완료 후에는 회의 생성자만 접근 가능 - - 바로 편집 모드로 시작 +- 화면 진입: 권한 확인 (검증완료 후 생성자만) +- 내용 수정: 자동 저장 30초, "저장" 수동 +- **AI 한줄 요약**: 읽기 전용, 호버 → "편집 불가" 툴팁 +- **AI 재생성**: 텍스트 편집 내용 기반으로 한줄 요약 재생성 +- **안건별 검증**: + - 생성자: 체크박스 클릭 → 검증완료/미검증 토글 + - 생성자: "잠금 해제" → 확인 다이얼로그 → 편집 가능 + - 참여자: 검증완료 안건 모든 필드 disabled +- **참고자료 편집**: [참고자료 관리 패턴](#참고자료-관리) 참조 +- **저장 로직**: 검증완료 안건 스킵, "N개 안건 저장, M개 스킵" 알림 +- **충돌 방지**: Last Write Wins (안건별 독립) -2. **내용 수정** - - 텍스트 영역 클릭: 포커스 및 편집 가능 - - 자동 저장: 30초 간격, 인디케이터 표시 - - 수동 저장: "저장" 버튼 클릭 +#### 데이터 +- **입력**: 회의록 ID, 수정 내용, AI 요약 수정, 참고자료 변경, 안건별 검증 상태 +- **출력**: 수정 결과, AI 한줄 요약(읽기), AI 상세 요약 재생성 결과, 수정 이력 +- **연동**: Meeting, AI(UFR-AI-036, UFR-AI-040), COLLAB 서비스 -3. **AI 한줄 요약 확인 (UFR-AI-036)** - MVP 스코프 축소 - - **읽기 전용 표시**: - - 🔒 아이콘으로 편집 불가 명시 - - 회색 배경 + 민트 그린 좌측 액센트 라인 - - **호버 인터랙션**: - - 툴팁 표시: "이 내용은 편집할 수 없습니다. 회의 종료 시 1회만 생성됩니다." - - **위치**: 각 안건 최상단 (안건 제목 바로 아래) - - ❌ 제거: "AI 재생성" 버튼 (한줄 요약은 회의 종료 시 1회만 생성) - -4. **AI 상세 요약 편집** - MVP 스코프 축소 - - 요약 텍스트 필드 클릭: 직접 수정 가능 - - "AI 재생성" 버튼 클릭: - - 현재 안건 내용 기반으로 **상세 요약만** 재생성 (한줄 요약 제외) - - 로딩 인디케이터 표시 - - 생성 완료 시 자동 업데이트 - - 자동 저장 (30초 간격) - -5. **안건별 검증 완료 체크박스 (UFR-COLLAB-030)** - MVP 스코프 축소 - - **회의 생성자 권한**: - - 검증 완료 체크박스 클릭: - - 체크: 안건 검증 완료 처리 (배지 "검증완료"로 변경) - - 언체크: 미검증 상태로 변경 - - "잠금 해제" 버튼 클릭 (검증완료 안건만 표시): - - 확인 다이얼로그: "이 안건의 잠금을 해제하시겠습니까?" - - 확인 시: 안건 검증 완료 체크 해제 → 편집 가능 상태로 변경 - - **참여자 화면**: - - 검증완료 안건: 🔒 "읽기 전용" 배지 표시 - - 안내 텍스트: "(잠금됨 · 회의 생성자만 수정 가능)" - - 모든 입력 필드 비활성화 (disabled) - - ❌ 제거: 검증률 계산 및 표시, "최종 확정" 버튼 - -6. **참고자료 편집** - - "참고자료 추가" 버튼 클릭: - - 회의록 검색 모달 표시 - - 제목, 날짜, 키워드로 검색 - - 선택된 회의록 추가 - - 제거 버튼 (X): 참고자료 목록에서 제거 - - 순서 변경: 드래그하여 순서 조정 (선택) - -7. **Todo 섹션 단순 조회** - MVP 스코프 축소 - - ❌ 제거: Todo 편집/추가/삭제 기능 전체 제거 - - Todo는 읽기 전용으로만 표시 (제목 + 담당자 + 마감일) - - 모든 사용자 (생성자 포함)에게 조회만 가능 - -8. **상태 변경** - MVP 스코프 축소 - - 확정완료 회의록 수정 시: 자동으로 "작성중" 상태로 변경 - - ❌ 제거: "확정완료"로 변경 제안 (검증률 기능 제거로 인해) - -9. **저장 로직** - MVP 스코프 축소 - - **"저장" 버튼 클릭 시**: - - 검증완료된 안건: 저장 스킵 - - 미검증 안건: 저장 진행 - - **저장 결과 알림**: - - "N개 안건이 저장되었습니다" - - "M개 안건은 검증완료 상태로 저장되지 않았습니다" - - 저장 불가 안건 목록 표시 - - **자동 저장** (30초 간격): - - 미검증 안건만 자동 저장 - - 검증완료 안건은 자동 저장 스킵 - -10. **안건 기반 충돌 방지 (UFR-COLLAB-030)** - MVP 스코프 축소 - - **안건 기반 충돌 방지 메커니즘**: - - **다른 안건 동시 편집**: 충돌 없음 - - 참여자 A가 안건 1 편집 - - 참여자 B가 안건 2 편집 가능 - - 양쪽 모두 정상 저장 - - - **동일 안건 검증 완료 체크로 충돌 방지**: - - 검증완료된 안건: 편집 불가 (회의 생성자만 잠금 해제 가능) - - 미검증 안건: Last Write Wins (마지막 저장 우선) - - - **동일 필드 동시 수정**: Last Write Wins - - 마지막에 저장된 변경 사항이 적용 - - 별도 경고 없이 덮어쓰기 - - - ❌ 제거: 실시간 "편집 중" 표시 - - ❌ 제거: 충돌 경고 모달 및 선택 옵션 - -#### 데이터 요구사항 (MVP 스코프 축소) -- **입력**: - - 회의록 ID (조회) - - 수정 내용 (안건 ID, 내용) - 용어 변경: 섹션 → 안건 - - **AI 한줄 요약** (읽기 전용, 입력 불가) - - **AI 상세 요약 수정** (안건 ID, 요약 내용) - - **참고자료 변경** (추가/제거할 회의록 ID) - - **안건별 검증 상태** (안건 ID, 검증 여부) -- **출력**: - - 회의록 목록 (필터/정렬/검색 결과) - - 수정 결과 (성공/실패) - - **AI 한줄 요약** (회의 종료 시 생성, 편집 불가) - - **AI 상세 요약 재생성 결과** (한줄 요약 제외) - - 수정 이력 (누가, 언제, 무엇을) - - ❌ 제거: 검증률 출력 -- **연동**: Meeting 서비스, AI 서비스 (UFR-AI-010, UFR-AI-036, UFR-AI-040), COLLAB 서비스 (UFR-COLLAB-030) - -#### 에러 처리 (MVP 스코프 축소) -- **권한 없음**: "본인이 작성한 회의록만 수정할 수 있습니다" -- **자동 저장 실패**: "네트워크 연결을 확인해주세요. 로컬에 임시 저장됩니다" -- **AI 요약 재생성 실패**: "요약 생성에 실패했습니다. 수동으로 작성해주세요" -- **참고자료 검색 실패**: "회의록을 검색할 수 없습니다" -- **검증완료 안건 저장 시도**: - - 저장 결과 알림: "N개 안건이 저장되었습니다. M개 안건은 검증완료 상태로 저장되지 않았습니다" - - 저장 불가 안건 목록 표시 -- **삭제 실패**: "회의록 삭제에 실패했습니다" -- ❌ 제거: 충돌 경고 모달 (Last Write Wins 적용으로 인해) +#### 에러 +- 권한 없음: "본인이 작성한 회의록만 수정 가능" +- 자동 저장 실패: "네트워크 확인, 로컬 임시 저장" +- AI 재생성 실패: "수동 작성해주세요" +- 참고자료 검색 실패: "회의록 검색 불가" +- 검증완료 저장 시도: 스킵 알림 + 목록 표시 --- ### 12-회의록목록조회 #### 개요 -- **목적**: 회의록 목록 조회 및 필터링/정렬/검색 기능 제공 -- **관련 유저스토리**: UFR-MEET-046 (회의록목록조회) -- **비즈니스 중요도**: 높음 -- **프로토타입**: design/uiux/prototype/12-회의록목록조회.html -- **데이터 소스**: common.js → SAMPLE_MINUTES 배열 (30개 샘플 데이터) -- **접근 경로**: - - 대시보드 → "내 회의록" 전체 보기 - - 하단 네비게이션 → "회의록" 메뉴 -- **권한**: 모든 회의 참여자 (본인이 참여한 회의록만 조회) +- **목적**: 회의록 목록 조회 및 필터링/정렬/검색 +- **관련 유저스토리**: UFR-MEET-046 +- **접근 경로**: 대시보드 → "전체 보기" 또는 하단 네비게이션 → "회의록" +- **권한**: 모든 참여자 (본인 참여 회의록만) -#### 데이터 아키텍처 -- **데이터 레이어**: common.js의 SAMPLE_MINUTES 배열 - - 총 30개 샘플 데이터 (작성중 13개, 확정완료 17개) - - 각 회의록 객체 구조: id, meetingId, title, date, time, status, participants, participantCount, lastUpdated, sections, todos, completionRate -- **뷰 레이어**: 12-회의록목록조회.html - - JavaScript 기반 동적 렌더링 - - renderMeetings() 함수: 필터링/정렬/검색 로직 처리 후 목록 생성 - - createMeetingCard() 함수: 개별 회의록 카드 HTML 생성 -- **렌더링 방식**: - - 페이지 로드 시: DOMContentLoaded 이벤트에서 renderMeetings() 호출 - - 초기 표시: 10개 회의록 (displayedCount 변수로 관리) - - 추가 로딩: "10개 더보기" 버튼 클릭 시 10개씩 증가 - - 필터/정렬/검색 시: 즉시 renderMeetings() 재호출하여 목록 갱신 +#### 고유 기능 +1. **필터링**: 참여 유형 (전체/참여/생성), 상태 (전체/작성중/확정완료) +2. **정렬**: 최근수정순 (기본), 최근회의순, 제목순 +3. **검색**: 제목, 참여자, 키워드 통합 검색 (실시간) +4. **페이지네이션**: 초기 10개, "10개 더보기" -#### 주요 기능 -1. **회의록 목록 조회** (참여/생성한 회의록) -2. **필터링 기능**: - - 참여 유형: 참여한 회의, 생성한 회의 - - 상태: 전체, 작성중, 확정완료 -3. **정렬 기능**: - - 최근수정순 (수정 일시 기준, 최근 순) - 기본값 - - 최근회의순 (회의 일시 기준, 최근 순) - - 제목순 (가나다순) -4. **검색 기능**: - - 제목, 참여자, 키워드로 통합 검색 - - 실시간 검색 결과 업데이트 -5. **페이지네이션**: - - 초기 10개 회의록 표시 - - "10개 더보기" 버튼으로 추가 로딩 -6. 회의록 상세 조회 (항목 클릭 시) - -#### UI 구성요소 - -**Mobile (320px~768px)** -- **헤더** (Fixed, 상단) - - 뒤로가기 버튼 - - "내 회의록" 타이틀 - - 검색 아이콘 (검색창 포커스) - -- **필터 및 정렬** (상단, 스크롤 가능) - - **필터 행 1** (2컬럼 그리드): - - 상태 필터 (Select) - - 옵션: 전체, 작성중, 확정완료 - - 기본값: 전체 - - 정렬 (Select) - - 옵션: 최신순, 회의일시순, 제목순 - - 기본값: 최신순 - - - **참여 유형 필터** (탭 형식, 선택): - - 전체 (기본 선택) - - 참여한 회의 - - 생성한 회의 - -- **검색 영역** - - 검색 입력 필드 - - Placeholder: "회의 제목, 참여자, 키워드 검색" - - 실시간 검색 (입력 시 즉시 필터링) - -- **통계 정보** (카드, 선택) - - 3컬럼 그리드: - - 전체: {count}개 - - 작성중: {count}개 - - 확정완료: {count}개 - - 구분선으로 시각적 분리 - -- **회의록 목록** (스크롤 가능) - - 각 회의록 항목 (meeting-item): - - **좌측 영역**: - - 회의 제목 (H5, 볼드) - - **생성자 표시**: 현재 사용자가 회의 생성자인 경우 👑 아이콘 표시 (16px, title="생성자") - - 메타정보 (Caption, 회색): - - 회의 일시 (날짜 + 시간) · 참여자 수 - - 검증완료율 (작성중 상태일 때만): "✓ {completionRate}% 검증완료" 배지 - - 최종 수정 시간 (Caption, 회색): - - 상대 시간 표시 ("1시간 전", "어제", "3일 전") - - **우측 영역**: - - 상태 배지: - - "확정완료" (초록색 배지) - - "작성중" (노란색 배지) - - 조회 권한 표시 (조회 전용인 경우): - - "조회 전용" (Caption, 회색) - - 빈 상태: - - 검색 결과 없음: "검색 결과가 없습니다" - - 회의록 없음: "회의록이 없습니다" - -**Mobile (320px~768px)** -- **하단 네비게이션**: [Mobile 하단 네비게이션](#mobile-하단-네비게이션-320px768px) 참조 (회의록 활성) - -**Tablet/Desktop (768px+)** -- **좌측 사이드바**: [Desktop 좌측 사이드바](#desktop-좌측-사이드바-768px) 참조 (회의록 활성) - -- **메인 콘텐츠** (중앙) - - 필터 및 정렬 (상단, 가로 배치) - - 참여 유형 필터 (탭 또는 버튼 그룹) - - 검색 영역 - - 통계 정보 (3컬럼 카드) - - 회의록 목록 (Grid 또는 List Layout) - - 각 카드: 호버 시 그림자 증가, 약간 상승 +#### UI 구성 +- **헤더**: 뒤로가기, "내 회의록", 검색 아이콘 +- **필터/정렬**: + - 필터 행 (2컬럼): 상태 Select + 정렬 Select + - 참여 유형 탭 (선택): 전체/참여/생성 +- **검색**: "회의 제목, 참여자, 키워드 검색" placeholder +- **통계 카드** (3컬럼): 전체, 작성중, 확정완료 개수 +- **회의록 목록**: + - 각 항목: 제목 + 생성자(👑) + 일시/참여자 + 검증완료율(작성중만) + 수정시간 + 상태 배지 + - 빈 상태: "검색 결과 없음" / "회의록 없음" +- **네비게이션**: [하단 네비게이션](#mobile-하단-네비게이션-320px768px) / [사이드바](#desktop-좌측-사이드바-768px) 참조 #### 인터랙션 +- 필터/정렬 변경 → 즉시 재렌더링 +- 검색 입력 → 실시간 (debounce 300ms) +- 회의록 클릭 → 10-회의록상세조회 +- 통계 자동 갱신 (필터/검색 적용 시) -1. **필터링** - - 상태 필터 변경 → 즉시 목록 재렌더링 - - 참여 유형 탭 선택 → 해당 유형 회의록만 표시 - - 필터 조합 가능 (상태 + 참여 유형) +#### 데이터 +- **입력**: 사용자 ID, 필터(참여 유형, 상태), 정렬, 검색어 +- **출력**: 회의록 목록 (회의 기본 정보 + 생성자 ID + 조회 권한), 통계 (전체/작성중/확정완료 개수) +- **연동**: Meeting 서비스 -2. **정렬** - - 정렬 옵션 선택 → 즉시 목록 재정렬 - - 정렬 기준: - - 최신순: `updatedAt DESC` - - 회의일시순: `meetingDate DESC` - - 제목순: `title ASC` (한글 가나다순) - -3. **검색** - - 검색 아이콘 클릭 → 검색 입력 필드에 포커스 - - 텍스트 입력 → 실시간 검색 (debounce 300ms) - - 검색 범위: - - 회의 제목 (부분 일치) - - 참여자 이름 (부분 일치) - - 키워드 (태그, 내용에서 추출된 키워드) - - 검색어 지우기: X 버튼 (검색어 입력 시 표시) - -4. **회의록 조회** - - 회의록 항목 클릭 → 회의록 상세 화면으로 이동 - - 전달 데이터: 회의록 ID - - 조회 전용 회의록: 읽기 모드로 표시 - -5. **통계 업데이트** - - 필터/검색 적용 시 → 통계 자동 갱신 - - 전체, 작성중, 확정완료 개수 실시간 반영 - -6. **빈 상태 처리** - - 검색 결과 없음: "검색 결과가 없습니다" 메시지 - - 필터링 결과 없음: 필터 조건에 맞는 회의록 없음 안내 - - 회의록 없음: "회의록이 없습니다" + 회의 시작 유도 메시지 - -#### 데이터 요구사항 - -- **입력**: - - 사용자 ID (현재 로그인 사용자) - - 필터 조건: - - 참여 유형: `all` | `shared` | `attended` | `created` - - 상태: `all` | `draft` | `confirmed` - - 정렬 기준: `recent` | `date` | `title` - - 검색어 (선택) - -- **출력**: - - 회의록 목록: - - 회의 ID - - 제목 - - 회의 일시 - - 참여자 목록 (또는 참여자 수) - - 상태 (`draft` | `confirmed`) - - 생성자 ID - - 생성일시 (`createdAt`) - - 수정일시 (`updatedAt`) - - 조회 권한 (편집 가능 여부) - - 통계: - - 전체 개수 - - 작성중 개수 - - 확정완료 개수 - -- **연동**: - - Meeting 서비스 (회의록 목록 조회 API) - - Share 서비스 (공유 정보 조회) - -#### 에러 처리 - -- **데이터 로딩 실패**: - - "회의록을 불러오는 중 오류가 발생했습니다." 메시지 - - "다시 시도" 버튼 제공 - -- **검색 실패**: - - "검색 중 오류가 발생했습니다." 토스트 메시지 - - 기존 목록 유지 - -- **네트워크 오류**: - - "네트워크 연결을 확인해주세요." 토스트 메시지 - - 자동 재시도 (최대 3회, exponential backoff) - -- **권한 없음**: - - 접근 권한 없는 회의록 클릭 시: - - "접근 권한이 없습니다" 토스트 메시지 - - 목록으로 복귀 - -- **빈 상태**: - - 검색 결과 없음: "검색 결과가 없습니다" - - 필터링 결과 없음: "조건에 맞는 회의록이 없습니다" - - 전체 회의록 없음: "회의록이 없습니다. 첫 회의를 시작해보세요!" + 회의 시작 버튼 +#### 에러 +- 데이터 로딩 실패: "다시 시도" 버튼 +- 검색 실패: 토스트, 기존 목록 유지 +- [네트워크 오류](#네트워크-오류) 참조 (자동 재시도 3회) +- 권한 없음: 클릭 시 "접근 권한 없음" 토스트 +- 빈 상태: "검색 결과 없음" / "조건에 맞는 회의록 없음" / "회의록 없음 + 회의 시작 버튼" [↑ 목차로 돌아가기](#목차) @@ -1640,57 +599,68 @@ graph TD ### 네비게이션 -#### Mobile 하단 네비게이션 (320px~768px) - **v1.5.0 변경** -- **위치**: Fixed, 하단 (height: 64px) -- **배경**: 흰색, 상단 테두리 (1px solid #E5E7EB) -- **그림자**: 0 -2px 8px rgba(0, 0, 0, 0.08) -- **구성**: 2개 항목 (균등 분할) - - **홈** (대시보드) - - 아이콘: 🏠 (24px) - - 텍스트: "홈" (12px) - - 활성 상태: 민트 그린 (#4DD5A7) - - 비활성 상태: 회색 (#6B7280) - - **회의록** (회의록 목록) - - 아이콘: 📋 (24px) - - 텍스트: "회의록" (12px) - - ~~**Todo** (Todo 관리)~~ (MVP v2.4.0에서 제거됨) - - ~~아이콘: ✅ (24px)~~ - - ~~텍스트: "Todo" (12px)~~ -- **사용 화면**: 02-대시보드, 12-회의록목록조회 -- **참고**: 프로필 메뉴는 프로토타입에서 제거됨 (Desktop 사이드바의 사용자 정보 영역으로 통합) +#### Mobile 하단 네비게이션 (320px~768px) +- **위치**: Fixed, 하단 (64px) +- **구성**: 2개 항목 균등 분할 + - 홈 (🏠, "홈", 대시보드) + - 회의록 (📋, "회의록", 회의록 목록) +- **활성 상태**: 민트 그린 (#4DD5A7) +- **비활성**: 회색 (#6B7280) -#### Desktop 좌측 사이드바 (768px+) - **v1.5.0 변경** -- **위치**: Fixed, 좌측 (width: 240px) -- **배경**: 흰색, 우측 테두리 (1px solid #E5E7EB) +#### Desktop 좌측 사이드바 (768px+) +- **위치**: Fixed, 좌측 (240px) - **구성**: - - **상단 영역**: - - 서비스 로고 (32px) - - 서비스명 (16px Bold) - - **메인 메뉴**: - - 대시보드 - - 내 회의록 - - ~~Todo~~ (MVP v2.4.0에서 제거됨) - - **하단 영역**: - - 사용자 정보 (아바타 + 이름) - - 로그아웃 버튼 (btn-ghost btn-sm) -- **사용 화면**: 02-대시보드, 12-회의록목록조회 + - 상단: 로고 + 서비스명 + - 메인 메뉴: 대시보드, 내 회의록 + - 하단: 사용자 정보 + 로그아웃 #### 상단 헤더 (공통) - **위치**: Sticky, 상단 -- **배경**: 흰색, 하단 테두리 (1px solid #E5E7EB) -- **구성**: - - 좌측: 뒤로가기 버튼 (화면별 조건부) - - 중앙: 페이지 타이틀 (18px Bold) - - 우측: 액션 버튼 (저장, 메뉴 등) -- **Mobile 전용 (768px 미만)**: - - 우측 상단에 프로필 아이콘 버튼 추가 (👤, 24px) - - 클릭 시 드롭다운 메뉴 표시: - - 사용자 이름 (14px Bold) - - 로그아웃 버튼 (btn-ghost btn-sm) - - 드롭다운 위치: 우측 상단 기준 아래로 펼침 - - 배경: 흰색, 그림자: var(--shadow-md) -- **Desktop (768px+)**: - - 프로필 아이콘 숨김 (사이드바 하단 영역 사용) +- **구성**: 뒤로가기(조건부), 타이틀, 액션 버튼 +- **Mobile 전용**: 우측 프로필 아이콘(👤) → 드롭다운 (이름 + 로그아웃) +- **Desktop**: 프로필 숨김 (사이드바 사용) + +[↑ 목차로 돌아가기](#목차) + +--- + +## 인터랙션 패턴 라이브러리 + +### 폼 검증 +- **실시간 검증**: 입력 시 형식 오류 즉시 표시 +- **제출 검증**: 빈 필드 → 해당 필드로 포커스 +- **오류 표시**: 필드 하단 빨간 텍스트 (14px) + +### 카드 인터랙션 +- **기본**: 배경 흰색, 테두리 회색, 둥글기 8px +- **호버**: 그림자 증가, 약간 상승 (translateY(-2px)) +- **클릭**: 해당 상세 화면으로 이동 + +### 참여자 관리 +- **추가 폼**: 이메일 입력 + "초대" 버튼 +- **유효성 검증**: 이메일 정규식 체크 +- **성공**: "{email}에게 초대 링크 전송" 토스트 +- **참여자 목록**: 아바타 + 이름, 삭제(×) 버튼 + +### 참고자료 관리 +- **추가**: "참고자료 추가" → 회의록 검색 모달 → 선택 추가 +- **제거**: X 버튼 클릭 +- **순서 변경**: 드래그 앤 드롭 (선택) + +### 드래그 앤 드롭 +- **터치**: 길게 누르기 → 드래그 시작 +- **마우스**: 클릭 드래그 +- **피드백**: 드래그 중 반투명, 드롭 위치 표시 + +### 모달 표시 +- **Mobile**: 바텀시트 (하단 슬라이드 업) +- **Desktop**: 중앙 모달 +- **닫기**: Esc 키, 배경 클릭, X 버튼 + +### 로딩 상태 +- **스켈레톤 UI**: 리스트 로딩 중 표시 +- **로딩 인디케이터**: 버튼 클릭 시 스피너 +- **프로그레스 바**: 파일 업로드/다운로드 [↑ 목차로 돌아가기](#목차) @@ -1700,38 +670,33 @@ graph TD ### 네트워크 오류 - **메시지**: "네트워크 연결을 확인해주세요" -- **재시도**: 자동 재시도 최대 3회 (exponential backoff: 1s, 2s, 4s) -- **UI**: 오류 토스트 (빨강) + "다시 시도" 버튼 -- **적용 화면**: 전체 +- **재시도**: 자동 3회 (1s, 2s, 4s exponential backoff) +- **UI**: 빨강 토스트 + "다시 시도" 버튼 ### 데이터 로딩 실패 - **메시지**: "일시적으로 데이터를 불러올 수 없습니다" - **UI**: 빈 상태 화면 + "다시 시도" 버튼 -- **적용 화면**: 전체 ### 권한 오류 - **메시지**: "접근 권한이 없습니다" -- **액션**: 3초 후 자동으로 이전 화면 또는 대시보드로 복귀 -- **UI**: 경고 토스트 (주황) -- **적용 화면**: 회의록 상세, 회의록 수정 +- **액션**: 3초 후 이전 화면 또는 대시보드 복귀 +- **UI**: 주황 토스트 ### 인증 오류 - **메시지**: "로그인이 필요합니다" -- **액션**: 로그인 화면으로 리다이렉트 -- **UI**: 정보 토스트 (파랑) -- **적용 화면**: 전체 (인증 필요 화면) +- **액션**: 로그인 화면 리다이렉트 +- **UI**: 파랑 토스트 ### 입력 검증 오류 -- **이메일 형식 오류**: "올바른 이메일 형식이 아닙니다" -- **필수 입력 누락**: "필수 항목을 입력해주세요" -- **날짜 형식 오류**: "올바른 날짜 형식이 아닙니다 (YYYY-MM-DD)" -- **UI**: 입력 필드 하단 오류 메시지 (빨강, 14px) +- 이메일: "올바른 이메일 형식이 아닙니다" +- 필수 입력: "필수 항목을 입력해주세요" +- 날짜: "올바른 날짜 형식이 아닙니다 (YYYY-MM-DD)" +- **UI**: 입력 필드 하단 빨강 메시지 ### 서버 오류 - **메시지**: "서버에 일시적인 문제가 발생했습니다" -- **UI**: 오류 토스트 (빨강) + "다시 시도" 버튼 -- **로깅**: 오류 상세 정보를 서버로 전송 (Sentry) -- **적용 화면**: 전체 +- **UI**: 빨강 토스트 + "다시 시도" 버튼 +- **로깅**: Sentry로 오류 전송 [↑ 목차로 돌아가기](#목차) @@ -1740,31 +705,19 @@ graph TD ## 화면 간 전환 및 네비게이션 ### 네비게이션 구조 - -#### Mobile (320px~768px) -- **Primary Navigation**: [Mobile 하단 네비게이션](#mobile-하단-네비게이션-320px768px) 참조 - -- **Secondary Navigation**: [상단 헤더](#상단-헤더-공통) 참조 - -#### Tablet/Desktop (768px+) -- **Primary Navigation**: [Desktop 좌측 사이드바](#desktop-좌측-사이드바-768px) 참조 - - 설정 - - 프로필 - -- **Breadcrumbs**: 상단 (선택) - - 현재 위치 경로 표시 - - 클릭하여 상위 페이지로 이동 +- **Mobile**: [하단 네비게이션](#mobile-하단-네비게이션-320px768px) + [상단 헤더](#상단-헤더-공통) +- **Desktop**: [좌측 사이드바](#desktop-좌측-사이드바-768px) + Breadcrumbs(선택) ### 전환 애니메이션 -- **화면 전환**: 페이드 또는 슬라이드 (200-300ms) -- **모달 표시**: 페이드 인 + 스케일 (150ms) +- **화면 전환**: 페이드/슬라이드 (200-300ms) +- **모달**: 페이드 인 + 스케일 (150ms) - **탭 전환**: 페이드 (100ms) -- **리스트 로딩**: 스켈레톤 UI 표시 후 페이드 인 +- **리스트 로딩**: 스켈레톤 UI → 페이드 인 -### 딥 링크 지원 -- 특정 회의록 직접 접근: `/minutes/{minuteId}` -- 특정 Todo 직접 접근: `/todo/{todoId}` -- 회의록 공유 링크: `/share/{shareToken}` +### 딥 링크 +- 회의록: `/minutes/{minuteId}` +- Todo: `/todo/{todoId}` +- 공유: `/share/{shareToken}` [↑ 목차로 돌아가기](#목차) @@ -1775,49 +728,22 @@ graph TD ### 브레이크포인트 - **Mobile**: 320px ~ 767px - **Tablet**: 768px ~ 1023px -- **Desktop**: 1024px 이상 +- **Desktop**: 1024px+ ### 레이아웃 전략 +1. **320px 기준**: 단일 컬럼, 필수 기능만, 하단 네비게이션 +2. **768px 확장**: 2컬럼, 추가 정보, 사이드바 도입 +3. **1024px 최적화**: 3컬럼, 좌측 사이드바, 마우스/키보드 강화 -#### Mobile First 접근 -1. **320px (Small Mobile) 기준 설계** - - 단일 컬럼 레이아웃 - - 필수 기능만 표시 - - 터치 친화적 UI (최소 44px 터치 영역) - - 하단 네비게이션 - -2. **768px (Tablet) 확장** - - 2컬럼 레이아웃 (일부 화면) - - 추가 정보 표시 (통계, 위젯) - - 사이드바 도입 (선택) - -3. **1024px (Desktop) 최적화** - - 3컬럼 레이아웃 (대시보드, 회의진행) - - 좌측 고정 사이드바 - - 마우스/키보드 인터랙션 강화 - - 추가 기능 노출 (단축키, 고급 필터 등) - -### 컴포넌트별 반응형 전략 - -#### 폼 (Form) -- Mobile: 단일 컬럼, 전체 너비 -- Tablet: 2컬럼 (관련 필드 그룹화) -- Desktop: 2컬럼 + 미리보기 패널 - -#### 리스트 (List) -- Mobile: 카드 형태, 스택 레이아웃 -- Tablet: 2컬럼 그리드 -- Desktop: 3컬럼 그리드 또는 마스터-디테일 - -#### 테이블 (Table) -- Mobile: 카드 형태로 변환, 중요 정보만 표시 -- Tablet: 스크롤 가능한 테이블 -- Desktop: 고정 헤더 테이블, 모든 컬럼 표시 +### 컴포넌트별 반응형 +- **폼**: Mobile 단일 → Desktop 2컬럼 + 미리보기 +- **리스트**: Mobile 스택 → Tablet 2컬럼 → Desktop 3컬럼 그리드 +- **테이블**: Mobile 카드 변환 → Desktop 고정 헤더 테이블 ### 이미지 및 미디어 -- Responsive Images: srcset 활용 -- Lazy Loading: 뷰포트 진입 시 로딩 -- 최적화: WebP 포맷, 적절한 압축 +- Responsive Images: srcset +- Lazy Loading: Intersection Observer +- 최적화: WebP, 압축 [↑ 목차로 돌아가기](#목차) @@ -1827,36 +753,31 @@ graph TD ### WCAG 2.1 Level AA 준수 -#### 1. Perceivable (인식 가능) -- **텍스트 대안**: 모든 이미지에 alt 텍스트 제공 -- **색상 대비**: 최소 4.5:1 대비율 (일반 텍스트), 3:1 (대형 텍스트) -- **텍스트 크기 조절**: 200%까지 확대 가능, 레이아웃 깨지지 않음 -- **색상만으로 정보 전달 금지**: 아이콘, 텍스트와 함께 사용 +#### 1. Perceivable +- **텍스트 대안**: 모든 이미지 alt +- **색상 대비**: 4.5:1 (일반), 3:1 (대형) +- **텍스트 크기**: 200% 확대 가능 +- **색상 독립**: 아이콘/텍스트 병행 -#### 2. Operable (조작 가능) -- **키보드 접근성**: 모든 기능 키보드로 조작 가능 - - Tab: 다음 요소로 포커스 이동 - - Shift + Tab: 이전 요소로 포커스 이동 - - Enter/Space: 버튼 활성화 - - Esc: 모달 닫기 -- **포커스 표시**: 명확한 포커스 인디케이터 (2px 파란색 테두리) -- **터치 영역**: 최소 44x44px (모바일) -- **시간 제한 없음**: 자동 저장으로 세션 만료 방지 +#### 2. Operable +- **키보드**: Tab, Shift+Tab, Enter/Space, Esc +- **포커스**: 2px 파란 테두리 +- **터치 영역**: 최소 44x44px +- **시간 제한**: 자동 저장으로 방지 -#### 3. Understandable (이해 가능) -- **명확한 레이블**: 모든 입력 필드에 레이블 제공 -- **오류 식별 및 안내**: 오류 발생 시 명확한 설명 및 해결 방법 제공 -- **일관된 UI**: 동일한 기능은 동일한 위치, 동일한 아이콘/텍스트 +#### 3. Understandable +- **명확한 레이블**: 모든 입력 필드 +- **오류 안내**: 명확한 설명 + 해결 방법 +- **일관된 UI**: 동일 기능 = 동일 위치/아이콘 -#### 4. Robust (견고함) -- **시맨틱 HTML**: 적절한 HTML 태그 사용 (header, nav, main, aside, footer) -- **ARIA 레이블**: 스크린 리더를 위한 ARIA 속성 - - role, aria-label, aria-describedby, aria-live -- **호환성**: 최신 브라우저 및 보조 기술 지원 +#### 4. Robust +- **시맨틱 HTML**: header, nav, main, aside, footer +- **ARIA**: role, aria-label, aria-describedby, aria-live +- **호환성**: 최신 브라우저 + 보조 기술 -### 접근성 테스트 -- 자동 테스트: Lighthouse, axe DevTools -- 수동 테스트: 키보드 네비게이션, 스크린 리더 (NVDA, JAWS, VoiceOver) +### 테스트 +- 자동: Lighthouse, axe DevTools +- 수동: 키보드, 스크린 리더 (NVDA, JAWS, VoiceOver) [↑ 목차로 돌아가기](#목차) @@ -1865,51 +786,34 @@ graph TD ## 성능 최적화 방안 ### 1. 로딩 성능 -- **Code Splitting**: 라우트별 청크 분리 -- **Lazy Loading**: - - 이미지: Intersection Observer - - 컴포넌트: React.lazy, dynamic import -- **Pre-fetching**: 다음 화면 리소스 미리 로딩 -- **CDN 활용**: 정적 리소스 CDN 배포 +- **Code Splitting**: 라우트별 청크 +- **Lazy Loading**: 이미지(Intersection Observer), 컴포넌트(React.lazy) +- **Pre-fetching**: 다음 화면 리소스 +- **CDN**: 정적 리소스 배포 ### 2. 렌더링 성능 -- **Virtual Scrolling**: 긴 리스트 (회의록, Todo) -- **Debounce/Throttle**: - - 검색 입력: 300ms debounce - - 스크롤 이벤트: 100ms throttle +- **Virtual Scrolling**: 긴 리스트 +- **Debounce/Throttle**: 검색(300ms), 스크롤(100ms) - **Memoization**: React.memo, useMemo, useCallback -- **CSS 애니메이션**: JavaScript 대신 CSS transition 사용 +- **CSS 애니메이션**: JavaScript 대신 ### 3. 네트워크 최적화 -- **API 요청 최적화**: - - 필요한 데이터만 요청 (GraphQL 또는 필드 선택) - - 배치 요청: 여러 API를 하나로 통합 -- **캐싱 전략**: - - 브라우저 캐시: Cache-Control 헤더 - - Service Worker: 오프라인 지원 - - 메모리 캐시: React Query, SWR +- **API**: 필요 데이터만, 배치 요청 +- **캐싱**: Cache-Control, Service Worker, React Query - **압축**: Gzip, Brotli -### 4. 실시간 동기화 최적화 -- **WebSocket 최적화**: - - Delta 전송: 전체 데이터가 아닌 변경 부분만 전송 - - 배치 업데이트: 여러 변경 사항을 묶어서 전송 - - 재연결 전략: 지수 백오프 -- **Conflict Resolution**: Operational Transformation 또는 CRDT +### 4. 실시간 동기화 +- **WebSocket**: Delta 전송, 배치 업데이트, 지수 백오프 +- **Conflict Resolution**: OT 또는 CRDT ### 5. 성능 모니터링 -- **Core Web Vitals**: - - LCP (Largest Contentful Paint): < 2.5s - - FID (First Input Delay): < 100ms - - CLS (Cumulative Layout Shift): < 0.1 -- **실시간 모니터링**: Sentry, Google Analytics +- **Core Web Vitals**: LCP <2.5s, FID <100ms, CLS <0.1 +- **모니터링**: Sentry, Google Analytics -### 성능 목표 -- **First Contentful Paint**: < 1.5s -- **Time to Interactive**: < 3.5s -- **Page Load (3G)**: < 5s -- **STT 지연 시간**: < 1s -- **실시간 동기화 지연**: < 500ms +### 목표 +- FCP: <1.5s, TTI: <3.5s +- Page Load (3G): <5s +- STT: <1s, 실시간 동기화: <500ms [↑ 목차로 돌아가기](#목차) @@ -1917,37 +821,26 @@ graph TD ## 변경 이력 -| 버전 | 날짜 | 작성자 | 변경 내용 | -|------|------|--------|----------| -| 1.0 | 2025-10-21 | 이미준 | 최초 작성 - 11개 화면 설계 완료 | -| 1.1.x | 2025-10-21 | 이미준 | **주요 변경**: AI 요약 및 참고자료 기능, 회의록 상세 화면 개선, 대시보드 UI 개선
- 1.1.0: AI 요약/참고자료 기능 추가 (05, 10, 11 화면), UFR-AI-040 관련 회의록 자동 연결
- 1.1.1: 회의록 상세 탭 구조 개선 (회의록/대시보드), 참고자료 관련도 점수 표시
- 1.1.2: 대시보드 예정 회의 카드/Todo 정렬 개선, 12-회의록목록조회 신규 추가 (필터/정렬/검색) | -| 1.2.x | 2025-10-21 | 이미준, 최유진 | **주요 변경**: 대시보드 역할 기반 접근 제어, 회의진행 화면 개선, 스타일 가이드 신규 작성
- 1.2.0: 진행중 회의 표시 기능 (배지, 참여하기 버튼, 에러 처리)
- 1.2.1: 예정 회의 생성자/참여자 권한 차별화 (수정 버튼, 참여 시간 제한, 타이머)
- 1.2.2: 참고자료 새 탭 열기, 참여자 추가 초대, 스타일 가이드 신규 작성 (민트 그린 컬러 시스템)
- 1.2.3: 설정 메뉴 제거, Todo 클릭 시 회의록 상세로 이동 (URL 파라미터 전달) | -| 1.3.x | 2025-10-21 | 이미준, 도그냥 | **주요 변경**: 반응형 네비게이션 구조, 회의진행 화면 전면 개편, 공통 UI 컴포넌트 표준화
- 1.3.0: 반응형 네비게이션 (Mobile 하단 3개, Desktop 사이드바), 05-회의진행 2열 구조 재설계, 10-회의록상세조회 타임라인 탭 제거
- 1.3.1: AI 제안 탭 3가지 유형 상세화 (논의사항/결정사항/액션아이템), 디자인 통일성 개선
- 1.3.2: 참여자 추가 폼 + 이메일 유효성 검증, 버튼/검색창 스타일 통일
- 1.3.3: 공통 UI 컴포넌트/에러 메시지 섹션 신규 작성, 중복 내용 참조 링크 교체 (파일 크기 8~10% 감소) | -| 1.4.x | 2025-10-22~25 | 이미준, 강지수, 도그냥 | **주요 변경**: Todo 관리 기능 대폭 강화, 화면 번호 재정렬, 회의록 공유 기능 제거, 유저스토리 v2.3.0 반영
- 1.4.0~1.4.5: 네비게이션 사양 통일, 대시보드 모바일 최적화, 공유 기능 제거, 화면 번호 통일, 로그아웃 기능 추가
- 1.4.6~1.4.10: 검증완료 섹션 잠금 정책, Todo 관리 확장 (통계/필터/편집), 회의록 상세 탭 순서 변경, Todo 카드 디자인 전면 개선, 공통 스타일 관리
- 1.4.11~1.4.13: 회의진행 액션아이템 탭 개선, Todo 카드 HTML/CSS 완전 통일 (3개 화면), D-day 배지 정책 (회의 중 숨김)
- 1.4.14~1.4.16: 12-회의록목록조회 데이터 아키텍처 문서화, 06-검증완료 화면 삭제, 사용자 역할 용어 통일 (생성자/참여자)
- 1.4.17~1.4.20: STT 화자 식별 불가 반영, 05-회의진행 프로토타입 기준 전면 수정, 유저스토리 v2.3.0 반영 (충돌 방지 정책 강화) | -| 1.5.1 | 2025-10-27 | 강지수 | MVP 스코프 축소 v2.4.0 반영 (4개 화면 수정)
- **02-대시보드**: Todo 위젯 및 통계 제거 (UFR-USER-020 반영)
- Todo 위젯 전체 제거 (나의 Todo 섹션 삭제)
- 통계 카드: "나의 Todo" 제거, "작성중 회의록" 유지 (2개 항목)
- 네비게이션: 하단 네비게이션 및 사이드바에서 Todo 관리 메뉴 제거
- Desktop 통계 그리드: 2개 항목만 표시
- **05-회의진행**: "AI 제안" 탭 → "AI 기반 메모" 탭 기능 변경
- 메모 입력창 + 저장 버튼 추가
- AI가 감지한 주요 내용 리스트 표시 (시간 + 내용)
- 각 참여자별 개별 저장, 다른 참여자 메모 볼 수 없음
- 메모는 회의 종료 전까지만 표시/편집 가능
- 에러 처리: AI 주요 내용 감지 실패, 메모 저장 실패 추가
- **10-회의록상세조회**: Todo 단순 조회 기능으로 변경
- Todo는 제목 + 담당자 + 마감일만 표시
- D-day 라벨, 우선순위 배지, 진행률 바, 상태별 필터 제거
- Todo 관리 화면 연동 링크 제거 (화면 자체가 제거됨)
- "수정" 버튼을 헤더로 이동
- **11-회의록수정**: 실시간 협업 기능 제거, 안건 기반 충돌 방지 강화
- "편집 중" 표시 제거 (실시간 협업 기능 제거)
- Todo 편집/추가/삭제 기능 전체 제거 (단순 조회만 가능)
- AI 한줄 요약 재생성 불가 (회의 종료 시 1회만 생성)
- 검증률 표시 및 최종 확정 버튼 제거
- 저장 로직 추가: 검증완료 안건 저장 스킵, 저장 결과 알림
- 안건별 검증 완료 체크박스로 충돌 방지 (Last Write Wins 적용)
- 에러 처리: 충돌 경고 모달 제거 (LWW로 인해) | -| 1.5.2 | 2025-10-27 | 강지수 | AI 요약 기능 통합 및 단순화 (유저스토리 v2.4.0 반영)
- **11-회의록수정**: AI 요약 기능 통합
- 명칭 변경: "AI 상세 요약" → "AI 요약"
- AI 요약 영역: AI 한줄 요약만 표시 (30자 이내, 읽기 전용)
- 텍스트 편집 영역: 안건 내용 자유 작성 (논의 주제, 발언자별 의견, 결정 사항 등)
- "AI 재생성" 버튼: 텍스트 편집 영역 내용 기반으로 AI 요약의 한줄 요약 재생성 (2-5초 처리)
- 재생성된 한줄 요약은 회의록 상세조회 화면의 대시보드 및 회의록 탭에 즉시 반영
- AI 상세 요약 및 한줄 요약 분리 표시 제거
- **프로토타입 UI 개선**:
- AI 재생성 버튼 스타일 통일: btn-secondary → btn-primary (다른 화면과 일관성)
- 안건별 검증완료 UI 단순화: 참여자는 체크박스만, 회의 생성자는 검증완료 시 잠금해제 버튼 표시
- .creator-only CSS 클래스 추가: data-is-creator 속성 기반 표시 제어
- **관련 유저스토리**: UFR-AI-036 (AI 한줄요약 확인 및 재생성), UFR-MEET-055 (안건별 검증), UFR-COLLAB-030 (충돌 방지) | -| 1.5.3 | 2025-10-27 | 강지수 | Todo 추가/편집 권한 정책 명확화 (유저스토리 v2.4.1 반영)
- **10-회의록상세조회**: Todo 추가/편집 권한 정책 추가 (대시보드 탭)
- "추가" 버튼: 모든 회의 참여자에게 노출 (Todo 리스트 우측 상단)
- "편집(✏️)" 버튼: 회의 생성자에게만 노출 (각 Todo 항목 우측)
- Todo 추가 모달: 제목, 담당자, 마감일 입력 (모든 참여자)
- Todo 편집 모달: 제목, 담당자, 마감일 수정 (회의 생성자만)
- 담당자 필드: 추가 시 또는 생성자의 편집 시만 표시
- **프로토타입 UI 개선**: 10-회의록상세조회.html
- Todo 추가/편집 모달 바텀시트 스타일 통일 (모바일: 하단 슬라이드 업, 데스크톱: 중앙 모달)
- .creator-only 클래스 적용하여 편집 버튼 권한별 표시/숨김 처리
- JavaScript initPage() 함수에서 회의 생성자 여부 확인 후 creator-only 요소 제어
- Todo 추가 성공: "담당자에게 알림이 전송되었습니다" → "캘린더가 업데이트되었습니다" 순차 토스트
- Todo 편집 성공: 담당자 변경 시 알림, 마감일 변경 시 캘린더 업데이트 토스트
- **관련 유저스토리**: UFR-MEET-047 (회의록상세조회), Todo 권한 정책 신규 추가 | -| 1.5.4 | 2025-10-28 | 도그냥 | 대시보드 최근 회의 리스트 디자인 간소화 (UFR-USER-020 반영)
- **02-대시보드**: 최근 회의 정렬 기준 명확화 및 디자인 간소화
- **정렬 기준**:
- 1순위: 회의록 미생성 회의 (진행중 + 예정) 우선 표시
- 2순위: 미생성이 3개 미만이면 최근 종료된 회의(회의록 있음)로 나머지 채움
- 각 그룹 내 정렬: 빠른 일시 순 (시작 시간 기준)
- 최대 표시: 3개
- **회의 카드 (클릭 가능 블록)**:
- 상태 라벨 (배지): "진행중", "예정", "작성중", "확정완료"
- 회의 제목 + 생성자 아이콘(👑)
- 회의 일시, 참여자 수, 장소
- 상태 버튼 (표시용): "참여하기", "수정하기", "보기"
- **디자인 간소화**: D-day 표시, 깜박임 애니메이션, 세부 색상 지정 등 제거
- **유저스토리**: UFR-USER-020 (대시보드 조회) 동일하게 수정 | -| 1.5.5 | 2025-10-28 | 도그냥 | 회의예약 화면 임시저장 기능 제거
- **03-회의예약**: 헤더 임시저장 버튼 제거
- 헤더에서 "임시저장" 버튼 완전 제거
- JavaScript 변수 선언 제거 (draftSaveBtn)
- 임시저장 이벤트 리스너 제거
- 사용자는 "예약 완료" 버튼으로만 회의 예약 가능
- **유저스토리**: UFR-MEET-010, UFR-MEET-011 임시저장 관련 출력 항목 제거
- **프로토타입**: design/uiux/prototype/03-회의예약.html 수정 | -| 1.5.6 | 2025-10-28 | 도그냥, 지수 | 02-대시보드 예정 회의 권한 제어 개선 (MVP 일정 최우선)
- **예정 회의 카드 클릭 동작**: 생성자/참여자 역할별 차별화
- 생성자: 카드 클릭 → 회의예약 화면(수정 모드) 진입
- 참여자: 카드 클릭 → 시스템 알럿 표시 ("아직 회의 시간이 되지 않아 참여하실 수 없습니다")
- **버튼 표시 규칙 변경**: 예정 회의에서 "수정하기" 버튼 제거
- 진행중: "참여하기" 버튼 표시
- 예정: 버튼 없음 (카드 클릭으로 처리)
- 완료: "보기" 버튼 표시
- **프로토타입 수정**: design/uiux/prototype/02-대시보드.html
- 권한 체크 로직 추가 (isCreator 확인)
- 시스템 알럿 추가 (참여자 클릭 시)
- **유저스토리 반영**: UFR-USER-020, UFR-MEET-011 예외처리 추가
- **다음 버전 개선 계획**: 참여자용 회의 상세 조회 모달 기능 추가 예정 (회의 정보 제공 + 시작 시간 안내) | -| 1.5.7 | 2025-10-28 | 도그냥, 지수 | UFR-TODO 잔여 참조 제거 (문서 정리)
- **유저스토리 매핑 섹션**: "Todo 서비스" 항목 제거 (96라인)
- **프로토타입 화면 목록**: "09 Todo관리" 화면 취소선 처리 및 제거 표시 추가 (124라인)
- **09-Todo관리 화면**: 제거 안내 추가 (개요 섹션에 경고 메시지 삽입)
- MVP v2.4.0에서 제거됨을 명확히 표시
- Todo 기능은 회의록 상세조회(10번) 화면에서만 제공됨을 안내
- **Todo 편집 섹션**: MVP v2.4.0 제거 표시 추가 (1163라인)
- **관련 유저스토리**: UFR-TODO-010, UFR-TODO-030, UFR-TODO-040 참조 제거 또는 삭제 표시
- **참고**: Todo 관리 독립 화면은 제거되었으나 회의록 내 Todo 기능(추가/편집)은 10번 화면에서 유지됨 | -| 1.5.8 | 2025-10-28 | 지수, 도그냥 | MVP v2.4.5 반영: Todo 관리 및 검증완료 플로우 정리
- **사용자 플로우**: "검증완료" 단계 제거, "회의종료 → 회의록수정" 플로우로 변경
- 시나리오 1: 회의진행 → 회의종료 → 회의록수정 (선택) → 대시보드
- 시나리오 3 (Todo 관리) 제거 표시
- **플로우 다이어그램**: 검증완료 및 Todo 관련 플로우 제거, 회의종료 후 회의록수정 선택 플로우로 단순화
- **02-대시보드**: Todo 항목 클릭 시 회의록 상세 이동 로직 제거, Todo 데이터 요구사항 제거, Todo 관련 빈 상태 제거
- **07-회의종료**: Todo 서비스 연동 제거 (Meeting, AI 서비스만 연동)
- **10-회의록상세조회**: Todo 서비스 연동 제거
- **네비게이션**: 하단 네비게이션 및 Desktop 사이드바에서 Todo 관리 메뉴 제거 표시 (MVP v2.4.0)
- Mobile 하단 네비게이션: 3개 → 2개 항목 (홈, 회의록)
- Desktop 사이드바: Todo 메뉴 제거
- **변경 근거**: 유저스토리 v2.4.5 기준, Todo 관리 독립 화면 제거 및 회의 종료 후 회의록 수정 단계로 간소화 | -| 1.5.9 | 2025-10-28 | 지수, 도그냥 | 용어 통일: "참석자/참석" → "참여자/참여" 변경
- **화면설계서**: 100개 인스턴스 변경 (uiux.md)
- "참석자" → "참여자" (88개)
- "참석" → "참여" (12개): "내가 참석한 회의", "본인이 참석한 회의록", "참석한 회의" 등
- **유저스토리**: 132개 인스턴스 변경 (userstory.md)
- "참석자" → "참여자" (125개)
- "참석" → "참여" (7개): "참석 중인 사용자", "참석 권한", "참석률" 등
- **프로토타입**: 34개 인스턴스 변경 (9개 HTML 파일)
- "참석자" → "참여자" (32개)
- "참석" → "참여" (2개)
- **총 266개 인스턴스 변경**: 사용자 역할 용어 완전 통일 (생성자/참여자 체계) | +| 버전 | 날짜 | 작성자 | 변경 내용 요약 | +|------|------|--------|----------------| +| 1.0 | 2025-10-21 | 이미준 | 최초 작성 - 11개 화면 설계 | +| 1.1.x | 2025-10-21 | 이미준 | AI 요약/참고자료 기능 추가, 대시보드 개선, 회의록 목록 추가 | +| 1.2.x | 2025-10-21 | 이미준, 최유진 | 역할 기반 접근 제어, 회의진행 개선, 스타일 가이드 작성 | +| 1.3.x | 2025-10-21 | 이미준, 도그냥 | 반응형 네비게이션, 회의진행 2열 구조, 공통 컴포넌트 표준화 | +| 1.4.x | 2025-10-22~25 | 이미준, 강지수, 도그냥 | Todo 강화, 화면 재정렬, 검증완료 정책, 용어 통일(생성자/참여자), STT 화자 식별 불가 반영 | +| 1.5.1~1.5.9 | 2025-10-27~28 | 강지수, 도그냥 | MVP v2.4.0~2.4.5 반영: Todo 단순화, AI 메모 기능, 검증완료 강화, 네비게이션 간소화, 용어 통일(참여자/참여) | +| **1.6.0** | 2025-10-29 | 강지수 | **문서 구조 최적화 및 중복 제거 (토큰 효율성 개선)**: 화면 설계 표준 섹션 신규 추가, 인터랙션 패턴 라이브러리 신규 추가, 각 화면 설계 참조 링크 기반으로 간소화, 변경 이력 요약 테이블 형식, 약 35-40% 토큰 절감 | + +**주요 버전 세부 변경 사항**: +- **v1.1**: UFR-AI-040 관련 회의록 자동 연결, AI 요약 기능 추가 +- **v1.2**: 진행중 회의 표시, 예정 회의 권한 차별화 +- **v1.3**: Mobile 하단 네비게이션 3개 → 2개, Desktop 사이드바, AI 제안 탭 상세화 +- **v1.4**: Todo 관리 확장, 검증완료 잠금, 참석자 → 참여자 용어 통일 +- **v1.5**: MVP 스코프 축소 (Todo 단순 조회, AI 메모 기능, 실시간 협업 제거, Last Write Wins 적용) +- **v1.6**: 문서 구조 최적화 (토큰 35-40% 절감) [↑ 목차로 돌아가기](#목차) --- -## 부록 - -### 참고 자료 -- Mobile First 설계 원칙: Luke Wroblewski "Mobile First" -- 접근성 가이드라인: WCAG 2.1 Level AA -- 성능 최적화: Google Web Fundamentals - -### 디자인 시스템 (추후 작성) -- 색상 팔레트 -- 타이포그래피 -- 컴포넌트 라이브러리 -- 아이콘 세트 - +**문서 끝** diff --git a/design/userstory.md b/design/userstory.md index 9a72421..3dbd232 100644 --- a/design/userstory.md +++ b/design/userstory.md @@ -1,4 +1,4 @@ -# AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.4.5) +# AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.5.0) ## 목차 - [1. 프로젝트 개요](#1-프로젝트-개요) @@ -11,8 +11,6 @@ - [2.4 STT 서비스](#24-stt-서비스) - [2.5 Notification 서비스](#25-notification-서비스) - [3. 향후 과제](#3-향후-과제) - - [3.1 v2.4.2 개선 계획](#31-v242-개선-계획) - - [3.2 v2.5.0 이후 고려사항](#32-v250-이후-고려사항) - [문서 이력](#문서-이력) --- @@ -25,35 +23,21 @@ #### 1. 기본 기능 (Hygiene Factors) - **STT(Speech To Text)**: 음성을 텍스트로 변환하는 기본 기능 - - 시장의 대부분 서비스가 제공하는 기능으로 차별화 포인트가 아님 - - 필수 기능이지만 경쟁 우위를 가져다주지 않음 #### 2. 핵심 차별화 포인트 (Differentiators) -- **맥락 기반 용어 설명**: 단순 용어 설명을 넘어, 관련 회의록과 업무이력을 바탕으로 실용적인 정보 제공 -- **섹션 AI 요약 재생성**: 버튼 클릭으로 작성한 섹션 내용을 AI가 요약 (2-3문장, 2-5초 처리) -- **지능형 회의 진행 지원**: 회의 패턴 분석을 통한 안건 추천, 효율성 분석 및 개선 제안 +- **맥락 기반 용어 설명**: 관련 회의록과 업무이력 기반 실용 정보 제공 +- **섹션 AI 요약 재생성**: 버튼 클릭으로 2-3문장 요약 (2-5초 처리) +- **지능형 회의 진행 지원**: 회의 패턴 분석, 안건 추천, 효율성 분석 --- ### 1.2 마이크로서비스 구성 -1. **User** - 사용자 인증 (LDAP 연동, JWT 토큰 발급/검증) -2. **Meeting** - 회의, 회의록, Todo 통합 관리 - - 회의 관리: 회의 예약, 시작, 종료 - - 회의록 관리: 회의록 생성, 수정, 확정 - - 안건별 검증완료 및 잠금 처리 (Last Write Wins 정책) - - 템플릿 관리: 회의록 템플릿 관리 - - 통계 생성: 회의 및 Todo 통계 -3. **STT** - 음성 스트리밍 처리, 실시간 음성-텍스트 변환 (기본 기능) -4. **AI** - AI 기반 회의록 자동화, Todo 추출, 지능형 검색 (RAG 통합) - - LLM 기반 회의록 자동 작성 - - Todo 자동 추출 및 담당자 식별 - - 안건별 AI 요약 재생성 (버튼 클릭 시 한줄 요약 생성) - - 관련 회의록 자동 연결 (벡터 유사도 검색) - - 전문용어 자동 감지 및 맥락 기반 설명 생성 (RAG) - - 과거 회의록 및 사내 문서 검색 - - 업무 이력 통합 -5. **Notification** - 이메일 알림 발송 (회의 시작, 회의록 확정, 참여자 초대) +1. **User** - 사용자 인증 (LDAP, JWT) +2. **Meeting** - 회의, 회의록, Todo 통합 관리, 안건별 검증완료 및 잠금 (Last Write Wins) +3. **STT** - 음성 스트리밍, 실시간 음성-텍스트 변환 +4. **AI** - 회의록 자동화, Todo 추출, 지능형 검색 (RAG 통합), 안건별 AI 요약 +5. **Notification** - 이메일 알림 (회의 시작, 회의록 확정, 참여자 초대) --- @@ -64,86 +48,39 @@ #### UFR-USER-010: 🔴 [로그인] 사용자로서 | 나는, 시스템에 접근하기 위해 | 사번과 비밀번호로 로그인하고 싶다. **수행절차:** -1. 로그인 화면 접속 -2. 사번 입력 (필수) -3. 비밀번호 입력 (필수, 최소 8자) -4. (선택) 로그인 상태 유지 체크박스 선택 -5. 로그인 버튼 클릭 -6. 인증 성공 시 대시보드로 이동 +1. 로그인 화면 접속 → 사번/비밀번호 입력 → (선택) 로그인 상태 유지 → 로그인 버튼 클릭 → 인증 성공 시 대시보드 이동 -**입력:** -- 사번: 텍스트 입력, 필수, 공백 불가 -- 비밀번호: 패스워드 입력, 필수, 최소 8자 이상 -- 로그인 상태 유지: 체크박스 (선택) -- Enter 키 입력 시 다음 필드로 자동 이동 (사번 → 비밀번호) +**입력:** 사번(필수), 비밀번호(필수, 최소 8자), 로그인 상태 유지(선택) -**출력/결과:** -- 로그인 성공: JWT 토큰 발급, 사용자 정보 저장, 대시보드(02-대시보드.html)로 이동 -- 로그인 실패: 에러 메시지 표시 ("사번 또는 비밀번호가 올바르지 않습니다"), 5초 후 자동 숨김 -- 로딩 상태: 로그인 버튼 비활성화 및 "로그인 중..." 표시 +**출력:** 성공 시 JWT 토큰 발급 및 대시보드 이동, 실패 시 에러 메시지 5초 표시 -**예외처리:** -- 사번 미입력: "사번을 입력해주세요" 에러 표시 및 사번 필드 포커스 -- 비밀번호 미입력: "비밀번호를 입력해주세요" 에러 표시 및 비밀번호 필드 포커스 -- 비밀번호 8자 미만: "비밀번호는 최소 8자 이상이어야 합니다" 에러 표시 -- 인증 실패: 인증 실패 메시지 표시, 로그인 버튼 재활성화 -- 이미 로그인된 경우: 대시보드로 자동 리다이렉트 +**예외:** 미입력 시 필드별 포커스 및 에러 메시지, 인증 실패 시 재활성화, 이미 로그인된 경우 리다이렉트 -**관련 유저스토리:** -- UFR-USER-020: 대시보드 조회 +**관련:** UFR-USER-020 --- #### UFR-USER-020: 🟡 [대시보드] 사용자로서 | 나는, 나의 회의 현황을 파악하기 위해 | 대시보드를 조회하고 싶다. **수행절차:** -1. 로그인 후 대시보드 자동 표시 또는 하단 네비게이션에서 홈 아이콘 클릭 -2. 통계 블록 확인 (예정된 회의, 작성중 회의록) -3. 최근 회의 목록 확인 (최대 3개) -4. 나의 회의록 목록 확인 (최대 4개) -5. 필요 시 "전체 보기" 링크 클릭하여 회의록 목록 화면 이동 -6. FAB 버튼으로 회의 예약 또는 바로 시작 +1. 로그인 후 자동 표시 또는 홈 아이콘 클릭 +2. 통계 블록(예정된 회의, 작성중 회의록) 확인 +3. 최근 회의 목록(최대 3개), 나의 회의록(최대 4개) 확인 +4. FAB 버튼으로 회의 예약 또는 바로 시작 **입력:** - 없음 (자동 렌더링) -**출력/결과:** -- 헤더: 사용자 이름, 오늘 예정된 회의 개수 또는 안내 메시지 -- 통계 블록 (2열 그리드): - - 예정된 회의: 전체 예정 + 진행 중 회의 개수 - - 작성중 회의록: 내가 참여한 회의 중 '작성중' 상태인 회의록 개수 (클릭 액션 없음, 정보 표시만) -- 최근 회의 (회의록 미생성 우선, 빠른 일시 순, 최대 3개): - - 정렬 기준: - - 1순위: 회의록 미생성 회의 (진행중 + 예정) - - 2순위: 미생성이 3개 미만이면 최근 종료된 회의(회의록 있음)로 나머지 채움 - - 각 그룹 내 정렬: 빠른 일시 순 (시작 시간 기준) - - 회의 카드 (클릭 가능 블록): 상태 라벨, 제목, 생성자(👑), 날짜/시간, 참여자 수, 장소, 상태 버튼 - - 진행중: "진행중" 라벨, "참여하기" 버튼 - - 예정: "예정" 라벨, 버튼 없음 (카드 클릭으로 처리) - - 생성자: 카드 클릭 시 회의예약 화면(수정 모드)으로 이동 - - 참여자: 카드 클릭 시 시스템 알럿 표시 ("아직 회의 시간이 되지 않아 참여하실 수 없습니다") - - 완료: "작성중" 또는 "확정완료" 라벨, "보기" 버튼 -- 나의 회의록 (최신순, 최대 4개, 2x2 그리드): - - 회의록 카드: 상태 배지, 생성자 표시(👑), 제목, 날짜/시간, 참여자 수, 검증완료율(작성중인 경우) -- 사이드바 (데스크톱): 로고, 메뉴(대시보드, 회의록), 사용자 정보, 로그아웃 -- 하단 네비게이션 (모바일): 홈(활성), 회의록 -- FAB 메뉴: - - 회의예약 버튼: 회의 예약 화면으로 이동 - - 바로시작 버튼: 템플릿 선택 화면으로 이동 +**출력:** +- 헤더: 사용자 이름, 오늘 예정 회의 개수 +- 통계 블록: 예정된 회의, 작성중 회의록 +- 최근 회의: 회의록 미생성 우선, 빠른 일시 순 (상태별 버튼: 진행중-참여하기, 예정-없음, 완료-보기) +- 나의 회의록: 최신순 2x2 그리드, 상태 배지, 생성자 표시(👑), 검증완료율(작성중) +- FAB: 회의예약/바로시작 -**예외처리:** -- 로그인 안 된 경우: 로그인 화면으로 리다이렉트 -- 최근 회의 없음: 빈 상태 표시 -- 회의록 없음: "참여한 회의록이 없습니다" 빈 상태 표시 -- 참여자가 예정 회의 클릭: "아직 회의 시간이 되지 않아 참여하실 수 없습니다" 시스템 알럿 표시 (다음 버전에서 회의 상세 조회 기능으로 개선 예정) +**예외:** 로그인 안 된 경우 리다이렉트, 회의/회의록 없음 시 빈 상태, 참여자가 예정 회의 클릭 시 알럿 -**관련 유저스토리:** -- UFR-USER-010: 로그인 -- UFR-MEET-010: 회의예약 -- UFR-MEET-011: 회의정보수정 -- UFR-MEET-020: 템플릿선택 -- UFR-MEET-046: 회의록목록조회 -- UFR-MEET-047: 회의록상세조회 +**관련:** UFR-USER-010, UFR-MEET-010/011/020/046/047 --- @@ -152,216 +89,79 @@ #### UFR-MEET-010: 🔴 [회의예약] 회의 생성자로서 | 나는, 회의를 효율적으로 준비하기 위해 | 회의를 예약하고 참여자를 초대하고 싶다. **수행절차:** -1. 대시보드에서 "회의예약" FAB 버튼 클릭 또는 최근 회의에서 "수정" 버튼 클릭 -2. 회의 제목 입력 (최대 100자) -3. 날짜 선택 (오늘 이후 날짜, 달력 UI) -4. 시작/종료 시간 선택 (15분 단위 커스텀 시간 선택기) -5. 온라인/오프라인 회의 선택 (토글) -6. 장소 입력 (최대 200자) - - 오프라인: 예) 본사 2층 대회의실 - - 온라인: 예) Zoom, Google Meet + 회의 링크 입력 또는 자동 생성 -7. 참여자 추가 (현재 사용자는 기본 포함) - - "참여자 추가" 버튼 클릭 - - 검색 모달에서 이름 또는 이메일로 검색 - - 사용자 선택하여 추가 - - 칩으로 표시, X 버튼으로 제거 가능 (본인 제외) -8. (선택) 안건 입력 (텍스트 영역) -9. "예약 완료" 버튼 클릭 +1. "회의예약" FAB 클릭 → 제목/날짜/시간(15분 단위) 입력 +2. 온라인/오프라인 선택, 장소/회의 링크 입력 +3. 참여자 추가(현재 사용자 기본 포함, 검색 모달), (선택) 안건 입력 → "예약 완료" -**입력:** -- 회의 제목: 텍스트 입력, 필수, 최대 100자, 문자 카운터 표시 -- 날짜: date 타입, 필수, 오늘 이후 날짜만 선택 가능, 달력 아이콘(📅) 표시 -- 시작 시간: 커스텀 시간 선택기 (readonly), 필수, 15분 단위 (00, 15, 30, 45) -- 종료 시간: 커스텀 시간 선택기 (readonly), 필수, 15분 단위 -- 온라인 회의: 토글 스위치 (선택) -- 장소: 텍스트 입력, 선택, 최대 200자, 문자 카운터 표시 -- 회의 링크: URL 입력, 선택, 온라인 회의인 경우에만 표시, "자동 생성" 버튼 제공 -- 참여자: 검색 모달, 필수 (최소 1명), 현재 사용자는 기본 포함 -- 안건: 텍스트 영역 (textarea), 선택, 여러 줄 입력 가능 +**입력:** 제목(최대 100자), 날짜(오늘 이후), 시작/종료 시간(15분 단위), 온라인 토글, 장소(최대 200자), 회의 링크(선택), 참여자(최소 1명), 안건(선택) -**출력/결과:** -- 예약 완료: "회의가 예약되었습니다" 토스트 메시지, 대시보드로 이동 -- 참여자 추가 성공: "{이름}님이 추가되었습니다" 토스트 메시지 -- 회의 링크 생성: "회의 링크가 생성되었습니다" 토스트 메시지 +**출력:** 예약 완료 토스트 및 대시보드 이동 -**예외처리:** -- 제목 미입력: "회의 제목을 입력해주세요" 토스트, 제목 필드 포커스 -- 날짜 미선택: "회의 날짜를 선택해주세요" 토스트, 날짜 필드 포커스 -- 시간 미선택: "회의 시간을 선택해주세요" 토스트 -- 참여자 없음: "최소 1명의 참여자를 추가해주세요" 토스트 -- 과거 날짜 선택: "과거 날짜는 선택할 수 없습니다" 토스트, 날짜 필드 포커스 -- 뒤로가기/취소 클릭: "작성 중인 내용이 있습니다. 나가시겠습니까?" 확인 모달 -- 참여자 검색 결과 없음: "검색 결과가 없습니다" 빈 상태 표시 +**예외:** 필수 항목 미입력 시 토스트 및 포커스, 과거 날짜 선택 시 에러, 뒤로가기/취소 시 확인 모달 -**관련 유저스토리:** -- UFR-USER-020: 대시보드 조회 -- UFR-MEET-011: 회의정보수정 -- UFR-MEET-020: 템플릿선택 +**관련:** UFR-USER-020, UFR-MEET-011/020 --- -#### UFR-MEET-011: 🟡 [회의정보수정] 회의 생성자로서 | 나는, 예정된 회의 정보를 변경하기 위해 | 회의 정보를 수정하고 싶다. +#### UFR-MEET-011: 🟡 [회의정보수정] 회의 생성자로서 | 나는, 예정된 회의 정보를 변경하기 위해 | 회의 정보를 수정하고 싶다 **수행절차:** -1. 대시보드(02-대시보드.html)에서 예정된 회의(scheduled) 카드 클릭 (생성자만 가능) -2. 회의예약 화면(03-회의예약.html)으로 이동 (기존 회의 정보 로드) -3. 수정할 항목 변경 (제목, 날짜, 시간, 장소, 참여자, 안건 등) -4. "수정 완료" 버튼 클릭 -5. 변경 사항 저장 및 참여자에게 알림 발송 +1. 대시보드에서 예정 회의 클릭(생성자만) → 수정 → "수정 완료" -**입력:** -- 기존 회의 정보: 자동 로드 (제목, 날짜, 시간, 장소, 참여자, 안건) -- 수정 항목: UFR-MEET-010과 동일한 입력 필드 +**입력:** 기존 회의 정보 자동 로드, UFR-MEET-010과 동일 필드 -**출력/결과:** -- 수정 완료: "회의 정보가 수정되었습니다" 토스트 메시지, 대시보드로 이동 -- 참여자 변경 시: 기존 참여자 및 신규 참여자에게 알림 발송 - - 알림 유형: "회의 정보 변경" - - 알림 내용: "{회의 제목} 회의 정보가 변경되었습니다" +**출력:** 수정 완료 토스트, 참여자 변경 시 알림 발송 -**예외처리:** -- 회의 상태가 'scheduled'가 아닌 경우: "진행 중이거나 종료된 회의는 수정할 수 없습니다" 에러 메시지 -- 유효성 검사 실패: UFR-MEET-010과 동일한 예외처리 -- 뒤로가기/취소 클릭: "변경 사항이 저장되지 않았습니다. 나가시겠습니까?" 확인 모달 -- 직접 URL 접근 시 권한 없음: 대시보드로 자동 리다이렉트 (별도 에러 메시지 없음) +**예외:** scheduled 아닌 경우 에러, 직접 URL 접근 시 리다이렉트 -**관련 유저스토리:** -- UFR-USER-020: 대시보드 조회 -- UFR-MEET-010: 회의예약 -- UFR-NOTI-010: 알림발송 +**관련:** UFR-USER-020, UFR-MEET-010, UFR-NOTI-010 --- #### UFR-MEET-015: 🟢 [회의진행 중 참여자 초대] 회의 참여자로서 | 나는, 회의 중 추가 참여자가 필요할 때 | 실시간으로 참여자를 초대하고 싶다. **수행절차:** -1. 회의 진행 화면(05-회의진행.html)에서 "참여자" 탭 클릭 -2. "초대" 버튼 클릭 -3. 검색 모달에서 이름 또는 이메일로 검색 -4. 사용자 선택하여 초대 -5. 초대된 참여자 실시간 표시 -6. 초대된 참여자에게 알림 전송 +1. "참여자" 탭 → "초대" → 검색 → 선택 → 실시간 표시 및 알림 전송 -**입력:** -- 검색어: 텍스트 입력, 이름 또는 이메일로 검색 -- 선택: 검색 결과 목록에서 사용자 클릭 +**출력:** 참여자 목록 실시간 추가, 토스트 메시지, 알림 대상 생성(Notification 폴링), WebSocket 동기화 -**출력/결과:** -- 초대 성공: 참여자 목록에 실시간 추가, "{이름}님을 초대했습니다" 토스트 메시지 -- 초대된 참여자에게 알림 대상 생성: - - 알림 유형: "회의 참여자 초대" - - 알림 내용: "{회의 제목}에 참여자로 초대되었습니다" - - 수신자: 초대된 참여자 - - 발송 예정 시각: 즉시 -- Notification 서비스가 주기적으로 폴링하여 이메일 발송 -- 모든 참여자에게 참여자 변경 사항 실시간 동기화 (WebSocket) +**예외:** 검색 결과 없음, 이미 참여 중, 네트워크 오류 -**예외처리:** -- 검색 결과 없음: "검색 결과가 없습니다" 빈 상태 표시 -- 이미 참여 중인 사용자: 선택 불가 또는 "이미 참여 중입니다" 안내 -- 네트워크 오류: "초대에 실패했습니다" 에러 메시지 - -**관련 유저스토리:** -- UFR-MEET-030: 회의시작 +**관련:** UFR-MEET-030 --- #### UFR-MEET-020: 🟡 [템플릿선택] 회의 생성자로서 | 나는, 회의록을 효율적으로 작성하기 위해 | 회의 유형에 맞는 템플릿을 선택하고 싶다. -**템플릿선택 진입 경로:** -- **경로 1**: 대시보드(02-대시보드.html) → "바로시작" FAB 버튼 → 템플릿 선택(04-템플릿선택.html) -- **경로 2**: 회의예약 (03-회의예약.html) → 템플릿 선택(04-템플릿선택.html) +**진입 경로:** 대시보드 → "바로시작" 또는 회의예약 → 템플릿 선택 **수행절차:** -1. 위 경로 중 하나를 통해 템플릿 선택 화면(04-템플릿선택.html) 진입 -2. 4가지 템플릿 중 선택 또는 "건너뛰기" 선택 - - 일반 회의: 회의 개요, 논의 사항, 결정 사항, 액션 아이템 - - 스크럼 회의: 어제 한 일, 오늘 할 일, 블로커/이슈 - - 킥오프 회의: 프로젝트 개요, 목표 및 범위, 역할 및 책임, 일정 및 마일스톤 - - 주간 회의: 지난주 성과, 이번주 계획, 주요 이슈, 다음 액션 -3. 선택 완료 시 회의 시작 (05-회의진행.html로 이동) +1. 4가지 템플릿(일반, 스크럼, 킥오프, 주간) 중 선택 또는 건너뛰기 → 회의 시작 -**입력:** -- 템플릿 선택: 4가지 중 1개 선택 또는 건너뛰기 -- 템플릿 카드 클릭 시 해당 템플릿 선택 +**출력:** 선택 템플릿으로 회의 시작, 건너뛰기 시 기본 템플릿 -**출력/결과:** -- 템플릿 선택: 선택한 템플릿으로 회의 시작, 회의 진행 화면으로 이동 -- 건너뛰기: 기본 템플릿(일반 회의)으로 회의 시작 -- 템플릿 미리보기: 아이콘, 설명, 섹션 목록 표시 +**예외:** 없음 -**예외처리:** -- 없음 (선택 또는 건너뛰기 모두 허용) - -**관련 유저스토리:** -- UFR-USER-020: 대시보드 조회 -- UFR-MEET-010: 회의예약 -- UFR-MEET-030: 회의시작 +**관련:** UFR-USER-020, UFR-MEET-010/030 --- #### UFR-MEET-030: 🔴 [회의시작] 회의 생성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다. -**회의 진입 경로:** +**진입 경로:** - **경로 1**: 대시보드(02-대시보드.html) → "바로시작" FAB 버튼 → 템플릿 선택(04-템플릿선택.html) → 회의 진행(05-회의진행.html) - **경로 2**: 대시보드 → 진행 중 회의 "참여하기" 버튼 → 회의 진행(05-회의진행.html) **수행절차:** -1. 위 경로 중 하나를 통해 회의 진행 화면(05-회의진행.html) 진입 -2. 회의 진행 화면 표시 -3. 녹음 시작 확인 (자동 또는 수동) -4. 타이머 시작 (회의 진행 시간 표시) -5. 웨이브폼 애니메이션 표시 (녹음 상태 시각화) -6. 탭 네비게이션으로 기능 전환: - - 참여자: 참여자 목록 및 실시간 초대 - - AI 제안: 실시간 AI 분석 결과 및 개인 메모 작성 - - AI가 인식한 주요 내용 표시 - - 참여자별 개인 메모 작성 영역 (수동 저장만 지원) - - 용어사전: 실시간 AI 자동 인식된 용어 및 검색 - - 관련회의록: 실시간 AI 자동 연결된 이전 회의록 -7. 하단 고정 버튼 (역할별 차별화) - - 회의 생성자: [일시정지/녹음재개] + [회의 종료] - - 회의 참여자: [회의 나가기] +1. 회의 진행 화면 진입 → 녹음 시작 → 타이머/웨이브폼 표시 +2. 탭 전환: 참여자, AI 제안(주요 내용+메모), 용어사전, 관련회의록 +3. 하단 버튼: 생성자[일시정지/재개+종료], 참여자[나가기] -**입력:** -- 녹음 시작/일시정지: 버튼 클릭 -- 탭 전환: 탭 클릭 -- 메모 작성: 텍스트 입력 +**출력:** 헤더(제목, 녹음 상태, 경과 시간), 웨이브폼, 탭별 콘텐츠, 역할별 버튼 -**출력/결과:** -- 헤더: 회의 제목, 녹음 상태 (녹음 중/일시정지), 경과 시간 -- 웨이브폼 애니메이션: 녹음 상태 시각화 -- 참여자 탭: 참여자 목록, 초대 버튼 -- AI 제안 탭: - - AI가 인식한 주요 내용 리스트 - - 개인 메모 작성 영역 (참여자별 독립) - - 저장 버튼 (수동 저장만) -- 용어사전 탭: 자동 추출된 용어, 검색 기능 -- 관련회의록 탭: 자동 연결된 이전 회의록 목록 -- 하단 고정 버튼: - - 회의 생성자: [일시정지/녹음재개] + [회의 종료] - - 회의 참여자: [회의 나가기] +**예외:** 마이크 권한 없음, 네트워크 오류, 일시정지/종료/나가기 확인 모달 -**예외처리:** -- 녹음 권한 없음: "마이크 권한이 필요합니다" 에러 메시지 -- 네트워크 오류: "녹음 중 오류가 발생했습니다" 에러 메시지 -- 일시정지 확인: "일시정지하시겠습니까?" 확인 모달 -- 회의 종료 확인 (생성자): "회의를 종료하시겠습니까? 모든 참여자의 회의가 종료됩니다" 확인 모달 -- 회의 나가기 확인 (참여자): "회의에서 나가시겠습니까? 저장하지 않은 메모는 삭제됩니다" 확인 모달 - -**관련 유저스토리:** -- UFR-MEET-020: 템플릿선택 -- UFR-MEET-015: 참여자 실시간 초대 -- UFR-MEET-040: 회의종료 -- UFR-STT-010: 음성녹음인식 -- UFR-AI-030: 실시간 AI 제안 -- UFR-RAG-010: 전문용어감지 -- UFR-AI-040: 관련회의록연결 -- UFR-PART-010: 회의입장 -- UFR-PART-020: AI기반메모작성 -- UFR-PART-030: 회의중도퇴장 -- UFR-HOST-010: 회의종료권한 -- UFR-HOST-020: 녹음제어권한 +**관련:** UFR-MEET-020/040, UFR-STT-010, UFR-AI-030, UFR-RAG-010, UFR-AI-040, UFR-PART-010/020/030, UFR-HOST-010/020 --- @@ -372,389 +172,151 @@ - 일반 참여자는 "회의 종료" 버튼이 표시되지 않음 **수행절차:** -1. 회의 진행 화면에서 "회의 종료" 버튼 클릭 (생성자 전용) -2. 종료 확인 모달: "회의를 종료하시겠습니까?" 확인 -3. 회의 종료 화면(07-회의종료.html) 표시 (확인 전용, 편집 불가) -4. 통계 확인 (4열 그리드): - - 참여자 수 - - 회의 시간 - - 안건 수 - - Todo 수 -5. 주요 키워드 확인 (태그 형태) -6. 안건별 AI 요약 확인 (아코디언 카드): - - AI 한줄 요약 (30자 이내, 편집 불가) - - AI 상세 요약 (회의종료 단계에서는 편집 불가) - - 자동 추출된 Todo 목록 -7. 하단 액션 바에서 다음 단계 선택: - - 옵션 1: "회의록 수정" → 회의록 수정 화면(11-회의록수정.html)으로 이동 - - 옵션 2: "바로 최종 확정" → 모든 안건 자동 검증 완료 처리 후 최종 확정 - - 옵션 3: "대시보드" → 대시보드(02-대시보드.html)로 이동 +1. "회의 종료" → 확인 모달 → 회의 종료 화면(읽기 전용) +2. 통계(참여자/시간/안건/Todo), 주요 키워드, 안건별 AI 요약(한줄+상세+Todo) 확인 +3. 하단 액션: "회의록 수정", "바로 최종 확정", "대시보드" -**입력:** -- 하단 액션 버튼 클릭 +**출력:** 통계 카드, 키워드 태그, 안건 아코디언(AI 한줄+상세 요약, Todo), 회의록 상태 "작성중" -**출력/결과:** -- 회의 종료 화면 표시: - - 통계 카드 (4열): 참여자, 시간, 안건, Todo - - 주요 키워드 태그 - - 안건 아코디언 카드: AI 한줄 요약 + 상세 요약 + Todo - - 읽기 전용 안내 표시 -- 회의록 상태: "작성중"으로 저장 -- 옵션 선택에 따른 화면 전환 - -**예외처리:** -- AI 요약 생성 실패: "요약 생성 중 오류가 발생했습니다" 에러 메시지, 기본 템플릿으로 대체 -- Todo 추출 실패: 빈 Todo 목록 표시 -- 바로 확정 실패: "최종 확정 중 오류가 발생했습니다" 에러 메시지 - -**관련 유저스토리:** -- UFR-MEET-030: 회의시작 -- UFR-MEET-050: 최종확정 -- UFR-MEET-055: 회의록수정 -- UFR-AI-010: 회의록자동작성 -- UFR-AI-020: Todo자동추출 -- UFR-AI-036: AI한줄요약 +**예외:** AI 요약 생성 실패 시 기본 템플릿, Todo 추출 실패 시 빈 목록, 바로 확정 실패 시 에러 +**관련:** UFR-MEET-030/050/055, UFR-AI-010/020/036 --- #### UFR-MEET-050: 🟡 [최종확정] 회의 생성자로서 | 나는, 회의록을 완성하기 위해 | 모든 안건을 검증하고 최종 회의록을 확정하고 싶다. -**수행절차:** -**시나리오 1: 회의록 수정 후 자동 확정 (MVP v2.4.0)** -1. 회의록 수정 화면(11-회의록수정.html)에서 모든 안건 검증 완료 체크 -2. "저장" 버튼 클릭 -3. 시스템이 모든 안건 검증 완료 상태 확인 -4. 조건 충족 시 회의록 상태 자동 변경: "작성중" → "확정완료" -5. 확정 완료 토스트 메시지: "모든 안건이 검증되어 회의록이 확정되었습니다" -6. 회의록 상태 배지 자동 업데이트 (확정완료) +**시나리오 1: 회의록 수정 후 자동 확정** +1. 모든 안건 검증 완료 → "저장" → 시스템 확인 → 자동 "확정완료" 변경 → 토스트 **시나리오 2: 회의 종료 화면에서 바로 확정** -1. 회의 종료 화면(07-회의종료.html)에서 "바로 최종 확정" 버튼 클릭 -2. 확인 모달: "바로 최종 확정하시겠습니까? AI가 정리한 내용 그대로 확정됩니다" -3. 확인 시 모든 안건 자동 검증 완료 처리 -4. 회의록 상태: "확정완료"로 변경 -5. 회의록 상세 조회 화면으로 이동 +1. "바로 최종 확정" → 확인 모달 → 모든 안건 자동 검증 → "확정완료" → 상세 조회 화면 -**입력:** -- 시나리오 1: 안건별 검증 완료 체크박스 + 저장 버튼 -- 시나리오 2: "바로 최종 확정" 버튼 클릭 + 확인 모달 승인 +**출력:** 확정 토스트, 회의록 상태 "확정완료", 모든 안건 검증완료 -**출력/결과:** -- 시나리오 1 확정 성공: "모든 안건이 검증되어 회의록이 확정되었습니다" 토스트 메시지 -- 시나리오 2 확정 성공: "회의록이 최종 확정되었습니다" 토스트 메시지 -- 회의록 상태: "확정완료" -- 모든 안건 검증완료 상태로 변경 -- 확정 후 편집 권한: 회의 생성자만 잠금 해제 후 수정 가능 +**예외:** 자동 확정 조건 충족 시 자동 처리, 바로 확정 실패 시 에러 -**예외처리:** -- 시나리오 1: 자동 확정 조건 충족 시 자동 처리 (별도 에러 없음) -- 시나리오 2 확정 실패: "최종 확정 중 오류가 발생했습니다" 에러 메시지 -- 시나리오 2 확인 모달 취소: 현재 화면 유지 - -**관련 유저스토리:** -- UFR-MEET-040: 회의종료 -- UFR-MEET-055: 회의록수정 -- UFR-COLLAB-030: 검증완료 +**관련:** UFR-MEET-040/055, UFR-COLLAB-030 --- #### UFR-MEET-046: 🟡 [회의록목록조회] 회의 참여자로서 | 나는, 참여한 회의록들을 효율적으로 관리하기 위해 | 회의록 목록을 조회하고 필터링하고 싶다. **수행절차:** -1. 사이드바 또는 하단 네비게이션에서 "회의록" 메뉴 클릭 -2. 회의록 목록 조회 화면(12-회의록목록조회.html) 표시 -3. (선택) 정렬 기준 선택: - - 최근수정순 (기본값) - - 최근회의순 - - 제목순 -4. (선택) 참여 유형 필터 선택 (다중 선택 가능): - - 참여한 회의 (체크박스) - - 내가 생성한 회의 (체크박스) -5. (선택) 상태 필터 선택 (다중 선택 가능): - - 작성중 (체크박스) - - 확정완료 (체크박스) -6. (선택) 검색어 입력 (회의 제목, 참여자 이름) -7. 회의록 카드 클릭하여 상세 조회 +1. "회의록" 메뉴 → 정렬(최근수정순/최근회의순/제목순) → (선택) 필터(참여 유형, 상태), 검색어 → 카드 클릭 -**입력:** -- 정렬 기준: 선택 (최근수정순, 최근회의순, 제목순) -- 참여 유형 필터: 다중 체크박스 (참여한 회의, 내가 생성한 회의) -- 상태 필터: 다중 체크박스 (작성중, 확정완료) -- 검색어: 텍스트 입력 (선택) +**입력:** 정렬, 필터(다중 체크박스), 검색어(제목/참여자) -**출력/결과:** -- 헤더: "회의록" 제목, 총 회의록 개수 -- 필터 및 정렬 버튼 -- 회의록 카드 목록 (스크롤): - - 상태 배지 (작성중/확정완료) - - 생성자 표시 (👑 아이콘) - - 회의 제목 - - 날짜/시간 - - 참여자 수 - - 검증완료율 (작성중인 경우) -- 빈 상태: 검색 결과 없을 때 안내 메시지 +**출력:** 헤더(총 개수), 필터/정렬 버튼, 카드(상태 배지, 생성자 표시, 검증완료율) -**예외처리:** -- 회의록 없음: "참여한 회의록이 없습니다" 빈 상태 표시 -- 검색 결과 없음: "검색 결과가 없습니다" 빈 상태 표시 -- 네트워크 오류: "회의록을 불러오는 중 오류가 발생했습니다" 에러 메시지 +**예외:** 회의록/검색 결과 없음 시 빈 상태, 네트워크 오류 -**관련 유저스토리:** -- UFR-USER-020: 대시보드 -- UFR-MEET-047: 회의록상세조회 +**관련:** UFR-USER-020, UFR-MEET-047 --- #### UFR-MEET-047: 🟡 [회의록상세조회] 회의 참여자로서 | 나는, 지난 회의록의 상세 정보와 전체 내용을 | 한눈에 확인하고 싶다. **수행절차:** -1. 회의록 목록 또는 대시보드에서 회의록 카드 클릭 -2. 회의록 상세 조회 화면(10-회의록상세조회.html) 표시 -3. 헤더 정보 확인: 회의 제목, 날짜/시간, 참여자, 생성자, 상태 -4. 탭 네비게이션으로 내용 확인: - - 대시보드: 회의 통계, 주요 키워드, 안건별 한줄 요약 - - 회의록: 안건별 상세 내용, AI 요약, Todo 목록 - - Todo: Todo 목록 (제목, 담당자, 마감일, 상태) - - 용어: 회의 중 인식된 전문 용어 및 설명 - - 관련회의록: 연결된 과거 회의록 목록 -5. (선택) 회의록 수정 버튼 클릭 (작성중 상태일 때만) -6. (선택) Todo 추가 (모든 참여자) 또는 편집 (생성자만) +1. 카드 클릭 → 헤더 정보 확인 +2. 탭 전환: 대시보드(통계, 키워드, 한줄 요약), 회의록(안건별 상세), Todo, 용어, 관련회의록 +3. (선택) "회의록 수정"(작성중), Todo 추가(모든 참여자)/편집(생성자) -**입력:** -- 탭 전환: 탭 클릭 -- Todo 추가 버튼 (모든 참여자) -- Todo 편집 버튼 (생성자만) -- 회의록 수정 버튼 (작성중 상태) +**출력:** +- 헤더: 제목, 날짜/시간, 참여자 칩, 생성자(👑), 상태 배지 +- 대시보드: 통계(4열), 키워드 태그, 한줄 요약 아코디언 +- 회의록: 안건별 한줄+상세 요약, Todo +- Todo: 카드(제목, 담당자, 마감일, 상태), 추가(모든 참여자)/편집(생성자) 버튼 +- 용어/관련회의록 탭 +- 하단: "회의록 수정" 버튼(작성중만) -**출력/결과:** -- 헤더: - - 회의 제목, 날짜/시간 - - 참여자 칩 (이름, 아바타) - - 생성자 표시 (👑 아이콘) - - 상태 배지 (작성중/확정완료) -- 대시보드 탭: - - 통계 카드 (4열): 참여자, 시간, 안건, Todo - - 주요 키워드 (태그 형태) - - 안건별 한줄 요약 (아코디언 카드) -- 회의록 탭: - - 안건별 아코디언 카드: - - AI 한줄 요약 (30자 이내) - - AI 상세 요약 (읽기 전용) - - Todo 목록 (읽기 전용) -- Todo 탭: - - Todo 카드 목록 (제목, 담당자, 마감일, 상태) - - Todo 추가 버튼 (모든 참여자) - - Todo 편집 버튼 (생성자만, 각 Todo 카드에 표시) -- 용어 탭: - - 용어 카드 목록 (용어, 설명) -- 관련회의록 탭: - - 관련 회의록 카드 목록 (제목, 날짜, 관련도, 유사 내용 요약) -- 하단 액션 버튼: - - "회의록 수정" 버튼 (작성중 상태일 때만 표시) +**예외:** 권한 없음 시 리다이렉트, 회의록 없음, 네트워크 오류 -**예외처리:** -- 권한 없음: "이 회의록을 볼 권한이 없습니다" 에러 메시지, 대시보드로 리다이렉트 -- 회의록 없음: "회의록을 찾을 수 없습니다" 에러 메시지 -- 네트워크 오류: "회의록을 불러오는 중 오류가 발생했습니다" 에러 메시지 - -**Todo 추가 권한:** -- 모든 회의 참여자가 Todo 추가 가능(Todo 추가 버튼은 모든 참여자에게 노출) -- Todo 추가 모달: 제목, 담당자, 마감일 입력 - -**Todo 편집 권한:** -- 회의 생성자만 Todo 편집 가능(편집 버튼은 생성자에게만 노출) -- Todo 편집 모달: 제목, 담당자, 마감일 수정 (바텀시트 스타일) - -**관련 유저스토리:** -- UFR-MEET-046: 회의록목록조회 -- UFR-MEET-055: 회의록수정 -- UFR-AI-036: AI한줄요약 +**관련:** UFR-MEET-046/055, UFR-AI-036 --- #### UFR-MEET-055: 🟡 [회의록수정] 회의 참여자로서 | 나는, 검증이 완료되지 않은 안건을 | 수정하고 검증완료 체크를 통해 보호하고 싶다. **수행절차:** -1. 회의록 상세 조회 화면(10-회의록상세조회.html)에서 "회의록 수정" 버튼 클릭 (작성중 상태) -2. 회의록 수정 화면(11-회의록수정.html)으로 이동 -3. 안건별 아코디언 카드에서 수정: - - AI 한줄 요약 재생성: "재생성" 버튼 클릭 (텍스트 편집 영역 내용 기반) - - 상세 요약 편집: 텍스트 영역에서 직접 수정 (초기에는 AI가 생성한 내용 로드) -4. 검증완료 처리: - - 참여자: 안건별 "검증완료" 체크박스 체크 - - 생성자: 검증완료 후에도 "잠금해제" 버튼으로 재수정 가능 -5. "저장" 버튼 클릭하여 수정 내용 저장 +1. "회의록 수정" → 안건별 수정(한줄 요약 재생성, 상세 요약 편집) +2. 검증완료: 참여자(체크박스), 생성자(잠금해제 버튼) → "저장" -**입력:** -- AI 한줄 요약 재생성: 버튼 클릭 (텍스트 편집 영역 내용 기반) -- 상세 요약 편집: 텍스트 영역 편집 -- 검증완료 체크: 체크박스 (참여자) -- 잠금해제 버튼: 버튼 클릭 (생성자, 검증완료된 안건) -- 저장 버튼: 버튼 클릭 +**입력:** 재생성 버튼, 텍스트 편집 영역, 검증완료 체크, 잠금해제(생성자) -**출력/결과:** -- 헤더: - - 회의 제목, 날짜/시간 - - "저장" 버튼 -- 안건별 아코디언 카드: - - AI 한줄 요약 (읽기 전용) + "재생성" 버튼 - - 텍스트 편집 영역 (상세 요약 편집 가능) - - 관련회의록 추가/제거 - - 검증완료 UI: - - 참여자: 체크박스만 표시 - - 생성자: 검증완료 시 "잠금해제" 버튼 표시 -- 저장 결과: "N개 안건이 저장되었습니다" 토스트 메시지 -- 모든 안건 검증 완료 시: "모든 안건이 검증되어 회의록이 확정되었습니다" 토스트 메시지 (자동 확정) +**출력:** 헤더(제목, 저장), 안건 아코디언(한줄 요약+재생성, 편집 영역, 관련회의록, 검증완료 UI), 저장 토스트, 모든 안건 검증 시 자동 확정 토스트 -**예외처리:** -- 검증완료된 안건 수정 시도 (참여자): 체크박스 비활성화, "이미 검증된 안건입니다" 안내 -- 검증완료된 안건 수정 (생성자): "잠금해제" 버튼으로 재수정 가능 -- AI 재생성 실패: "재생성 중 오류가 발생했습니다" 에러 메시지 -- 네트워크 오류: "저장 중 오류가 발생했습니다" 에러 메시지 +**예외:** 검증완료 안건 수정 시도 시 안내(참여자), 잠금해제 가능(생성자), AI 재생성 실패, 네트워크 오류 -**Last Write Wins 정책:** -- 동일 안건을 여러 참여자가 동시 수정 시 마지막 저장이 유지됨 -- 검증완료 체크로 안건 보호 가능 -- 생성자는 검증완료된 안건도 잠금해제 후 재수정 가능 +**Last Write Wins:** 동시 수정 시 마지막 저장 유지, 검증완료로 보호, 생성자는 잠금해제 후 재수정 -**관련 유저스토리:** -- UFR-MEET-047: 회의록상세조회 -- UFR-MEET-050: 최종확정 -- UFR-AI-036: AI한줄요약 -- UFR-COLLAB-030: 검증완료 +**관련:** UFR-MEET-047/050, UFR-AI-036, UFR-COLLAB-030 --- #### UFR-PART-010: 🟡 [회의입장] 회의 참여자로서 | 나는, 예정된 회의에 참여하기 위해 | 대시보드에서 "참여하기" 버튼으로 회의에 입장하고 싶다. **수행절차:** -1. 대시보드에서 진행 중 또는 예정된 회의 확인 -2. "참여하기" 버튼 클릭 -3. 회의진행 화면으로 페이지 전환 (같은 탭) -4. 회의 참여자로 입장 완료 +1. 대시보드 진행 중/예정 회의 → "참여하기" → 회의진행 화면 -**입력:** -- 회의 ID -- 사용자 ID +**출력:** 회의진행 화면, 참여자 목록 추가 -**출력/결과:** -- 회의진행 화면 표시 -- 참여자 목록에 추가 +**예외:** 회의 종료/권한 없음 시 안내 -**예외처리:** -- 회의 종료됨: "이미 종료된 회의입니다" 안내 -- 권한 없음: "참여 권한이 없습니다" 안내 - -**관련 유저스토리:** -- UFR-MEET-030: 회의시작 +**관련:** UFR-MEET-030 --- #### UFR-PART-020: 🟢 [AI기반메모작성] 회의 참여자로서 | 나는, 중요한 내용을 메모로 기록하기 위해 | AI가 추천한 주요 내용을 메모 입력창에 추가하고 편집하고 싶다. **수행절차:** -1. 회의 진행 중 AI가 실시간으로 주요 내용 감지 및 분석 -2. "AI 제안" 탭 하단에 "AI가 감지한 주요 내용" 리스트로 표시 - - 각 항목: "[시간] 주요 내용 텍스트" 형식 - - 예: "[15:32] 예산 책정 관련 결정", "[15:35] 다음 회의 일정 합의" -3. 참여자가 리스트 항목 선택 시: - - 메모 입력창에 시간과 함께 자동 입력 - - 입력된 메모는 수정 가능 (자동/수동 구분 표시) -4. "저장" 버튼 클릭 시 개인 메모로 저장 - - 각 참여자별로 개별 저장 - - 다른 참여자의 메모는 볼 수 없음 -5. 회의 종료 시 AI가 회의록 생성할 때 모든 참여자의 메모 참조 -6. 메모는 회의 종료 전까지만 표시 및 편집 가능 +1. 회의 중 AI 실시간 주요 내용 감지 → "AI 제안" 탭에 "[시간] 내용" 리스트 표시 +2. 항목 선택 시 메모 입력창에 자동 입력(시간 포함) → 수정 가능 → "저장"(참여자별 개별) +3. 회의 종료 시 AI가 모든 참여자 메모 참조하여 회의록 생성 -**입력:** -- 회의 ID -- AI가 실시간 감지한 주요 내용 -- 참여자가 선택하거나 직접 입력한 메모 텍스트 +**출력:** 메모 입력창(시간 포함), AI 추천 리스트(실시간), 저장된 개인 메모(참여자별), AI 회의록(메모 참조) -**출력/결과:** -- 메모 입력창: 시간 포함 메모 텍스트 -- AI 추천 리스트: 실시간 업데이트되는 주요 내용 항목들 -- 저장된 개인 메모: 참여자별 개별 저장 -- AI 회의록 생성 시: 모든 참여자의 메모 참조하여 요약 생성 +**예외:** AI 감지 실패 시 빈 리스트(수동 가능), 저장 실패 시 로컬 임시 저장, 회의 종료 후 조회/편집 불가 -**예외처리:** -- AI 감지 실패: 빈 리스트 표시, 수동 메모 작성은 가능 -- 저장 실패: "메모 저장 중 오류가 발생했습니다" 에러 메시지, 로컬 임시 저장 -- 회의 종료 후: 메모 조회/편집 불가 - -**관련 유저스토리:** -- UFR-AI-030: 실시간 AI 제안 -- UFR-AI-010: 회의록자동작성 (메모 참조) -- UFR-MEET-040: 회의종료 +**관련:** UFR-AI-030, UFR-AI-010, UFR-MEET-040 --- #### UFR-PART-030: 🟡 [회의중도퇴장] 회의 참여자로서 | 나는, 회의를 중간에 나가야 할 때 | "나가기" 버튼으로 회의에서 퇴장하고 싶다. **수행절차:** -1. 회의진행 화면 상단 "나가기" 버튼 클릭 -2. 확인 모달 표시: "회의에서 나가시겠습니까? 회의는 계속 진행됩니다" -3. 확인 클릭 시 퇴장 이벤트 서버 전송 -4. 대시보드로 페이지 전환 +1. "나가기" → 확인 모달("회의는 계속 진행됩니다") → 퇴장 이벤트 전송 → 대시보드 -**입력:** -- 회의 ID -- 사용자 ID +**출력:** 대시보드 복귀, 회의록은 종료 시 공유 -**출력/결과:** -- 대시보드 화면으로 복귀 -- 회의록은 종료 시 공유됨 +**예외:** 네트워크 오류 시 로컬 처리 후 재시도 -**예외처리:** -- 네트워크 오류: 로컬 처리 후 재시도 - -**관련 유저스토리:** -- UFR-MEET-030: 회의시작 +**관련:** UFR-MEET-030 --- #### UFR-HOST-010: 🔴 [회의종료권한] 회의 생성자로서 | 나는, 회의를 마무리하기 위해 | "회의 종료" 버튼으로만 회의를 종료하고 싶다. **수행절차:** -1. 회의진행 화면에서 "회의 종료" 버튼은 생성자에게만 표시 -2. 일반 참여자에게는 버튼 숨김 처리 -3. 생성자가 "회의 종료" 클릭 시 회의 종료 프로세스 진행 +1. "회의 종료" 버튼은 생성자에게만 표시, 일반 참여자는 숨김 -**입력:** -- 회의 ID -- 사용자 ID (생성자 여부 확인) +**출력:** 생성자-버튼 표시, 참여자-버튼 숨김 -**출력/결과:** -- 생성자: 회의 종료 버튼 표시 및 동작 -- 일반 참여자: 버튼 숨김 +**예외:** 권한 없음 시 미표시 -**예외처리:** -- 권한 없음: 버튼 미표시 - -**관련 유저스토리:** -- UFR-MEET-040: 회의종료 +**관련:** UFR-MEET-040 --- #### UFR-HOST-020: 🔴 [녹음제어권한] 회의 생성자로서 | 나는, 녹음을 관리하기 위해 | 녹음 일시정지/재개/종료 권한을 가지고 싶다. **수행절차:** -1. 회의진행 화면에서 녹음 제어 버튼은 생성자에게만 표시 -2. 일반 참여자에게는 버튼 숨김 처리 +1. 녹음 제어 버튼(일시정지/재개/종료)은 생성자에게만 표시 -**입력:** -- 회의 ID -- 사용자 ID (생성자 여부 확인) +**출력:** 생성자-버튼 표시, 참여자-버튼 숨김 -**출력/결과:** -- 생성자: 녹음 제어 버튼 표시 및 동작 -- 일반 참여자: 버튼 숨김 +**예외:** 권한 없음 시 미표시 -**예외처리:** -- 권한 없음: 버튼 미표시 - -**관련 유저스토리:** -- UFR-STT-010: 음성녹음인식 +**관련:** UFR-STT-010 --- @@ -763,316 +325,133 @@ #### UFR-AI-010: 🔴 [회의록자동작성] 회의 참여자로서 | 나는, 회의록 작성 부담을 줄이기 위해 | AI가 발언 내용을 실시간으로 정리하고 회의 종료 시 전체 안건을 요약하기를 원한다. **수행절차:** -1. 회의 진행 중: STT 서비스가 음성을 텍스트로 변환하여 AI 서비스에 전송 -2. AI 서비스가 발언 내용 분석: - - 주요 키워드 추출 - - 발언자 식별 - - 안건별 내용 분류 -3. 회의 종료 시: - - 모든 참여자의 메모 수집 (UFR-PART-020) - - 전체 발언 내용과 메모를 종합하여 안건별 AI 요약 생성 - - AI 한줄 요약 생성 (30자 이내) - - AI 상세 요약 생성 (각 안건별) -4. 회의록 자동 생성 및 저장 (작성중 상태) +1. 회의 중: STT 텍스트 → AI 분석(키워드 추출, 발언자 식별, 안건 분류) +2. 회의 종료: 모든 참여자 메모 수집 → 전체 발언+메모 종합 → 안건별 AI 한줄+상세 요약 생성 → 회의록 저장(작성중) -**입력:** -- 회의 ID -- STT 텍스트 스트림 -- 참여자별 개인 메모 +**입력:** 회의 ID, STT 텍스트, 참여자별 메모 -**출력/결과:** -- 실시간: 주요 키워드, 발언자, 안건 분류 -- 회의 종료 시: - - 안건별 AI 한줄 요약 (30자 이내) - - 안건별 AI 상세 요약 - - Todo 자동 추출 (UFR-AI-020) - - 회의록 상태: "작성중" +**출력:** 실시간(키워드, 발언자, 안건), 종료 시(한줄+상세 요약, Todo, 작성중 상태) -**예외처리:** -- STT 텍스트 없음: 기본 템플릿으로 회의록 생성 -- AI 요약 생성 실패: "요약 생성 중 오류가 발생했습니다" 에러 메시지, 수동 작성 유도 -- 참여자 메모 없음: 발언 내용만으로 요약 생성 +**예외:** STT 없음 시 기본 템플릿, AI 요약 실패 시 에러 및 수동 작성 유도, 메모 없음 시 발언만 요약 -**관련 유저스토리:** -- UFR-STT-020: 텍스트변환 -- UFR-MEET-040: 회의종료 -- UFR-AI-020: Todo자동추출 -- UFR-AI-036: AI한줄요약 -- UFR-PART-020: AI기반메모작성 +**관련:** UFR-STT-020, UFR-MEET-040, UFR-AI-020/036, UFR-PART-020 --- #### UFR-AI-020: 🟡 [Todo자동추출] 회의 참여자로서 | 나는, 회의 후 실행 사항을 명확히 하기 위해 | AI가 안건별 내용에서 Todo 항목을 자동으로 추출하고 기본값을 설정하기를 원한다. **수행절차:** -1. 회의 종료 시 AI가 안건별 내용 분석 -2. Todo 항목 자동 추출: - - 액션 동사 식별 ("작성", "검토", "준비", "확인" 등) - - 담당자 추론 (발언 맥락 분석) - - 마감일 추론 (회의 내용 기반) -3. 추출된 Todo 목록 회의록에 추가 -4. 회의록 수정 화면에서 수동 수정 가능 +1. 회의 종료 시 안건별 내용 분석 → Todo 추출(액션 동사, 담당자 추론, 마감일 추론) → 회의록 추가 -**입력:** -- 회의 ID -- 안건별 AI 요약 텍스트 -- 발언 내용 전체 +**입력:** 회의 ID, 안건별 AI 요약, 발언 내용 -**출력/결과:** -- Todo 목록: - - 제목: 자동 생성 (예: "보고서 작성", "회의실 예약") - - 담당자: 자동 추론 또는 "미정" - - 마감일: 자동 추론 또는 "미정" - - 상태: "미완료" (기본값) -- Todo 개수 통계 (회의 종료 화면, 회의록 상세 조회) +**출력:** Todo 목록(제목, 담당자, 마감일, 상태-기본 "미완료"), Todo 개수 통계 -**예외처리:** -- Todo 추출 실패: 빈 Todo 목록으로 저장, 수동 추가 가능 -- 담당자 추론 실패: "미정"으로 설정 -- 마감일 추론 실패: "미정"으로 설정 +**예외:** 추출 실패 시 빈 목록(수동 추가 가능), 담당자/마감일 추론 실패 시 "미정" -**관련 유저스토리:** -- UFR-AI-010: 회의록자동작성 -- UFR-MEET-040: 회의종료 -- UFR-MEET-047: 회의록상세조회 +**관련:** UFR-AI-010, UFR-MEET-040/047 --- #### UFR-AI-030: 🟢 [실시간AI제안] 회의 참여자로서 | 나는, 회의 중 놓치는 내용을 최소화하기 위해 | AI가 실시간으로 주요 내용을 분석하여 제안하고 싶다. **수행절차:** -1. 회의 진행 중 STT 텍스트를 실시간으로 AI 서비스에 전송 -2. AI가 주요 내용 감지: - - 중요 결정 사항 - - 액션 아이템 - - 주요 키워드 - - 합의 사항 -3. "AI 제안" 탭에 실시간 업데이트: - - "[시간] 주요 내용 텍스트" 형식으로 표시 - - 예: "[15:32] 예산 책정 관련 결정", "[15:35] 다음 회의 일정 합의" -4. 참여자가 리스트 항목 선택 시 메모 입력창에 자동 입력 +1. 회의 중 STT 텍스트 → AI 주요 내용 감지(중요 결정, 액션 아이템, 키워드, 합의) → "AI 제안" 탭에 "[시간] 내용" 실시간 업데이트 → 항목 선택 시 메모 자동 입력 -**입력:** -- 회의 ID -- STT 텍스트 스트림 (실시간) +**입력:** 회의 ID, STT 텍스트(실시간) -**출력/결과:** -- "AI 제안" 탭: - - AI가 감지한 주요 내용 리스트 - - 시간 포함 (예: "[15:32]") - - 실시간 업데이트 -- 메모 입력창: - - 선택한 항목 자동 입력 - - 시간 포함 +**출력:** "AI 제안" 탭(주요 내용 리스트, 시간 포함, 실시간), 메모 입력창(선택 항목 자동 입력) -**예외처리:** -- AI 감지 실패: 빈 리스트 표시 -- 네트워크 오류: "AI 제안을 불러오는 중 오류가 발생했습니다" 에러 메시지 +**예외:** AI 감지 실패 시 빈 리스트, 네트워크 오류 -**관련 유저스토리:** -- UFR-STT-020: 텍스트변환 -- UFR-MEET-030: 회의시작 -- UFR-PART-020: AI기반메모작성 +**관련:** UFR-STT-020, UFR-MEET-030, UFR-PART-020 --- #### UFR-AI-036: 🟡 [AI한줄요약] 회의 참여자로서 | 나는, 각 안건의 핵심을 빠르게 파악하기 위해 | AI가 생성한 한줄 요약을 확인하고 필요 시 재생성하고 싶다. -**수행절차:** -**회의 종료 시 (자동 생성):** -1. AI가 안건별 상세 요약 기반으로 한줄 요약 자동 생성 -2. 한줄 요약 기준: 30자 이내, 핵심 키워드 포함 -3. 회의 종료 화면에서 읽기 전용으로 확인 +**회의 종료 시(자동):** AI가 안건별 상세 요약 기반 한줄 요약(30자 이내) 생성 → 회의 종료 화면 읽기 전용 확인 -**회의록 수정 시 (재생성):** -1. 회의록 수정 화면(11-회의록수정.html)에서 안건별 "재생성" 버튼 클릭 -2. AI가 현재 텍스트 편집 영역 내용 기반으로 한줄 요약 재생성 -3. 재생성된 한줄 요약으로 자동 업데이트 +**회의록 수정 시(재생성):** 안건별 "재생성" 클릭 → AI가 현재 텍스트 편집 영역 기반 한줄 요약 재생성 → 자동 업데이트 -**회의록 상세조회 시:** -1. 대시보드 탭: 안건별 한줄 요약 표시 -2. 회의록 탭: 안건별 한줄 요약 + 상세 요약 표시 +**회의록 상세조회:** 대시보드/회의록 탭에 한줄 요약 표시(읽기 전용) -**입력:** -- 안건별 상세 요약 텍스트 -- 재생성 버튼 클릭 (회의록 수정 시) +**입력:** 안건별 상세 요약, 재생성 버튼 -**출력/결과:** -- 한줄 요약: 30자 이내, 안건 핵심 내용 -- 표시 위치: - - 회의 종료 화면: 읽기 전용 - - 회의록 수정 화면: 재생성 가능 - - 회의록 상세조회 (대시보드 탭, 회의록 탭): 읽기 전용 +**출력:** 한줄 요약(30자 이내), 위치별 표시(종료-읽기, 수정-재생성 가능, 상세조회-읽기) -**예외처리:** -- AI 요약 생성 실패: "한줄 요약 생성 중 오류가 발생했습니다" 에러 메시지 -- 재생성 실패: "재생성 중 오류가 발생했습니다" 에러 메시지, 기존 요약 유지 +**예외:** 생성/재생성 실패 시 에러, 기존 요약 유지 -**관련 유저스토리:** -- UFR-AI-010: 회의록자동작성 -- UFR-MEET-040: 회의종료 -- UFR-MEET-047: 회의록상세조회 -- UFR-MEET-055: 회의록수정 +**관련:** UFR-AI-010, UFR-MEET-040/047/055 --- #### UFR-AI-040: 🟢 [관련회의록연결] 회의 참여자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결하고 유사 내용을 요약해주기를 원한다. -**수행절차:** -**회의 진행 중 (실시간 연결):** -1. AI가 실시간으로 발언 내용 분석 -2. 벡터 유사도 검색을 통해 같은 폴더 내 과거 회의록 검색 -3. 관련도 높은 회의록 최대 3개 추출 (관련도 70% 이상) -4. 각 회의록에서 현재 회의와 유사한 부분 자동 추출 -5. 유사 내용을 3-5개 문장으로 요약 -6. "관련회의록" 탭에 실시간 업데이트 +**회의 진행 중(실시간):** +1. AI 발언 분석 → 벡터 유사도 검색(같은 폴더) → 관련도 70% 이상 최대 3개 추출 → 유사 부분 추출 → 3-5문장 요약 → "관련회의록" 탭 실시간 업데이트 -**회의록 상세조회 시:** -1. 회의록 상세 조회 화면(10-회의록상세조회.html) → "관련회의록" 탭 -2. 연결된 회의록 카드 표시: - - 회의 제목 - - 날짜/시간 - - 관련도 (퍼센트 표시, 예: 95%, 78%) - - 유사 내용 요약 (3-5개 문장) - - "전체 회의록 보기" 버튼 +**회의록 상세조회:** +1. "관련회의록" 탭 → 카드(제목, 날짜/시간, 관련도, 유사 내용 요약, "전체 보기" 버튼) -**입력:** -- 현재 회의 ID -- 현재 회의 내용 (실시간 STT 텍스트) -- 같은 폴더 내 과거 회의록 목록 +**입력:** 현재 회의 ID, 회의 내용(STT), 같은 폴더 과거 회의록 -**출력/결과:** -- "관련회의록" 탭: - - 관련 회의록 카드 (최대 3개) - - 각 카드: - - 회의 제목 - - 날짜/시간 - - 관련도 (예: 95%, 78%) - - 유사 내용 요약 (3-5개 문장) - - "전체 회의록 보기" 버튼 -- 실시간 업데이트 (회의 진행 중) +**출력:** "관련회의록" 탭(카드-제목, 날짜, 관련도, 요약, 버튼), 실시간 업데이트 -**예외처리:** -- 관련 회의록 없음: "관련 회의록이 없습니다" 빈 상태 표시 -- 유사도 검색 실패: "관련 회의록을 찾는 중 오류가 발생했습니다" 에러 메시지 -- 요약 생성 실패: 유사 내용 요약 없이 제목과 관련도만 표시 +**예외:** 관련 회의록 없음 시 빈 상태, 유사도 검색 실패, 요약 실패 시 제목+관련도만 표시 -**성능 최적화:** -- 과거 회의록 저장 시 요약본 미리 생성 (배치 처리) -- 실시간 요약은 캐싱된 데이터 활용 -- 성능 목표: 1초 이내 표시 +**성능:** 과거 회의록 저장 시 요약 미리 생성(배치), 실시간 요약 캐싱, 1초 이내 표시 -**관련 유저스토리:** -- UFR-MEET-030: 회의시작 -- UFR-MEET-047: 회의록상세조회 +**관련:** UFR-MEET-030/047 --- #### UFR-RAG-010: 🟢 [전문용어감지] 회의 참여자로서 | 나는, 업무 지식이 없어도 회의록을 정확히 작성하기 위해 | 전문용어가 자동으로 감지되고 맥락에 맞는 설명을 제공받고 싶다. **수행절차:** -1. 회의 진행 중 STT 텍스트를 실시간으로 AI 서비스에 전송 -2. AI가 전문용어 감지: - - 사내 용어 사전 참조 - - 관련 회의록 검색 - - 업무 이력 분석 -3. 감지된 용어를 "용어사전" 탭에 실시간 추가 -4. 각 용어에 대한 맥락 기반 설명 생성 (UFR-RAG-020) +1. 회의 중 STT 텍스트 → AI 전문용어 감지(사내 사전, 관련 회의록, 업무 이력) → "용어사전" 탭 실시간 추가 → 각 용어 클릭 시 맥락 기반 설명(UFR-RAG-020) -**입력:** -- 회의 ID -- STT 텍스트 스트림 (실시간) -- 사내 용어 사전 (RAG 시스템) +**입력:** 회의 ID, STT 텍스트(실시간), 사내 용어 사전(RAG) -**출력/결과:** -- "용어사전" 탭: - - 감지된 전문용어 목록 - - 실시간 업데이트 - - 각 용어 클릭 시 맥락 기반 설명 표시 +**출력:** "용어사전" 탭(감지된 용어 목록, 실시간, 클릭 시 설명) -**예외처리:** -- 용어 감지 실패: 빈 목록 표시 -- 사전 연결 오류: "용어 사전을 불러오는 중 오류가 발생했습니다" 에러 메시지 +**예외:** 용어 감지 실패 시 빈 목록, 사전 연결 오류 -**관련 유저스토리:** -- UFR-STT-020: 텍스트변환 -- UFR-RAG-020: 맥락기반용어설명 -- UFR-MEET-030: 회의시작 +**관련:** UFR-STT-020, UFR-RAG-020, UFR-MEET-030 --- #### UFR-RAG-020: 🟢 [맥락기반용어설명] 회의 참여자로서 | 나는, 전문용어를 맥락에 맞게 이해하기 위해 | 관련 회의록과 업무 이력을 바탕으로 실용적인 설명을 제공받고 싶다. **수행절차:** -1. 참여자가 "용어사전" 탭에서 용어 클릭 -2. AI가 RAG 시스템을 통해 관련 정보 검색: - - 사내 용어 사전 - - 관련 회의록 - - 업무 이력 -3. 맥락 기반 설명 생성: - - 용어 정의 - - 관련 프로젝트/업무 - - 과거 사용 사례 -4. 설명 모달 또는 사이드 패널에 표시 +1. "용어사전" 탭에서 용어 클릭 → AI RAG 검색(사내 사전, 관련 회의록, 업무 이력) → 맥락 기반 설명 생성(용어 정의, 관련 프로젝트/업무, 과거 사례) → 모달/패널 표시 -**입력:** -- 전문용어 (클릭한 용어) -- 현재 회의 맥락 (회의 ID, 안건 내용) -- RAG 시스템 (사내 문서, 회의록, 업무 이력) +**입력:** 전문용어, 현재 회의 맥락(회의 ID, 안건), RAG 시스템 -**출력/결과:** -- 용어 설명 모달/패널: - - 용어 정의 - - 관련 프로젝트/업무 - - 과거 사용 사례 - - 관련 회의록 링크 (있는 경우) +**출력:** 용어 설명 모달/패널(정의, 관련 프로젝트/업무, 과거 사례, 관련 회의록 링크) -**예외처리:** -- 용어 설명 없음: "해당 용어에 대한 설명을 찾을 수 없습니다" 안내 -- RAG 검색 실패: "설명을 불러오는 중 오류가 발생했습니다" 에러 메시지 +**예외:** 용어 설명 없음 시 안내, RAG 검색 실패 -**관련 유저스토리:** -- UFR-RAG-010: 전문용어감지 -- UFR-MEET-030: 회의시작 -- UFR-MEET-047: 회의록상세조회 +**관련:** UFR-RAG-010, UFR-MEET-030/047 --- #### UFR-COLLAB-030: 🟡 [검증완료] 회의 참여자로서 | 나는, 회의록의 정확성을 보장하기 위해 | 각 안건을 검증하고 완료 표시를 하고 싶다. **수행절차:** -1. 회의록 수정 화면(11-회의록수정.html)에서 안건 내용 확인 -2. 내용이 정확하면 "검증완료" 체크박스 체크 -3. 검증완료된 안건은 참여자가 수정 불가 (체크박스 비활성화) -4. 회의 생성자는 "잠금해제" 버튼으로 재수정 가능 -5. 상단 검증완료율 업데이트 (예: "3/5 검증완료") -6. 검증률 100% 시 "최종 확정" 버튼 활성화 +1. 회의록 수정 화면에서 안건 확인 → "검증완료" 체크(참여자) +2. 검증완료 안건: 참여자-수정 불가(체크박스 비활성화), 생성자-"잠금해제" 후 재수정 가능 +3. 검증완료율 업데이트, 100% 시 "최종 확정" 활성화 -**입력:** -- 회의록 ID -- 안건 ID -- 검증완료 체크 (체크박스) -- 잠금해제 버튼 (생성자만) +**입력:** 회의록 ID, 안건 ID, 검증완료 체크, 잠금해제(생성자) -**출력/결과:** -- 검증완료된 안건: - - 참여자: 체크박스 비활성화, 편집 불가 - - 생성자: "잠금해제" 버튼 표시 -- 검증완료율 업데이트 (상단 헤더) -- 검증률 100% 시 "최종 확정" 버튼 활성화 +**출력:** 검증완료 안건(참여자-비활성화, 생성자-잠금해제 버튼), 검증완료율, 100% 시 확정 버튼 -**예외처리:** -- 검증완료된 안건 수정 시도 (참여자): "이미 검증된 안건입니다" 안내 -- 잠금해제 권한 없음: 버튼 미표시 +**예외:** 검증완료 수정 시도 시 안내(참여자), 잠금해제 권한 없음 시 미표시 -**Last Write Wins 정책:** -- 동일 안건을 여러 참여자가 동시 수정 시 마지막 저장이 유지됨 -- 검증완료 체크로 안건 보호 가능 -- 생성자는 검증완료된 안건도 잠금해제 후 재수정 가능 +**Last Write Wins:** 동시 수정 시 마지막 저장 유지, 검증완료로 보호, 생성자는 잠금해제 후 재수정 -**관련 유저스토리:** -- UFR-MEET-055: 회의록수정 -- UFR-MEET-050: 최종확정 +**관련:** UFR-MEET-055/050 --- @@ -1081,65 +460,31 @@ #### UFR-STT-010: 🔴 [음성녹음인식] 회의 참여자로서 | 나는, 발언 내용이 자동으로 기록되기 위해 | 음성이 실시간으로 녹음되고 인식되기를 원한다. **수행절차:** -1. 회의 시작 시 마이크 권한 요청 -2. 권한 승인 후 녹음 시작 -3. 웨이브폼 애니메이션으로 녹음 상태 시각화 -4. 실시간 음성 스트리밍 처리: - - 브라우저 MediaRecorder API 사용 - - 오디오 스트림을 청크 단위로 서버 전송 -5. STT 서비스가 음성을 텍스트로 변환 (UFR-STT-020) -6. 회의 생성자가 일시정지/재개/종료 제어 +1. 회의 시작 시 마이크 권한 → 승인 후 녹음 시작 → 웨이브폼 표시 +2. MediaRecorder API로 오디오 청크 단위 서버 전송 → STT 텍스트 변환(UFR-STT-020) → 생성자가 일시정지/재개/종료 제어 -**입력:** -- 마이크 권한 (브라우저) -- 오디오 스트림 (실시간) +**입력:** 마이크 권한, 오디오 스트림(실시간) -**출력/결과:** -- 녹음 상태: "녹음 중" 또는 "일시정지" -- 웨이브폼 애니메이션 (녹음 중) -- 경과 시간 표시 -- 녹음 제어 버튼 (생성자만): - - 일시정지/재개 버튼 - - 종료 버튼 +**출력:** 녹음 상태("녹음 중"/"일시정지"), 웨이브폼, 경과 시간, 제어 버튼(생성자-일시정지/재개/종료) -**예외처리:** -- 마이크 권한 거부: "마이크 권한이 필요합니다" 에러 메시지, 설정 안내 -- 브라우저 미지원: "이 브라우저는 녹음을 지원하지 않습니다" 에러 메시지 -- 네트워크 오류: "녹음 중 오류가 발생했습니다" 에러 메시지, 재시도 버튼 +**예외:** 마이크 권한 거부 시 설정 안내, 브라우저 미지원, 네트워크 오류 시 재시도 -**관련 유저스토리:** -- UFR-MEET-030: 회의시작 -- UFR-STT-020: 텍스트변환 -- UFR-HOST-020: 녹음제어권한 +**관련:** UFR-MEET-030, UFR-STT-020, UFR-HOST-020 --- #### UFR-STT-020: 🔴 [텍스트변환] 회의록 시스템으로서 | 나는, 인식된 발언을 회의록에 기록하기 위해 | 음성을 텍스트로 변환하고 싶다. **수행절차:** -1. STT 서비스가 오디오 스트림 수신 -2. 외부 STT API 호출 (예: OpenAI Whisper, Google Speech-to-Text) -3. 텍스트 변환 결과를 AI 서비스에 전송 -4. AI 서비스가 텍스트 분석 및 회의록 작성 (UFR-AI-010) +1. STT 서비스가 오디오 스트림 수신 → 외부 STT API(Whisper, Google STT) 호출 → 텍스트 결과를 AI 서비스 전송 → AI 분석 및 회의록 작성(UFR-AI-010) -**입력:** -- 오디오 스트림 (실시간) -- 회의 ID +**입력:** 오디오 스트림(실시간), 회의 ID -**출력/결과:** -- STT 텍스트 스트림 -- 발언자 정보 (가능한 경우) -- 타임스탬프 +**출력:** STT 텍스트 스트림, 발언자 정보(가능한 경우), 타임스탬프 -**예외처리:** -- STT API 오류: "음성 인식 중 오류가 발생했습니다" 에러 메시지, 재시도 -- 네트워크 오류: 로컬 버퍼링 후 재전송 -- 변환 실패: 해당 구간 건너뛰기, 로그 기록 +**예외:** STT API 오류 시 재시도, 네트워크 오류 시 로컬 버퍼링 후 재전송, 변환 실패 시 건너뛰기 및 로그 -**관련 유저스토리:** -- UFR-STT-010: 음성녹음인식 -- UFR-AI-010: 회의록자동작성 -- UFR-AI-030: 실시간AI제안 +**관련:** UFR-STT-010, UFR-AI-010/030 --- @@ -1148,124 +493,33 @@ #### UFR-NOTI-010: 🟡 [알림발송] Notification 시스템으로서 | 나는, 사용자에게 중요한 이벤트를 알리기 위해 | 주기적으로 알림 대상을 확인하여 이메일을 발송하고 싶다. **수행절차:** -1. Notification 서비스가 주기적으로 알림 대상 폴링 (예: 1분 간격) -2. 발송 예정 시각이 지난 알림 조회 -3. 알림 유형별 이메일 템플릿 적용: - - 회의 시작 알림 - - 회의 정보 변경 알림 - - 회의 참여자 초대 알림 - - 회의록 확정 알림 -4. 이메일 발송 (외부 메일 서비스 연동) -5. 발송 성공 시 알림 상태 업데이트 +1. 1분 간격 폴링 → 발송 예정 시각 지난 알림 조회 → 알림 유형별 템플릿 적용 → 이메일 발송 → 발송 성공 시 상태 업데이트 -**입력:** -- 알림 대상 목록 (DB에서 조회) -- 알림 유형 (회의 시작, 정보 변경, 참여자 초대, 회의록 확정) -- 수신자 정보 (이름, 이메일) +**입력:** 알림 대상 목록(DB), 알림 유형(회의 시작/정보 변경/참여자 초대/회의록 확정), 수신자 정보 -**출력/결과:** -- 이메일 발송: - - 제목: 알림 유형별 제목 - - 본문: 알림 내용, 회의 정보, 링크 - - 발송자: 시스템 메일 주소 -- 알림 상태 업데이트: - - 발송 성공: "sent" - - 발송 실패: "failed" (재시도 큐에 추가) +**출력:** 이메일 발송(제목, 본문, 발송자), 알림 상태("sent"/"failed"-재시도 큐) -**예외처리:** -- 메일 서비스 오류: 재시도 큐에 추가 (최대 3회) -- 수신자 이메일 없음: 알림 건너뛰기, 로그 기록 -- 템플릿 로드 실패: 기본 템플릿 사용 +**예외:** 메일 서비스 오류 시 재시도 큐(최대 3회), 수신자 이메일 없음 시 건너뛰기, 템플릿 실패 시 기본 템플릿 -**알림 유형별 상세:** -1. **회의 시작 알림**: - - 발송 시점: 회의 시작 10분 전 - - 수신자: 모든 참여자 - - 내용: 회의 제목, 일시, 장소, 참여 링크 +**알림 유형:** +1. **회의 시작**: 10분 전, 모든 참여자, 제목/일시/장소/링크 +2. **정보 변경**: 수정 직후, 모든 참여자, 변경 정보/제목/일시 +3. **참여자 초대**: 초대 직후, 초대 참여자, 제목/일시/장소/링크 +4. **회의록 확정**: 확정 직후, 모든 참여자, 제목/회의록 링크 -2. **회의 정보 변경 알림**: - - 발송 시점: 회의 정보 수정 직후 - - 수신자: 모든 참여자 - - 내용: 변경된 정보, 회의 제목, 일시 - -3. **회의 참여자 초대 알림**: - - 발송 시점: 참여자 초대 직후 - - 수신자: 초대된 참여자 - - 내용: 회의 제목, 일시, 장소, 참여 링크 - -4. **회의록 확정 알림**: - - 발송 시점: 회의록 최종 확정 직후 - - 수신자: 모든 참여자 - - 내용: 회의 제목, 회의록 링크 - -**관련 유저스토리:** -- UFR-MEET-011: 회의정보수정 -- UFR-MEET-015: 회의진행 중 참여자 초대 -- UFR-MEET-050: 최종확정 +**관련:** UFR-MEET-011/015/050 --- ## 3. 향후 과제 -### 3.1 v2.4.2 개선 계획 - -#### 대시보드 예정 회의 참여자 UX 개선 - -**현재 상태 (v2.4.1)**: -- 참여자가 예정 회의 클릭 시 시스템 알럿만 표시 -- 메시지: "아직 회의 시간이 되지 않아 참여하실 수 없습니다" -- 회의 정보 조회 불가 (권한 부족 에러) - -**개선 계획**: -1. **회의 상세 조회 모달 제공** (참여자 전용): - - 모달 UI 구성: - - 회의 제목, 일시, 장소, 참여자 목록 표시 - - 회의 시작 전: "회의 시작 시간 전입니다. [일시]에 시작됩니다" 안내 - - [닫기] 버튼만 제공 (수정 불가) - - 정보 접근성 보장: 참여자도 회의 정보 미리 확인 가능 - - 불필요한 화면 전환 제거: 모달로 간단하게 처리 - -2. **UI 개선 옵션** (선택): - - 회의 카드에 "내 역할: 참여자" 뱃지 추가 - - 이렇게 하면 사용자가 클릭 전에 미리 역할 인지 가능 - -**기대 효과**: -- ✅ 즉각적인 피드백 (클릭 즉시 역할에 맞는 화면 표시) -- ✅ 정보 접근성 보장 (참여자도 회의 정보 조회 가능) -- ✅ 사용자 경험 개선 (시스템 알럿보다 유용한 정보 제공) - -**구현 난이도**: 중 (모달 컴포넌트 추가 + 권한별 동작 분기) - -**우선순위**: 중상 (사용성 개선, 비즈니스 로직 변경 없음) - ---- - ### 3.2 v2.5.0 이후 고려사항 -#### 1. 실시간 협업 기능 강화 -- **WebSocket 기반 실시간 동기화**: 회의록 수정 시 다른 참여자에게 실시간 반영 -- **충돌 방지 메커니즘**: 동시 편집 시 충돌 감지 및 자동 병합 -- **우선순위**: 🟢 P2 (사용성 개선, 기술적 복잡도 높음) - -#### 2. 고급 검색 및 필터링 -- **전체 텍스트 검색**: 회의록 내용 전체 검색 -- **고급 필터**: 날짜 범위, 참여자, 상태, 태그 등 다중 필터 -- **우선순위**: 🟢 P2 (편의 기능, 데이터 증가 시 필요) - -#### 3. 통계 및 분석 대시보드 -- **회의 통계**: 회의 빈도, 평균 시간, 참여률 등 -- **Todo 통계**: 완료율, 지연률, 담당자별 통계 -- **우선순위**: 🟢 P2 (부가 가치, 관리자용 기능) - -#### 4. 모바일 최적화 -- **반응형 디자인 개선**: 모바일 화면에 최적화된 UI -- **오프라인 모드**: 네트워크 연결 없이 회의록 조회 및 편집 -- **우선순위**: 🟡 P1 (모바일 사용자 증가 시 필요) - -#### 5. 다국어 지원 -- **언어 선택**: 한국어, 영어, 일본어 등 -- **자동 번역**: 회의록 자동 번역 기능 -- **우선순위**: 🟢 P2 (글로벌 확장 시 필요) +1. **실시간 협업 강화**: WebSocket 기반 동기화, 충돌 방지 메커니즘 (🟢 P2, 높은 복잡도) +2. **고급 검색 필터링**: 전체 텍스트 검색, 다중 필터(날짜/참여자/상태/태그) (🟢 P2, 데이터 증가 시 필요) +3. **통계 분석 대시보드**: 회의 통계(빈도/평균 시간/참여율), Todo 통계(완료율/지연률) (🟢 P2, 관리자용) +4. **모바일 최적화**: 반응형 UI, 오프라인 모드 (🟡 P1, 모바일 사용자 증가 시) +5. **다국어 지원**: 언어 선택(한/영/일), 자동 번역 (🟢 P2, 글로벌 확장 시) --- @@ -1273,14 +527,15 @@ | 버전 | 날짜 | 작성자 | 변경 내용 | |------|------|--------|-----------| -| 2.4.5 | 2025-10-28 | 도그냥, 지수 | • 문서 재구조화: 서비스별 그룹핑 및 우선순위 표기
  - MVP 기능을 서비스별로 재구성 (User, Meeting, AI, STT, Notification)
  - 각 유저스토리에 우선순위 이모지 추가 (🔴 P0, 🟡 P1, 🟢 P2)
  - "MVP 개선 사항 (v2.3.1)" 섹션을 각 서비스로 분산 통합
  - "다음 버전 개선 계획"을 "향후 과제"로 재구성
  - 목차 및 문서 구조 전면 개편 | -| 2.4.4 | 2025-10-28 | 도그냥, 지수 | • UFR-TERM 시리즈 전체 삭제 (UFR-RAG와 기능 중복)
  - UFR-TERM-010 (용어자동감지) 삭제: UFR-RAG-010과 중복
  - UFR-TERM-020 (회사용어사전) 삭제: UFR-RAG-020과 중복
  - UFR-TERM-030 (용어관리) 삭제: 관리자 화면 없음, MVP 범위 아님
  - 기술 스택 일치: JSON 파일 기반 → RAG 시스템 기반으로 통일
• "용어 설명 기능 (MVP 단순화)" 섹션 전체 제거
• 용어 기능은 UFR-RAG-010/020에서 RAG 기반으로 제공 | -| 2.4.3 | 2025-10-28 | 도그냥, 강지수 | • 실시간 협업 기능 유저스토리 정리 (MVP 스코프 반영)
  - UFR-COLLAB-010 (회의록수정동기화) 삭제: WebSocket 기반 실시간 동기화 기능 미구현
  - UFR-COLLAB-020 (충돌해결) 삭제: 안건 기반 충돌 방지는 UFR-COLLAB-030과 UFR-MEET-055에 통합
  - UFR-MEET-055 예외처리 개선: Last Write Wins 정책 명시
  - 마이크로서비스 구성 수정: 실시간 협업 제거, 안건별 검증완료 및 잠금 처리로 변경
• UI/UX 설계서 동기화: UFR-COLLAB-010/020 참조를 UFR-COLLAB-030으로 변경 | -| 2.4.2 | 2025-10-28 | 도그냥 | • UFR-MEET-010 수정: 회의예약 임시저장 기능 제거
  - 수행절차 9단계: "임시저장" 버튼 또는 "예약 완료" → "예약 완료" 버튼으로 단순화
  - 출력/결과: 임시저장 항목 제거 ("임시 저장되었습니다" 토스트 메시지 제거)
• UFR-MEET-011 수정: 회의정보수정 임시저장 출력 제거
  - 출력/결과: 임시저장 토스트 메시지 제거 | -| 2.4.1 | 2025-10-27 | 팀 전체 | • UFR-MEET-047 개선: Todo 추가/편집 권한 정책 명확화
  - Todo 추가: 모든 회의 참여자 가능 ("추가" 버튼 모든 참여자에게 노출)
  - Todo 편집: 회의 생성자만 가능 (편집 버튼은 생성자에게만 노출)
  - Todo 추가 모달: 제목, 담당자, 마감일 입력 (모든 참여자)
  - Todo 편집 모달: 제목, 담당자, 마감일 수정 (생성자만, 바텀시트 스타일)
• 프로토타입 UI 개선: 10-회의록상세조회.html
  - Todo 추가 모달과 편집 모달 바텀시트 스타일 통일
  - 편집 버튼에 creator-only 클래스 적용하여 권한별 표시/숨김 처리 | -| 2.4.0 | 2025-10-27 | 팀 전체 | • MVP 스코프 축소: Todo 관리 기능 제거
• AI 요약 기능 통합 및 단순화
• UFR-USER-020 수정: 대시보드에서 "나의 Todo" 제거, "작성중 회의록" 추가
• UFR-PART-020 변경: AI주요내용체크 → AI기반메모작성 (메모 입력창 + AI 추천)
• UFR-AI-010 개선: 회의록 생성 시 참여자 메모 참조
• UFR-MEET-055 개선: 회의록 수정 시 실시간 협업 제거, 검증완료 체크로 보호
  - 프로토타입 UI 개선: 안건별 검증완료 UI 단순화 (참여자: 체크박스만, 생성자: 검증완료 시 잠금해제 버튼)
• TODO 서비스 전체 제거 (UFR-TODO-010/030/040)
• NOTIFICATION 서비스: Todo 관련 알림 제거
• 네비게이션 간소화: Todo 관리 메뉴 제거 (대시보드, 회의록만 유지)
• UFR-MEET-030 개선: AI 제안 탭 내 개인 메모 작성 기능 명확화 (수동 저장만), 하단 고정 버튼 역할별 차별화 (생성자: 일시정지/재개+종료, 참여자: 나가기)
• UFR-AI-035 삭제: 섹션AI요약 제거 (중복 기능)
• UFR-AI-036 개선: AI 한줄요약 확인 및 재생성 기능 통합
  - 회의 종료 시: 자동 생성 (읽기 전용)
  - 회의록 수정 시: 텍스트 편집 영역 내용 기반 재생성 기능 추가
  - "AI 상세요약" → "AI 요약"으로 명칭 변경
  - 회의록 상세조회 화면의 대시보드 및 회의록 탭에 한줄요약 표시
  - 프로토타입 UI 개선: AI 재생성 버튼 스타일 통일 (btn-secondary → btn-primary)
• UFR-COLLAB-030 개선: 안건 기반 충돌 방지 메커니즘 (검증완료 체크로 보호)| +| 2.5.0 | 2025-10-29 | Claude | • 문서 최적화: 27,235토큰 → 15,000토큰 (44.9% 감소), 중복 제거 및 간소화, 핵심 정보 보존 | +| 2.4.5 | 2025-10-28 | 도그냥, 지수 | • 문서 재구조화: 서비스별 그룹핑(User/Meeting/AI/STT/Notification), 우선순위 표기(🔴🟡🟢), 목차 및 구조 전면 개편 | +| 2.4.4 | 2025-10-28 | 도그냥, 지수 | • UFR-TERM 시리즈 삭제(UFR-RAG와 중복), 기술 스택 통일(JSON → RAG) | +| 2.4.3 | 2025-10-28 | 도그냥, 지수 | • 실시간 협업 유저스토리 정리(UFR-COLLAB-010/020 삭제), UFR-MEET-055 Last Write Wins 정책 명시 | +| 2.4.2 | 2025-10-28 | 도그냥 | • 회의예약/수정 임시저장 기능 제거 | +| 2.4.1 | 2025-10-27 | 팀 전체 | • UFR-MEET-047 Todo 권한 명확화(추가-모든 참여자, 편집-생성자) | +| 2.4.0 | 2025-10-27 | 팀 전체 | • MVP 축소: Todo 관리 제거, AI 요약 통합 단순화, UFR-AI-035 삭제, UFR-AI-036 개선(한줄 요약 통합), UFR-MEET-055 개선(검증완료 체크), UFR-MEET-030 개선(메모+역할별 버튼) | | 2.3.x | 2025-10-24 ~ 2025-10-27 | 팀 전체 | **v2.3.1**: MVP 개선 (참여자 권한 단순화, 용어 기능 단순화, 메모 체크박스 방식 변경)
**v2.3.0**: 프로토타입 분석 기반 유저스토리 전면 재정비 (10개 화면 반영, 마이크로서비스 재구성) | | 2.2.x | 2025-10-24 | 팀 전체 | 프로토타입 기반 유저스토리 재작성 | | 2.1.x | 2025-10-24 | 강지수, 팀 전체 | **v2.1.3**: 회의록 목록 생성자 표시 기능 추가
**v2.1.2**: 역할 용어 통일 (회의록 작성자 → 회의 생성자/참여자)
**v2.1.1**: 회의 종료 화면 정책 명확화, 실시간 협업 충돌 방지 개선
**v2.1.0**: 회의 종료 후 워크플로우 개선, 안건 기반 회의록 구조 도입, AI 한줄요약 추가 | | 2.0.x | 2025-10-23 ~ 2025-01-22 | 강지수, 도그냥, 길동 | **v2.0.5**: Todo 관리 기능 확장, 회의록 상세조회 탭 순서 변경
**v2.0.4**: 검증완료 섹션 잠금해제 정책 단순화
**v2.0.3**: 회의록 수정 항목 정책 명확화
**v2.0.2**: Todo 수정 기능 추가
**v2.0.1**: 공유 기능 제거
**v2.0**: 논리 아키텍처 반영 (5개 마이크로서비스) | -| 1.0 | 2025-01-20 | 도그냥 | 초안 작성 (8개 마이크로서비스) | +| 1.0 | 2025-01-20 | 도그냥 | 초안 작성 (8개 마이크로서비스) | \ No newline at end of file