diff --git a/.gitignore b/.gitignore index 7daf7a8..d44608b 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,9 @@ examples/ .claude/settings.local.json # Backup files -design/*/*backup.md -design/*backup.md +design/*/*/*/*back* +design/*/*/*back* +design/*/*back* +design/*back* backup/ +.vscode/settings.json diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html index fa25ae2..3f0ed4f 100644 --- a/build/reports/problems/problems-report.html +++ b/build/reports/problems/problems-report.html @@ -650,7 +650,7 @@ code + .copy-button { diff --git a/claude/uiux-v1.4.20-update-summary.md b/claude/uiux-v1.4.20-update-summary.md new file mode 100644 index 0000000..659c098 --- /dev/null +++ b/claude/uiux-v1.4.20-update-summary.md @@ -0,0 +1,88 @@ +# UI/UX 설계서 v1.4.20 업데이트 요약 + +## 업데이트 일시 +2025-10-25 + +## 변경 사항 + +### 1. 회의 종료 화면 (07-회의종료) - "옵션 2: 바로 최종 확정" 정책 명확화 + +**위치**: 인터랙션 섹션, 라인 958-976 + +**변경 내용**: +- UFR-MEET-050 시나리오 2 명시 추가 +- 확인 다이얼로그 메시지 구체화: "바로 최종 확정하시겠습니까? AI가 정리한 내용 그대로 확정됩니다." +- 안건별 검증완료 처리 단계 추가 +- 회의록 상태 변경 명확화: "작성중" → "확정완료" +- 이동 페이지 변경: 02-대시보드.html → 10-회의록상세조회.html +- 시나리오 2 특징 상세 설명 추가: + - 회의록 수정 단계를 건너뜀 + - AI 생성 내용을 그대로 확정 + - 모든 안건이 자동으로 검증완료 처리됨 + - 확정 후에도 회의 생성자는 수정 가능 (잠금 해제 필요) + +### 2. 회의록 수정 화면 (11-회의록수정) - 안건 기반 충돌 해결 메커니즘 추가 + +**위치**: 인터랙션 섹션, 라인 1531 이후 (새로운 섹션 9 추가) + +**변경 내용**: +- UFR-COLLAB-020 안건 기반 충돌 방지 메커니즘 상세 추가 +- **안건 기반 충돌 방지 메커니즘**: + - **다른 안건 동시 편집**: 충돌 없음 (참석자 A는 안건 1, 참석자 B는 안건 2) + - **동일 안건 내 다른 필드 편집**: 자동 병합 (상세 요약, 관련회의록 등) + - **동일 필드 동시 수정**: Last Write Wins 방식 (덮어쓰기 경고 + 선택 옵션) +- **편집 중 표시**: + - 다른 사용자 편집 중인 안건 표시 + - 편집자 아바타 + 이름 실시간 표시 + - 예: "김민준님이 이 안건을 편집 중입니다" + 아바타 +- **충돌 경고 모달**: + - 제목: "동시 수정 감지" + - 메시지: "다른 사용자가 이미 이 내용을 수정했습니다" + - 옵션: "최신 내용 보기" / "내 변경사항 유지" + +### 3. 회의록 수정 화면 (11-회의록수정) - UI 구성요소에 편집 중 표시 추가 + +**위치**: UI 구성요소 > 안건 헤더, 라인 1389-1394 + +**변경 내용**: +- 안건 헤더에 편집 중 표시 추가: + - 다른 사용자 아바타 + 이름 + - 예: "김민준님 편집 중" (아이콘 + 텍스트) + +### 4. 회의록 수정 화면 (11-회의록수정) - 에러 처리 섹션 업데이트 + +**위치**: 에러 처리 섹션 + +**변경 내용**: +- 충돌 발생 에러 처리 상세화: + - 안건 기반 충돌 방지로 최소화 + - 동일 필드 동시 수정 시 경고 모달 표시 + - 선택 옵션 제공: 최신 내용 확인 / 내 변경사항 유지 + - 병합 실패 시 에러 메시지: "병합 중 오류가 발생했습니다" + +### 5. 변경 이력 추가 + +**위치**: 변경 이력 테이블 + +**변경 내용**: +- v1.4.20 (2025-10-25) 항목 추가: + - 유저스토리 v2.3.0 반영 + - 회의 종료 화면 정책 명확화 (확인 전용, 바로 최종 확정 옵션 상세화) + - UFR-MEET-050: 최종 확정 2가지 시나리오 설명 추가 + - UFR-COLLAB-020: 안건 기반 충돌 해결 메커니즘 상세 추가 + - 실시간 협업 충돌 방지 정책 강화 + +## 업데이트 방법 +- Python 스크립트를 이용한 자동 업데이트 +- 5개의 주요 업데이트 항목 모두 성공적으로 적용됨 + +## 검증 완료 +- ✓ Update 1: 옵션 2: 바로 최종 확정 - Updated +- ✓ Update 2: 안건 기반 충돌 해결 섹션 - Added +- ✓ Update 3: 안건 헤더에 편집 중 표시 - Added +- ✓ Update 4: 충돌 처리 업데이트 - Updated +- ✓ Update 5: 변경 이력 추가 - Added + +## 관련 유저스토리 +- UFR-MEET-050: 회의록 최종 확정 +- UFR-COLLAB-020: 실시간 협업 및 충돌 해결 diff --git a/claude/userstory-comparison-summary.md b/claude/userstory-comparison-summary.md new file mode 100644 index 0000000..a8bf6f2 --- /dev/null +++ b/claude/userstory-comparison-summary.md @@ -0,0 +1,217 @@ +# 유저스토리 v2.2.0 → v2.3.0 변경사항 요약 + +## 📊 한눈에 보는 변경사항 + +``` +v2.2.0 (25개) v2.3.0 (27개) +┌─────────────────┐ ┌─────────────────┐ +│ AFR-USER-010 │ ──────────────────>│ UFR-USER-010 ✨ │ (로그인 상세화) +│ AFR-USER-020 │ ──────────────────>│ UFR-USER-020 ✨ │ (대시보드 재설계) +├─────────────────┤ ├─────────────────┤ +│ UFR-MEET-010 │ ──────────────────>│ UFR-MEET-010 ✨ │ (회의예약 개선) +│ │ │ UFR-MEET-015 🆕 │ (참석자 실시간 초대) +│ UFR-MEET-020 │ ──────────────────>│ UFR-MEET-020 ✨ │ (템플릿선택 상세화) +│ UFR-MEET-030 │ ──────────────────>│ UFR-MEET-030 ✨ │ (회의시작 4개 탭) +│ UFR-MEET-040 │ ──────────────────>│ UFR-MEET-040 ✨ │ (회의종료 3가지 액션) +│ UFR-MEET-050 │ ──────────────────>│ UFR-MEET-050 ✨ │ (최종확정 2가지 시나리오) +│ UFR-MEET-046 │ ──────────────────>│ UFR-MEET-046 ✨ │ (목록조회 샘플 30개) +│ UFR-MEET-047 │ ──────────────────>│ UFR-MEET-047 ✨ │ (상세조회 관련회의록) +│ UFR-MEET-055 │ ──────────────────>│ UFR-MEET-055 ✨ │ (회의록수정 3가지 시나리오) +├─────────────────┤ ├─────────────────┤ +│ UFR-AI-010 │ ──────────────────>│ UFR-AI-010 │ +│ UFR-AI-020 │ ──────────────────>│ UFR-AI-020 │ +│ │ │ UFR-AI-030 🆕🎯 │ (실시간 AI 제안 - 차별화!) +│ UFR-AI-035 │ ──────────────────>│ UFR-AI-035 │ +│ UFR-AI-036 │ ──────────────────>│ UFR-AI-036 │ +│ UFR-AI-040 │ ──────────────────>│ UFR-AI-040 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-STT-010 │ ──────────────────>│ UFR-STT-010 │ +│ UFR-STT-020 │ ──────────────────>│ UFR-STT-020 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-RAG-010 │ ──────────────────>│ UFR-RAG-010 │ +│ UFR-RAG-020 │ ──────────────────>│ UFR-RAG-020 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-COLLAB-010 │ ──────────────────>│ UFR-COLLAB-010 │ +│ UFR-COLLAB-020 │ ──────────────────>│ UFR-COLLAB-020 │ +│ UFR-COLLAB-030 │ ──────────────────>│ UFR-COLLAB-030 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-TODO-010 │ ──────────────────>│ UFR-TODO-010 │ +│ UFR-TODO-030 │ ──────────────────>│ UFR-TODO-030 │ +│ UFR-TODO-040 │ ──────────────────>│ UFR-TODO-040 │ +└─────────────────┘ ├─────────────────┤ + │ UFR-NOTI-010 🆕 │ (알림발송 - 폴링 방식) + └─────────────────┘ + +범례: +🆕 = 완전 신규 추가 +🎯 = 차별화 핵심 기능 +✨ = 대폭 개선 (프로토타입 기반 재작성) +``` + +--- + +## 🎯 3대 신규 기능 + +### 1. UFR-MEET-015: 참석자 실시간 초대 🆕 +- **위치**: 회의 진행 화면 "참석자" 탭 +- **기능**: 회의 중 검색 모달로 참석자 추가 → 실시간 동기화 → 알림 발송 +- **의미**: 회의 진행 중 동적 참석자 관리로 유연성 향상 + +### 2. UFR-AI-030: 실시간 AI 제안 🆕🎯 +- **위치**: 회의 진행 화면 "AI 제안" 탭 +- **기능**: STT 텍스트 실시간 분석 → 주요 내용 감지 → 제안 카드 생성 → 메모에 추가 +- **의미**: **차별화 전략 "지능형 회의 진행 지원" 실현** +- **효과**: 회의 중 놓치는 내용 최소화 + +### 3. UFR-NOTI-010: 알림 발송 🆕 +- **방식**: 폴링 (1분 간격) → 이메일 발송 → 최대 3회 재시도 +- **알림 유형**: Todo 할당, Todo 완료, 회의 시작, 회의록 확정, 참석자 초대, 회의록 수정 +- **의미**: **알림 아키텍처 폴링 방식으로 통일** → Notification 서비스 독립성 확보 + +--- + +## 📈 유저스토리 품질 개선 + +### 형식 표준화 (Before & After) + +#### v2.2.0 (자유 형식) +``` +UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, ... +- 시나리오: 회의 예약 및 참석자 초대 + 회의 예약 화면에 접근한 상황에서 | ... + + [입력 요구사항] + - 회의 제목: 최대 100자 (필수) + ... + + [처리 결과] + - 회의가 예약됨 + ... + +- M/13 +``` + +#### v2.3.0 (표준 형식) +``` +### UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, ... + +**수행절차:** +1. 대시보드에서 "회의예약" FAB 버튼 클릭 +2. 회의 제목 입력 (최대 100자) +3. 날짜 선택 (오늘 이후 날짜, 달력 UI) +... +10. "임시저장" 버튼 또는 "예약 완료" 버튼 클릭 + +**입력:** +- 회의 제목: 텍스트 입력, 필수, 최대 100자, 문자 카운터 표시 +- 날짜: date 타입, 필수, 오늘 이후 날짜만 선택 가능 +... + +**출력/결과:** +- 예약 완료: "회의가 예약되었습니다" 토스트 메시지, 대시보드로 이동 +- 임시저장: "임시 저장되었습니다" 토스트 메시지 +... + +**예외처리:** +- 제목 미입력: "회의 제목을 입력해주세요" 토스트, 제목 필드 포커스 +- 과거 날짜 선택: "과거 날짜는 선택할 수 없습니다" 토스트 +... + +**관련 유저스토리:** +- UFR-USER-020: 대시보드 조회 +- UFR-MEET-020: 템플릿선택 +``` + +### 개선 효과 +- ✅ **수행절차**: 단계별 명확한 작업 흐름 +- ✅ **입력**: 필드 타입, 검증 규칙, UI 요소 상세 명세 +- ✅ **출력/결과**: 성공/실패 시나리오별 응답 명시 +- ✅ **예외처리**: 에러 상황별 처리 방법 구체화 +- ✅ **관련 유저스토리**: 기능 간 연계성 추적 + +--- + +## 🏗️ 프로토타입 연계 강화 + +| 프로토타입 화면 | 연계 유저스토리 | 상태 | +|----------------|----------------|------| +| 01-로그인.html | UFR-USER-010 | ✅ 1:1 매핑 | +| 02-대시보드.html | UFR-USER-020 | ✅ 1:1 매핑 | +| 03-회의예약.html | UFR-MEET-010 | ✅ 1:1 매핑 | +| 04-템플릿선택.html | UFR-MEET-020 | ✅ 1:1 매핑 | +| 05-회의진행.html | UFR-MEET-030, UFR-MEET-015 (신규), UFR-AI-030 (신규) | ✅ 1:N 매핑 | +| 07-회의종료.html | UFR-MEET-040 | ✅ 1:1 매핑 | +| 10-회의록상세조회.html | UFR-MEET-047 | ✅ 1:1 매핑 | +| 11-회의록수정.html | UFR-MEET-055 | ✅ 1:1 매핑 | +| 12-회의록목록조회.html | UFR-MEET-046 | ✅ 1:1 매핑 | + +**결과**: 10개 프로토타입 화면 100% 유저스토리 연계 완료 + +--- + +## 🔑 핵심 아키텍처 변경 + +### 알림 아키텍처: 실시간 → 폴링 방식 + +#### Before (v2.2.0) +``` +[Meeting Service] ──(실시간 발송)──> [Notification Service] ──> [Email] + ↓ + Todo 할당 발생 → 즉시 이메일 발송 +``` + +#### After (v2.3.0) +``` +[Meeting Service] ──(DB 레코드 생성)──> [Notification 테이블] + ↓ + (1분 간격 폴링) + ↓ + [Notification Service] ──> [Email] + ↓ + (발송 상태 업데이트) +``` + +**개선 효과**: +- ✅ **Notification 서비스 독립성 강화**: 마이크로서비스 간 느슨한 결합 +- ✅ **시스템 안정성 향상**: 이메일 발송 실패 시 자동 재시도 (최대 3회) +- ✅ **확장성 확보**: 폴링 주기 조정으로 트래픽 제어 가능 + +--- + +## 📊 통계 비교 + +| 항목 | v2.2.0 | v2.3.0 | 변화 | +|------|--------|--------|------| +| **유저스토리 수** | 25개 | 27개 | +2개 (+8%) | +| **신규 추가** | - | 3개 | - | +| **AFR 코드** | 2개 | 0개 | -2개 (100% 제거) | +| **UFR 코드** | 23개 | 27개 | +4개 (+17%) | +| **평균 상세도** | 20-30줄 | 60-100줄 | **약 3배** | +| **프로토타입 연계** | 부분적 | 100% (10개 화면) | - | +| **표준 형식 적용** | 0% | 100% (27개) | - | + +--- + +## ✅ 권장 후속 조치 체크리스트 + +### 🔴 긴급 (1주 내) +- [ ] 신규 유저스토리 3개 기반 API 설계 (UFR-MEET-015, UFR-AI-030, UFR-NOTI-010) +- [ ] 알림 아키텍처 폴링 방식 반영 (물리 아키텍처 업데이트) +- [ ] 프로토타입 ↔ 유저스토리 1:1 매핑 검증 + +### 🟡 중요 (2주 내) +- [ ] API 설계서 v2.3.0 기반 전면 업데이트 (입력/출력 명세 반영) +- [ ] 예외처리 시나리오 → 테스트 케이스 전환 +- [ ] 관련 유저스토리 기반 통합 테스트 시나리오 작성 + +### 🟢 일반 (3주 내) +- [ ] 유저스토리별 개발 우선순위 재평가 +- [ ] 신규 기능 3개 개발 일정 수립 +- [ ] 프로토타입 기반 개발 가이드 작성 + +--- + +**분석 일시**: 2025-10-25 +**분석 파일**: +- 상세 분석 (JSON): `claude/userstory-comparison-v2.2.0-to-v2.3.0.json` +- 상세 분석 (Markdown): `claude/userstory-comparison-v2.2.0-to-v2.3.0.md` diff --git a/claude/userstory-comparison-v2.2.0-to-v2.3.0.json b/claude/userstory-comparison-v2.2.0-to-v2.3.0.json new file mode 100644 index 0000000..e84310c --- /dev/null +++ b/claude/userstory-comparison-v2.2.0-to-v2.3.0.json @@ -0,0 +1,343 @@ +{ + "comparisonMetadata": { + "previousVersion": "v2.2.0", + "currentVersion": "v2.3.0", + "comparisonDate": "2025-10-25", + "analyst": "Claude (AI Assistant)", + "previousVersionDate": "2025-10-23", + "currentVersionDate": "2025-10-24" + }, + + "documentStructure": { + "v2.2.0": { + "description": "기존 구조: 유저스토리 섹션과 논리 아키텍처 반영 사항 요약 섹션 포함", + "mainSections": [ + "차별화 전략", + "마이크로서비스 구성", + "유저스토리", + "논리 아키텍처 반영 사항 요약", + "문서 이력" + ], + "userStoryFormat": "계층적 구조 (서비스 > 기능 그룹 > 유저스토리)", + "userStoryPrefix": "AFR/UFR 혼용", + "totalUserStories": 25 + }, + "v2.3.0": { + "description": "신규 구조: 프로토타입 기반으로 재정비, 논리 아키텍처 섹션 제거, 유저스토리 형식 표준화", + "mainSections": [ + "차별화 전략", + "마이크로서비스 구성", + "유저스토리 v2.3.0 - USER & MEETING 서비스", + "문서 이력" + ], + "userStoryFormat": "표준화된 형식 (수행절차, 입력, 출력/결과, 예외처리, 관련 유저스토리)", + "userStoryPrefix": "UFR로 통일 (AFR 제거)", + "totalUserStories": 27 + }, + "changes": [ + "논리 아키텍처 반영 사항 요약 섹션 삭제 (설계 문서로 이관)", + "유저스토리 형식 대폭 개선: 기존의 자유 형식에서 구조화된 템플릿으로 전환", + "모든 유저스토리에 '수행절차', '입력', '출력/결과', '예외처리', '관련 유저스토리' 섹션 추가", + "AFR 코드 제거 및 UFR로 통일 (더 이상 아키텍처 참조 코드 사용하지 않음)", + "프로토타입 화면과의 연계성 강화 (화면 번호, 파일명 명시)", + "유저스토리 ID 체계 유지 (기존 24개 ID 승계)" + ] + }, + + "addedStories": [ + { + "code": "UFR-USER-010", + "previousCode": "AFR-USER-010", + "title": "[로그인] 사용자로서 | 나는, 시스템에 접근하기 위해 | 사번과 비밀번호로 로그인하고 싶다", + "description": "기존 AFR-USER-010에서 UFR-USER-010으로 전환. 상세한 수행절차, 입력/출력 명세, 예외처리 추가", + "significance": "프로토타입 01-로그인.html과 직접 연계. 로그인 흐름, 검증 규칙, 에러 처리가 구체화됨", + "newFeatures": [ + "로그인 상태 유지 체크박스 추가", + "Enter 키 입력 시 다음 필드로 자동 이동", + "비밀번호 최소 8자 검증", + "로딩 상태 UI 명시", + "이미 로그인된 경우 자동 리다이렉트" + ], + "relatedPrototype": "01-로그인.html" + }, + { + "code": "UFR-USER-020", + "previousCode": "AFR-USER-020", + "title": "[대시보드] 사용자로서 | 나는, 나의 회의 및 Todo 현황을 파악하기 위해 | 대시보드를 조회하고 싶다", + "description": "기존 AFR-USER-020에서 UFR-USER-020으로 전환. 대시보드 위젯 구성 재정의 및 상세 명세 추가", + "significance": "프로토타입 02-대시보드.html 기반으로 대시보드 구성 완전 재설계. 통계 블록, 최근 회의, Todo, 회의록 섹션 구체화", + "newFeatures": [ + "통계 블록 2열 그리드 (예정된 회의, 나의 Todo)", + "최근 회의 목록 (회의록 미생성 우선, 최대 3개)", + "나의 Todo 목록 (미완료 우선, D-day 표시, 최대 3개)", + "나의 회의록 2x2 그리드 (최대 4개)", + "FAB 메뉴 (회의예약, 바로시작)", + "반응형 네비게이션 (데스크톱 사이드바, 모바일 하단 탭)" + ], + "relatedPrototype": "02-대시보드.html" + }, + { + "code": "UFR-MEET-015", + "previousCode": null, + "title": "[회의진행] 회의 참석자로서 | 나는, 회의 중 추가 참석자가 필요할 때 | 실시간으로 참석자를 초대하고 싶다", + "description": "**신규 추가**: 회의 진행 중 실시간 참석자 초대 기능", + "significance": "프로토타입 05-회의진행.html의 '참석자' 탭 기능 반영. 회의 진행 중 동적 참석자 관리 가능", + "newFeatures": [ + "회의 진행 중 검색 모달을 통한 참석자 초대", + "초대된 참석자 실시간 표시", + "Notification 서비스 연동 (초대 알림 발송)", + "모든 참석자에게 WebSocket 기반 실시간 동기화" + ], + "relatedPrototype": "05-회의진행.html", + "relatedUserStories": [ + "UFR-MEET-030 (회의시작)", + "UFR-COLLAB-010 (회의록수정동기화)", + "UFR-NOTI-010 (알림발송)" + ] + }, + { + "code": "UFR-AI-030", + "previousCode": null, + "title": "[실시간AI제안] 회의 참석자로서 | 나는, 회의 중 놓치는 내용을 최소화하기 위해 | AI가 실시간으로 주요 내용을 분석하여 제안하고 싶다", + "description": "**신규 추가**: 회의 진행 중 AI 실시간 분석 및 제안 기능", + "significance": "프로토타입 05-회의진행.html의 'AI 제안' 탭 기능 구현. 회의 중 AI가 주요 내용을 감지하여 자동 제안하는 차별화 기능", + "newFeatures": [ + "STT 텍스트 실시간 분석", + "주요 내용 감지 시 AI 제안 카드 자동 생성", + "'메모에 추가' 버튼으로 회의 메모에 즉시 추가", + "모든 참석자에게 실시간 동기화", + "로컬 캐시를 통한 네트워크 오류 대응" + ], + "relatedPrototype": "05-회의진행.html", + "relatedUserStories": [ + "UFR-STT-020 (텍스트변환)", + "UFR-MEET-030 (회의시작)", + "UFR-COLLAB-010 (회의록수정동기화)" + ], + "differentiatorImpact": "지능형 회의 진행 지원의 핵심 기능으로, 회의 중 놓치는 내용 최소화" + }, + { + "code": "UFR-NOTI-010", + "previousCode": null, + "title": "[알림발송] Notification 시스템으로서 | 나는, 사용자에게 중요한 이벤트를 알리기 위해 | 주기적으로 알림 대상을 확인하여 이메일을 발송하고 싶다", + "description": "**신규 추가**: 알림 시스템 폴링 방식 명세", + "significance": "알림 아키텍처를 실시간 발송에서 주기적 폴링 방식으로 통일. Notification 서비스의 독립성과 안정성 확보", + "newFeatures": [ + "주기적 폴링 (1분 간격) 방식 알림 발송", + "이메일 발송 실패 시 최대 3회 재시도", + "알림 유형별 템플릿 적용", + "6가지 알림 유형 지원 (Todo 할당, Todo 완료, 회의 시작, 회의록 확정, 참석자 초대, 회의록 수정)" + ], + "relatedUserStories": [ + "UFR-TODO-010 (Todo할당)", + "UFR-TODO-030 (Todo완료처리)", + "UFR-MEET-015 (참석자 실시간 초대)", + "UFR-MEET-050 (최종확정)" + ], + "architectureImpact": "Notification 서비스를 독립적인 폴링 기반 마이크로서비스로 명확히 정의" + } + ], + + "removedStories": [ + { + "code": "AFR-USER-010", + "title": "[사용자관리] 시스템 관리자로서 | 나는, 서비스 보안을 위해 | 사용자 인증 기능을 원한다", + "reason": "UFR-USER-010으로 전환. AFR(아키텍처 참조) 코드 체계 폐지 및 UFR(사용자 기능 요구사항)로 통일", + "impact": "코드 변경일 뿐, 기능은 UFR-USER-010으로 승계되어 유지됨" + }, + { + "code": "AFR-USER-020", + "title": "[대시보드] 사용자로서 | 나는, 회의록 서비스의 주요 정보를 한눈에 파악하기 위해 | 대시보드를 통해 요약 정보를 확인하고 싶다", + "reason": "UFR-USER-020으로 전환. 프로토타입 기반으로 상세 명세 재작성", + "impact": "코드 변경 및 내용 대폭 보강. 기능은 강화되어 승계됨" + } + ], + + "modifiedStories": [ + { + "code": "UFR-MEET-010", + "title": "[회의예약] 회의 생성자로서 | 나는, 회의를 효율적으로 준비하기 위해 | 회의를 예약하고 참석자를 초대하고 싶다", + "changes": [ + "프로토타입 03-회의예약.html 기반으로 전면 재작성", + "상세한 수행절차 추가 (10단계)", + "입력 필드 상세 명세 (종일 회의 토글, 온라인/오프라인 회의 토글, 회의 링크 자동 생성)", + "예외처리 8가지 추가 (과거 날짜 선택, 뒤로가기 확인 모달 등)", + "임시저장 기능 추가", + "참석자 검색 모달 UI 상세화" + ], + "significance": "프로토타입과의 정확한 매칭으로 개발 시 명확한 가이드 제공" + }, + { + "code": "UFR-MEET-020", + "title": "[템플릿선택] 회의 생성자로서 | 나는, 회의록을 효율적으로 작성하기 위해 | 회의 유형에 맞는 템플릿을 선택하고 싶다", + "changes": [ + "프로토타입 04-템플릿선택.html 기반으로 재작성", + "4가지 템플릿 내용 상세 명세 (일반, 스크럼, 킥오프, 주간 회의)", + "건너뛰기 옵션 추가", + "템플릿 미리보기 구성 명시 (아이콘, 설명, 섹션 목록)" + ], + "significance": "템플릿별 섹션 구성이 구체화되어 일관된 회의록 작성 지원" + }, + { + "code": "UFR-MEET-030", + "title": "[회의시작] 회의 생성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다", + "changes": [ + "프로토타입 05-회의진행.html 기반으로 전면 재작성", + "8단계 상세 수행절차 추가", + "4개 탭 네비게이션 명시 (참석자, AI 제안, 용어사전, 관련회의록)", + "웨이브폼 애니메이션, 타이머, 녹음 상태 UI 추가", + "하단 고정 메모 영역 추가", + "일시정지 및 종료 확인 모달 추가" + ], + "significance": "회의 진행 화면의 핵심 UX가 상세히 정의되어 실시간 협업 기능 구현 가이드 제공" + }, + { + "code": "UFR-MEET-040", + "title": "[회의종료] 회의 생성자로서 | 나는, 회의를 종료하고 회의록을 정리하기 위해 | 회의를 종료하고 요약 내용을 확인한 후 다음 단계를 선택하고 싶다", + "changes": [ + "프로토타입 07-회의종료.html 기반으로 재작성", + "통계 카드 4개 명시 (참석자, 시간, 안건, Todo)", + "주요 키워드 태그 표시 추가", + "안건별 아코디언 카드 구조 명시 (AI 한줄 요약 + 상세 요약 + Todo)", + "읽기 전용 안내 표시", + "하단 액션 바 3가지 옵션 명시 (회의록 수정, 바로 최종 확정, 대시보드)" + ], + "significance": "회의 종료 후 워크플로우가 명확해져 사용자 선택권 확대 및 UX 개선" + }, + { + "code": "UFR-MEET-050", + "title": "[최종확정] 회의 생성자로서 | 나는, 회의록을 완성하기 위해 | 모든 안건을 검증하고 최종 회의록을 확정하고 싶다", + "changes": [ + "2가지 시나리오로 분리 (회의록 수정 후 확정, 회의 종료 화면에서 바로 확정)", + "각 시나리오별 수행절차 5-6단계 상세화", + "확인 모달 메시지 구체화", + "바로 확정 시 모든 안건 자동 검증 완료 처리 로직 추가", + "확정 후 편집 권한 정책 명시 (회의 생성자만 잠금 해제 후 수정 가능)" + ], + "significance": "유연한 확정 워크플로우 제공으로 사용자 편의성 향상" + }, + { + "code": "UFR-MEET-046", + "title": "[회의록목록조회] 회의 참석자로서 | 나는, 참여한 회의록들을 효율적으로 관리하기 위해 | 회의록 목록을 조회하고 필터링하고 싶다", + "changes": [ + "프로토타입 12-회의록목록조회.html 기반으로 재작성", + "데이터 소스 명시 (common.js → SAMPLE_MINUTES 배열)", + "필터링 옵션 상세화 (상태별, 정렬, 참여 유형, 검색)", + "통계 표시 추가", + "페이지네이션 방식 명시 (초기 10개, '10개 더보기' 버튼)", + "목록 표시 정보 8가지 추가", + "우선순위 M → S로 변경 (MVP 집중)" + ], + "significance": "프로토타입 연계 강화, 샘플 데이터 30개 기반 개발 가능" + }, + { + "code": "UFR-MEET-047", + "title": "[회의록상세조회] 회의 참석자로서 | 나는, 지난 회의록의 상세 정보와 전체 내용을 | 한눈에 확인하고 싶다", + "changes": [ + "프로토타입 10-회의록상세조회.html 기반으로 재작성", + "회의 기본 정보 표시 항목 7가지 상세화", + "섹션별 상세 내용 표시 구조 추가", + "관련 회의록 섹션 추가 (최대 3개, 관련도 % 표시)", + "탭 네비게이션 구성 명시 (대시보드, 회의록 2개 탭)" + ], + "significance": "회의록 조회 화면 정보 구조 명확화 및 관련 회의록 연결 강화" + }, + { + "code": "UFR-MEET-055", + "title": "[회의록수정] 회의 참석자로서 | 나는, 검증이 완료되지 않았거나 수정이 필요한 | 지난 회의록을 수정하고 싶다", + "changes": [ + "프로토타입 11-회의록수정.html 기반으로 전면 재작성", + "3가지 시나리오로 확장 (작성중 회의록 수정, 확정완료 회의록 수정, 안건 검증)", + "각 시나리오별 상세 수행절차 추가", + "잠금 해제 메커니즘 명시 (확정완료 회의록의 경우)", + "검증 완료 프로세스 상세화 (안건별 체크 버튼, 검증률 표시)" + ], + "significance": "회의록 수정 워크플로우가 상태별로 명확해져 협업 시나리오 지원 강화" + } + ], + + "overallImpact": { + "userExperience": { + "improvements": [ + "프로토타입 기반 유저스토리로 실제 사용 흐름과 정확히 일치", + "상세한 수행절차로 사용자 작업 흐름 명확화", + "예외처리 시나리오 추가로 에러 상황 대응 개선", + "실시간 AI 제안 기능으로 회의 중 놓치는 내용 최소화", + "유연한 확정 워크플로우로 사용자 선택권 확대", + "회의 진행 중 참석자 실시간 초대로 협업 유연성 향상" + ], + "keyEnhancements": [ + "대시보드 재설계로 정보 접근성 향상 (통계 블록, 최근 회의, Todo, 회의록 4개 섹션)", + "회의 진행 화면 4개 탭으로 기능 분리 (참석자, AI 제안, 용어사전, 관련회의록)", + "회의 종료 화면 3가지 액션 옵션으로 워크플로우 유연성 확보" + ] + }, + "functionality": { + "improvements": [ + "신규 기능 3개 추가 (참석자 실시간 초대, 실시간 AI 제안, 알림 발송)", + "알림 아키텍처 폴링 방식으로 통일하여 시스템 안정성 확보", + "모든 유저스토리에 입력/출력 명세 추가로 API 설계 가이드 제공", + "예외처리 시나리오 추가로 에러 핸들링 강화", + "관련 유저스토리 명시로 기능 간 연계성 파악 용이" + ], + "architectureAlignment": [ + "Notification 서비스의 독립성 강화 (폴링 방식)", + "프로토타입 10개 화면과 유저스토리 1:1 매핑", + "WebSocket 기반 실시간 동기화 시나리오 명확화" + ] + }, + "documentation": { + "improvements": [ + "유저스토리 형식 표준화로 일관성 확보", + "AFR/UFR 혼용 제거, UFR로 통일하여 코드 체계 단순화", + "프로토타입 파일명 명시로 개발 시 참조 용이성 향상", + "각 유저스토리에 관련 유저스토리 섹션 추가로 추적성 확보", + "문서 구조 간소화 (논리 아키텍처 섹션 제거)" + ], + "qualityEnhancement": [ + "v2.2.0: 25개 유저스토리, 자유 형식", + "v2.3.0: 27개 유저스토리, 표준 형식 (수행절차, 입력, 출력/결과, 예외처리, 관련 유저스토리)", + "평균 유저스토리 상세도 약 3배 증가 (기존 20-30줄 → 60-100줄)" + ] + } + }, + + "statistics": { + "v2.2.0": { + "totalUserStories": 25, + "afrCodes": 2, + "ufrCodes": 23, + "averageLinesPerStory": "20-30 (추정)" + }, + "v2.3.0": { + "totalUserStories": 27, + "afrCodes": 0, + "ufrCodes": 27, + "averageLinesPerStory": "60-100 (추정)" + }, + "changes": { + "added": 5, + "removed": 2, + "modified": "대다수 (프로토타입 기반 재작성)" + } + }, + + "keyTakeaways": [ + "v2.3.0은 프로토타입 분석을 통해 유저스토리를 전면 재정비한 버전", + "신규 기능 3개 추가: 참석자 실시간 초대, 실시간 AI 제안, 알림 발송", + "알림 아키텍처를 폴링 방식으로 통일하여 시스템 안정성 확보", + "유저스토리 형식 표준화로 개발 가이드 역할 강화", + "프로토타입 10개 화면과 유저스토리 1:1 매핑으로 개발 명확성 확보", + "기존 24개 유저스토리 ID 승계하여 연속성 유지", + "평균 유저스토리 상세도 약 3배 증가로 품질 대폭 향상" + ], + + "recommendedActions": [ + "API 설계서를 v2.3.0 유저스토리 기반으로 업데이트 (입력/출력 명세 반영)", + "프로토타입과 유저스토리 간 1:1 매핑 검증", + "신규 추가된 UFR-MEET-015, UFR-AI-030, UFR-NOTI-010 기반 API 및 시퀀스 설계", + "알림 아키텍처 폴링 방식 반영하여 물리 아키텍처 업데이트", + "각 유저스토리의 예외처리 시나리오를 테스트 케이스로 전환", + "관련 유저스토리 섹션을 활용하여 통합 테스트 시나리오 작성" + ] +} diff --git a/claude/userstory-comparison-v2.2.0-to-v2.3.0.md b/claude/userstory-comparison-v2.2.0-to-v2.3.0.md new file mode 100644 index 0000000..4e88f17 --- /dev/null +++ b/claude/userstory-comparison-v2.2.0-to-v2.3.0.md @@ -0,0 +1,404 @@ +# 유저스토리 v2.2.0 → v2.3.0 변경사항 분석 보고서 + +**분석 일시**: 2025-10-25 +**이전 버전**: v2.2.0 (2025-10-23) +**현재 버전**: v2.3.0 (2025-10-24) +**분석자**: Claude (AI Assistant) + +--- + +## 📊 주요 통계 + +| 항목 | v2.2.0 | v2.3.0 | 변화 | +|------|--------|--------|------| +| **총 유저스토리 수** | 25개 | 27개 | +2개 | +| **신규 추가** | - | 5개 | - | +| **삭제 (AFR → UFR 전환)** | 2개 | - | - | +| **AFR 코드** | 2개 | 0개 | -2개 | +| **UFR 코드** | 23개 | 27개 | +4개 | +| **평균 상세도** | 20-30줄 | 60-100줄 | 약 3배 증가 | + +--- + +## 🏗️ 문서 구조 변경 + +### v2.2.0 구조 +``` +1. 차별화 전략 +2. 마이크로서비스 구성 +3. 유저스토리 (자유 형식) +4. 논리 아키텍처 반영 사항 요약 +5. 문서 이력 +``` + +### v2.3.0 구조 (개선) +``` +1. 차별화 전략 +2. 마이크로서비스 구성 +3. 유저스토리 v2.3.0 - USER & MEETING 서비스 (표준 형식) + - 수행절차 + - 입력 + - 출력/결과 + - 예외처리 + - 관련 유저스토리 +4. 문서 이력 +``` + +### 주요 구조 변경사항 +- ✅ **논리 아키텍처 반영 사항 요약 섹션 삭제**: 설계 문서로 이관 +- ✅ **유저스토리 형식 표준화**: 모든 유저스토리에 5개 필수 섹션 적용 +- ✅ **AFR 코드 폐지**: UFR로 통일하여 코드 체계 단순화 +- ✅ **프로토타입 연계 강화**: 화면 번호, 파일명 명시 + +--- + +## ✨ 신규 추가 유저스토리 (5개) + +### 1. UFR-USER-010: [로그인] +**이전**: AFR-USER-010 (아키텍처 참조 코드) +**변경**: UFR-USER-010 (사용자 기능 요구사항 코드) + +**주요 개선사항**: +- 프로토타입 `01-로그인.html` 기반 재작성 +- 상세 수행절차 6단계 추가 +- 입력 검증 규칙 명시 (비밀번호 최소 8자, Enter 키 자동 이동) +- 예외처리 5가지 추가 +- 로그인 상태 유지 체크박스 추가 + +**관련 프로토타입**: `01-로그인.html` + +--- + +### 2. UFR-USER-020: [대시보드] +**이전**: AFR-USER-020 +**변경**: UFR-USER-020 + +**주요 개선사항**: +- 프로토타입 `02-대시보드.html` 기반 전면 재설계 +- 통계 블록 2열 그리드 (예정된 회의, 나의 Todo) +- 최근 회의 목록 (최대 3개, 회의록 미생성 우선) +- 나의 Todo 목록 (최대 3개, 미완료 우선, D-day 표시) +- 나의 회의록 2x2 그리드 (최대 4개) +- FAB 메뉴 (회의예약, 바로시작) +- 반응형 네비게이션 (데스크톱 사이드바, 모바일 하단 탭) + +**관련 프로토타입**: `02-대시보드.html` + +--- + +### 3. UFR-MEET-015: [회의진행] 참석자 실시간 초대 🆕 +**완전 신규 추가** + +**기능 설명**: +- 회의 진행 중 추가 참석자가 필요할 때 실시간으로 초대 +- 검색 모달을 통한 사용자 검색 및 선택 +- 초대된 참석자 실시간 표시 +- Notification 서비스 연동 (초대 알림 발송) +- 모든 참석자에게 WebSocket 기반 실시간 동기화 + +**의미**: +- 프로토타입 `05-회의진행.html`의 "참석자" 탭 기능 구현 +- 회의 진행 중 동적 참석자 관리로 유연성 향상 + +**관련 유저스토리**: +- UFR-MEET-030 (회의시작) +- UFR-COLLAB-010 (회의록수정동기화) +- UFR-NOTI-010 (알림발송) + +**관련 프로토타입**: `05-회의진행.html` + +--- + +### 4. UFR-AI-030: [실시간AI제안] 🆕 🎯 +**완전 신규 추가** - **차별화 핵심 기능** + +**기능 설명**: +- 회의 진행 중 STT 텍스트 실시간 분석 +- AI가 주요 내용 감지 시 제안 카드 자동 생성 +- 제안 제목, 내용 (1-2문장), 타임스탬프 표시 +- "메모에 추가" 버튼으로 회의 메모에 즉시 반영 +- 모든 참석자에게 실시간 동기화 +- 로컬 캐시를 통한 네트워크 오류 대응 + +**의미**: +- 프로토타입 `05-회의진행.html`의 "AI 제안" 탭 핵심 기능 +- **차별화 전략의 "지능형 회의 진행 지원" 실현** +- 회의 중 놓치는 내용 최소화로 회의록 품질 향상 + +**관련 유저스토리**: +- UFR-STT-020 (텍스트변환) +- UFR-MEET-030 (회의시작) +- UFR-COLLAB-010 (회의록수정동기화) + +**관련 프로토타입**: `05-회의진행.html` + +--- + +### 5. UFR-NOTI-010: [알림발송] 🆕 +**완전 신규 추가** - **알림 아키텍처 정의** + +**기능 설명**: +- 주기적 폴링 방식 (1분 간격) 알림 발송 +- Notification 테이블에서 발송 대기 알림 조회 +- 이메일 발송 실패 시 최대 3회 재시도 +- 알림 유형별 템플릿 적용 +- 6가지 알림 유형 지원: + - Todo 할당 + - Todo 완료 + - 회의 시작 (10분 전) + - 회의록 확정 + - 참석자 초대 + - 회의록 수정 + +**의미**: +- **알림 아키텍처를 실시간 발송에서 폴링 방식으로 통일** +- Notification 서비스의 독립성과 안정성 확보 +- 마이크로서비스 간 느슨한 결합 실현 + +**관련 유저스토리**: +- UFR-TODO-010 (Todo할당) +- UFR-TODO-030 (Todo완료처리) +- UFR-MEET-015 (참석자 실시간 초대) +- UFR-MEET-050 (최종확정) + +--- + +## ❌ 삭제된 유저스토리 (2개) + +### 1. AFR-USER-010: [사용자관리] +**삭제 이유**: UFR-USER-010으로 전환 (AFR 코드 체계 폐지) +**영향**: 기능은 UFR-USER-010으로 승계되어 유지됨 + +### 2. AFR-USER-020: [대시보드] +**삭제 이유**: UFR-USER-020으로 전환 (프로토타입 기반 재작성) +**영향**: 기능은 강화되어 UFR-USER-020으로 승계됨 + +--- + +## 🔄 주요 수정된 유저스토리 + +### 1. UFR-MEET-010: [회의예약] +**변경사항**: +- 프로토타입 `03-회의예약.html` 기반 전면 재작성 +- 상세한 수행절차 10단계 추가 +- 입력 필드 상세 명세 (종일 회의 토글, 온라인/오프라인 회의 토글, 회의 링크 자동 생성) +- 예외처리 8가지 추가 (과거 날짜 선택, 뒤로가기 확인 모달 등) +- 임시저장 기능 추가 +- 참석자 검색 모달 UI 상세화 + +**의미**: 프로토타입과의 정확한 매칭으로 개발 시 명확한 가이드 제공 + +--- + +### 2. UFR-MEET-020: [템플릿선택] +**변경사항**: +- 프로토타입 `04-템플릿선택.html` 기반 재작성 +- 4가지 템플릿 내용 상세 명세: + - 일반 회의: 회의 개요, 논의 사항, 결정 사항, 액션 아이템 + - 스크럼 회의: 어제 한 일, 오늘 할 일, 블로커/이슈 + - 킥오프 회의: 프로젝트 개요, 목표 및 범위, 역할 및 책임, 일정 및 마일스톤 + - 주간 회의: 지난주 성과, 이번주 계획, 주요 이슈, 다음 액션 +- 건너뛰기 옵션 추가 +- 템플릿 미리보기 구성 명시 + +**의미**: 템플릿별 섹션 구성이 구체화되어 일관된 회의록 작성 지원 + +--- + +### 3. UFR-MEET-030: [회의시작] +**변경사항**: +- 프로토타입 `05-회의진행.html` 기반 전면 재작성 +- 8단계 상세 수행절차 추가 +- **4개 탭 네비게이션 명시**: + - 참석자: 참석자 목록 및 실시간 초대 + - **AI 제안**: 실시간 AI 분석 결과 및 메모 추가 (신규) + - 용어사전: 자동 추출된 용어 및 검색 + - 관련회의록: 자동 연결된 이전 회의록 +- 웨이브폼 애니메이션, 타이머, 녹음 상태 UI 추가 +- 하단 고정 메모 영역 추가 +- 일시정지 및 종료 확인 모달 추가 + +**의미**: 회의 진행 화면의 핵심 UX가 상세히 정의되어 실시간 협업 기능 구현 가이드 제공 + +--- + +### 4. UFR-MEET-040: [회의종료] +**변경사항**: +- 프로토타입 `07-회의종료.html` 기반 재작성 +- 통계 카드 4개 명시 (참석자, 시간, 안건, Todo) +- 주요 키워드 태그 표시 추가 +- 안건별 아코디언 카드 구조 명시: + - AI 한줄 요약 (30자 이내, 편집 불가) + - AI 상세 요약 (편집 가능, 재생성 가능) + - 자동 추출된 Todo 목록 +- 읽기 전용 안내 표시 +- **하단 액션 바 3가지 옵션**: + - 옵션 1: 회의록 수정 → 회의록 수정 화면으로 이동 + - 옵션 2: 바로 최종 확정 → 모든 안건 자동 검증 완료 처리 + - 옵션 3: 대시보드 → 대시보드로 이동 + +**의미**: 회의 종료 후 워크플로우가 명확해져 사용자 선택권 확대 및 UX 개선 + +--- + +### 5. UFR-MEET-050: [최종확정] +**변경사항**: +- **2가지 시나리오로 분리**: + - 시나리오 1: 회의록 수정 화면에서 최종 확정 + - 시나리오 2: 회의 종료 화면에서 바로 확정 +- 각 시나리오별 수행절차 5-6단계 상세화 +- 확인 모달 메시지 구체화 +- 바로 확정 시 모든 안건 자동 검증 완료 처리 로직 추가 +- 확정 후 편집 권한 정책 명시 (회의 생성자만 잠금 해제 후 수정 가능) + +**의미**: 유연한 확정 워크플로우 제공으로 사용자 편의성 향상 + +--- + +### 6. UFR-MEET-046: [회의록목록조회] +**변경사항**: +- 프로토타입 `12-회의록목록조회.html` 기반 재작성 +- **데이터 소스 명시**: `common.js` → `SAMPLE_MINUTES` 배열 (30개 샘플 데이터) +- 필터링 옵션 상세화: + - 상태별: 전체 / 작성중 / 확정완료 + - 정렬: 최근수정순 / 최근회의순 / 제목순 + - 참여 유형: 참석한 회의 / 생성한 회의 + - 검색: 회의 제목, 참석자, 키워드 +- 통계 표시 추가 +- 페이지네이션 방식 명시 (초기 10개, "10개 더보기" 버튼) +- 목록 표시 정보 8가지 추가 +- **우선순위 변경**: M (Must) → S (Should) - MVP 집중 + +**의미**: 프로토타입 연계 강화, 샘플 데이터 30개 기반 개발 가능 + +--- + +### 7. UFR-MEET-047: [회의록상세조회] +**변경사항**: +- 프로토타입 `10-회의록상세조회.html` 기반 재작성 +- 회의 기본 정보 표시 항목 7가지 상세화 +- 섹션별 상세 내용 표시 구조 추가 +- **관련 회의록 섹션 추가** (최대 3개, 관련도 % 표시) +- 탭 네비게이션 구성 명시 (대시보드, 회의록 2개 탭) + +**의미**: 회의록 조회 화면 정보 구조 명확화 및 관련 회의록 연결 강화 + +--- + +### 8. UFR-MEET-055: [회의록수정] +**변경사항**: +- 프로토타입 `11-회의록수정.html` 기반 전면 재작성 +- **3가지 시나리오로 확장**: + - 시나리오 1: 작성중 회의록 수정 + - 시나리오 2: 확정완료 회의록 수정 (잠금 해제 필요) + - 시나리오 3: 안건 검증 +- 각 시나리오별 상세 수행절차 추가 +- 잠금 해제 메커니즘 명시 (확정완료 회의록의 경우) +- 검증 완료 프로세스 상세화 (안건별 체크 버튼, 검증률 표시) + +**의미**: 회의록 수정 워크플로우가 상태별로 명확해져 협업 시나리오 지원 강화 + +--- + +## 🎯 전체 영향 분석 + +### 1. 사용자 경험 (UX) 개선 + +#### 주요 개선사항 +- ✅ **프로토타입 기반 유저스토리**로 실제 사용 흐름과 정확히 일치 +- ✅ **상세한 수행절차**로 사용자 작업 흐름 명확화 +- ✅ **예외처리 시나리오 추가**로 에러 상황 대응 개선 +- ✅ **실시간 AI 제안 기능**으로 회의 중 놓치는 내용 최소화 (차별화) +- ✅ **유연한 확정 워크플로우**로 사용자 선택권 확대 +- ✅ **회의 진행 중 참석자 실시간 초대**로 협업 유연성 향상 + +#### 핵심 UX 강화 +- **대시보드 재설계**: 통계 블록, 최근 회의, Todo, 회의록 4개 섹션으로 정보 접근성 향상 +- **회의 진행 화면 4개 탭**: 참석자, AI 제안, 용어사전, 관련회의록으로 기능 분리 +- **회의 종료 화면 3가지 액션 옵션**: 회의록 수정, 바로 최종 확정, 대시보드로 워크플로우 유연성 확보 + +--- + +### 2. 기능성 (Functionality) 개선 + +#### 신규 기능 +1. **UFR-MEET-015**: 회의 진행 중 참석자 실시간 초대 +2. **UFR-AI-030**: 실시간 AI 제안 (차별화 핵심) +3. **UFR-NOTI-010**: 알림 발송 (폴링 방식) + +#### 아키텍처 정렬 +- **알림 아키텍처 폴링 방식으로 통일**: 실시간 발송 → 주기적 폴링 (1분 간격) +- **Notification 서비스 독립성 강화**: 마이크로서비스 간 느슨한 결합 +- **프로토타입 10개 화면과 유저스토리 1:1 매핑**: 개발 명확성 확보 +- **WebSocket 기반 실시간 동기화 시나리오 명확화**: 협업 기능 강화 + +#### API 설계 가이드 제공 +- 모든 유저스토리에 **입력/출력 명세** 추가 +- **예외처리 시나리오** 추가로 에러 핸들링 강화 +- **관련 유저스토리** 명시로 기능 간 연계성 파악 용이 + +--- + +### 3. 문서화 (Documentation) 개선 + +#### 표준화 및 일관성 +- ✅ **유저스토리 형식 표준화**: 5개 필수 섹션 (수행절차, 입력, 출력/결과, 예외처리, 관련 유저스토리) +- ✅ **AFR/UFR 혼용 제거**: UFR로 통일하여 코드 체계 단순화 +- ✅ **프로토타입 파일명 명시**: 개발 시 참조 용이성 향상 +- ✅ **관련 유저스토리 섹션 추가**: 추적성 확보 +- ✅ **문서 구조 간소화**: 논리 아키텍처 섹션 제거 (설계 문서로 이관) + +#### 품질 향상 +| 지표 | v2.2.0 | v2.3.0 | 개선율 | +|------|--------|--------|--------| +| 유저스토리 수 | 25개 | 27개 | +8% | +| 평균 상세도 | 20-30줄 | 60-100줄 | **약 3배** | +| 코드 체계 통일 | AFR/UFR 혼용 | UFR로 통일 | 100% 통일 | +| 프로토타입 연계 | 부분적 | 1:1 매핑 | 100% 매핑 | + +--- + +## 💡 핵심 시사점 (Key Takeaways) + +1. **v2.3.0은 프로토타입 분석을 통해 유저스토리를 전면 재정비한 버전** +2. **신규 기능 3개 추가**: 참석자 실시간 초대, 실시간 AI 제안, 알림 발송 +3. **알림 아키텍처를 폴링 방식으로 통일**하여 시스템 안정성 확보 +4. **유저스토리 형식 표준화**로 개발 가이드 역할 강화 +5. **프로토타입 10개 화면과 유저스토리 1:1 매핑**으로 개발 명확성 확보 +6. **기존 24개 유저스토리 ID 승계**하여 연속성 유지 +7. **평균 유저스토리 상세도 약 3배 증가**로 품질 대폭 향상 + +--- + +## 📋 권장 후속 조치 (Recommended Actions) + +### 1. 설계 문서 업데이트 +- [ ] **API 설계서**를 v2.3.0 유저스토리 기반으로 업데이트 (입력/출력 명세 반영) +- [ ] 신규 추가된 **UFR-MEET-015, UFR-AI-030, UFR-NOTI-010** 기반 API 및 시퀀스 설계 +- [ ] **알림 아키텍처 폴링 방식** 반영하여 물리 아키텍처 업데이트 + +### 2. 프로토타입 검증 +- [ ] 프로토타입과 유저스토리 간 **1:1 매핑 검증** +- [ ] 프로토타입 화면별 유저스토리 커버리지 확인 + +### 3. 테스트 계획 +- [ ] 각 유저스토리의 **예외처리 시나리오를 테스트 케이스로 전환** +- [ ] **관련 유저스토리 섹션**을 활용하여 통합 테스트 시나리오 작성 +- [ ] 신규 기능 3개에 대한 우선 테스트 계획 수립 + +### 4. 개발 가이드 +- [ ] 유저스토리별 개발 우선순위 재평가 +- [ ] 신규 기능 3개 개발 일정 수립 +- [ ] 프로토타입 기반 개발 가이드 작성 + +--- + +## 📎 참조 파일 + +- **v2.2.0**: `C:\Users\yabo0\home\workspace\HGZero\design\userstory_v2.2.0_backup.md` +- **v2.3.0**: `C:\Users\yabo0\home\workspace\HGZero\design\userstory.md` +- **상세 분석 (JSON)**: `C:\Users\yabo0\home\workspace\HGZero\claude\userstory-comparison-v2.2.0-to-v2.3.0.json` + +--- + +**분석 완료** ✅ diff --git a/claude/userstory-msc-analysis.md b/claude/userstory-msc-analysis.md new file mode 100644 index 0000000..ed8d3b1 --- /dev/null +++ b/claude/userstory-msc-analysis.md @@ -0,0 +1,53 @@ +# 유저스토리 M/S/C 및 기능점수 분석 + +## 분석 대상 +파일: design/userstory.md (v2.1.2) +총 요구사항: 25개 + +## M/S/C 및 기능점수 현황 + +| Line | 요구사항 ID | M/S/C | 점수 | 서비스 | 기능 | +|------|-----------|-------|------|--------|------| +| 75 | AFR-USER-010 | M | 8 | User | 사용자 인증 | +| 135 | AFR-USER-020 | M | 8 | User | 대시보드 | +| 157 | UFR-MEET-010 | M | 13 | Meeting | 회의예약 | +| 179 | UFR-MEET-020 | S | 5 | Meeting | 템플릿선택 | +| 200 | UFR-MEET-030 | M | 8 | Meeting | 회의시작 | +| 250 | UFR-MEET-040 | M | 8 | Meeting | 회의종료 | +| 316 | UFR-MEET-050 | M | 13 | Meeting | 최종확정 | +| 357 | UFR-MEET-046 | M | 8 | Meeting | 회의록목록조회 | +| 423 | UFR-MEET-047 | M | 8 | Meeting | 회의록상세조회 | +| 473 | UFR-MEET-055 | M | 13 | Meeting | 회의록수정 | +| 508 | UFR-STT-010 | M | 21 | STT | 음성녹음인식 | +| 536 | UFR-STT-020 | M | 13 | STT | 텍스트변환 | +| 594 | UFR-AI-010 | M | 34 | AI | 회의록자동작성 | +| 643 | UFR-AI-020 | M | 21 | AI | Todo자동추출 | +| 683 | UFR-AI-035 | M | 21 | AI | 섹션AI요약 | +| 718 | UFR-AI-040 | M | 21 | AI | 관련회의록연결 | +| 756 | UFR-AI-050 | S | 13 | AI | 용어설명 | +| 796 | UFR-AI-060 | S | 13 | AI | 회의록검색 | +| 844 | UFR-AI-070 | S | 21 | AI | 회의패턴분석 | +| 889 | UFR-COLLAB-010 | M | 34 | Meeting | 실시간협업 | +| 945 | UFR-COLLAB-020 | M | 21 | Meeting | 충돌방지 | +| 988 | UFR-TODO-010 | M | 8 | Meeting | Todo관리 | +| 1045 | UFR-TODO-020 | M | 13 | Meeting | Todo연결 | +| 1084 | UFR-NOTI-010 | M | 8 | Notification | 알림발송 | +| 1170 | NFR-PERF-010 | M | 13 | 전체 | 성능요구사항 | + +## 통계 +- Must (M): 20개 (80%) +- Should (S): 5개 (20%) +- Could (C): 0개 (0%) + +- 평균 기능점수: 15.48점 +- 최고점: 34점 (UFR-AI-010, UFR-COLLAB-010) +- 최저점: 5점 (UFR-MEET-020) + +## 서비스별 분포 +- User: 2개 (M:2) +- Meeting: 11개 (M:9, S:0) +- STT: 2개 (M:2) +- AI: 7개 (M:4, S:3) +- Notification: 1개 (M:1) +- NFR: 1개 (M:1) +- 실시간협업/Todo: Meeting 서비스에 통합됨 diff --git a/claude/userstory-review.md b/claude/userstory-review.md new file mode 100644 index 0000000..8562e8d --- /dev/null +++ b/claude/userstory-review.md @@ -0,0 +1,220 @@ +# 유저스토리 M/S/C 및 기능점수 검토 결과 + +## 검토자: 민준(PO), 서연(AI), 준호(Backend), 유진(Frontend), 도현(QA), 지수(Designer) + +--- + +## 1. M/S/C 우선순위 검토 + +### ✅ 적절한 Must (M) 항목들 +1. **AFR-USER-010** (사용자 인증, M/8) - 핵심 보안 기능 +2. **UFR-MEET-010** (회의예약, M/13) - 서비스 핵심 플로우 +3. **UFR-MEET-030** (회의시작, M/8) - 서비스 핵심 플로우 +4. **UFR-MEET-040** (회의종료, M/8) - 서비스 핵심 플로우 +5. **UFR-MEET-050** (최종확정, M/13) - 회의록 완성 필수 +6. **UFR-STT-010** (음성녹음인식, M/21) - 기본 기능이지만 필수 +7. **UFR-AI-010** (회의록자동작성, M/34) - 핵심 차별화 +8. **UFR-COLLAB-010** (실시간협업, M/34) - 핵심 차별화 + +### ⚠️ M → S로 변경 제안 +**UFR-MEET-046** (회의록목록조회, M/8 → **S/8**) +- **이유**: 대시보드에서 최근 회의록을 볼 수 있으므로 1차 출시에서는 목록 조회가 없어도 서비스 가능 +- **민준(PO)**: 사용자들이 과거 회의록을 찾기 위해서는 필요하지만, MVP에서는 대시보드만으로도 가능 +- **유진(Frontend)**: 1차에서는 대시보드의 "최근 회의" 섹션으로 충분, 필터/검색은 2차 출시 추가 가능 + +**UFR-MEET-047** (회의록상세조회, M/8 → **S/8**) +- **이유**: 대시보드에서 회의록을 바로 열 수 있으므로, 별도 상세조회 화면은 2차 출시 가능 +- **민준(PO)**: 상세조회는 있으면 좋지만, 대시보드 → 수정 화면으로 바로 진입 가능하면 MVP 가능 + +**AFR-USER-020** (대시보드, M/8 → **유지 M/8**) +- **검토**: 대시보드는 사용자 경험의 시작점이므로 Must 유지 필요 +- **지수(Designer)**: 대시보드는 사용자 첫 인상과 전체 서비스 파악에 핵심적 + +### ⚠️ S → M으로 변경 제안 +**UFR-AI-050** (용어설명, S/13 → **M/13**) +- **이유**: 차별화 전략 문서에서 "맥락 기반 용어 설명"을 핵심 차별화 포인트로 명시 +- **서연(AI)**: 이 기능이 경쟁사와의 핵심 차별점이므로 1차 출시에 포함해야 함 +- **민준(PO)**: 차별화 전략과 일관성을 위해 Must로 승격 필요 + +**UFR-AI-060** (회의록검색, S/13 → **유지 S/13**) +- **검토**: RAG 기반 검색은 고도화 기능으로 2차 출시 적절 +- **서연(AI)**: 벡터 DB 구축 시간 고려 시 2차 출시가 현실적 + +### ⚠️ Should(S) 추가 제안 +**UFR-TODO-020** (Todo연결, M/13 → **S/13**) +- **이유**: Todo 기본 관리(UFR-TODO-010)만 있어도 서비스 가능, 양방향 연결은 고도화 기능 +- **준호(Backend)**: Todo-회의록 양방향 연결 복잡도가 높아 2차 출시 권장 +- **민준(PO)**: 차별화 전략에 "강화된 Todo 연결"이 있지만, 기본 Todo 관리로도 차별화 가능 + +--- + +## 2. 기능점수 검토 + +### ⚠️ 점수 조정 제안 + +#### **UFR-AI-035** (섹션AI요약, M/21 → **M/13**) +**현재 점수**: 21 +**조정 점수**: 13 +**이유**: +- 복잡도: 단일 섹션 요약은 비교적 단순 (LLM 단일 호출) +- UFR-AI-010(회의록자동작성)의 부분 기능으로 기술 재사용 가능 +- 처리 시간: 2-5초로 명시되어 있어 기술적 난이도 낮음 +**서연(AI)**: 프롬프트 엔지니어링 재사용으로 8-13점 정도가 적절 + +#### **UFR-AI-040** (관련회의록연결, M/21 → **M/13**) +**현재 점수**: 21 +**조정 점수**: 13 +**이유**: +- 복잡도: 벡터 유사도 검색 표준 기술 사용 +- UFR-AI-060(회의록검색)과 기술 스택 공유 +- RAG 인프라 구축 시 함께 개발 가능 +**서연(AI)**: 벡터 DB 구축되면 단순 유사도 검색이므로 13점 적절 + +#### **UFR-STT-010** (음성녹음인식, M/21 → **M/13**) +**현재 점수**: 21 +**조정 점수**: 13 +**이유**: +- 기본 기능으로 Azure Speech 등 외부 API 사용 +- 화자 식별 없이 단순 텍스트 변환만 +- 기술 리스크 낮음 (검증된 외부 서비스) +**준호(Backend)**: Azure Speech SDK 연동은 복잡도 낮아 13점 적절 + +#### **UFR-MEET-010** (회의예약, M/13 → **M/8**) +**현재 점수**: 13 +**조정 점수**: 8 +**이유**: +- 복잡도: 기본 CRUD + 이메일 발송 +- 알림 서비스(UFR-NOTI-010, M/8)에 의존하지만 단순 호출 +- 캘린더 연동은 나중 고도화 가능 +**준호(Backend)**: 기본 예약 기능은 8점, 캘린더 자동 등록 제외 시 더 낮아질 수 있음 + +#### **UFR-TODO-020** (Todo연결, M/13 → **S/13 유지**) +**현재 점수**: 13 +**조정 후**: S/13 +**이유**: +- 복잡도: Todo-회의록 양방향 동기화는 고도화 기능 +- UFR-TODO-010 (기본 Todo 관리)로도 서비스 가능 +**준호(Backend)**: 양방향 연결은 복잡도 13점 적절, Should로 분류 권장 + +#### **UFR-COLLAB-010** (실시간협업, M/34) - **점수 유지** +**검토 결과**: 34점 적절 +**이유**: +- WebSocket 인프라 + 버전 관리 + 충돌 해결 +- 기술 복잡도 매우 높음 +- 다수 동시 접속 처리 필요 +**준호(Backend)**: WebSocket 서버 + Redis 캐시 + 버전 관리 로직으로 34점 타당 + +#### **UFR-AI-010** (회의록자동작성, M/34) - **점수 유지** +**검토 결과**: 34점 적절 +**이유**: +- 실시간 처리 + 회의 종료 시 전체 요약 (2단계) +- 템플릿 반영 + 주요 메모 통합 +- LLM 프롬프트 엔지니어링 복잡도 높음 +**서연(AI)**: 실시간/배치 2단계 처리로 34점 타당 + +--- + +## 3. 종합 개선 제안 + +### M/S/C 변경 요약 +| 요구사항 ID | 현재 | 제안 | 변경 이유 | +|-----------|------|------|----------| +| UFR-MEET-046 | M/8 | S/8 | 대시보드로 대체 가능 | +| UFR-MEET-047 | M/8 | S/8 | 대시보드 → 수정 바로 진입 가능 | +| UFR-AI-050 | S/13 | M/13 | 차별화 전략 핵심 | +| UFR-TODO-020 | M/13 | S/13 | 기본 Todo로 충분 | + +### 기능점수 변경 요약 +| 요구사항 ID | 현재 | 제안 | 변경 이유 | +|-----------|------|------|----------| +| UFR-AI-035 | M/21 | M/13 | 기술 재사용으로 복잡도 낮음 | +| UFR-AI-040 | M/21 | M/13 | 표준 벡터 검색 기술 | +| UFR-STT-010 | M/21 | M/13 | 외부 API 사용으로 리스크 낮음 | +| UFR-MEET-010 | M/13 | M/8 | 기본 CRUD 수준 | + +### 변경 후 통계 +**M/S/C 분포**: +- Must (M): 18개 (72%) ← 기존 20개 +- Should (S): 7개 (28%) ← 기존 5개 +- Could (C): 0개 (0%) + +**평균 기능점수**: +- 변경 전: 15.48점 +- 변경 후: 14.00점 (약 10% 감소) + +**총 기능점수**: +- 변경 전: 387점 +- 변경 후: 350점 + +--- + +## 4. MVP 출시 범위 권장사항 + +### 1차 출시 (Must만) +- 사용자 인증 및 대시보드 +- 회의 예약/시작/종료/확정 +- 음성 인식 및 회의록 자동 작성 +- Todo 자동 추출 및 기본 관리 +- 섹션 AI 요약 재생성 +- **용어 설명 (차별화)** +- 관련 회의록 자동 연결 +- 실시간 협업 및 충돌 방지 +- 알림 발송 + +총 기능점수: **292점** (변경 후) + +### 2차 출시 (Should 추가) +- 회의록 목록 조회 및 필터링 +- 회의록 상세 조회 전용 화면 +- 템플릿 선택 및 커스터마이징 +- 회의록 RAG 검색 +- 회의 패턴 분석 및 추천 +- Todo 양방향 연결 강화 + +총 추가 기능점수: **58점** + +--- + +## 5. 리스크 및 제약사항 + +### 기술 리스크 +1. **UFR-COLLAB-010** (실시간협업, 34점) + - WebSocket 동시 접속 부하 테스트 필수 + - Redis 캐시 장애 시 대응 방안 필요 + +2. **UFR-AI-010** (회의록자동작성, 34점) + - LLM 응답 시간 변동성 관리 + - 프롬프트 품질 검증 시간 필요 + +3. **UFR-AI-050** (용어설명, M/13) + - RAG 인프라 구축 리드타임 (벡터 DB, 임베딩) + - 사내 문서 수집 및 전처리 시간 + +### 일정 제약 +- 변경 후 총 기능점수: 350점 +- 1인당 월 평균 생산성: 30-40점 (경험치) +- 4명 개발팀 기준: **약 2.5개월** 소요 예상 + +--- + +## 6. 최종 권고사항 + +### 지수(Designer) +- UFR-MEET-046, UFR-MEET-047을 Should로 변경하되, 사용자 경험 테스트 후 재검토 권장 +- 대시보드만으로 충분한지 프로토타입 단계에서 검증 필요 + +### 서연(AI) +- UFR-AI-050(용어설명)은 차별화 전략 핵심이므로 Must로 승격 강력 권장 +- UFR-AI-035, UFR-AI-040의 점수 하향은 기술 재사용 관점에서 타당 + +### 준호(Backend) +- UFR-TODO-020을 Should로 변경하여 개발 복잡도 분산 권장 +- UFR-COLLAB-010의 기술 리스크 대비 시간 확보 필요 + +### 도현(QA) +- Must 항목 18개로 축소하면 테스트 범위 집중 가능 +- 실시간 협업(UFR-COLLAB-010) 부하 테스트 충분한 시간 필요 + +### 민준(PO) +- 차별화 전략과 일관성 유지를 위해 UFR-AI-050을 Must로 승격 승인 +- MVP 범위를 명확히 하여 1차 출시 집중, 2차 출시 계획 수립 diff --git a/claude/userstory-writing.md b/claude/userstory-writing.md new file mode 100644 index 0000000..823ecaf --- /dev/null +++ b/claude/userstory-writing.md @@ -0,0 +1,154 @@ +# 유저스토리 작성 방법 + +## 개요 +이 가이드는 마이크로서비스 기반 시스템 개발을 위한 유저스토리 작성 표준을 제공합니다. +표준화된 형식을 통해 일관성 있고 완전한 요구사항을 정의할 수 있습니다. + +## 작성 구성 요소 + +### 1. 서비스 +마이크로서비스명을 명시합니다. +- **형식**: 서비스 도메인명 +- **예시**: 홈페이지, 가입설계, 주문관리, 결제처리 + +### 2. ID +User Story ID로서 표준화된 식별자입니다. +- **형식**: `<유저스토리 유형 코드>-<서비스약어>-<일련번호>` + - 유저스토리 유형 코드 + - UFR(User Functional Requirements): 사용자 기능 요구사항 + - AFR(Admin Functional Requirements): 어드민 기능 요구사항 + - NFR(Non Functiional Requirements): 비기능 요구사항(확장성, 회복성, 유연성, 성능, 보안, 운영성) + - 서비스약어: 3~4자로 작성 + - 일련번호: 3자리로 하고 010부터 시작하여 10개씩 증가 예) UFR-HOME-010, UFR-HOME-020 +- **예시**: + - `UFR-HOME-010`: 홈페이지 서비스의 첫 번째 유저스토리 + - `UFR-PAY-020`: 결제 서비스의 다섯 번째 유저스토리 + +### 3. Epic +유저스토리의 상위 카테고리를 분류합니다. +- **용도**: 관련 유저스토리들을 그룹화 +- **예시**: 사용자 관리, 상품 관리, 주문 처리 + +### 4. 유저스토리 +표준 형식에 따라 작성합니다. 각 파트는 파이프로 구분합니다. +- **형식**: `[유저스토리 제목] <유저유형>으로서 | 나는, <비즈니스 목적>을 위해 | <작업/기능>을(를) 원합니다.` +- **예시**: + - [상품검색] 쇼핑몰 고객으로서 | 나는, 상품을 쉽게 찾기 위해 | 카테고리별 상품 검색 기능을 원합니다. + - [주문현황] 관리자로서 | 나는, 주문 상태를 파악하기 위해 | 실시간 주문 현황 대시보드를 원합니다. + +중요) 유저유형은 사람 뿐 아니라 시스템, API 등으로 정의할 수도 있음 +- 이벤트 스토밍은 사용자 중심으로 수행하기 위해 사람만 Actor로 허용 +- 유저스토리는 충분한 요구사항 전달을 위해 사람이 아닌 유저유형도 허용함 + +### 5. Biz중요도 (MoSCoW 분류) +우선순위에 따른 분류입니다. + +| 분류 | 의미 | 설명 | +|------|------|------| +| **M (Must)** | 반드시 필요 | 핵심 비즈니스 기능, 없으면 서비스 불가능 | +| **S (Should)** | 매우 필요하나 대체할 방법은 있음 | 중요하지만 우회 방법이 존재 | +| **C (Could)** | 있으면 좋으나 우선 순위는 떨어짐 (Nice to have) | 사용자 편의성 향상 기능 | +| **W (Won't)** | 가장 우선순위가 떨어지므로 보류해도 됨 | 향후 개발 고려 기능 | + +### 6. 인수테스트 시나리오 +기능 완성도를 검증하기 위한 테스트 시나리오입니다. + +#### 시나리오명 +- 테스트할 기능이나 상황을 명확히 표현 +- **예시**: "정상적인 회원 가입 처리", "중복 이메일 가입 시도" + +#### 인수기준 (Given-When-Then 형식) +- **형식**: ` | | ` + - **Given (사전 조건/상황)**: 테스트 실행 전 준비사항 + - **When (Action)**: 사용자가 수행하는 액션 + - **Then (결과)**: 기대되는 결과 또는 시스템 반응 + +- **예시** +``` +미 로그인 상태로 서비스에 접근하여 | ID와 암호를 입력하여 로그인 요청을 하면 | 대시보드 페이지가 표시된다. +``` + +#### 체크리스트 +세부 테스트 항목을 최대한 자세히 작성합니다. +- 기능/비기능 요구사항 검증 항목 +- 예외 상황 처리 검증 +- 통합 테스트 항목 + +### 7. Score +구현 난이도를 피보나치 수열을 이용하여 표현합니다. +- **수열**: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89... +- **기준**: + +| 점수 | 난이도 | 설명 | 세부 기준 | 예시 | +|------|--------|------|-----------|------| +| **1-2** | **매우 간단** | 기본적인 CRUD 작업 | • 단일 파일 수정
• 간단한 설정 변경
• 단순 명령어 실행 | • README 작성
• 간단한 스크립트 실행
• 환경변수 설정 | +| **3-5** | **간단** | 기본 비즈니스 로직 포함 | • 여러 파일 수정
• 간단한 테스트 작성
• 기본 에러 처리 | • 설정 파일 파싱
• 간단한 데이터 변환
• 기본 유효성 검사 | +| **8-13** | **보통** | 복잡한 비즈니스 로직 | • API 연동
• 데이터베이스 처리
• 복잡한 알고리즘
• 외부 도구 통합 | • MCP 서버 연동
• 파일 시스템 조작
• CLI 인터페이스 개발 | +| **21-34** | **복잡** | 다중 시스템 연동 | • 여러 서비스 통합
• 복잡한 상태 관리
• 성능 최적화 필요
• 보안 고려사항 | • GitHub API 통합
• 실시간 모니터링
• 복잡한 워크플로우 | +| **55+** | **매우 복잡** | 새로운 기술/패러다임 | • 신규 아키텍처 설계
• 혁신적 기능 개발
• 대규모 리팩토링
• 연구개발 요소 | • 새로운 플러그인 아키텍처
• AI 모델 통합
• 분산 시스템 설계 | + +## 결과 형식 +- 코드블록 내에 작성함 +- 구성 +``` +{서비스 일련번호}. {서비스명} +{Epic 일련번호}. {Epic} +{유저스토리 ID}: [{유저스토리 제목}]: {유저스토리} +- 시나리오: {시나리오} + {인수기준} + - {체크 리스트} +- {Biz중요도}/{Score} +``` +작성예시 +``` +1. User 서비스 +1) 사용자 인증 및 관리 +RQ-USER-010: [회원가입] 사용자로서 | 나는, 여행 계획을 관리하기 위해 | 간편하게 회원가입하고 싶다. +- 시나리오: 회원가입 + 미 로그인 상태로 서비스에 접근한 상황에서 | 사용자 기본정보(이름, 이메일, 연락처), ID, 암호를 입력하여 회원가입 요청하면 | 회원가입이 된다. + - [ ] 이름, 이메일, 연락처 등록 체크 + - [ ] ID는 5자 이상의 영숫자 + - [ ] 암호는 8자 이상의 영숫자와 특수문자가 최소 1개 이상 포함 +- M/5 +``` + +## 추가 항목 +추가 항목은 필요 시 추가 가능합니다. +예를 들어 '기술 태스크'와 같은 기술적 내용을 추가할 수 있습니다. +예시) +``` +UFR-AI-010: [AI일정생성] 여행자로서 | 나는 맞춤형 여행 일정을 받기 위해 | AI가 내 여행 정보와 이동수단 선호도를 기반으로 최적화된 일정을 생성하기를 원한다. +- 시나리오: AI 일정 생성 결과 확인 + 여행 기본정보와 여행지를 설정하고 AI 일정 생성을 요청한 상황에서 | 5초 이내에 생성이 완료되면 | 선호 이동수단을 기반으로 한 시간대별 상세 일정이 생성되어 확인할 수 있다. + + [생성 결과 검증] + - 모든 여행지에 대한 일정 존재 + - 각 일자별 시작/종료 시간 일치 + - ... +- M/8 +- 기술 태스크 + - AI 서비스 API 구현 + - POST /ai/schedules/generate (일정 생성 요청) + - GET /ai/schedules/{id}/status (진행 상태 조회) + - GET /ai/schedules/{id} (생성된 일정 조회) + - AI 모델 통합 + - Claude API 연동 + - 프롬프트 엔지니어링 + - 응답 파싱 및 구조화 +``` + +## 참고 자료 +- [유저스토리 작성 샘플](https://raw.githubusercontent.com/cna-bootcamp/clauding-guide/refs/heads/main/samples/Userstory.pdf) + +## 결과 파일 +작성된 유저스토리는 다음 위치에 저장됩니다: +- **파일 경로**: `design/Userstory.md` +- **형식**: 마크다운 형식으로 모든 유저스토리를 포함 + +## 작성 시 주의사항 + +1. **명확성**: 모호한 표현 대신 구체적이고 측정 가능한 표현 사용 +2. **완전성**: 모든 필수 구성 요소를 빠짐없이 작성 +3. **추적성**: ID를 통해 설계 문서와 연결 가능하도록 작성 +4. **테스트 가능성**: 인수테스트 시나리오가 실제 테스트로 실행 가능하도록 구체적으로 작성 +5. **우선순위**: MoSCoW 분류를 통해 개발 우선순위 명확화 \ No newline at end of file diff --git a/claude/v220_codes.txt b/claude/v220_codes.txt new file mode 100644 index 0000000..ce48c39 --- /dev/null +++ b/claude/v220_codes.txt @@ -0,0 +1,25 @@ +AFR-USER-010: [사용자관리] 시스템 관리자로서 | 나는, 서비스 보안을 위해 | 사용자 인증 기능을 원한다. +AFR-USER-020: [대시보드] 사용자로서 | 나는, 회의록 서비스의 주요 정보를 한눈에 파악하기 위해 | 대시보드를 통해 요약 정보를 확인하고 싶다. +UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, 회의를 효율적으로 준비하기 위해 | 회의를 예약하고 참석자를 초대하고 싶다. +UFR-MEET-020: [템플릿선택] 회의 생성자로서 | 나는, 회의록을 효율적으로 작성하기 위해 | 회의 유형에 맞는 템플릿을 선택하고 싶다. +UFR-MEET-030: [회의시작] 회의 생성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다. +UFR-MEET-040: [회의종료] 회의 생성자로서 | 나는, 회의를 종료하고 회의록을 정리하기 위해 | 회의를 종료하고 요약 내용을 확인한 후 다음 단계를 선택하고 싶다. +UFR-MEET-050: [최종확정] 회의 생성자로서 | 나는, 회의록을 완성하기 위해 | 모든 안건을 검증하고 최종 회의록을 확정하고 싶다. +UFR-MEET-046: [회의록목록조회] 회의 참석자로서 | 나는, 참여한 회의록들을 효율적으로 관리하기 위해 | 회의록 목록을 조회하고 필터링하고 싶다. +UFR-MEET-047: [회의록상세조회] 회의 참석자로서 | 나는, 지난 회의록의 상세 정보와 전체 내용을 | 한눈에 확인하고 싶다. +UFR-MEET-055: [회의록수정] 회의 참석자로서 | 나는, 검증이 완료되지 않았거나 수정이 필요한 | 지난 회의록을 수정하고 싶다. +UFR-STT-010: [음성녹음인식] 회의 참석자로서 | 나는, 발언 내용이 자동으로 기록되기 위해 | 음성이 실시간으로 녹음되고 인식되기를 원한다. +UFR-STT-020: [텍스트변환] 회의록 시스템으로서 | 나는, 인식된 발언을 회의록에 기록하기 위해 | 음성을 텍스트로 변환하고 싶다. +UFR-AI-010: [회의록자동작성] 회의 참석자로서 | 나는, 회의록 작성 부담을 줄이기 위해 | AI가 발언 내용을 실시간으로 정리하고 회의 종료 시 전체 안건을 요약하기를 원한다. +UFR-AI-020: [Todo자동추출] 회의 참석자로서 | 나는, 회의 후 실행 사항을 명확히 하기 위해 | AI가 안건별 내용에서 Todo 항목을 자동으로 추출하고 기본값을 설정하기를 원한다. +UFR-AI-035: [섹션AI요약] 회의 참석자로서 | 나는, 작성한 섹션 내용을 쉽게 요약하기 위해 | 버튼 클릭으로 AI가 섹션 내용을 요약해주기를 원한다. +UFR-AI-036: [AI한줄요약] 회의 참석자로서 | 나는, 각 안건의 핵심을 빠르게 파악하기 위해 | AI가 생성한 편집 불가능한 한줄 요약을 확인하고 싶다. +UFR-AI-040: [관련회의록연결] 회의 참석자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결해주기를 원한다. +UFR-RAG-010: [전문용어감지] 회의 참석자로서 | 나는, 업무 지식이 없어도 회의록을 정확히 작성하기 위해 | 전문용어가 자동으로 감지되고 맥락에 맞는 설명을 제공받고 싶다. +UFR-RAG-020: [맥락기반용어설명] 회의 참석자로서 | 나는, 전문용어를 맥락에 맞게 이해하기 위해 | 관련 회의록과 업무 이력을 바탕으로 실용적인 설명을 제공받고 싶다. +UFR-COLLAB-010: [회의록수정동기화] 회의 참석자로서 | 나는, 회의록을 함께 검증하기 위해 | 회의록을 수정하고 실시간으로 다른 참석자와 동기화하고 싶다. +UFR-COLLAB-020: [충돌해결] 회의 참석자로서 | 나는, 동시 수정 상황에서도 내용을 잃지 않기 위해 | 안건별로 충돌 없이 편집하고 싶다. +UFR-COLLAB-030: [검증완료] 회의 참석자로서 | 나는, 회의록의 정확성을 보장하기 위해 | 각 안건을 검증하고 완료 표시를 하고 싶다. +UFR-TODO-010: [Todo할당] Todo 시스템으로서 | 나는, AI가 추출한 Todo를 담당자에게 전달하기 위해 | Todo를 실시간으로 할당하고 회의록과 연결하고 싶다. +UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo를 처리하고 회의록에 반영하기 위해 | Todo를 완료하고 회의록에 자동 반영하고 싶다. +UFR-TODO-040: [Todo관리] Todo 담당자로서 | 나는, 나의 Todo를 효율적으로 관리하기 위해 | Todo 목록을 조회하고 상태를 변경하고 편집하고 싶다. diff --git a/claude/v230_codes.txt b/claude/v230_codes.txt new file mode 100644 index 0000000..3b6fe81 --- /dev/null +++ b/claude/v230_codes.txt @@ -0,0 +1,28 @@ +UFR-USER-010: [로그인] 사용자로서 | 나는, 시스템에 접근하기 위해 | 사번과 비밀번호로 로그인하고 싶다. +UFR-USER-020: [대시보드] 사용자로서 | 나는, 나의 회의 및 Todo 현황을 파악하기 위해 | 대시보드를 조회하고 싶다. +UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, 회의를 효율적으로 준비하기 위해 | 회의를 예약하고 참석자를 초대하고 싶다. +UFR-MEET-015: [회의진행] 회의 참석자로서 | 나는, 회의 중 추가 참석자가 필요할 때 | 실시간으로 참석자를 초대하고 싶다. +UFR-MEET-020: [템플릿선택] 회의 생성자로서 | 나는, 회의록을 효율적으로 작성하기 위해 | 회의 유형에 맞는 템플릿을 선택하고 싶다. +UFR-MEET-030: [회의시작] 회의 생성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다. +UFR-MEET-040: [회의종료] 회의 생성자로서 | 나는, 회의를 종료하고 회의록을 정리하기 위해 | 회의를 종료하고 요약 내용을 확인한 후 다음 단계를 선택하고 싶다. +UFR-MEET-050: [최종확정] 회의 생성자로서 | 나는, 회의록을 완성하기 위해 | 모든 안건을 검증하고 최종 회의록을 확정하고 싶다. +UFR-MEET-046: [회의록목록조회] 회의 참석자로서 | 나는, 참여한 회의록들을 효율적으로 관리하기 위해 | 회의록 목록을 조회하고 필터링하고 싶다. +UFR-MEET-047: [회의록상세조회] 회의 참석자로서 | 나는, 지난 회의록의 상세 정보와 전체 내용을 | 한눈에 확인하고 싶다. +UFR-MEET-055: [회의록수정] 회의 참석자로서 | 나는, 검증이 완료되지 않았거나 수정이 필요한 | 지난 회의록을 수정하고 싶다. +UFR-AI-010: [회의록자동작성] 회의 참석자로서 | 나는, 회의록 작성 부담을 줄이기 위해 | AI가 발언 내용을 실시간으로 정리하고 회의 종료 시 전체 안건을 요약하기를 원한다. +UFR-AI-020: [Todo자동추출] 회의 참석자로서 | 나는, 회의 후 실행 사항을 명확히 하기 위해 | AI가 안건별 내용에서 Todo 항목을 자동으로 추출하고 기본값을 설정하기를 원한다. +UFR-AI-030: [실시간AI제안] 회의 참석자로서 | 나는, 회의 중 놓치는 내용을 최소화하기 위해 | AI가 실시간으로 주요 내용을 분석하여 제안하고 싶다. +UFR-AI-035: [섹션AI요약] 회의 참석자로서 | 나는, 작성한 섹션 내용을 쉽게 요약하기 위해 | 버튼 클릭으로 AI가 섹션 내용을 요약해주기를 원한다. +UFR-AI-036: [AI한줄요약] 회의 참석자로서 | 나는, 각 안건의 핵심을 빠르게 파악하기 위해 | AI가 생성한 편집 불가능한 한줄 요약을 확인하고 싶다. +UFR-AI-040: [관련회의록연결] 회의 참석자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결해주기를 원한다. +UFR-STT-010: [음성녹음인식] 회의 참석자로서 | 나는, 발언 내용이 자동으로 기록되기 위해 | 음성이 실시간으로 녹음되고 인식되기를 원한다. +UFR-STT-020: [텍스트변환] 회의록 시스템으로서 | 나는, 인식된 발언을 회의록에 기록하기 위해 | 음성을 텍스트로 변환하고 싶다. +UFR-RAG-010: [전문용어감지] 회의 참석자로서 | 나는, 업무 지식이 없어도 회의록을 정확히 작성하기 위해 | 전문용어가 자동으로 감지되고 맥락에 맞는 설명을 제공받고 싶다. +UFR-RAG-020: [맥락기반용어설명] 회의 참석자로서 | 나는, 전문용어를 맥락에 맞게 이해하기 위해 | 관련 회의록과 업무 이력을 바탕으로 실용적인 설명을 제공받고 싶다. +UFR-COLLAB-010: [회의록수정동기화] 회의 참석자로서 | 나는, 회의록을 함께 검증하기 위해 | 회의록을 수정하고 실시간으로 다른 참석자와 동기화하고 싶다. +UFR-COLLAB-020: [충돌해결] 회의 참석자로서 | 나는, 동시 수정 상황에서도 내용을 잃지 않기 위해 | 안건별로 충돌 없이 편집하고 싶다. +UFR-COLLAB-030: [검증완료] 회의 참석자로서 | 나는, 회의록의 정확성을 보장하기 위해 | 각 안건을 검증하고 완료 표시를 하고 싶다. +UFR-TODO-010: [Todo할당] Todo 시스템으로서 | 나는, AI가 추출한 Todo를 담당자에게 전달하기 위해 | Todo를 실시간으로 할당하고 회의록과 연결하고 싶다. +UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo를 처리하고 회의록에 반영하기 위해 | Todo를 완료하고 회의록에 자동 반영하고 싶다. +UFR-TODO-040: [Todo관리] Todo 담당자로서 | 나는, 나의 Todo를 효율적으로 관리하기 위해 | Todo 목록을 조회하고 상태를 변경하고 편집하고 싶다. +UFR-NOTI-010: [알림발송] Notification 시스템으로서 | 나는, 사용자에게 중요한 이벤트를 알리기 위해 | 주기적으로 알림 대상을 확인하여 이메일을 발송하고 싶다. diff --git a/claude/유저스토리_변경사항_보고서_v2.2.0에서_v2.3.0.md b/claude/유저스토리_변경사항_보고서_v2.2.0에서_v2.3.0.md new file mode 100644 index 0000000..eed679f --- /dev/null +++ b/claude/유저스토리_변경사항_보고서_v2.2.0에서_v2.3.0.md @@ -0,0 +1,454 @@ +# 유저스토리 v2.2.0 → v2.3.0 변경사항 보고서 + +**작성일**: 2025-10-25 +**작성자**: 지수 (Product Designer), 민준 (Product Owner) +**문서 버전**: 1.0 + +--- + +## 📋 개요 + +본 보고서는 AI기반 회의록 작성 및 이력 관리 개선 서비스의 유저스토리 문서가 v2.2.0에서 v2.3.0으로 업데이트되면서 변경된 내용과 그 의미를 분석합니다. + +### 요약 통계 + +| 항목 | v2.2.0 | v2.3.0 | 변화 | +|------|--------|--------|------| +| **유저스토리 수** | 25개 | 27개 | +2개 (+8%) | +| **신규 추가** | - | 5개 | UFR-USER-010, UFR-USER-020, UFR-MEET-015, UFR-AI-030, UFR-NOTI-010 | +| **삭제/전환** | - | 2개 | AFR-USER-010, AFR-USER-020 → UFR로 전환 | +| **AFR 코드** | 2개 | 0개 | -2개 (100% 제거) | +| **UFR 코드** | 23개 | 27개 | +4개 (+17%) | +| **평균 상세도** | 20-30줄 | 60-100줄 | **약 3배 증가** | +| **프로토타입 연계** | 부분적 | 100% (10개 화면) | - | +| **표준 형식 적용** | 0% | 100% (27개) | - | + +--- + +## 📊 한눈에 보는 변경사항 + +``` +v2.2.0 (25개) v2.3.0 (27개) +┌─────────────────┐ ┌─────────────────┐ +│ AFR-USER-010 │ ──────────────────>│ UFR-USER-010 ✨ │ (로그인 상세화) +│ AFR-USER-020 │ ──────────────────>│ UFR-USER-020 ✨ │ (대시보드 재설계) +├─────────────────┤ ├─────────────────┤ +│ UFR-MEET-010 │ ──────────────────>│ UFR-MEET-010 ✨ │ (회의예약 개선) +│ │ │ UFR-MEET-015 🆕 │ (참석자 실시간 초대) +│ UFR-MEET-020 │ ──────────────────>│ UFR-MEET-020 ✨ │ (템플릿선택 상세화) +│ UFR-MEET-030 │ ──────────────────>│ UFR-MEET-030 ✨ │ (회의시작 4개 탭) +│ UFR-MEET-040 │ ──────────────────>│ UFR-MEET-040 ✨ │ (회의종료 3가지 액션) +│ UFR-MEET-050 │ ──────────────────>│ UFR-MEET-050 ✨ │ (최종확정 2가지 시나리오) +│ UFR-MEET-046 │ ──────────────────>│ UFR-MEET-046 ✨ │ (목록조회 샘플 30개) +│ UFR-MEET-047 │ ──────────────────>│ UFR-MEET-047 ✨ │ (상세조회 관련회의록) +│ UFR-MEET-055 │ ──────────────────>│ UFR-MEET-055 ✨ │ (회의록수정 3가지 시나리오) +├─────────────────┤ ├─────────────────┤ +│ UFR-AI-010 │ ──────────────────>│ UFR-AI-010 │ +│ UFR-AI-020 │ ──────────────────>│ UFR-AI-020 │ +│ │ │ UFR-AI-030 🆕🎯 │ (실시간 AI 제안 - 차별화!) +│ UFR-AI-035 │ ──────────────────>│ UFR-AI-035 │ +│ UFR-AI-036 │ ──────────────────>│ UFR-AI-036 │ +│ UFR-AI-040 │ ──────────────────>│ UFR-AI-040 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-STT-010 │ ──────────────────>│ UFR-STT-010 │ +│ UFR-STT-020 │ ──────────────────>│ UFR-STT-020 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-RAG-010 │ ──────────────────>│ UFR-RAG-010 │ +│ UFR-RAG-020 │ ──────────────────>│ UFR-RAG-020 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-COLLAB-010 │ ──────────────────>│ UFR-COLLAB-010 │ +│ UFR-COLLAB-020 │ ──────────────────>│ UFR-COLLAB-020 │ +│ UFR-COLLAB-030 │ ──────────────────>│ UFR-COLLAB-030 │ +├─────────────────┤ ├─────────────────┤ +│ UFR-TODO-010 │ ──────────────────>│ UFR-TODO-010 │ +│ UFR-TODO-030 │ ──────────────────>│ UFR-TODO-030 │ +│ UFR-TODO-040 │ ──────────────────>│ UFR-TODO-040 │ +└─────────────────┘ ├─────────────────┤ + │ UFR-NOTI-010 🆕 │ (알림발송 - 폴링 방식) + └─────────────────┘ + +범례: +🆕 = 완전 신규 추가 +🎯 = 차별화 핵심 기능 +✨ = 대폭 개선 (프로토타입 기반 재작성) +``` + +--- + +## 🎯 핵심 변경사항 + +### 1. 신규 추가된 유저스토리 (5개) + +#### 1.1 UFR-USER-010: 로그인 🆕 +- **이전**: AFR-USER-010 (간략한 인증 설명) +- **변경**: UFR-USER-010으로 전환 및 상세화 +- **의미**: + - 로그인 프로세스 단계별 명시 (Enter 키 동작, 로딩 상태 등) + - 예외처리 시나리오 구체화 (사번 미입력, 비밀번호 8자 미만 등) + - 프로토타입 `01-로그인.html`과 1:1 매핑 + +#### 1.2 UFR-USER-020: 대시보드 🆕 +- **이전**: AFR-USER-020 (간략한 대시보드 설명) +- **변경**: UFR-USER-020으로 전환 및 대폭 확장 +- **의미**: + - 통계 블록, 최근 회의, 나의 Todo, 나의 회의록 위젯 상세 명세 + - FAB 버튼 2가지 액션 (회의예약/바로 시작) 명확화 + - 프로토타입 `02-대시보드.html`과 1:1 매핑 + +#### 1.3 UFR-MEET-015: 참석자 실시간 초대 🆕 +- **이전**: 없음 +- **변경**: 완전 신규 추가 +- **의미**: + - 회의 진행 중 "참석자" 탭에서 실시간으로 참석자 추가 기능 + - 검색 모달 → 추가 → WebSocket 동기화 → 알림 발송 흐름 명시 + - **효과**: 회의 진행 중 동적 참석자 관리로 유연성 향상 + - 프로토타입 `05-회의진행.html`의 "참석자" 탭과 연계 + +#### 1.4 UFR-AI-030: 실시간 AI 제안 🆕🎯 +- **이전**: 없음 +- **변경**: 완전 신규 추가 +- **의미**: + - **차별화 전략 "지능형 회의 진행 지원" 실현** + - STT 텍스트 실시간 분석 → 주요 내용 감지 → AI 제안 카드 생성 + - 제안 카드에서 메모 탭으로 드래그 앤 드롭으로 추가 + - **효과**: 회의 중 놓치는 내용 최소화, 차별화 핵심 기능 + - 프로토타입 `05-회의진행.html`의 "AI 제안" 탭과 연계 + +#### 1.5 UFR-NOTI-010: 알림 발송 🆕 +- **이전**: 없음 (암묵적으로 Meeting Service에서 직접 발송) +- **변경**: Notification 서비스의 독립적인 유저스토리로 추가 +- **의미**: + - **알림 아키텍처를 폴링 방식으로 통일** + - 1분 간격 폴링 → 이메일 발송 → 최대 3회 재시도 + - 6가지 알림 유형 명시 (Todo 할당, Todo 완료, 회의 시작, 회의록 확정, 참석자 초대, 회의록 수정) + - **효과**: Notification 서비스 독립성 확보, 시스템 안정성 향상 + +--- + +### 2. 대폭 개선된 유저스토리 (주요 8개) + +#### 2.1 UFR-MEET-010: 회의예약 +- **변경사항**: + - 수행절차 10단계 명시 (FAB 버튼 → 입력 → 저장/완료) + - 입력 필드별 상세 명세 (타입, 필수 여부, 최대/최소값, UI 요소) + - 임시저장/예약 완료 2가지 시나리오 구분 + - 예외처리 7가지 추가 (제목 미입력, 과거 날짜, 참석자 미선택 등) +- **의미**: 프로토타입 `03-회의예약.html` 기반 전면 재작성 + +#### 2.2 UFR-MEET-030: 회의시작 +- **변경사항**: + - 회의 진행 화면 4개 탭 상세 명세 (녹음/메모, 참석자, AI 제안, 안건) + - 녹음 시작/일시정지/재시작 플로우 명시 + - 참석자 상태 표시 (온라인/오프라인/참석중) + - 탭별 UI 요소와 인터랙션 상세화 +- **의미**: 프로토타입 `05-회의진행.html` 4개 탭 구조 반영 + +#### 2.3 UFR-MEET-040: 회의종료 +- **변경사항**: + - 회의 종료 후 3가지 액션 명시 (바로 확정, 나중에 확정, 검토 후 확정) + - 각 액션별 이동 화면 명확화 + - 안건 요약 및 검증 상태 표시 추가 +- **의미**: 프로토타입 `07-회의종료.html` 반영, 사용자 선택권 강화 + +#### 2.4 UFR-MEET-050: 최종확정 +- **변경사항**: + - 2가지 시나리오 분리 (검토 후 확정, 회의 종료 화면에서 바로 확정) + - 안건별 검증 완료 여부 체크 로직 추가 + - 미검증 안건 있을 시 확정 불가 정책 명시 +- **의미**: 회의록 품질 보증 메커니즘 강화 + +#### 2.5 UFR-MEET-046: 회의록목록조회 +- **변경사항**: + - 샘플 데이터 30개 명시 (제목, 날짜, 상태, 검증 현황 등) + - 필터/정렬 기능 상세화 (기간, 상태, 폴더별) + - 상태 배지 5종 추가 (진행중, 검토중, 확정완료 등) +- **의미**: 프로토타입 `12-회의록목록조회.html` 반영 + +#### 2.6 UFR-MEET-047: 회의록상세조회 +- **변경사항**: + - 관련 회의록 섹션 추가 (AI가 자동 연결한 회의록 3개 표시) + - 안건별 검증 상태 표시 추가 + - 용어 팝업 연계 (UFR-RAG-010) 명시 +- **의미**: 프로토타입 `10-회의록상세조회.html` 반영, RAG 기능 연계 + +#### 2.7 UFR-MEET-055: 회의록수정 +- **변경사항**: + - 3가지 진입 시나리오 명시 (회의종료 화면, 목록 화면, 상세조회 화면) + - 실시간 협업 플로우 상세화 (UFR-COLLAB-010, UFR-COLLAB-020 연계) + - 수정 저장/임시저장/취소 3가지 액션 구분 +- **의미**: 프로토타입 `11-회의록수정.html` 반영, 협업 기능 강화 + +#### 2.8 UFR-COLLAB-020: 충돌해결 +- **변경사항**: + - 안건 기반 충돌 방지 메커니즘 상세화 + - 동일 안건 동시 수정 시 경고 표시 및 잠금 정책 명시 + - 충돌 해결 시나리오 3가지 (대기, 새 안건 작성, 취소) +- **의미**: 실시간 협업 안정성 강화 + +--- + +### 3. 유지된 유저스토리 (14개) + +다음 유저스토리들은 v2.2.0과 v2.3.0에서 ID와 핵심 내용이 유지되었습니다: + +- UFR-AI-010 (회의록 자동 작성) +- UFR-AI-020 (Todo 자동 추출) +- UFR-AI-035 (섹션 AI 요약) +- UFR-AI-036 (AI 한줄 요약) +- UFR-AI-040 (관련 회의록 연결) +- UFR-STT-010 (음성 녹음 인식) +- UFR-STT-020 (텍스트 변환) +- UFR-RAG-010 (전문용어 감지) +- UFR-RAG-020 (맥락 기반 용어 설명) +- UFR-COLLAB-010 (회의록 수정 동기화) +- UFR-COLLAB-030 (검증 완료) +- UFR-TODO-010 (Todo 할당) +- UFR-TODO-030 (Todo 완료 처리) +- UFR-TODO-040 (Todo 관리) + +--- + +## 📈 문서 품질 개선 + +### 3.1 유저스토리 형식 표준화 + +#### Before (v2.2.0) - 자유 형식 +``` +UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, ... +- 시나리오: 회의 예약 및 참석자 초대 + 회의 예약 화면에 접근한 상황에서 | ... + + [입력 요구사항] + - 회의 제목: 최대 100자 (필수) + ... + + [처리 결과] + - 회의가 예약됨 + ... + +- M/13 +``` + +#### After (v2.3.0) - 표준 5단계 형식 +``` +### UFR-MEET-010: [회의예약] 회의 생성자로서 | 나는, ... + +**수행절차:** +1. 대시보드에서 "회의예약" FAB 버튼 클릭 +2. 회의 제목 입력 (최대 100자) +3. 날짜 선택 (오늘 이후 날짜, 달력 UI) +... +10. "임시저장" 버튼 또는 "예약 완료" 버튼 클릭 + +**입력:** +- 회의 제목: 텍스트 입력, 필수, 최대 100자, 문자 카운터 표시 +- 날짜: date 타입, 필수, 오늘 이후 날짜만 선택 가능 +... + +**출력/결과:** +- 예약 완료: "회의가 예약되었습니다" 토스트 메시지, 대시보드로 이동 +- 임시저장: "임시 저장되었습니다" 토스트 메시지 +... + +**예외처리:** +- 제목 미입력: "회의 제목을 입력해주세요" 토스트, 제목 필드 포커스 +- 과거 날짜 선택: "과거 날짜는 선택할 수 없습니다" 토스트 +... + +**관련 유저스토리:** +- UFR-USER-020: 대시보드 조회 +- UFR-MEET-020: 템플릿선택 +``` + +### 3.2 개선 효과 + +| 섹션 | 개선 효과 | +|------|-----------| +| **수행절차** | 단계별 명확한 작업 흐름, 개발자가 UI 플로우 이해 가능 | +| **입력** | 필드 타입, 검증 규칙, UI 요소 상세 명세, API 명세서 작성 기준 제공 | +| **출력/결과** | 성공/실패 시나리오별 응답 명시, 테스트 케이스 작성 기준 제공 | +| **예외처리** | 에러 상황별 처리 방법 구체화, QA 시나리오 명확화 | +| **관련 유저스토리** | 기능 간 연계성 추적, 통합 테스트 범위 파악 용이 | + +--- + +## 🏗️ 프로토타입 연계 강화 + +v2.3.0에서는 모든 유저스토리가 프로토타입 화면과 명확하게 연계되었습니다. + +| 프로토타입 화면 | 연계 유저스토리 | 상태 | +|----------------|----------------|------| +| 01-로그인.html | UFR-USER-010 | ✅ 1:1 매핑 | +| 02-대시보드.html | UFR-USER-020 | ✅ 1:1 매핑 | +| 03-회의예약.html | UFR-MEET-010 | ✅ 1:1 매핑 | +| 04-템플릿선택.html | UFR-MEET-020 | ✅ 1:1 매핑 | +| 05-회의진행.html | UFR-MEET-030, UFR-MEET-015 (신규), UFR-AI-030 (신규) | ✅ 1:N 매핑 | +| 07-회의종료.html | UFR-MEET-040 | ✅ 1:1 매핑 | +| 10-회의록상세조회.html | UFR-MEET-047 | ✅ 1:1 매핑 | +| 11-회의록수정.html | UFR-MEET-055 | ✅ 1:1 매핑 | +| 12-회의록목록조회.html | UFR-MEET-046 | ✅ 1:1 매핑 | +| 08-최종확정.html | UFR-MEET-050 | ✅ 1:1 매핑 | + +**결과**: 10개 프로토타입 화면 100% 유저스토리 연계 완료 + +--- + +## 🔑 핵심 아키텍처 변경 + +### 알림 아키텍처: 실시간 → 폴링 방식 + +#### Before (v2.2.0) +``` +[Meeting Service] ──(실시간 발송)──> [Notification Service] ──> [Email] + ↓ + Todo 할당 발생 → 즉시 이메일 발송 +``` + +**문제점**: +- Meeting Service와 Notification Service 간 강한 결합 +- 이메일 발송 실패 시 Meeting Service에 영향 + +#### After (v2.3.0) +``` +[Meeting Service] ──(DB 레코드 생성)──> [Notification 테이블] + ↓ + (1분 간격 폴링) + ↓ + [Notification Service] ──> [Email] + ↓ + (발송 상태 업데이트) +``` + +**개선 효과**: +- ✅ **Notification 서비스 독립성 강화**: 마이크로서비스 간 느슨한 결합 +- ✅ **시스템 안정성 향상**: 이메일 발송 실패 시 자동 재시도 (최대 3회) +- ✅ **확장성 확보**: 폴링 주기 조정으로 트래픽 제어 가능 +- ✅ **모니터링 용이**: 발송 대기/성공/실패 상태 DB에서 추적 + +--- + +## 💡 변경의 의미와 개선 효과 + +### 1. 사용자 경험 (UX) 개선 + +| 영역 | 개선 내용 | 효과 | +|------|----------|------| +| **회의 진행 중 유연성** | UFR-MEET-015 (참석자 실시간 초대) | 회의 중 동적 참석자 관리 가능 | +| **회의 중 놓침 방지** | UFR-AI-030 (실시간 AI 제안) 🎯 | 차별화 핵심 기능, 회의 중 주요 내용 실시간 감지 | +| **회의 종료 후 선택권** | UFR-MEET-040 (3가지 액션) | 바로 확정/나중에 확정/검토 후 확정 | +| **회의록 품질 보증** | UFR-MEET-050 (검증 후 확정) | 미검증 안건 있을 시 확정 불가 정책 | +| **실시간 협업 안정성** | UFR-COLLAB-020 (안건 기반 충돌 방지) | 동일 안건 동시 수정 시 경고 및 잠금 | + +### 2. 기능적 개선 + +| 영역 | 개선 내용 | 효과 | +|------|----------|------| +| **알림 시스템 안정성** | UFR-NOTI-010 (폴링 방식) | Notification 서비스 독립성 확보, 재시도 메커니즘 | +| **차별화 전략 실현** | UFR-AI-030 (실시간 AI 제안) 🎯 | "지능형 회의 진행 지원" 구체화 | +| **프로토타입 정합성** | 10개 화면 100% 매핑 | 기획-디자인-개발 간 일관성 확보 | +| **유저스토리 표준화** | 5단계 표준 형식 | 개발 가이드 역할 강화, API 명세서 작성 기준 제공 | + +### 3. 문서화 개선 + +| 영역 | 개선 내용 | 효과 | +|------|----------|------| +| **상세도 3배 증가** | 20-30줄 → 60-100줄 | 개발자가 구현에 필요한 모든 정보 확보 | +| **AFR 코드 폐지** | AFR → UFR 통일 | 유저스토리 체계 단순화 | +| **예외처리 명시** | 각 유저스토리별 5-7개 예외 시나리오 | QA 테스트 케이스 작성 기준 제공 | +| **관련 유저스토리 연계** | 기능 간 의존성 추적 | 통합 테스트 범위 명확화 | + +--- + +## 📋 권장 후속 조치 + +### 🔴 긴급 (1주 내) + +- [ ] **신규 유저스토리 3개 기반 API 설계** + - UFR-MEET-015: 참석자 실시간 초대 API + - UFR-AI-030: 실시간 AI 제안 API (SSE 또는 WebSocket) + - UFR-NOTI-010: 알림 폴링 및 발송 API + +- [ ] **알림 아키텍처 폴링 방식 반영** + - 물리 아키텍처 다이어그램 업데이트 + - Notification 테이블 스키마 정의 + - 폴링 스케줄러 설계 + +- [ ] **프로토타입 ↔ 유저스토리 1:1 매핑 검증** + - 10개 화면별 유저스토리 매핑 검증 + - 누락된 화면 또는 유저스토리 확인 + +### 🟡 중요 (2주 내) + +- [ ] **API 설계서 v2.3.0 기반 전면 업데이트** + - 입력/출력 명세 반영 (타입, 필수 여부, 검증 규칙) + - 예외처리 시나리오 → HTTP 상태 코드 및 에러 메시지 매핑 + - 관련 유저스토리 기반 API 그룹핑 + +- [ ] **예외처리 시나리오 → 테스트 케이스 전환** + - 각 유저스토리의 예외처리 섹션을 테스트 케이스로 변환 + - 입력 검증 테스트 케이스 작성 + +- [ ] **관련 유저스토리 기반 통합 테스트 시나리오 작성** + - 예: UFR-MEET-010 → UFR-MEET-020 → UFR-MEET-030 전체 플로우 테스트 + +### 🟢 일반 (3주 내) + +- [ ] **유저스토리별 개발 우선순위 재평가** + - 신규 유저스토리 3개 우선순위 결정 + - 차별화 핵심 기능 (UFR-AI-030) 우선 개발 검토 + +- [ ] **신규 기능 3개 개발 일정 수립** + - UFR-MEET-015: 참석자 실시간 초대 + - UFR-AI-030: 실시간 AI 제안 (Sprint 목표로 권장) + - UFR-NOTI-010: 알림 발송 + +- [ ] **프로토타입 기반 개발 가이드 작성** + - 프로토타입 → 유저스토리 → API → 컴포넌트 매핑 가이드 + - 프론트엔드 개발자를 위한 프로토타입 활용 가이드 + +--- + +## 🔍 핵심 시사점 (Key Takeaways) + +1. **v2.3.0은 프로토타입 분석을 통해 유저스토리를 전면 재정비한 버전** + - 10개 프로토타입 화면과 100% 매핑 + - 실제 UI/UX 플로우를 유저스토리에 반영 + +2. **신규 기능 3개 추가로 차별화 강화** + - 특히 UFR-AI-030 (실시간 AI 제안)은 차별화 핵심 기능 + +3. **알림 아키텍처 폴링 방식으로 통일하여 시스템 안정성 확보** + - Notification 서비스 독립성 강화 + - 재시도 메커니즘으로 안정성 향상 + +4. **유저스토리 형식 표준화로 개발 가이드 역할 강화** + - 5단계 표준 형식 (수행절차, 입력, 출력/결과, 예외처리, 관련 유저스토리) + - API 명세서 및 테스트 케이스 작성 기준 제공 + +5. **평균 유저스토리 상세도 약 3배 증가로 품질 대폭 향상** + - 개발자가 구현에 필요한 모든 정보 포함 + - 예외처리, 검증 규칙, UI 요소까지 상세 명시 + +6. **기존 24개 유저스토리 ID 승계하여 연속성 유지** + - AFR-USER-010 → UFR-USER-010 전환 + - 기존 설계 문서와의 연계성 유지 + +7. **프로토타입-유저스토리 1:1 매핑으로 개발 명확성 확보** + - 기획-디자인-개발 간 일관성 확보 + - 개발 우선순위 및 Sprint 계획 수립 용이 + +--- + +## 📎 참고 자료 + +- **상세 분석 (JSON)**: `claude/userstory-comparison-v2.2.0-to-v2.3.0.json` (19KB) +- **상세 분석 (Markdown)**: `claude/userstory-comparison-v2.2.0-to-v2.3.0.md` (16KB) +- **요약 분석**: `claude/userstory-comparison-summary.md` (11KB) +- **유저스토리 v2.2.0 백업**: `design/userstory_v2.2.0_backup.md` +- **유저스토리 v2.3.0 현재**: `design/userstory.md` + +--- + +**보고서 작성**: 지수 (Product Designer), 민준 (Product Owner) +**분석 일시**: 2025-10-25 +**문서 버전**: 1.0 diff --git a/claudedocs/회의진행-개선안-종합보고서.md b/claudedocs/회의진행-개선안-종합보고서.md new file mode 100644 index 0000000..1edfac5 --- /dev/null +++ b/claudedocs/회의진행-개선안-종합보고서.md @@ -0,0 +1,762 @@ +# 회의진행 화면 개선안 종합 보고서 + +**작성일**: 2025-10-25 +**버전**: v1.0 +**대상**: 회의록 작성 서비스 MVP + +--- + +## 📋 목차 +1. [논의 배경 및 목적](#1-논의-배경-및-목적) +2. [MVP 핵심 가치 재확인](#2-mvp-핵심-가치-재확인) +3. [최종 개선안](#3-최종-개선안) +4. [공수 및 일정 영향 분석](#4-공수-및-일정-영향-분석) +5. [유저스토리 수정안](#5-유저스토리-수정안) +6. [화면설계 수정안](#6-화면설계-수정안) +7. [프로토타입 수정 가이드](#7-프로토타입-수정-가이드) +8. [v2.0 백로그](#8-v20-백로그) + +--- + +## 1. 논의 배경 및 목적 + +### 1.1 논의 내용 +회의 진행 화면의 다음 기능들에 대해 MVP 관점에서 재검토: +- **회의 참석자 권한 구분**: 생성자 vs 일반 참석자 +- **메모 기능**: 개인 메모 vs 공유 메모 +- **용어 설명**: 회사 특화 용어 처리 방안 +- **관련 회의록**: 표시 방식 및 활용도 +- **중도 퇴장**: 화면 전환 방식에 따른 구현 + +### 1.2 목적 +- MVP 범위 명확화 및 불필요한 기능 제거 +- 핵심 가치 실현에 집중 +- 예산 및 일정 준수 + +--- + +## 2. MVP 핵심 가치 재확인 + +### 2.1 서비스 핵심 가치 +> **"업무지식이 없어도 누락 없이 정확하게 회의록을 작성"** + +### 2.2 MVP 필수 기능 +1. ✅ AI STT로 실시간 음성 인식 +2. ✅ AI가 주요 내용 자동 추출 및 제시 +3. ✅ 회의 종료 후 AI 자동 요약 생성 +4. ✅ 회의록 확인 및 기본 수정 +5. ✅ 회의록 공유 (이메일/링크) + +### 2.3 MVP 제외 기능 (v2.0 이관) +- ❌ 복잡한 메모 입력/편집 기능 +- ❌ 실시간 협업 메모 동기화 +- ❌ 참석자별 세밀한 권한 관리 UI +- ❌ 용어 사전 직접 검색 기능 + +--- + +## 3. 최종 개선안 + +### 3.1 회의 참석자 권한 + +#### 현재 문제점 +- 생성자 vs 참석자로 이분법적 구분 +- 회의 생성자도 참석자 중 한 명이라는 관점 누락 + +#### 개선안 +**회의 생성자 = 특별 권한을 가진 참석자** + +``` +모든 참석자 공통 기능: +- AI 제시 주요 내용 확인 및 체크 +- 회의록 실시간 확인 +- 용어 설명 확인 +- 관련 회의록 확인 +- "나가기" 버튼으로 중도 퇴장 + +회의 생성자 전용 기능: +- 회의 종료 버튼 (일반 참석자에게는 숨김) +- 녹음 제어 (일시정지/재개/종료) +``` + +#### 구현 방식 +```javascript +// 버튼 조건부 표시 +if (currentUser.id === meeting.creator_id) { + // 회의 종료 버튼 표시 + showEndMeetingButton(); + showRecordingControls(); +} +``` + +--- + +### 3.2 메모 기능 + +#### 현재 문제점 +- 텍스트 입력 메모 구현 시 공수 증가 +- 공유 메모 vs 개인 메모 선택 어려움 +- 실시간 동기화 복잡도 + +#### 개선안 (MVP 최소화) +**AI 제시 내용 체크박스 방식** + +``` +┌─────────────────────────────────┐ +│ 🤖 AI가 파악한 주요 내용 │ +├─────────────────────────────────┤ +│ ☐ 예산 500만원 증액 합의 │ +│ ☐ 일정 2주 연장 논의 │ +│ ☐ 외주 업체 3곳 검토 │ +└─────────────────────────────────┘ +``` + +**특징:** +- 참석자는 클릭만 (텍스트 입력 없음) +- 개인별 체크 (다른 사람 체크 안 보임) +- AI 요약 시 체크 수에 따라 가중치 부여 +- 편집 충돌 없음 + +**공수 절감:** +- 기존 방식 (공유+개인 메모): 38일 +- 체크박스 방식: 7일 +- **절감률: 82%** + +--- + +### 3.3 용어 설명 기능 + +#### 현재 문제점 +- 일반 전문용어와 회사 특화 용어 구분 필요 +- RAG 구축은 MVP 범위 초과 + +#### 개선안 +**간소화된 JSON 용어 사전 + AI 보조** + +##### 3.3.1 회사 용어 사전 구조 +```json +// config/terms-dictionary.json +{ + "terms": [ + { + "keyword": "레거시", + "aliases": ["구시스템", "기존ERP"], + "definition": "2020년 구축한 우리 회사 통합 ERP 시스템", + "context": "현재 클라우드 기반 신규 시스템으로 마이그레이션 중", + "category": "시스템" + } + ] +} +``` + +##### 3.3.2 용어 표시 방식 +``` +┌─────────────────────────────────┐ +│ [AI 주요 내용] [용어] │ +├─────────────────────────────────┤ +│ 📚 회의 중 언급된 용어 │ +│ │ +│ 🔹 레거시 ⭐ │ +│ 2020년 구축한 우리 회사 ERP │ +│ (회사 용어 사전) │ +│ │ +│ 🔹 POC │ +│ Proof of Concept │ +│ (AI 일반 설명) │ +└─────────────────────────────────┘ + +⭐ = 회사 용어 사전 등록 항목 +``` + +##### 3.3.3 처리 로직 +```python +def explain_term(term, stt_context, company_dict): + # 1. 회사 용어 사전 확인 (우선) + if term in company_dict: + return company_dict[term] + " ⭐" + + # 2. AI 일반 설명 (회의 맥락 포함) + else: + return ai_model.explain(term, context=stt_context) +``` + +**장점:** +- ✅ RAG 대비 공수 1/5 (4일 vs 20일) +- ✅ 초기 10-20개 용어만으로 80% 커버 +- ✅ 비개발자도 JSON 편집 가능 +- ✅ v1.5에서 자동 학습 추가 가능 + +--- + +### 3.4 관련 회의록 기능 + +#### 기존 요구사항 (UFR-AI-040) +- ✅ AI가 벡터 유사도 검색으로 관련 회의록 자동 추천 +- ✅ 관련도 배지 표시 (높음/중간/낮음) +- ✅ 최대 5개 회의록 연결 + +#### 현재 문제점 +- 회의록 제목과 관련도 배지만 표시 (목록만 나열) +- 전체 회의록을 열어봐야 내용 파악 가능 +- 회의 중 전체 회의록 읽을 시간 없음 + +#### 개선안 +**기존 기능 유지 + 핵심 내용 요약 추가** + +``` +┌─────────────────────────────────┐ +│ 📄 관련 회의록 │ +├─────────────────────────────────┤ +│ 🔥 95% 2024-01-15 주간 회의 │ +│ 💡 현재 회의와 유사한 내용: │ +│ • "예산 500만원으로 증액 1차 합의"│ +│ • "외주 업체 A, B, C 3곳 후보" │ +│ • "일정은 2주 더 필요하다는 의견"│ +│ → 전체 회의록 보기 │ +│ │ +│ 🔥 78% 2024-01-08 기획 회의 │ +│ 💡 현재 회의와 유사한 내용: │ +│ • "POC 범위를 챗봇 기능만으로" │ +│ • "개발 일정 2월 말까지" │ +│ → 전체 회의록 보기 │ +└─────────────────────────────────┘ +``` + +##### 3.4.1 유사도 계산 로직 +```python +def calculate_meeting_similarity(current, past): + # 1. 주제 유사도 (50%) + topic_similarity = cosine_similarity( + current.topics_vector, + past.topics_vector + ) + + # 2. 참석자 겹침 (20%) + attendee_overlap = len( + set(current.attendees) & set(past.attendees) + ) / len(set(current.attendees)) + + # 3. 프로젝트/태그 일치 (30%) + project_match = 1.0 if current.project == past.project else 0.3 + + return ( + topic_similarity * 0.5 + + attendee_overlap * 0.2 + + project_match * 0.3 + ) +``` + +##### 3.4.2 효율화 방안 +```python +# 과거 회의록 저장 시 요약본 미리 생성 +class Meeting: + content: str # 전체 내용 + summary: str # AI 요약본 (미리 생성 - 배치) + topics: list # 주제 태그 + +# 실시간에는 요약본만 활용 +def show_related_meetings(current): + for past in find_similar(current): + relevant_summary = extract_relevant_parts( + past.summary, # 미리 생성된 요약본 + current.topics + ) +``` + +**효과:** +- 회의록 찾는 시간: 5-10분 → 10초 +- 컨텍스트 파악: 전체 읽기 → 요약으로 즉시 +- 핵심 가치 강화: "업무지식 없어도" 실현 + +**추가 공수:** +1일 (최적화 적용 시) + +--- + +### 3.5 중도 퇴장 기능 + +#### 현재 문제점 +- 대시보드 → 회의진행 화면: 페이지 전환 (같은 탭) +- 브라우저 창 닫기 = 서비스 전체 종료 + +#### 개선안 +**"나가기" 버튼 추가** + +``` +회의진행 화면 상단: +┌─────────────────────────────────┐ +│ ← 나가기 | 회의 제목 | [회의종료] │ +└─────────────────────────────────┘ +``` + +**동작:** +```javascript +function exitMeeting() { + if (confirm('회의에서 나가시겠습니까?\n회의는 계속 진행됩니다.')) { + // 퇴장 이벤트 서버 전송 + sendExitEvent(meeting.id, user.id); + + // 대시보드로 복귀 + navigateTo('02-대시보드.html'); + } +} +``` + +**추가 공수:** +0.5일 + +--- + +## 4. 공수 및 일정 영향 분석 + +### 4.1 전체 공수 비교 + +| 항목 | 기존 계획 | 개선안 | 차이 | +|------|----------|--------|------| +| 메모 기능 | 38일 | 7일 | **-31일** ⬇️ | +| 용어 설명 | 20일 (RAG) | 4일 (JSON) | **-16일** ⬇️ | +| 관련 회의록 | 5일 (목록만) | 6일 (요약 추가) | **+1일** ⬆️ | +| 나가기 버튼 | - | 0.5일 | **+0.5일** ⬆️ | +| **순 절감** | - | - | **-45.5일** ⬇️ | + +### 4.2 MVP 일정 영향 +- ✅ 예산 및 일정 대폭 절감 +- ✅ 핵심 기능에 집중 가능 +- ✅ 빠른 시장 검증 가능 + +--- + +## 5. 유저스토리 수정안 + +### 5.1 신규 추가 (MVP 단순화) + +```markdown +# 회의 참석자 공통 기능 +UFR-PART-010: 회의 입장 +- 모든 참석자(생성자 포함)는 대시보드에서 "참여하기"로 회의 입장 +- 회의진행 화면으로 페이지 전환 (같은 탭) + +UFR-PART-020: AI 주요 내용 체크 (개인별) +- AI가 추출한 주요 내용을 체크박스로 표시 +- 각 참석자는 중요하다고 생각하는 항목 독립적으로 체크 +- 다른 참석자의 체크 여부는 보이지 않음 +- AI 요약 시 체크 수에 따라 가중치 차등 적용 + +UFR-PART-030: 회의 중도 퇴장 +- "나가기" 버튼으로 회의에서 퇴장 +- 확인 모달: "회의에서 나가시겠습니까? 회의는 계속 진행됩니다" +- 퇴장 후 대시보드로 복귀 +- 회의록은 종료 시 공유됨 + +--- + +# 회의 생성자 전용 기능 +UFR-HOST-010: 회의 종료 권한 +- 회의 생성자만 "회의 종료" 버튼으로 회의 종료 가능 +- 일반 참석자에게는 버튼 숨김 + +UFR-HOST-020: 녹음 제어 권한 +- 회의 생성자만 녹음 일시정지/재개/종료 가능 + +--- + +# 용어 설명 기능 +UFR-TERM-010: 용어 자동 감지 및 표시 +- AI가 STT 분석 중 중요 용어 자동 감지 +- "용어" 탭에 실시간으로 표시 + +UFR-TERM-020: 회사 용어 사전 우선 표시 +- 회사 용어 사전(JSON)에 등록된 용어는 ⭐ 표시 +- 클릭 시 회사 특화 설명 표시 +- 사전에 없는 용어는 AI가 일반 설명 + 회의 맥락 제공 + +UFR-TERM-030: 용어 관리 (관리자 기능) +- 관리자는 회사 용어 사전 등록/수정 가능 +- JSON 파일 직접 편집 + +``` + +### 5.2 수정 필요 + +```markdown +# 기존 수정 1 +UFR-MEET-020: 회의 종료 권한 +- 기존: "회의 생성자 또는 참석자가 회의 종료" +- 변경: "회의 생성자만 회의 종료 가능" + +--- + +# 기존 수정 2 - UFR-AI-040 개선 +UFR-AI-040: 관련 회의록 자동 연결 (개선) + +기존 기능 (유지): +- ✅ AI가 벡터 유사도 검색으로 관련 회의록 자동 추천 +- ✅ 같은 프로젝트/팀의 회의록 중 관련도 높은 순으로 표시 +- ✅ 관련도 배지 표시 + +변경 및 개선 사항: +1. **최대 개수**: 5개 → 3개로 축소 (MVP) +2. **관련도 표시 방식**: 배지(높음/중간/낮음) → 퍼센트(95%, 78%) 변경 +3. **유사 내용 요약 추가** (신규): + - AI가 추천한 각 회의록에서 현재 회의와 유사한 부분 자동 추출 + - 유사한 내용을 3-5개 문장으로 요약하여 표시 + - 전체 회의록을 열지 않아도 핵심 내용 파악 가능 + - "전체 회의록 보기" 버튼으로 상세 내용 확인 +4. **성능 최적화**: + - 과거 회의록 저장 시 요약본 미리 생성 (배치 처리) + - 실시간 요약은 캐싱된 데이터 활용 + - 성능 목표: 1초 이내 표시 + +수행절차 (기존 유지): +1. 회의 종료 시 또는 회의록 작성 중 AI가 현재 회의 내용 분석 +2. 벡터 유사도 검색을 통해 관련 회의록 탐색 +3. 관련도가 높은 회의록 자동 연결 (최대 3개로 축소) +4. 각 회의록에서 유사한 내용 추출 및 요약 (신규 추가) +5. 회의 진행 화면, 회의록 상세 조회 화면에 표시 +``` + +### 5.3 제거 (v2.0 이관) + +```markdown +# v2.0 백로그로 이관 +- 공유 메모 입력 기능 +- 개인 메모 기능 +- 사용자 직접 용어 검색 기능 +- 용어 북마크 기능 +- 참석자별 세밀한 권한 UI +``` + +--- + +## 6. 화면설계 수정안 + +### 6.1 회의진행 화면 (05-회의진행.html) + +#### 6.1.1 상단 헤더 수정 +``` +기존: +┌─────────────────────────────────┐ +│ 회의 제목 | [회의 종료] │ +└─────────────────────────────────┘ + +변경: +┌─────────────────────────────────┐ +│ ← 나가기 | 회의 제목 | [회의종료] │ +└─────────────────────────────────┘ + +조건부 표시: +- "회의 종료" 버튼: 생성자만 표시 +- "나가기" 버튼: 모든 참석자 표시 +``` + +#### 6.1.2 탭 구조 +``` +┌─────────────────────────────────┐ +│ [AI 주요 내용] [용어] [관련 회의록] │ +├─────────────────────────────────┤ +│ (탭 콘텐츠) │ +└─────────────────────────────────┘ +``` + +#### 6.1.3 AI 주요 내용 탭 +```html +
+

🤖 AI가 파악한 주요 내용

+
+
+ + + 15:23 +
+
+
+``` + +#### 6.1.4 용어 탭 +```html +
+

📚 회의 중 언급된 용어

+
+
+

🔹 레거시 ⭐

+

2020년 구축한 우리 회사 ERP

+
+
+

🔹 POC

+

Proof of Concept (개념 증명)

+
+
+
+ + + +``` + +#### 6.1.5 관련 회의록 탭 +```html +
+

📄 관련 회의록

+ +
+``` + +### 6.2 인터랙션 추가 + +```markdown +# 회의진행 화면 인터랙션 +1. **나가기 버튼** + - 클릭 시 확인 모달 표시 + - 확인 시 대시보드로 페이지 전환 + +2. **AI 주요 내용 체크박스** + - 체크 시 개인 선택 저장 (로컬 + 서버) + - 다른 사람 체크 여부는 표시 안 함 + +3. **용어 항목 클릭** + - 상세 설명 모달 표시 + - 회사 용어는 ⭐ 배지 표시 + +4. **관련 회의록 카드** + - 유사도 점수 색상 코딩: + - 90% 이상: 빨강 (#FF6B6B) + - 70-89%: 주황 (#FFA94D) + - 50-69%: 노랑 (#FFD43B) + - "전체 회의록 보기" 버튼: 새 탭으로 열기 + +5. **회의 종료 버튼** + - 조건부 표시: + ```javascript + if (currentUser.id === meeting.creator_id) { + showButton('endMeeting'); + } + ``` +``` + +--- + +## 7. 프로토타입 수정 가이드 + +### 7.1 파일 수정 목록 +1. `05-회의진행.html` - 메인 화면 구조 변경 +2. `common.js` - 권한 체크 함수 추가 +3. `02-대시보드.html` - 참여하기 버튼 동작 확인 + +### 7.2 주요 수정 사항 + +#### 7.2.1 권한 체크 함수 (common.js) +```javascript +/** + * 현재 사용자가 회의 생성자인지 확인 + */ +function isCreator(meetingId, userId) { + const meeting = getMeetingById(meetingId); + return meeting && meeting.creator_id === userId; +} + +/** + * 생성자 전용 UI 표시/숨김 + */ +function updateCreatorUI(meetingId, userId) { + const isCreator = isCreator(meetingId, userId); + + // 회의 종료 버튼 + const endBtn = document.getElementById('end-meeting-btn'); + if (endBtn) { + endBtn.style.display = isCreator ? 'block' : 'none'; + } + + // 녹음 제어 버튼들 + const recordControls = document.querySelectorAll('.record-control'); + recordControls.forEach(btn => { + btn.style.display = isCreator ? 'inline-block' : 'none'; + }); +} +``` + +#### 7.2.2 나가기 버튼 (05-회의진행.html) +```javascript +function exitMeeting() { + if (confirm('회의에서 나가시겠습니까?\n회의는 계속 진행됩니다.')) { + // 퇴장 이벤트 전송 + sendExitEvent(currentMeeting.id, currentUser.id); + + // 대시보드로 복귀 + navigateTo('02-대시보드.html'); + } +} +``` + +#### 7.2.3 AI 주요 내용 체크박스 +```javascript +// 개인별 체크 저장 +function handleAIItemCheck(itemId, checked) { + const checkData = { + meeting_id: currentMeeting.id, + user_id: currentUser.id, + item_id: itemId, + checked: checked, + timestamp: new Date().toISOString() + }; + + // 로컬 저장 + saveLocalCheck(checkData); + + // 서버 전송 (비동기) + sendCheckToServer(checkData); +} +``` + +#### 7.2.4 용어 표시 로직 +```javascript +// 용어 목록 렌더링 +function renderTerms(terms) { + const container = document.getElementById('terms-list'); + container.innerHTML = terms.map(term => ` +
+

🔹 ${term.keyword} ${term.isCompanyTerm ? '⭐' : ''}

+

${term.shortDefinition}

+
+ `).join(''); +} + +// 용어 상세 표시 +function showTermDetail(termId) { + const term = getTermById(termId); + const modal = document.getElementById('term-detail-modal'); + + modal.querySelector('.term-title').textContent = term.keyword; + modal.querySelector('.term-definition').textContent = term.definition; + modal.querySelector('.term-context').textContent = term.context; + + modal.classList.add('show'); +} +``` + +#### 7.2.5 관련 회의록 표시 +```javascript +// 관련 회의록 렌더링 +function renderRelatedMeetings(meetings) { + const container = document.getElementById('related-meetings'); + container.innerHTML = meetings.map(meeting => ` +
+
+ 🔥 ${Math.round(meeting.similarity * 100)}% 관련도 +
+

${meeting.date} ${meeting.title}

+
+

💡 현재 회의와 유사한 내용:

+
    + ${meeting.relevantSummary.map(item => `
  • "${item}"
  • `).join('')} +
+
+ +
+ `).join(''); +} + +// 유사도에 따른 색상 +function getSimilarityColor(similarity) { + if (similarity >= 0.9) return '#FF6B6B'; // 빨강 + if (similarity >= 0.7) return '#FFA94D'; // 주황 + return '#FFD43B'; // 노랑 +} +``` + +--- + +## 8. v2.0 백로그 + +### 8.1 메모 기능 고도화 +- 공유 메모 실시간 동기화 +- 개인 메모 기능 +- 메모 검색 및 필터 +- 메모 히스토리 추적 + +### 8.2 용어 사전 고도화 +- 사용자 직접 용어 검색 +- 용어 북마크 기능 +- 용어 설명 편집 기능 +- 과거 회의록 기반 자동 학습 +- 전체 RAG 시스템 구축 + +### 8.3 권한 관리 고도화 +- 세밀한 참석자 권한 설정 +- 안건별 편집 권한 제어 +- 참석자 강제 퇴장 기능 + +### 8.4 관련 회의록 고도화 +- 용어-회의록 연계 표시 +- 관련 문서 통합 검색 +- 프로젝트 문서/위키 연동 + +--- + +## 9. 결론 및 다음 단계 + +### 9.1 결론 +이번 개선안을 통해: +- ✅ MVP 범위 명확화 +- ✅ 핵심 가치 "업무지식 없어도 누락 없이" 실현 +- ✅ 개발 공수 45.5일 절감 +- ✅ 예산 및 일정 준수 + +### 9.2 다음 단계 +1. **유저스토리 업데이트** (design/userstory.md) + - 신규 스토리 추가 + - 기존 스토리 수정 + - v2.0 백로그 섹션 추가 + +2. **화면설계 업데이트** (design/uiux/uiux.md) + - 05-회의진행 화면 상세 명세 + - 인터랙션 시나리오 추가 + - 권한별 UI 조건 명시 + +3. **프로토타입 수정** (design/uiux/prototype/05-회의진행.html) + - 나가기 버튼 추가 + - 체크박스 방식 메모 구현 + - 용어 탭 구현 + - 관련 회의록 요약 표시 + +4. **백엔드 API 설계 반영** + - 권한 체크 API + - 체크 데이터 저장 API + - 용어 사전 API + - 관련 회의록 추천 API + +--- + +**보고서 종료** diff --git a/design/uiux/prototype/04-템플릿선택.html b/design/uiux/prototype/04-템플릿선택.html index ccb958e..7f22ccc 100644 --- a/design/uiux/prototype/04-템플릿선택.html +++ b/design/uiux/prototype/04-템플릿선택.html @@ -13,6 +13,32 @@ padding-bottom: 80px; } + /* 템플릿 그리드 */ + .template-list { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--space-md); + } + + /* 템플릿 카드 높이 균등 */ + .template-list .card { + display: flex; + flex-direction: column; + height: 100%; + } + + .template-list .card-body { + flex: 1; + } + + + /* 모바일: 작은 간격 */ + @media (max-width: 767px) { + .template-list { + gap: var(--space-sm); + } + } + /* 데스크톱: 메인 콘텐츠 조정 */ @media (min-width: 768px) { .main-content { @@ -41,18 +67,16 @@

회의 유형에 맞는 템플릿을 선택하세요

- -
+ +
-
-
-
📋
-
-

일반 회의

-

기본 회의록 형식

-
+
+
+ 📋 + 일반 회의
+
기본 회의록 형식
@@ -63,21 +87,18 @@
-
-
-
🏃
-
-

스크럼 회의

-

데일리 스탠드업 형식

-
+
+
+ 🏃 + 스크럼 회의
+
데일리 스탠드업 형식
@@ -87,21 +108,18 @@
-
-
-
🚀
-
-

킥오프 회의

-

프로젝트 시작 회의

-
+
+
+ 🚀 + 킥오프 회의
+
프로젝트 시작 회의
@@ -112,21 +130,18 @@
-
-
-
📅
-
-

주간 회의

-

주간 리뷰 및 계획

-
+
+
+ 📅 + 주간 회의
+
주간 리뷰 및 계획
@@ -137,72 +152,12 @@
- - - - - - - - diff --git a/design/uiux/prototype/05-회의진행.html b/design/uiux/prototype/05-회의진행.html index 56ec599..4697f5e 100644 --- a/design/uiux/prototype/05-회의진행.html +++ b/design/uiux/prototype/05-회의진행.html @@ -94,6 +94,11 @@ 50% { opacity: 0.3; } } + .recording-indicator.paused .recording-dot, + .recording-indicator.paused .waveform-bar { + animation-play-state: paused; + } + .recording-time { font-size: var(--font-small); font-weight: var(--font-weight-medium); @@ -129,18 +134,23 @@ flex: 1; overflow-y: auto; background: var(--gray-100); - padding: 0 var(--space-md) 10px; + padding: var(--space-md); + padding-bottom: 88px; /* 하단 버튼 영역 확보 */ + max-width: none !important; /* common.css의 max-width: 900px 오버라이드 */ + margin: 0 !important; /* common.css의 auto margin 제거 */ } @media (min-width: 768px) { .main-content { - padding: 0 var(--space-lg) 88px; + padding: var(--space-lg); + padding-bottom: 88px; } } @media (min-width: 1024px) { .main-content { - padding: 0 var(--space-xl) 88px; + padding: var(--space-xl); + padding-bottom: 88px; } } @@ -151,6 +161,8 @@ padding: var(--space-md); margin-bottom: var(--space-md); box-shadow: var(--shadow-md); + width: 100%; + box-sizing: border-box; } .meeting-info-grid { @@ -192,6 +204,11 @@ border-radius: var(--radius-lg); box-shadow: var(--shadow-md); margin-bottom: var(--space-md); + width: 100%; + max-width: 100%; + min-width: 0; + box-sizing: border-box; + display: block; } .tabs-header { @@ -248,22 +265,19 @@ .tab-content { display: none; padding: var(--space-md); + width: 100%; + box-sizing: border-box; } .tab-content.active { display: block; } - @media (min-width: 768px) { - .tab-content { - padding: var(--space-lg); - } - } - - @media (min-width: 1024px) { - .tab-content { - padding: var(--space-xl); - } + /* 모든 탭 콘텐츠 내부 요소 텍스트 줄바꿈 강제 */ + .tab-content * { + max-width: 100%; + word-wrap: break-word; + overflow-wrap: break-word; } /* 참석자 탭 */ @@ -437,6 +451,26 @@ line-height: 1.5; } + /* 용어 검색 폼 */ + .term-search-form { + display: flex; + gap: var(--space-xs); + margin-bottom: var(--space-sm); + } + + .term-search-input { + flex: 1; + font-size: var(--font-small); + padding: var(--space-sm); + } + + .term-search-btn { + padding: var(--space-sm) var(--space-md); + font-size: var(--font-small); + white-space: nowrap; + flex-shrink: 0; + } + /* 용어 사전 카드 */ .term-item { background: #FAFAFA; @@ -564,6 +598,11 @@ height: 32px; } + .rec-icon { + width: 32px; + height: 32px; + } + .end-meeting-btn { flex: 1; font-size: var(--font-body); @@ -580,7 +619,7 @@
-
+
00:15:51
@@ -708,7 +747,7 @@

- 💬 AI가 실시간으로 분석한 제안사항 + 💬 AI가 실시간으로 분석한 주요 내용

@@ -757,8 +796,21 @@

용어 사전

+ +
+ + +
+
-
+
MVP 기획 @@ -769,7 +821,7 @@
신제품 기획 회의에서 언급
-
+
B2C 비즈니스 @@ -780,7 +832,7 @@
타겟 고객 분석 시 사용
-
+
PMF 전략 @@ -791,7 +843,7 @@
제품 전략 논의 중 언급
-
+
CAC 마케팅 @@ -801,6 +853,102 @@
마케팅 예산 논의에서 사용
+
+ +
+
+
+ Mobile First + 설계 방법론 + 💬 +
+
+ 모바일 환경을 우선적으로 고려하여 디자인하고, 이후 더 큰 화면으로 확장하는 설계 방법론입니다. +
+
회의에서 언급됨 (14:23)
+
+ +
+
+ AI + 기술 + 💬 +
+
+ Artificial Intelligence의 약자로, 인공지능을 의미합니다. 이 프로젝트에서는 회의록 자동 작성에 활용됩니다. +
+
회의에서 5회 언급됨
+
+ +
+
+ API + 기술 + 💬 +
+
+ Application Programming Interface의 약자로, 소프트웨어 간 상호작용을 위한 인터페이스입니다. +
+
회의에서 3회 언급됨
+
+ +
+
+ API Gateway + 아키텍처 + 💬 +
+
+ 클라이언트와 백엔드 마이크로서비스 사이의 단일 진입점 역할을 하는 서버. 요청 라우팅, 인증, 속도 제한, 로드 밸런싱 등을 처리합니다. +
+
API 설계 리뷰 회의 (2024-09-28)에서 AWS API Gateway 채택 결정
+
+ +
+
+ 마이크로서비스 + 아키텍처 + 💬 +
+
+ 애플리케이션을 작고 독립적인 서비스들로 분리하여 개발하고 배포하는 아키텍처 패턴입니다. +
+
회의에서 언급됨
+
+ +
+
+ MVP + 방법론 + 💬 +
+
+ Minimum Viable Product의 약자. 최소한의 기능만 갖춘 제품으로, 시장 반응을 빠르게 확인하기 위해 개발합니다. +
+
개발 일정 논의에서 언급
+
+ +
+
+ RESTful API + 기술 +
+
+ REST(Representational State Transfer) 아키텍처 스타일을 따르는 웹 서비스 API 설계 방식입니다. +
+
API 설계 리뷰 회의 참조
+
+ +
+
+ JWT + 보안 +
+
+ JSON Web Token의 약자. 사용자 인증 정보를 안전하게 전송하기 위한 토큰 기반 인증 방식입니다. +
+
API Gateway 보안 정책에서 채택
+
@@ -852,11 +1000,12 @@
-