# 회의록 작성 및 공유 개선 서비스 - UI/UX 설계서 ## 문서 정보 - **작성일**: 2025-10-21 - **최종 수정일**: 2025-10-29 - **작성자**: 이미준 (서비스 기획자) - **버전**: 1.6.0 - **설계 철학**: Mobile First Design --- ## 목차 1. [설계 개요](#설계-개요) 2. [프로토타입 화면 목록](#프로토타입-화면-목록) 3. [화면 간 사용자 플로우](#화면-간-사용자-플로우) 4. [화면 설계 표준](#화면-설계-표준) 5. [화면별 상세 설계](#화면별-상세-설계) 6. [공통 UI 컴포넌트](#공통-ui-컴포넌트) 7. [인터랙션 패턴 라이브러리](#인터랙션-패턴-라이브러리) 8. [공통 에러 메시지 표준](#공통-에러-메시지-표준) 9. [화면 간 전환 및 네비게이션](#화면-간-전환-및-네비게이션) 10. [반응형 설계 전략](#반응형-설계-전략) 11. [접근성 보장 방안](#접근성-보장-방안) 12. [성능 최적화 방안](#성능-최적화-방안) 13. [변경 이력](#변경-이력) --- ## 설계 개요 ### 설계 목표 업무 지식이 없는 회의 참여자 누구라도 누락 없이 정확한 회의록을 작성하고 공유할 수 있는 직관적이고 효율적인 사용자 경험 제공 ### 설계 원칙 #### 1. Mobile First 철학 - **우선순위 중심**: 작은 화면에서 가장 중요한 콘텐츠와 기능에 집중 - **점진적 향상**: 모바일 기본 경험 우선 구축 후, 화면 크기에 따라 기능 확장 - **성능 최적화**: 모바일 환경의 제약사항(네트워크, 처리 능력) 우선 고려 #### 2. 사용자 중심 설계 - **직관적 인터페이스**: 최소한의 학습으로 사용 가능한 UI - **명확한 피드백**: 모든 사용자 액션에 대한 즉각적이고 명확한 피드백 - **오류 방지**: 실수를 사전에 방지하는 안전장치 제공 #### 3. 일관성과 예측 가능성 - **일관된 UI 패턴**: 동일한 기능은 항상 동일한 방식으로 표현 - **예측 가능한 동작**: 사용자가 기대하는 대로 동작 - **표준 준수**: 플랫폼별 디자인 가이드라인 준수 ### 유저스토리 매핑 - **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 [↑ 목차로 돌아가기](#목차) --- ## 프로토타입 화면 목록 | 번호 | 화면명 | 관련 유저스토리 | 중요도 | 사이드바 | 뒤로가기 | |------|--------|----------------|---------|----------|----------| | 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 | [↑ 목차로 돌아가기](#목차) --- ## 화면 간 사용자 플로우 ### 주요 시나리오 **시나리오 1: 새 회의 진행** ``` 로그인 → 대시보드 → 회의예약 → 템플릿선택 → 회의진행 → 회의종료 → 회의록수정(선택) → 대시보드 ``` **시나리오 2: 회의록 조회/수정** ``` 로그인 → 대시보드 → 회의록상세조회 → 회의록수정 → 대시보드 ``` **시나리오 3: 빠른 회의 시작** ``` 로그인 → 대시보드 → 회의진행(기본 템플릿) → 회의종료 → 대시보드 ``` [↑ 목차로 돌아가기](#목차) --- ## 화면 설계 표준 ### 공통 화면 구조 템플릿 #### 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 목록 - 검증완료율(작성중만) #### 상태 배지 - **진행중**: 빨강 배지, "진행중" - **예정**: 파랑 배지, "예정" - **작성중**: 주황 배지, "작성중" - **확정완료**: 초록 배지, "확정완료" [↑ 목차로 돌아가기](#목차) --- ## 화면별 상세 설계 ### 01-로그인 #### 개요 - **목적**: LDAP 인증 및 시스템 접근 - **관련 유저스토리**: UFR-USER-010 - **접근 경로**: 앱 최초 진입 #### 고유 기능 1. 사번/비밀번호 LDAP 인증 2. 로그인 상태 유지 옵션 3. 비밀번호 찾기/재설정 #### UI 구성 - **Mobile**: 중앙 정렬 로그인 폼 ([폼 레이아웃](#폼-레이아웃) 참조) - **Desktop**: 좌측 서비스 소개 + 우측 로그인 폼 #### 인터랙션 - [폼 검증 패턴](#폼-검증) 참조 - Enter 키 → 다음 필드 이동/로그인 실행 - 성공 시 대시보드로 페이드 전환 #### 데이터 - **입력**: 사번(문자열), 비밀번호(문자열, 최소 8자) - **출력**: 인증 토큰, 사용자 정보 - **연동**: User 서비스 #### 에러 - 인증 실패: "사번 또는 비밀번호가 올바르지 않습니다" - 계정 잠금: "계정이 일시적으로 잠겼습니다" - [네트워크 오류](#네트워크-오류), [서버 오류](#서버-오류) 참조 --- ### 02-대시보드 #### 개요 - **목적**: 주요 기능 허브, 최근 활동 요약 - **관련 유저스토리**: UFR-USER-020 - **접근 경로**: 로그인 후 메인 화면 #### 고유 기능 1. **통계 카드** (2개): 예정된 회의, 작성중 회의록 2. **최근 회의** (최대 3개): 진행중 우선 → 예정 → 완료 - 정렬: 회의록 미생성 우선, 빠른 일시 순 - 생성자 표시(👑), 상태 배지 3. **내 회의록** (최대 4개, 2x2 그리드) - 최근 생성 순, 상태 배지 - "전체 보기" → 12-회의록목록조회 #### UI 구성 - **헤더**: "안녕하세요 👋" + "오늘 N건의 회의가 예정되어 있어요" - **통계 카드**: [통계 카드 레이아웃](#통계-카드) 참조 (2개) - **네비게이션**: [하단 네비게이션](#mobile-하단-네비게이션-320px768px) / [사이드바](#desktop-좌측-사이드바-768px) 참조 #### 인터랙션 - **진행중 회의**: "참여하기" → 회의진행 화면 - **예정 회의 - 생성자**: 카드 클릭 → 회의예약(수정 모드) - **예정 회의 - 참여자**: 카드 클릭 → "아직 참여할 수 없습니다" 알럿 - **완료 회의**: 카드 클릭 → 회의록상세조회 - [카드 호버](#카드-인터랙션) 참조 #### 데이터 - **입력**: 사용자 ID, 현재 날짜/시간 - **출력**: - 통계: 예정/진행중 회의 수, 작성중 회의록 수 - 최근 회의: 회의 기본 정보 + 생성자 ID + 현재 사용자 역할 - 내 회의록: 회의록 정보 ([공통 데이터 타입](#공통-데이터-타입) 참조) - **연동**: Meeting 서비스 #### 에러 - 데이터 로딩 실패: 해당 카드에 "다시 시도" 버튼 - 부분 실패: 실패 섹션만 에러 표시 - 진행중 회의 참여 실패: "회의에 참여할 수 없습니다" + 원인별 안내 --- ### 03-회의예약 #### 개요 - **목적**: 회의 일정 등록 및 참여자 초대 - **관련 유저스토리**: UFR-MEET-010 - **접근 경로**: 대시보드 → "회의 예약" 또는 예정 회의 카드 클릭(생성자) #### 고유 기능 1. 회의 기본 정보 입력 (제목, 날짜/시간, 장소) 2. 참여자 추가 (이메일/조직도 검색) 3. 회의 안건 사전 입력 (선택) 4. 참여자 초대 이메일 자동 발송 #### UI 구성 - **헤더**: 뒤로가기, "회의 예약", "저장" - **폼**: [폼 레이아웃](#폼-레이아웃) 참조 - 제목(필수, 100자), 날짜/시간(필수), 장소(선택) - 참여자(필수, 최소 1명, 칩 UI) - 안건(선택, 다중 라인) #### 인터랙션 - **날짜/시간**: 달력 UI, 과거 비활성화, 충돌 감지 - **참여자 추가**: [참여자 관리 패턴](#참여자-관리) 참조 - **저장**: [폼 검증](#폼-검증) → 성공 토스트 → 대시보드 #### 데이터 - **입력**: 제목, 날짜, 시간, 장소, 참여자 이메일, 안건 - **출력**: 회의 ID, 초대 발송 결과 - **연동**: Meeting 서비스, Notification 서비스 #### 에러 - 필수 필드 누락: 빨간 테두리 + 오류 메시지 - 참여자 0명: "최소 1명의 참여자를 추가해주세요" - 과거 날짜: "과거 날짜는 선택할 수 없습니다" --- ### 04-템플릿선택 #### 개요 - **목적**: 회의록 템플릿 선택 및 커스터마이징 - **관련 유저스토리**: UFR-MEET-020 - **접근 경로**: 회의예약 → "회의 시작" 또는 대시보드 → "새 회의 시작" - **권한**: 회의 생성자 전용 #### 고유 기능 1. 사전 정의 템플릿 선택 (일반, 스크럼, 킥오프, 주간) 2. 템플릿 미리보기 3. 섹션 추가/삭제/순서 변경 4. 커스텀 템플릿 저장 #### UI 구성 - **헤더**: 뒤로가기, "템플릿 선택", "건너뛰기" - **템플릿 카드**: 이름, 아이콘, 설명, "선택"/"미리보기" 버튼 - **커스터마이징**: 섹션 목록(드래그 가능), "섹션 추가", "이 템플릿으로 시작" #### 인터랙션 - 템플릿 카드 클릭 → 상세 보기 - 섹션 드래그 → 순서 변경 - "선택" → 회의진행 화면 - [드래그 앤 드롭 패턴](#드래그-앤-드롭) 참조 #### 데이터 - **입력**: 회의 ID(선택) - **출력**: 선택된 템플릿 구조 - **연동**: Meeting 서비스 #### 에러 - 템플릿 로딩 실패: "다시 시도" 버튼 - 빈 템플릿: "최소 1개의 섹션 필요" --- ### 05-회의진행 #### 개요 - **목적**: 실시간 회의 진행 및 AI 회의록 자동 작성 - **관련 유저스토리**: UFR-MEET-030, UFR-STT-010/020, UFR-AI-010, UFR-AI-040, UFR-PART-020 - **접근 경로**: 대시보드 → "참여하기" 버튼 - **권한**: - 생성자: 회의 종료, 녹음 제어 - 참여자: 참여, AI 메모 작성, 용어 확인, 중도 퇴장 #### 고유 기능 1. 음성 STT 및 AI 자동 회의록 작성 2. **AI 기반 메모** (UFR-PART-020): AI가 감지한 주요 내용을 선택하여 개인 메모 저장 3. 전문용어 자동 감지 및 맥락 기반 설명 4. 참고자료 자동 연결 (관련 회의록 32건) 5. 참여자 관리 및 초대 #### UI 구성 - **헤더**: "회의 진행 중" + 경과시간 배지 + "회의 종료" - **탭 네비게이션** (4개) - 참여자 (인원수), AI 기반 메모, 용어 사전, 관련 자료(32건) #### 탭 콘텐츠 **참여자 탭**: - 참여자 추가 폼 (이메일 + "초대") - 참여자 목록 (아바타 + 이름) **AI 기반 메모 탭**: - 메모 입력창 + "저장" - AI가 감지한 주요 내용 리스트 ("[HH:MM] 내용") - 클릭 시 메모 입력창에 자동 추가 - 정책: 개인별 저장, 회의 종료 전까지만 표시 **용어 사전 탭**: - 검색 입력창 - 용어 카드 (용어명 + 배지 + 정의 + 컨텍스트) - 언급된 용어는 민트 그린 배경 + 💬 아이콘 **관련 자료 탭**: - 관련 회의록 카드 (제목 + 날짜 + 관련도 + 요약) - 카드 클릭 → 새 탭 열기 #### 인터랙션 - 탭 전환: 클릭으로 콘텐츠 교체 - 참여자 초대: [참여자 관리 패턴](#참여자-관리) 참조 - AI 메모 저장: "저장" 클릭 → "N개 메모 저장됨" 토스트 - 용어 검색: 실시간 필터링 - 회의 종료: 확인 다이얼로그 → 07-회의종료 #### 데이터 - **입력**: 회의 ID, 오디오 스트림, 참여자 이메일 - **출력**: STT 텍스트, AI 주요 내용, 개인 메모, 용어 사전, 관련 회의록 - **연동**: STT, AI, RAG, PARTICIPANT 서비스 #### 에러 - 마이크 권한 거부: "마이크 권한 필요" + 설정 안내 - STT 실패: "음성 인식 실패" + 재시도 - 메모 저장 실패: "메모 저장 실패" + 재시도 - 용어/자료 로드 실패: 빈 상태 메시지 --- ### 07-회의종료 #### 개요 - **목적**: AI 요약 확인 및 다음 단계 선택 - **관련 유저스토리**: UFR-MEET-040, UFR-MEET-050, UFR-AI-010, UFR-AI-020, UFR-AI-036 - **접근 경로**: 회의진행 → "회의 종료" - **권한**: 회의 생성자 전용 - **정책**: 확인 전용 화면 (편집 불가) #### 고유 기능 1. 회의 통계 (시간, 참여자, 키워드) 2. **안건별 AI 요약 전체 표시** - AI 한줄 요약 (30자, 읽기 전용, 🔒) - 상세 요약 정리 - Todo 자동 추출 결과 3. **3가지 선택 옵션** - 회의록 수정 (11번 화면) - 바로 최종 확정 (모든 안건 자동 검증완료) - 대시보드로 이동 (작성중 상태 유지) #### UI 구성 - **헤더**: "회의가 종료되었습니다" + 회의 제목 - **통계 카드**: 회의 시간, 참여자, 키워드 클라우드 - **안건 카드**: 제목 + AI 한줄 요약(회색 배경, 민트 그린 액센트) + 상세 요약 + Todo - **액션 바**: "회의록 수정"(Secondary), "바로 최종 확정"(Primary), "대시보드로 이동"(Ghost) #### 인터랙션 - 안건 카드 확장/축소 - AI 한줄 요약 호버 → "편집 불가" 툴팁 - **옵션 1**: 11-회의록수정 이동 (작성중 상태) - **옵션 2**: 확인 다이얼로그 → 모든 안건 검증완료 처리 → 확정완료 → 10-회의록상세조회 - **옵션 3**: 대시보드 이동 (작성중 상태) #### 데이터 - **입력**: 회의 ID - **출력**: 통계, 안건별 AI 요약(한줄 + 상세), Todo 목록, 회의록 상태 - **연동**: Meeting, AI 서비스 #### 에러 - 통계 생성 실패: "건너뛰기" 옵션 - AI 요약 실패: "회의록 수정 화면에서 직접 작성해주세요" - 바로 확정 실패: "다시 시도" 버튼 - [네트워크 오류](#네트워크-오류) 참조 (자동 재시도 3회) --- ### 10-회의록상세조회 #### 개요 - **목적**: 회의록 전체 내용 및 상세 정보 확인 - **관련 유저스토리**: UFR-MEET-047, UFR-AI-040, UFR-MEET-048 - **접근 경로**: 대시보드 → "내 회의록" 클릭 - **권한**: 모든 참여자 (조회 전용) #### 고유 기능 1. 회의 기본 정보 + 상태 배지 2. **2개 탭 구조**: 대시보드 / 회의록 3. **대시보드 탭**: 핵심내용, 결정사항, Todo, 참고자료 요약 4. **회의록 탭**: 안건별 구조 (AI 요약 + 내용 + 참고자료) #### UI 구성 - **헤더**: 뒤로가기, 회의 제목, "수정"(우측), 메뉴 - **기본 정보 카드**: 일시, 참여자, 장소, 상태, 작성자 - **탭 네비게이션**: 대시보드 (기본) / 회의록 **대시보드 탭**: - 핵심내용 (4-5개 포인트, 키워드 클라우드, 통계) - 결정사항 (카드 리스트) - Todo 진행상황 (제목 + 담당자 + 마감일만, D-day/우선순위 제거) - 참고자료 (관련 회의록/문서, 관련도 배지) **회의록 탭**: - 각 안건: 제목 + 검증 배지 + AI 요약(강조 박스) + 내용 + 참고자료(링크 리스트) #### 인터랙션 - 탭 전환: 클라이언트 사이드 렌더링 - 안건 네비게이션: 제목 클릭 → 스크롤 - AI 요약 편집: "수정" → 인라인 편집 (권한 있는 경우) - 참고자료 링크: 새 탭 열기, 관련도 색상 코딩 - "수정" 버튼: 11-회의록수정 - "공유" 버튼: 회의록공유 화면 #### 데이터 - **입력**: 회의록 ID, 활성 탭 - **출력**: - 회의 기본 정보, 안건별 AI 요약, 안건별 내용 - 참고자료 (회의록/문서, 관련도) - 대시보드 데이터 (핵심내용, 결정사항, Todo, 통계) - **연동**: Meeting, AI 서비스 #### 에러 - 회의록 로딩 실패: "다시 시도" - AI 요약 로딩 실패: 안건 내용은 정상 표시 - 참고자료 로딩 실패: 빈 상태 - 대시보드 로딩 실패: "다시 시도" - 권한 없음: "수정" 비활성화 --- ### 11-회의록수정 #### 개요 - **목적**: 회의록 조회 및 수정 - **관련 유저스토리**: UFR-MEET-055, UFR-AI-040, UFR-COLLAB-030 - **접근 경로**: 10-회의록상세조회 → "수정" 버튼 - **권한 제어**: - 검증완료 전: 모든 참여자 수정 가능 - 검증완료 후: 회의 생성자만 수정 가능 #### 고유 기능 1. 회의 기본 정보 수정 - 제목: 수정 가능 - 일시/장소: 읽기 전용 - 참여자: 생성자만 추가/삭제 2. **안건별 편집** - AI 요약 (한줄, 30자, 읽기 전용) - 텍스트 편집 영역 (안건 내용 자유 작성) - "AI 재생성" 버튼 (한줄 요약 재생성, 2-5초) - 참고자료 추가/제거 3. **Todo 단순 조회** (제목 + 담당자 + 마감일만) 4. **안건별 검증 완료 체크박스** - 생성자: 체크박스 활성, 잠금 해제 가능 - 참여자: 검증완료 안건 읽기 전용 5. 자동 저장 (30초 간격) 6. 상태 변경 (확정완료 → 작성중) #### UI 구성 - **헤더**: 뒤로가기, "회의록 수정", "저장", 자동 저장 인디케이터 - **기본 정보**: 제목(편집), 일시(읽기), 장소(읽기), 참여자(생성자만 편집) - **안건 편집**: - 헤더 (제목 + 검증 배지) - AI 요약 (읽기 전용, 회색 배경, 민트 액센트) - 텍스트 편집 (textarea) + "AI 재생성" - 참고자료 편집 ("참고자료 추가") - Todo 섹션 (읽기 전용) - 검증 영역 (체크박스 + "잠금 해제") #### 인터랙션 - 화면 진입: 권한 확인 (검증완료 후 생성자만) - 내용 수정: 자동 저장 30초, "저장" 수동 - **AI 한줄 요약**: 읽기 전용, 호버 → "편집 불가" 툴팁 - **AI 재생성**: 텍스트 편집 내용 기반으로 한줄 요약 재생성 - **안건별 검증**: - 생성자: 체크박스 클릭 → 검증완료/미검증 토글 - 생성자: "잠금 해제" → 확인 다이얼로그 → 편집 가능 - 참여자: 검증완료 안건 모든 필드 disabled - **참고자료 편집**: [참고자료 관리 패턴](#참고자료-관리) 참조 - **저장 로직**: 검증완료 안건 스킵, "N개 안건 저장, M개 스킵" 알림 - **충돌 방지**: Last Write Wins (안건별 독립) #### 데이터 - **입력**: 회의록 ID, 수정 내용, AI 요약 수정, 참고자료 변경, 안건별 검증 상태 - **출력**: 수정 결과, AI 한줄 요약(읽기), AI 상세 요약 재생성 결과, 수정 이력 - **연동**: Meeting, AI(UFR-AI-036, UFR-AI-040), COLLAB 서비스 #### 에러 - 권한 없음: "본인이 작성한 회의록만 수정 가능" - 자동 저장 실패: "네트워크 확인, 로컬 임시 저장" - AI 재생성 실패: "수동 작성해주세요" - 참고자료 검색 실패: "회의록 검색 불가" - 검증완료 저장 시도: 스킵 알림 + 목록 표시 --- ### 12-회의록목록조회 #### 개요 - **목적**: 회의록 목록 조회 및 필터링/정렬/검색 - **관련 유저스토리**: UFR-MEET-046 - **접근 경로**: 대시보드 → "전체 보기" 또는 하단 네비게이션 → "회의록" - **권한**: 모든 참여자 (본인 참여 회의록만) #### 고유 기능 1. **필터링**: 참여 유형 (전체/참여/생성), 상태 (전체/작성중/확정완료) 2. **정렬**: 최근수정순 (기본), 최근회의순, 제목순 3. **검색**: 제목, 참여자, 키워드 통합 검색 (실시간) 4. **페이지네이션**: 초기 10개, "10개 더보기" #### UI 구성 - **헤더**: 뒤로가기, "내 회의록", 검색 아이콘 - **필터/정렬**: - 필터 행 (2컬럼): 상태 Select + 정렬 Select - 참여 유형 탭 (선택): 전체/참여/생성 - **검색**: "회의 제목, 참여자, 키워드 검색" placeholder - **통계 카드** (3컬럼): 전체, 작성중, 확정완료 개수 - **회의록 목록**: - 각 항목: 제목 + 생성자(👑) + 일시/참여자 + 검증완료율(작성중만) + 수정시간 + 상태 배지 - 빈 상태: "검색 결과 없음" / "회의록 없음" - **네비게이션**: [하단 네비게이션](#mobile-하단-네비게이션-320px768px) / [사이드바](#desktop-좌측-사이드바-768px) 참조 #### 인터랙션 - 필터/정렬 변경 → 즉시 재렌더링 - 검색 입력 → 실시간 (debounce 300ms) - 회의록 클릭 → 10-회의록상세조회 - 통계 자동 갱신 (필터/검색 적용 시) #### 데이터 - **입력**: 사용자 ID, 필터(참여 유형, 상태), 정렬, 검색어 - **출력**: 회의록 목록 (회의 기본 정보 + 생성자 ID + 조회 권한), 통계 (전체/작성중/확정완료 개수) - **연동**: Meeting 서비스 #### 에러 - 데이터 로딩 실패: "다시 시도" 버튼 - 검색 실패: 토스트, 기존 목록 유지 - [네트워크 오류](#네트워크-오류) 참조 (자동 재시도 3회) - 권한 없음: 클릭 시 "접근 권한 없음" 토스트 - 빈 상태: "검색 결과 없음" / "조건에 맞는 회의록 없음" / "회의록 없음 + 회의 시작 버튼" [↑ 목차로 돌아가기](#목차) --- ## 공통 UI 컴포넌트 ### 네비게이션 #### Mobile 하단 네비게이션 (320px~768px) - **위치**: Fixed, 하단 (64px) - **구성**: 2개 항목 균등 분할 - 홈 (🏠, "홈", 대시보드) - 회의록 (📋, "회의록", 회의록 목록) - **활성 상태**: 민트 그린 (#4DD5A7) - **비활성**: 회색 (#6B7280) #### Desktop 좌측 사이드바 (768px+) - **위치**: Fixed, 좌측 (240px) - **구성**: - 상단: 로고 + 서비스명 - 메인 메뉴: 대시보드, 내 회의록 - 하단: 사용자 정보 + 로그아웃 #### 상단 헤더 (공통) - **위치**: Sticky, 상단 - **구성**: 뒤로가기(조건부), 타이틀, 액션 버튼 - **Mobile 전용**: 우측 프로필 아이콘(👤) → 드롭다운 (이름 + 로그아웃) - **Desktop**: 프로필 숨김 (사이드바 사용) [↑ 목차로 돌아가기](#목차) --- ## 인터랙션 패턴 라이브러리 ### 폼 검증 - **실시간 검증**: 입력 시 형식 오류 즉시 표시 - **제출 검증**: 빈 필드 → 해당 필드로 포커스 - **오류 표시**: 필드 하단 빨간 텍스트 (14px) ### 카드 인터랙션 - **기본**: 배경 흰색, 테두리 회색, 둥글기 8px - **호버**: 그림자 증가, 약간 상승 (translateY(-2px)) - **클릭**: 해당 상세 화면으로 이동 ### 참여자 관리 - **추가 폼**: 이메일 입력 + "초대" 버튼 - **유효성 검증**: 이메일 정규식 체크 - **성공**: "{email}에게 초대 링크 전송" 토스트 - **참여자 목록**: 아바타 + 이름, 삭제(×) 버튼 ### 참고자료 관리 - **추가**: "참고자료 추가" → 회의록 검색 모달 → 선택 추가 - **제거**: X 버튼 클릭 - **순서 변경**: 드래그 앤 드롭 (선택) ### 드래그 앤 드롭 - **터치**: 길게 누르기 → 드래그 시작 - **마우스**: 클릭 드래그 - **피드백**: 드래그 중 반투명, 드롭 위치 표시 ### 모달 표시 - **Mobile**: 바텀시트 (하단 슬라이드 업) - **Desktop**: 중앙 모달 - **닫기**: Esc 키, 배경 클릭, X 버튼 ### 로딩 상태 - **스켈레톤 UI**: 리스트 로딩 중 표시 - **로딩 인디케이터**: 버튼 클릭 시 스피너 - **프로그레스 바**: 파일 업로드/다운로드 [↑ 목차로 돌아가기](#목차) --- ## 공통 에러 메시지 표준 ### 네트워크 오류 - **메시지**: "네트워크 연결을 확인해주세요" - **재시도**: 자동 3회 (1s, 2s, 4s exponential backoff) - **UI**: 빨강 토스트 + "다시 시도" 버튼 ### 데이터 로딩 실패 - **메시지**: "일시적으로 데이터를 불러올 수 없습니다" - **UI**: 빈 상태 화면 + "다시 시도" 버튼 ### 권한 오류 - **메시지**: "접근 권한이 없습니다" - **액션**: 3초 후 이전 화면 또는 대시보드 복귀 - **UI**: 주황 토스트 ### 인증 오류 - **메시지**: "로그인이 필요합니다" - **액션**: 로그인 화면 리다이렉트 - **UI**: 파랑 토스트 ### 입력 검증 오류 - 이메일: "올바른 이메일 형식이 아닙니다" - 필수 입력: "필수 항목을 입력해주세요" - 날짜: "올바른 날짜 형식이 아닙니다 (YYYY-MM-DD)" - **UI**: 입력 필드 하단 빨강 메시지 ### 서버 오류 - **메시지**: "서버에 일시적인 문제가 발생했습니다" - **UI**: 빨강 토스트 + "다시 시도" 버튼 - **로깅**: Sentry로 오류 전송 [↑ 목차로 돌아가기](#목차) --- ## 화면 간 전환 및 네비게이션 ### 네비게이션 구조 - **Mobile**: [하단 네비게이션](#mobile-하단-네비게이션-320px768px) + [상단 헤더](#상단-헤더-공통) - **Desktop**: [좌측 사이드바](#desktop-좌측-사이드바-768px) + Breadcrumbs(선택) ### 전환 애니메이션 - **화면 전환**: 페이드/슬라이드 (200-300ms) - **모달**: 페이드 인 + 스케일 (150ms) - **탭 전환**: 페이드 (100ms) - **리스트 로딩**: 스켈레톤 UI → 페이드 인 ### 딥 링크 - 회의록: `/minutes/{minuteId}` - Todo: `/todo/{todoId}` - 공유: `/share/{shareToken}` [↑ 목차로 돌아가기](#목차) --- ## 반응형 설계 전략 ### 브레이크포인트 - **Mobile**: 320px ~ 767px - **Tablet**: 768px ~ 1023px - **Desktop**: 1024px+ ### 레이아웃 전략 1. **320px 기준**: 단일 컬럼, 필수 기능만, 하단 네비게이션 2. **768px 확장**: 2컬럼, 추가 정보, 사이드바 도입 3. **1024px 최적화**: 3컬럼, 좌측 사이드바, 마우스/키보드 강화 ### 컴포넌트별 반응형 - **폼**: Mobile 단일 → Desktop 2컬럼 + 미리보기 - **리스트**: Mobile 스택 → Tablet 2컬럼 → Desktop 3컬럼 그리드 - **테이블**: Mobile 카드 변환 → Desktop 고정 헤더 테이블 ### 이미지 및 미디어 - Responsive Images: srcset - Lazy Loading: Intersection Observer - 최적화: WebP, 압축 [↑ 목차로 돌아가기](#목차) --- ## 접근성 보장 방안 ### WCAG 2.1 Level AA 준수 #### 1. Perceivable - **텍스트 대안**: 모든 이미지 alt - **색상 대비**: 4.5:1 (일반), 3:1 (대형) - **텍스트 크기**: 200% 확대 가능 - **색상 독립**: 아이콘/텍스트 병행 #### 2. Operable - **키보드**: Tab, Shift+Tab, Enter/Space, Esc - **포커스**: 2px 파란 테두리 - **터치 영역**: 최소 44x44px - **시간 제한**: 자동 저장으로 방지 #### 3. Understandable - **명확한 레이블**: 모든 입력 필드 - **오류 안내**: 명확한 설명 + 해결 방법 - **일관된 UI**: 동일 기능 = 동일 위치/아이콘 #### 4. Robust - **시맨틱 HTML**: header, nav, main, aside, footer - **ARIA**: role, aria-label, aria-describedby, aria-live - **호환성**: 최신 브라우저 + 보조 기술 ### 테스트 - 자동: Lighthouse, axe DevTools - 수동: 키보드, 스크린 리더 (NVDA, JAWS, VoiceOver) [↑ 목차로 돌아가기](#목차) --- ## 성능 최적화 방안 ### 1. 로딩 성능 - **Code Splitting**: 라우트별 청크 - **Lazy Loading**: 이미지(Intersection Observer), 컴포넌트(React.lazy) - **Pre-fetching**: 다음 화면 리소스 - **CDN**: 정적 리소스 배포 ### 2. 렌더링 성능 - **Virtual Scrolling**: 긴 리스트 - **Debounce/Throttle**: 검색(300ms), 스크롤(100ms) - **Memoization**: React.memo, useMemo, useCallback - **CSS 애니메이션**: JavaScript 대신 ### 3. 네트워크 최적화 - **API**: 필요 데이터만, 배치 요청 - **캐싱**: Cache-Control, Service Worker, React Query - **압축**: Gzip, Brotli ### 4. 실시간 동기화 - **WebSocket**: Delta 전송, 배치 업데이트, 지수 백오프 - **Conflict Resolution**: OT 또는 CRDT ### 5. 성능 모니터링 - **Core Web Vitals**: LCP <2.5s, FID <100ms, CLS <0.1 - **모니터링**: Sentry, Google Analytics ### 목표 - FCP: <1.5s, TTI: <3.5s - Page Load (3G): <5s - STT: <1s, 실시간 동기화: <500ms [↑ 목차로 돌아가기](#목차) --- ## 변경 이력 | 버전 | 날짜 | 작성자 | 변경 내용 요약 | |------|------|--------|----------------| | 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% 절감) [↑ 목차로 돌아가기](#목차) --- **문서 끝**