hgzero/design/userstory.md
yabo0812 96a4d74a43 용어 통일: 참석자/참석 → 참여자/참여 변경 (v1.5.9)
- 화면설계서(uiux.md): 100개 인스턴스 변경
  - "참석자" → "참여자" (88개)
  - "참석" → "참여" (12개)
- 유저스토리(userstory.md): 132개 인스턴스 변경
  - "참석자" → "참여자" (125개)
  - "참석" → "참여" (7개)
- 프로토타입: 34개 인스턴스 변경 (7개 HTML 파일)
  - "참석자" → "참여자" (32개)
  - "참석" → "참여" (2개)

총 266개 인스턴스 변경으로 사용자 역할 용어 완전 통일 (생성자/참여자 체계)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 20:03:30 +09:00

58 KiB

AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.4.5)

목차


1. 프로젝트 개요

1.1 차별화 전략

본 서비스는 다음과 같은 차별화 포인트를 통해 경쟁 우위를 확보합니다:

1. 기본 기능 (Hygiene Factors)

  • STT(Speech To Text): 음성을 텍스트로 변환하는 기본 기능
    • 시장의 대부분 서비스가 제공하는 기능으로 차별화 포인트가 아님
    • 필수 기능이지만 경쟁 우위를 가져다주지 않음

2. 핵심 차별화 포인트 (Differentiators)

  • 맥락 기반 용어 설명: 단순 용어 설명을 넘어, 관련 회의록과 업무이력을 바탕으로 실용적인 정보 제공
  • 섹션 AI 요약 재생성: 버튼 클릭으로 작성한 섹션 내용을 AI가 요약 (2-3문장, 2-5초 처리)
  • 지능형 회의 진행 지원: 회의 패턴 분석을 통한 안건 추천, 효율성 분석 및 개선 제안

1.2 마이크로서비스 구성

  1. User - 사용자 인증 (LDAP 연동, JWT 토큰 발급/검증)
  2. Meeting - 회의, 회의록, Todo 통합 관리
    • 회의 관리: 회의 예약, 시작, 종료
    • 회의록 관리: 회의록 생성, 수정, 확정
    • 안건별 검증완료 및 잠금 처리 (Last Write Wins 정책)
    • 템플릿 관리: 회의록 템플릿 관리
    • 통계 생성: 회의 및 Todo 통계
  3. STT - 음성 스트리밍 처리, 실시간 음성-텍스트 변환 (기본 기능)
  4. AI - AI 기반 회의록 자동화, Todo 추출, 지능형 검색 (RAG 통합)
    • LLM 기반 회의록 자동 작성
    • Todo 자동 추출 및 담당자 식별
    • 안건별 AI 요약 재생성 (버튼 클릭 시 한줄 요약 생성)
    • 관련 회의록 자동 연결 (벡터 유사도 검색)
    • 전문용어 자동 감지 및 맥락 기반 설명 생성 (RAG)
    • 과거 회의록 및 사내 문서 검색
    • 업무 이력 통합
  5. Notification - 이메일 알림 발송 (회의 시작, 회의록 확정, 참여자 초대)

2. MVP 기능

2.1 User 서비스

UFR-USER-010: 🔴 [로그인] 사용자로서 | 나는, 시스템에 접근하기 위해 | 사번과 비밀번호로 로그인하고 싶다.

수행절차:

  1. 로그인 화면 접속
  2. 사번 입력 (필수)
  3. 비밀번호 입력 (필수, 최소 8자)
  4. (선택) 로그인 상태 유지 체크박스 선택
  5. 로그인 버튼 클릭
  6. 인증 성공 시 대시보드로 이동

입력:

  • 사번: 텍스트 입력, 필수, 공백 불가
  • 비밀번호: 패스워드 입력, 필수, 최소 8자 이상
  • 로그인 상태 유지: 체크박스 (선택)
  • Enter 키 입력 시 다음 필드로 자동 이동 (사번 → 비밀번호)

출력/결과:

  • 로그인 성공: JWT 토큰 발급, 사용자 정보 저장, 대시보드(02-대시보드.html)로 이동
  • 로그인 실패: 에러 메시지 표시 ("사번 또는 비밀번호가 올바르지 않습니다"), 5초 후 자동 숨김
  • 로딩 상태: 로그인 버튼 비활성화 및 "로그인 중..." 표시

예외처리:

  • 사번 미입력: "사번을 입력해주세요" 에러 표시 및 사번 필드 포커스
  • 비밀번호 미입력: "비밀번호를 입력해주세요" 에러 표시 및 비밀번호 필드 포커스
  • 비밀번호 8자 미만: "비밀번호는 최소 8자 이상이어야 합니다" 에러 표시
  • 인증 실패: 인증 실패 메시지 표시, 로그인 버튼 재활성화
  • 이미 로그인된 경우: 대시보드로 자동 리다이렉트

관련 유저스토리:

  • UFR-USER-020: 대시보드 조회

UFR-USER-020: 🟡 [대시보드] 사용자로서 | 나는, 나의 회의 현황을 파악하기 위해 | 대시보드를 조회하고 싶다.

수행절차:

  1. 로그인 후 대시보드 자동 표시 또는 하단 네비게이션에서 홈 아이콘 클릭
  2. 통계 블록 확인 (예정된 회의, 작성중 회의록)
  3. 최근 회의 목록 확인 (최대 3개)
  4. 나의 회의록 목록 확인 (최대 4개)
  5. 필요 시 "전체 보기" 링크 클릭하여 회의록 목록 화면 이동
  6. FAB 버튼으로 회의 예약 또는 바로 시작

입력:

  • 없음 (자동 렌더링)

출력/결과:

  • 헤더: 사용자 이름, 오늘 예정된 회의 개수 또는 안내 메시지
  • 통계 블록 (2열 그리드):
    • 예정된 회의: 전체 예정 + 진행 중 회의 개수
    • 작성중 회의록: 내가 참여한 회의 중 '작성중' 상태인 회의록 개수 (클릭 액션 없음, 정보 표시만)
  • 최근 회의 (회의록 미생성 우선, 빠른 일시 순, 최대 3개):
    • 정렬 기준:
      • 1순위: 회의록 미생성 회의 (진행중 + 예정)
      • 2순위: 미생성이 3개 미만이면 최근 종료된 회의(회의록 있음)로 나머지 채움
      • 각 그룹 내 정렬: 빠른 일시 순 (시작 시간 기준)
    • 회의 카드 (클릭 가능 블록): 상태 라벨, 제목, 생성자(👑), 날짜/시간, 참여자 수, 장소, 상태 버튼
      • 진행중: "진행중" 라벨, "참여하기" 버튼
      • 예정: "예정" 라벨, 버튼 없음 (카드 클릭으로 처리)
        • 생성자: 카드 클릭 시 회의예약 화면(수정 모드)으로 이동
        • 참여자: 카드 클릭 시 시스템 알럿 표시 ("아직 회의 시간이 되지 않아 참여하실 수 없습니다")
      • 완료: "작성중" 또는 "확정완료" 라벨, "보기" 버튼
  • 나의 회의록 (최신순, 최대 4개, 2x2 그리드):
    • 회의록 카드: 상태 배지, 생성자 표시(👑), 제목, 날짜/시간, 참여자 수, 검증완료율(작성중인 경우)
  • 사이드바 (데스크톱): 로고, 메뉴(대시보드, 회의록), 사용자 정보, 로그아웃
  • 하단 네비게이션 (모바일): 홈(활성), 회의록
  • FAB 메뉴:
    • 회의예약 버튼: 회의 예약 화면으로 이동
    • 바로시작 버튼: 템플릿 선택 화면으로 이동

예외처리:

  • 로그인 안 된 경우: 로그인 화면으로 리다이렉트
  • 최근 회의 없음: 빈 상태 표시
  • 회의록 없음: "참여한 회의록이 없습니다" 빈 상태 표시
  • 참여자가 예정 회의 클릭: "아직 회의 시간이 되지 않아 참여하실 수 없습니다" 시스템 알럿 표시 (다음 버전에서 회의 상세 조회 기능으로 개선 예정)

관련 유저스토리:

  • UFR-USER-010: 로그인
  • UFR-MEET-010: 회의예약
  • UFR-MEET-011: 회의정보수정
  • UFR-MEET-020: 템플릿선택
  • UFR-MEET-046: 회의록목록조회
  • UFR-MEET-047: 회의록상세조회

2.2 Meeting 서비스

UFR-MEET-010: 🔴 [회의예약] 회의 생성자로서 | 나는, 회의를 효율적으로 준비하기 위해 | 회의를 예약하고 참여자를 초대하고 싶다.

수행절차:

  1. 대시보드에서 "회의예약" FAB 버튼 클릭 또는 최근 회의에서 "수정" 버튼 클릭
  2. 회의 제목 입력 (최대 100자)
  3. 날짜 선택 (오늘 이후 날짜, 달력 UI)
  4. 시작/종료 시간 선택 (15분 단위 커스텀 시간 선택기)
  5. 온라인/오프라인 회의 선택 (토글)
  6. 장소 입력 (최대 200자)
    • 오프라인: 예) 본사 2층 대회의실
    • 온라인: 예) Zoom, Google Meet + 회의 링크 입력 또는 자동 생성
  7. 참여자 추가 (현재 사용자는 기본 포함)
    • "참여자 추가" 버튼 클릭
    • 검색 모달에서 이름 또는 이메일로 검색
    • 사용자 선택하여 추가
    • 칩으로 표시, X 버튼으로 제거 가능 (본인 제외)
  8. (선택) 안건 입력 (텍스트 영역)
  9. "예약 완료" 버튼 클릭

입력:

  • 회의 제목: 텍스트 입력, 필수, 최대 100자, 문자 카운터 표시
  • 날짜: date 타입, 필수, 오늘 이후 날짜만 선택 가능, 달력 아이콘(📅) 표시
  • 시작 시간: 커스텀 시간 선택기 (readonly), 필수, 15분 단위 (00, 15, 30, 45)
  • 종료 시간: 커스텀 시간 선택기 (readonly), 필수, 15분 단위
  • 온라인 회의: 토글 스위치 (선택)
  • 장소: 텍스트 입력, 선택, 최대 200자, 문자 카운터 표시
  • 회의 링크: URL 입력, 선택, 온라인 회의인 경우에만 표시, "자동 생성" 버튼 제공
  • 참여자: 검색 모달, 필수 (최소 1명), 현재 사용자는 기본 포함
  • 안건: 텍스트 영역 (textarea), 선택, 여러 줄 입력 가능

출력/결과:

  • 예약 완료: "회의가 예약되었습니다" 토스트 메시지, 대시보드로 이동
  • 참여자 추가 성공: "{이름}님이 추가되었습니다" 토스트 메시지
  • 회의 링크 생성: "회의 링크가 생성되었습니다" 토스트 메시지

예외처리:

  • 제목 미입력: "회의 제목을 입력해주세요" 토스트, 제목 필드 포커스
  • 날짜 미선택: "회의 날짜를 선택해주세요" 토스트, 날짜 필드 포커스
  • 시간 미선택: "회의 시간을 선택해주세요" 토스트
  • 참여자 없음: "최소 1명의 참여자를 추가해주세요" 토스트
  • 과거 날짜 선택: "과거 날짜는 선택할 수 없습니다" 토스트, 날짜 필드 포커스
  • 뒤로가기/취소 클릭: "작성 중인 내용이 있습니다. 나가시겠습니까?" 확인 모달
  • 참여자 검색 결과 없음: "검색 결과가 없습니다" 빈 상태 표시

관련 유저스토리:

  • UFR-USER-020: 대시보드 조회
  • UFR-MEET-011: 회의정보수정
  • UFR-MEET-020: 템플릿선택

UFR-MEET-011: 🟡 [회의정보수정] 회의 생성자로서 | 나는, 예정된 회의 정보를 변경하기 위해 | 회의 정보를 수정하고 싶다.

수행절차:

  1. 대시보드(02-대시보드.html)에서 예정된 회의(scheduled) 카드 클릭 (생성자만 가능)
  2. 회의예약 화면(03-회의예약.html)으로 이동 (기존 회의 정보 로드)
  3. 수정할 항목 변경 (제목, 날짜, 시간, 장소, 참여자, 안건 등)
  4. "수정 완료" 버튼 클릭
  5. 변경 사항 저장 및 참여자에게 알림 발송

입력:

  • 기존 회의 정보: 자동 로드 (제목, 날짜, 시간, 장소, 참여자, 안건)
  • 수정 항목: UFR-MEET-010과 동일한 입력 필드

출력/결과:

  • 수정 완료: "회의 정보가 수정되었습니다" 토스트 메시지, 대시보드로 이동
  • 참여자 변경 시: 기존 참여자 및 신규 참여자에게 알림 발송
    • 알림 유형: "회의 정보 변경"
    • 알림 내용: "{회의 제목} 회의 정보가 변경되었습니다"

예외처리:

  • 회의 상태가 'scheduled'가 아닌 경우: "진행 중이거나 종료된 회의는 수정할 수 없습니다" 에러 메시지
  • 생성자가 아닌 경우: "회의 생성자만 수정할 수 있습니다" 에러 메시지
  • 유효성 검사 실패: UFR-MEET-010과 동일한 예외처리
  • 뒤로가기/취소 클릭: "변경 사항이 저장되지 않았습니다. 나가시겠습니까?" 확인 모달

관련 유저스토리:

  • UFR-USER-020: 대시보드 조회
  • UFR-MEET-010: 회의예약
  • UFR-NOTI-010: 알림발송

UFR-MEET-015: 🟢 [회의진행 중 참여자 초대] 회의 참여자로서 | 나는, 회의 중 추가 참여자가 필요할 때 | 실시간으로 참여자를 초대하고 싶다.

수행절차:

  1. 회의 진행 화면(05-회의진행.html)에서 "참여자" 탭 클릭
  2. "초대" 버튼 클릭
  3. 검색 모달에서 이름 또는 이메일로 검색
  4. 사용자 선택하여 초대
  5. 초대된 참여자 실시간 표시
  6. 초대된 참여자에게 알림 전송

입력:

  • 검색어: 텍스트 입력, 이름 또는 이메일로 검색
  • 선택: 검색 결과 목록에서 사용자 클릭

출력/결과:

  • 초대 성공: 참여자 목록에 실시간 추가, "{이름}님을 초대했습니다" 토스트 메시지
  • 초대된 참여자에게 알림 대상 생성:
    • 알림 유형: "회의 참여자 초대"
    • 알림 내용: "{회의 제목}에 참여자로 초대되었습니다"
    • 수신자: 초대된 참여자
    • 발송 예정 시각: 즉시
  • Notification 서비스가 주기적으로 폴링하여 이메일 발송
  • 모든 참여자에게 참여자 변경 사항 실시간 동기화 (WebSocket)

예외처리:

  • 검색 결과 없음: "검색 결과가 없습니다" 빈 상태 표시
  • 이미 참여 중인 사용자: 선택 불가 또는 "이미 참여 중입니다" 안내
  • 네트워크 오류: "초대에 실패했습니다" 에러 메시지

관련 유저스토리:

  • UFR-MEET-030: 회의시작

UFR-MEET-020: 🟡 [템플릿선택] 회의 생성자로서 | 나는, 회의록을 효율적으로 작성하기 위해 | 회의 유형에 맞는 템플릿을 선택하고 싶다.

템플릿선택 진입 경로:

  • 경로 1: 대시보드(02-대시보드.html) → "바로시작" FAB 버튼 → 템플릿 선택(04-템플릿선택.html)
  • 경로 2: 회의예약 (03-회의예약.html) → 템플릿 선택(04-템플릿선택.html)

수행절차:

  1. 위 경로 중 하나를 통해 템플릿 선택 화면(04-템플릿선택.html) 진입
  2. 4가지 템플릿 중 선택 또는 "건너뛰기" 선택
    • 일반 회의: 회의 개요, 논의 사항, 결정 사항, 액션 아이템
    • 스크럼 회의: 어제 한 일, 오늘 할 일, 블로커/이슈
    • 킥오프 회의: 프로젝트 개요, 목표 및 범위, 역할 및 책임, 일정 및 마일스톤
    • 주간 회의: 지난주 성과, 이번주 계획, 주요 이슈, 다음 액션
  3. 선택 완료 시 회의 시작 (05-회의진행.html로 이동)

입력:

  • 템플릿 선택: 4가지 중 1개 선택 또는 건너뛰기
  • 템플릿 카드 클릭 시 해당 템플릿 선택

출력/결과:

  • 템플릿 선택: 선택한 템플릿으로 회의 시작, 회의 진행 화면으로 이동
  • 건너뛰기: 기본 템플릿(일반 회의)으로 회의 시작
  • 템플릿 미리보기: 아이콘, 설명, 섹션 목록 표시

예외처리:

  • 없음 (선택 또는 건너뛰기 모두 허용)

관련 유저스토리:

  • UFR-USER-020: 대시보드 조회
  • UFR-MEET-010: 회의예약
  • UFR-MEET-030: 회의시작

UFR-MEET-030: 🔴 [회의시작] 회의 생성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다.

회의 진입 경로:

  • 경로 1: 대시보드(02-대시보드.html) → "바로시작" FAB 버튼 → 템플릿 선택(04-템플릿선택.html) → 회의 진행(05-회의진행.html)
  • 경로 2: 대시보드 → 진행 중 회의 "참여하기" 버튼 → 회의 진행(05-회의진행.html)

수행절차:

  1. 위 경로 중 하나를 통해 회의 진행 화면(05-회의진행.html) 진입
  2. 회의 진행 화면 표시
  3. 녹음 시작 확인 (자동 또는 수동)
  4. 타이머 시작 (회의 진행 시간 표시)
  5. 웨이브폼 애니메이션 표시 (녹음 상태 시각화)
  6. 탭 네비게이션으로 기능 전환:
    • 참여자: 참여자 목록 및 실시간 초대
    • AI 제안: 실시간 AI 분석 결과 및 개인 메모 작성
      • AI가 인식한 주요 내용 표시
      • 참여자별 개인 메모 작성 영역 (수동 저장만 지원)
    • 용어사전: 실시간 AI 자동 인식된 용어 및 검색
    • 관련회의록: 실시간 AI 자동 연결된 이전 회의록
  7. 하단 고정 버튼 (역할별 차별화)
    • 회의 생성자: [일시정지/녹음재개] + [회의 종료]
    • 회의 참여자: [회의 나가기]

입력:

  • 녹음 시작/일시정지: 버튼 클릭
  • 탭 전환: 탭 클릭
  • 메모 작성: 텍스트 입력

출력/결과:

  • 헤더: 회의 제목, 녹음 상태 (녹음 중/일시정지), 경과 시간
  • 웨이브폼 애니메이션: 녹음 상태 시각화
  • 참여자 탭: 참여자 목록, 초대 버튼
  • AI 제안 탭:
    • AI가 인식한 주요 내용 리스트
    • 개인 메모 작성 영역 (참여자별 독립)
    • 저장 버튼 (수동 저장만)
  • 용어사전 탭: 자동 추출된 용어, 검색 기능
  • 관련회의록 탭: 자동 연결된 이전 회의록 목록
  • 하단 고정 버튼:
    • 회의 생성자: [일시정지/녹음재개] + [회의 종료]
    • 회의 참여자: [회의 나가기]

예외처리:

  • 녹음 권한 없음: "마이크 권한이 필요합니다" 에러 메시지
  • 네트워크 오류: "녹음 중 오류가 발생했습니다" 에러 메시지
  • 일시정지 확인: "일시정지하시겠습니까?" 확인 모달
  • 회의 종료 확인 (생성자): "회의를 종료하시겠습니까? 모든 참여자의 회의가 종료됩니다" 확인 모달
  • 회의 나가기 확인 (참여자): "회의에서 나가시겠습니까? 저장하지 않은 메모는 삭제됩니다" 확인 모달

관련 유저스토리:

  • UFR-MEET-020: 템플릿선택
  • UFR-MEET-015: 참여자 실시간 초대
  • UFR-MEET-040: 회의종료
  • UFR-STT-010: 음성녹음인식
  • UFR-AI-030: 실시간 AI 제안
  • UFR-RAG-010: 전문용어감지
  • UFR-AI-040: 관련회의록연결
  • UFR-PART-010: 회의입장
  • UFR-PART-020: AI기반메모작성
  • UFR-PART-030: 회의중도퇴장
  • UFR-HOST-010: 회의종료권한
  • UFR-HOST-020: 녹음제어권한

UFR-MEET-040: 🔴 [회의종료] 회의 생성자로서 | 나는, 회의를 종료하고 회의록을 정리하기 위해 | 회의를 종료하고 요약 내용을 확인한 후 다음 단계를 선택하고 싶다.

권한:

  • 회의 생성자만 회의를 종료할 수 있음
  • 일반 참여자는 "회의 종료" 버튼이 표시되지 않음

수행절차:

  1. 회의 진행 화면에서 "회의 종료" 버튼 클릭 (생성자 전용)
  2. 종료 확인 모달: "회의를 종료하시겠습니까?" 확인
  3. 회의 종료 화면(07-회의종료.html) 표시 (확인 전용, 편집 불가)
  4. 통계 확인 (4열 그리드):
    • 참여자 수
    • 회의 시간
    • 안건 수
    • Todo 수
  5. 주요 키워드 확인 (태그 형태)
  6. 안건별 AI 요약 확인 (아코디언 카드):
    • AI 한줄 요약 (30자 이내, 편집 불가)
    • AI 상세 요약 (편집 가능, 재생성 가능)
    • 자동 추출된 Todo 목록
  7. 하단 액션 바에서 다음 단계 선택:
    • 옵션 1: "회의록 수정" → 회의록 수정 화면(11-회의록수정.html)으로 이동
    • 옵션 2: "바로 최종 확정" → 모든 안건 자동 검증 완료 처리 후 최종 확정
    • 옵션 3: "대시보드" → 대시보드(02-대시보드.html)로 이동

입력:

  • 하단 액션 버튼 클릭

출력/결과:

  • 회의 종료 화면 표시:
    • 통계 카드 (4열): 참여자, 시간, 안건, Todo
    • 주요 키워드 태그
    • 안건 아코디언 카드: AI 한줄 요약 + 상세 요약 + Todo
    • 읽기 전용 안내 표시
  • 회의록 상태: "작성중"으로 저장
  • 옵션 선택에 따른 화면 전환

예외처리:

  • AI 요약 생성 실패: "요약 생성 중 오류가 발생했습니다" 에러 메시지, 기본 템플릿으로 대체
  • Todo 추출 실패: 빈 Todo 목록 표시
  • 바로 확정 실패: "최종 확정 중 오류가 발생했습니다" 에러 메시지

관련 유저스토리:

  • UFR-MEET-030: 회의시작
  • UFR-MEET-050: 최종확정
  • UFR-MEET-055: 회의록수정
  • UFR-AI-010: 회의록자동작성
  • UFR-AI-020: Todo자동추출
  • UFR-AI-036: AI한줄요약

UFR-MEET-050: 🟡 [최종확정] 회의 생성자로서 | 나는, 회의록을 완성하기 위해 | 모든 안건을 검증하고 최종 회의록을 확정하고 싶다.

수행절차: 시나리오 1: 회의록 수정 후 최종 확정

  1. 회의록 수정 화면(11-회의록수정.html)에서 모든 안건 검증 완료
  2. "최종 확정" 버튼 활성화 (검증률 100%)
  3. "최종 확정" 버튼 클릭
  4. 확인 모달: "최종 확정하시겠습니까? 확정 후에는 생성자만 수정할 수 있습니다"
  5. 회의록 상태: "확정완료"로 변경
  6. 회의록 상세 조회 화면(10-회의록상세조회.html)으로 이동

시나리오 2: 회의 종료 화면에서 바로 확정

  1. 회의 종료 화면(07-회의종료.html)에서 "바로 최종 확정" 버튼 클릭
  2. 확인 모달: "바로 최종 확정하시겠습니까?"
  3. 모든 안건 자동 검증 완료 처리
  4. 회의록 상태: "확정완료"로 변경
  5. 회의록 상세 조회 화면으로 이동

입력:

  • 최종 확정 버튼 클릭
  • 확인 모달 승인

출력/결과:

  • 확정 성공: "회의록이 최종 확정되었습니다" 토스트 메시지
  • 회의록 상태: "확정완료"
  • 모든 안건 검증완료 상태로 변경
  • 회의록 상세 조회 화면으로 이동
  • 확정 후 편집 권한: 회의 생성자만 잠금 해제 후 수정 가능

예외처리:

  • 시나리오 1에서 미검증 안건 존재: "모든 안건을 검증해야 확정할 수 있습니다" 에러 메시지
  • 확정 실패: "최종 확정 중 오류가 발생했습니다" 에러 메시지
  • 확인 모달 취소: 현재 화면 유지

관련 유저스토리:

  • UFR-MEET-040: 회의종료
  • UFR-MEET-055: 회의록수정
  • UFR-COLLAB-030: 검증완료

UFR-MEET-046: 🟡 [회의록목록조회] 회의 참여자로서 | 나는, 참여한 회의록들을 효율적으로 관리하기 위해 | 회의록 목록을 조회하고 필터링하고 싶다.

수행절차:

  1. 사이드바 또는 하단 네비게이션에서 "회의록" 메뉴 클릭
  2. 회의록 목록 조회 화면(12-회의록목록조회.html) 표시
  3. (선택) 정렬 기준 선택:
    • 최근수정순 (기본값)
    • 최근회의순
    • 제목순
  4. (선택) 참여 유형 필터 선택 (다중 선택 가능):
    • 참여한 회의 (체크박스)
    • 내가 생성한 회의 (체크박스)
  5. (선택) 상태 필터 선택 (다중 선택 가능):
    • 작성중 (체크박스)
    • 확정완료 (체크박스)
  6. (선택) 검색어 입력 (회의 제목, 참여자 이름)
  7. 회의록 카드 클릭하여 상세 조회

입력:

  • 정렬 기준: 선택 (최근수정순, 최근회의순, 제목순)
  • 참여 유형 필터: 다중 체크박스 (참여한 회의, 내가 생성한 회의)
  • 상태 필터: 다중 체크박스 (작성중, 확정완료)
  • 검색어: 텍스트 입력 (선택)

출력/결과:

  • 헤더: "회의록" 제목, 총 회의록 개수
  • 필터 및 정렬 버튼
  • 회의록 카드 목록 (스크롤):
    • 상태 배지 (작성중/확정완료)
    • 생성자 표시 (👑 아이콘)
    • 회의 제목
    • 날짜/시간
    • 참여자 수
    • 검증완료율 (작성중인 경우)
  • 빈 상태: 검색 결과 없을 때 안내 메시지

예외처리:

  • 회의록 없음: "참여한 회의록이 없습니다" 빈 상태 표시
  • 검색 결과 없음: "검색 결과가 없습니다" 빈 상태 표시
  • 네트워크 오류: "회의록을 불러오는 중 오류가 발생했습니다" 에러 메시지

관련 유저스토리:

  • UFR-USER-020: 대시보드
  • UFR-MEET-047: 회의록상세조회

UFR-MEET-047: 🟡 [회의록상세조회] 회의 참여자로서 | 나는, 지난 회의록의 상세 정보와 전체 내용을 | 한눈에 확인하고 싶다.

수행절차:

  1. 회의록 목록 또는 대시보드에서 회의록 카드 클릭
  2. 회의록 상세 조회 화면(10-회의록상세조회.html) 표시
  3. 헤더 정보 확인: 회의 제목, 날짜/시간, 참여자, 생성자, 상태
  4. 탭 네비게이션으로 내용 확인:
    • 대시보드: 회의 통계, 주요 키워드, 안건별 한줄 요약
    • 회의록: 안건별 상세 내용, AI 요약, Todo 목록
    • Todo: Todo 목록 (제목, 담당자, 마감일, 상태)
    • 용어: 회의 중 인식된 전문 용어 및 설명
    • 관련회의록: 연결된 과거 회의록 목록
  5. (선택) 회의록 수정 버튼 클릭 (작성중 상태일 때만)
  6. (선택) Todo 추가 (모든 참여자) 또는 편집 (생성자만)

입력:

  • 탭 전환: 탭 클릭
  • Todo 추가 버튼 (모든 참여자)
  • Todo 편집 버튼 (생성자만)
  • 회의록 수정 버튼 (작성중 상태)

출력/결과:

  • 헤더:
    • 회의 제목, 날짜/시간
    • 참여자 칩 (이름, 아바타)
    • 생성자 표시 (👑 아이콘)
    • 상태 배지 (작성중/확정완료)
  • 대시보드 탭:
    • 통계 카드 (4열): 참여자, 시간, 안건, Todo
    • 주요 키워드 (태그 형태)
    • 안건별 한줄 요약 (아코디언 카드)
  • 회의록 탭:
    • 안건별 아코디언 카드:
      • AI 한줄 요약 (30자 이내)
      • AI 상세 요약 (읽기 전용)
      • Todo 목록 (읽기 전용)
  • Todo 탭:
    • Todo 카드 목록 (제목, 담당자, 마감일, 상태)
    • Todo 추가 버튼 (모든 참여자)
    • Todo 편집 버튼 (생성자만, 각 Todo 카드에 표시)
  • 용어 탭:
    • 용어 카드 목록 (용어, 설명)
  • 관련회의록 탭:
    • 관련 회의록 카드 목록 (제목, 날짜, 관련도, 유사 내용 요약)
  • 하단 액션 버튼:
    • "회의록 수정" 버튼 (작성중 상태일 때만 표시)

예외처리:

  • 권한 없음: "이 회의록을 볼 권한이 없습니다" 에러 메시지, 대시보드로 리다이렉트
  • 회의록 없음: "회의록을 찾을 수 없습니다" 에러 메시지
  • 네트워크 오류: "회의록을 불러오는 중 오류가 발생했습니다" 에러 메시지

Todo 추가 권한:

  • 모든 회의 참여자가 Todo 추가 가능
  • Todo 추가 버튼은 모든 참여자에게 노출
  • Todo 추가 모달: 제목, 담당자, 마감일 입력

Todo 편집 권한:

  • 회의 생성자만 Todo 편집 가능
  • 편집 버튼은 생성자에게만 노출
  • Todo 편집 모달: 제목, 담당자, 마감일 수정 (바텀시트 스타일)

관련 유저스토리:

  • UFR-MEET-046: 회의록목록조회
  • UFR-MEET-055: 회의록수정
  • UFR-AI-036: AI한줄요약

UFR-MEET-055: 🟡 [회의록수정] 회의 참여자로서 | 나는, 검증이 완료되지 않은 안건을 | 수정하고 검증완료 체크를 통해 보호하고 싶다.

수행절차:

  1. 회의록 상세 조회 화면(10-회의록상세조회.html)에서 "회의록 수정" 버튼 클릭 (작성중 상태)
  2. 회의록 수정 화면(11-회의록수정.html)으로 이동
  3. 안건별 아코디언 카드에서 수정:
    • AI 한줄 요약 재생성: "재생성" 버튼 클릭 (텍스트 편집 영역 내용 기반)
    • AI 상세 요약 편집: 텍스트 영역에서 직접 수정
    • AI 상세 요약 재생성: "재생성" 버튼 클릭 (텍스트 편집 영역 내용 기반)
    • Todo 추가/수정/삭제
  4. 검증완료 처리:
    • 참여자: 안건별 "검증완료" 체크박스 체크
    • 생성자: 검증완료 후에도 "잠금해제" 버튼으로 재수정 가능
  5. 상단 검증완료율 확인 (예: "3/5 검증완료")
  6. "최종 확정" 버튼 클릭 (검증률 100%일 때 활성화)

입력:

  • AI 한줄 요약 재생성: 버튼 클릭 (텍스트 편집 영역 내용 기반)
  • AI 상세 요약 편집: 텍스트 영역 편집
  • AI 상세 요약 재생성: 버튼 클릭 (텍스트 편집 영역 내용 기반)
  • Todo 추가/수정/삭제: 버튼 클릭 및 모달 입력
  • 검증완료 체크: 체크박스 (참여자)
  • 잠금해제 버튼: 버튼 클릭 (생성자, 검증완료된 안건)

출력/결과:

  • 헤더:
    • 회의 제목, 날짜/시간
    • 검증완료율 표시 (예: "3/5 검증완료")
    • "최종 확정" 버튼 (검증률 100%일 때 활성화)
  • 안건별 아코디언 카드:
    • AI 한줄 요약 (읽기 전용) + "재생성" 버튼
    • AI 상세 요약 (텍스트 영역 편집 가능) + "재생성" 버튼
    • Todo 목록 (추가/수정/삭제 가능)
    • 검증완료 UI:
      • 참여자: 체크박스만 표시
      • 생성자: 검증완료 시 "잠금해제" 버튼 표시
  • 자동 저장: 편집 내용 자동 저장 (디바운싱 처리)

예외처리:

  • 검증완료된 안건 수정 시도 (참여자): 체크박스 비활성화, "이미 검증된 안건입니다" 안내
  • 검증완료된 안건 수정 (생성자): "잠금해제" 버튼으로 재수정 가능
  • AI 재생성 실패: "재생성 중 오류가 발생했습니다" 에러 메시지
  • 네트워크 오류: "저장 중 오류가 발생했습니다" 에러 메시지
  • 미검증 안건 존재 시 최종 확정 시도: "모든 안건을 검증해야 확정할 수 있습니다" 에러 메시지

Last Write Wins 정책:

  • 동일 안건을 여러 참여자가 동시 수정 시 마지막 저장이 유지됨
  • 검증완료 체크로 안건 보호 가능
  • 생성자는 검증완료된 안건도 잠금해제 후 재수정 가능

관련 유저스토리:

  • UFR-MEET-047: 회의록상세조회
  • UFR-MEET-050: 최종확정
  • UFR-AI-036: AI한줄요약
  • UFR-COLLAB-030: 검증완료

UFR-PART-010: 🟡 [회의입장] 회의 참여자로서 | 나는, 예정된 회의에 참여하기 위해 | 대시보드에서 "참여하기" 버튼으로 회의에 입장하고 싶다.

수행절차:

  1. 대시보드에서 진행 중 또는 예정된 회의 확인
  2. "참여하기" 버튼 클릭
  3. 회의진행 화면으로 페이지 전환 (같은 탭)
  4. 회의 참여자로 입장 완료

입력:

  • 회의 ID
  • 사용자 ID

출력/결과:

  • 회의진행 화면 표시
  • 참여자 목록에 추가

예외처리:

  • 회의 종료됨: "이미 종료된 회의입니다" 안내
  • 권한 없음: "참여 권한이 없습니다" 안내

관련 유저스토리:

  • UFR-MEET-030: 회의시작

UFR-PART-020: 🟢 [AI기반메모작성] 회의 참여자로서 | 나는, 중요한 내용을 메모로 기록하기 위해 | AI가 추천한 주요 내용을 메모 입력창에 추가하고 편집하고 싶다.

수행절차:

  1. 회의 진행 중 AI가 실시간으로 주요 내용 감지 및 분석
  2. "AI 제안" 탭 하단에 "AI가 감지한 주요 내용" 리스트로 표시
    • 각 항목: "[시간] 주요 내용 텍스트" 형식
    • 예: "[15:32] 예산 책정 관련 결정", "[15:35] 다음 회의 일정 합의"
  3. 참여자가 리스트 항목 선택 시:
    • 메모 입력창에 시간과 함께 자동 입력
    • 입력된 메모는 수정 가능 (자동/수동 구분 표시)
  4. "저장" 버튼 클릭 시 개인 메모로 저장
    • 각 참여자별로 개별 저장
    • 다른 참여자의 메모는 볼 수 없음
  5. 회의 종료 시 AI가 회의록 생성할 때 모든 참여자의 메모 참조
  6. 메모는 회의 종료 전까지만 표시 및 편집 가능

입력:

  • 회의 ID
  • AI가 실시간 감지한 주요 내용
  • 참여자가 선택하거나 직접 입력한 메모 텍스트

출력/결과:

  • 메모 입력창: 시간 포함 메모 텍스트
  • AI 추천 리스트: 실시간 업데이트되는 주요 내용 항목들
  • 저장된 개인 메모: 참여자별 개별 저장
  • AI 회의록 생성 시: 모든 참여자의 메모 참조하여 요약 생성

예외처리:

  • AI 감지 실패: 빈 리스트 표시, 수동 메모 작성은 가능
  • 저장 실패: "메모 저장 중 오류가 발생했습니다" 에러 메시지, 로컬 임시 저장
  • 회의 종료 후: 메모 조회/편집 불가

관련 유저스토리:

  • UFR-AI-030: 실시간 AI 제안
  • UFR-AI-010: 회의록자동작성 (메모 참조)
  • UFR-MEET-040: 회의종료

UFR-PART-030: 🟡 [회의중도퇴장] 회의 참여자로서 | 나는, 회의를 중간에 나가야 할 때 | "나가기" 버튼으로 회의에서 퇴장하고 싶다.

수행절차:

  1. 회의진행 화면 상단 "나가기" 버튼 클릭
  2. 확인 모달 표시: "회의에서 나가시겠습니까? 회의는 계속 진행됩니다"
  3. 확인 클릭 시 퇴장 이벤트 서버 전송
  4. 대시보드로 페이지 전환

입력:

  • 회의 ID
  • 사용자 ID

출력/결과:

  • 대시보드 화면으로 복귀
  • 회의록은 종료 시 공유됨

예외처리:

  • 네트워크 오류: 로컬 처리 후 재시도

관련 유저스토리:

  • UFR-MEET-030: 회의시작

UFR-HOST-010: 🔴 [회의종료권한] 회의 생성자로서 | 나는, 회의를 마무리하기 위해 | "회의 종료" 버튼으로만 회의를 종료하고 싶다.

수행절차:

  1. 회의진행 화면에서 "회의 종료" 버튼은 생성자에게만 표시
  2. 일반 참여자에게는 버튼 숨김 처리
  3. 생성자가 "회의 종료" 클릭 시 회의 종료 프로세스 진행

입력:

  • 회의 ID
  • 사용자 ID (생성자 여부 확인)

출력/결과:

  • 생성자: 회의 종료 버튼 표시 및 동작
  • 일반 참여자: 버튼 숨김

예외처리:

  • 권한 없음: 버튼 미표시

관련 유저스토리:

  • UFR-MEET-040: 회의종료

UFR-HOST-020: 🔴 [녹음제어권한] 회의 생성자로서 | 나는, 녹음을 관리하기 위해 | 녹음 일시정지/재개/종료 권한을 가지고 싶다.

수행절차:

  1. 회의진행 화면에서 녹음 제어 버튼은 생성자에게만 표시
  2. 일반 참여자에게는 버튼 숨김 처리

입력:

  • 회의 ID
  • 사용자 ID (생성자 여부 확인)

출력/결과:

  • 생성자: 녹음 제어 버튼 표시 및 동작
  • 일반 참여자: 버튼 숨김

예외처리:

  • 권한 없음: 버튼 미표시

관련 유저스토리:

  • UFR-STT-010: 음성녹음인식

2.3 AI 서비스

UFR-AI-010: 🔴 [회의록자동작성] 회의 참여자로서 | 나는, 회의록 작성 부담을 줄이기 위해 | AI가 발언 내용을 실시간으로 정리하고 회의 종료 시 전체 안건을 요약하기를 원한다.

수행절차:

  1. 회의 진행 중: STT 서비스가 음성을 텍스트로 변환하여 AI 서비스에 전송
  2. AI 서비스가 발언 내용 분석:
    • 주요 키워드 추출
    • 발언자 식별
    • 안건별 내용 분류
  3. 회의 종료 시:
    • 모든 참여자의 메모 수집 (UFR-PART-020)
    • 전체 발언 내용과 메모를 종합하여 안건별 AI 요약 생성
    • AI 한줄 요약 생성 (30자 이내)
    • AI 상세 요약 생성 (각 안건별)
  4. 회의록 자동 생성 및 저장 (작성중 상태)

입력:

  • 회의 ID
  • STT 텍스트 스트림
  • 참여자별 개인 메모

출력/결과:

  • 실시간: 주요 키워드, 발언자, 안건 분류
  • 회의 종료 시:
    • 안건별 AI 한줄 요약 (30자 이내)
    • 안건별 AI 상세 요약
    • Todo 자동 추출 (UFR-AI-020)
    • 회의록 상태: "작성중"

예외처리:

  • STT 텍스트 없음: 기본 템플릿으로 회의록 생성
  • AI 요약 생성 실패: "요약 생성 중 오류가 발생했습니다" 에러 메시지, 수동 작성 유도
  • 참여자 메모 없음: 발언 내용만으로 요약 생성

관련 유저스토리:

  • UFR-STT-020: 텍스트변환
  • UFR-MEET-040: 회의종료
  • UFR-AI-020: Todo자동추출
  • UFR-AI-036: AI한줄요약
  • UFR-PART-020: AI기반메모작성

UFR-AI-020: 🟡 [Todo자동추출] 회의 참여자로서 | 나는, 회의 후 실행 사항을 명확히 하기 위해 | AI가 안건별 내용에서 Todo 항목을 자동으로 추출하고 기본값을 설정하기를 원한다.

수행절차:

  1. 회의 종료 시 AI가 안건별 내용 분석
  2. Todo 항목 자동 추출:
    • 액션 동사 식별 ("작성", "검토", "준비", "확인" 등)
    • 담당자 추론 (발언 맥락 분석)
    • 마감일 추론 (회의 내용 기반)
  3. 추출된 Todo 목록 회의록에 추가
  4. 회의록 수정 화면에서 수동 수정 가능

입력:

  • 회의 ID
  • 안건별 AI 요약 텍스트
  • 발언 내용 전체

출력/결과:

  • Todo 목록:
    • 제목: 자동 생성 (예: "보고서 작성", "회의실 예약")
    • 담당자: 자동 추론 또는 "미정"
    • 마감일: 자동 추론 또는 "미정"
    • 상태: "미완료" (기본값)
  • Todo 개수 통계 (회의 종료 화면, 회의록 상세 조회)

예외처리:

  • Todo 추출 실패: 빈 Todo 목록으로 저장, 수동 추가 가능
  • 담당자 추론 실패: "미정"으로 설정
  • 마감일 추론 실패: "미정"으로 설정

관련 유저스토리:

  • UFR-AI-010: 회의록자동작성
  • UFR-MEET-040: 회의종료
  • UFR-MEET-047: 회의록상세조회

UFR-AI-030: 🟢 [실시간AI제안] 회의 참여자로서 | 나는, 회의 중 놓치는 내용을 최소화하기 위해 | AI가 실시간으로 주요 내용을 분석하여 제안하고 싶다.

수행절차:

  1. 회의 진행 중 STT 텍스트를 실시간으로 AI 서비스에 전송
  2. AI가 주요 내용 감지:
    • 중요 결정 사항
    • 액션 아이템
    • 주요 키워드
    • 합의 사항
  3. "AI 제안" 탭에 실시간 업데이트:
    • "[시간] 주요 내용 텍스트" 형식으로 표시
    • 예: "[15:32] 예산 책정 관련 결정", "[15:35] 다음 회의 일정 합의"
  4. 참여자가 리스트 항목 선택 시 메모 입력창에 자동 입력

입력:

  • 회의 ID
  • STT 텍스트 스트림 (실시간)

출력/결과:

  • "AI 제안" 탭:
    • AI가 감지한 주요 내용 리스트
    • 시간 포함 (예: "[15:32]")
    • 실시간 업데이트
  • 메모 입력창:
    • 선택한 항목 자동 입력
    • 시간 포함

예외처리:

  • AI 감지 실패: 빈 리스트 표시
  • 네트워크 오류: "AI 제안을 불러오는 중 오류가 발생했습니다" 에러 메시지

관련 유저스토리:

  • UFR-STT-020: 텍스트변환
  • UFR-MEET-030: 회의시작
  • UFR-PART-020: AI기반메모작성

UFR-AI-036: 🟡 [AI한줄요약] 회의 참여자로서 | 나는, 각 안건의 핵심을 빠르게 파악하기 위해 | AI가 생성한 한줄 요약을 확인하고 필요 시 재생성하고 싶다.

수행절차: 회의 종료 시 (자동 생성):

  1. AI가 안건별 상세 요약 기반으로 한줄 요약 자동 생성
  2. 한줄 요약 기준: 30자 이내, 핵심 키워드 포함
  3. 회의 종료 화면에서 읽기 전용으로 확인

회의록 수정 시 (재생성):

  1. 회의록 수정 화면(11-회의록수정.html)에서 안건별 "재생성" 버튼 클릭
  2. AI가 현재 텍스트 편집 영역 내용 기반으로 한줄 요약 재생성
  3. 재생성된 한줄 요약으로 자동 업데이트

회의록 상세조회 시:

  1. 대시보드 탭: 안건별 한줄 요약 표시
  2. 회의록 탭: 안건별 한줄 요약 + 상세 요약 표시

입력:

  • 안건별 상세 요약 텍스트
  • 재생성 버튼 클릭 (회의록 수정 시)

출력/결과:

  • 한줄 요약: 30자 이내, 안건 핵심 내용
  • 표시 위치:
    • 회의 종료 화면: 읽기 전용
    • 회의록 수정 화면: 재생성 가능
    • 회의록 상세조회 (대시보드 탭, 회의록 탭): 읽기 전용

예외처리:

  • AI 요약 생성 실패: "한줄 요약 생성 중 오류가 발생했습니다" 에러 메시지
  • 재생성 실패: "재생성 중 오류가 발생했습니다" 에러 메시지, 기존 요약 유지

관련 유저스토리:

  • UFR-AI-010: 회의록자동작성
  • UFR-MEET-040: 회의종료
  • UFR-MEET-047: 회의록상세조회
  • UFR-MEET-055: 회의록수정

UFR-AI-040: 🟢 [관련회의록연결] 회의 참여자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결하고 유사 내용을 요약해주기를 원한다.

수행절차: 회의 진행 중 (실시간 연결):

  1. AI가 실시간으로 발언 내용 분석
  2. 벡터 유사도 검색을 통해 같은 폴더 내 과거 회의록 검색
  3. 관련도 높은 회의록 최대 3개 추출 (관련도 70% 이상)
  4. 각 회의록에서 현재 회의와 유사한 부분 자동 추출
  5. 유사 내용을 3-5개 문장으로 요약
  6. "관련회의록" 탭에 실시간 업데이트

회의록 상세조회 시:

  1. 회의록 상세 조회 화면(10-회의록상세조회.html) → "관련회의록" 탭
  2. 연결된 회의록 카드 표시:
    • 회의 제목
    • 날짜/시간
    • 관련도 (퍼센트 표시, 예: 95%, 78%)
    • 유사 내용 요약 (3-5개 문장)
    • "전체 회의록 보기" 버튼

입력:

  • 현재 회의 ID
  • 현재 회의 내용 (실시간 STT 텍스트)
  • 같은 폴더 내 과거 회의록 목록

출력/결과:

  • "관련회의록" 탭:
    • 관련 회의록 카드 (최대 3개)
    • 각 카드:
      • 회의 제목
      • 날짜/시간
      • 관련도 (예: 95%, 78%)
      • 유사 내용 요약 (3-5개 문장)
      • "전체 회의록 보기" 버튼
  • 실시간 업데이트 (회의 진행 중)

예외처리:

  • 관련 회의록 없음: "관련 회의록이 없습니다" 빈 상태 표시
  • 유사도 검색 실패: "관련 회의록을 찾는 중 오류가 발생했습니다" 에러 메시지
  • 요약 생성 실패: 유사 내용 요약 없이 제목과 관련도만 표시

성능 최적화:

  • 과거 회의록 저장 시 요약본 미리 생성 (배치 처리)
  • 실시간 요약은 캐싱된 데이터 활용
  • 성능 목표: 1초 이내 표시

관련 유저스토리:

  • UFR-MEET-030: 회의시작
  • UFR-MEET-047: 회의록상세조회

UFR-RAG-010: 🟢 [전문용어감지] 회의 참여자로서 | 나는, 업무 지식이 없어도 회의록을 정확히 작성하기 위해 | 전문용어가 자동으로 감지되고 맥락에 맞는 설명을 제공받고 싶다.

수행절차:

  1. 회의 진행 중 STT 텍스트를 실시간으로 AI 서비스에 전송
  2. AI가 전문용어 감지:
    • 사내 용어 사전 참조
    • 관련 회의록 검색
    • 업무 이력 분석
  3. 감지된 용어를 "용어사전" 탭에 실시간 추가
  4. 각 용어에 대한 맥락 기반 설명 생성 (UFR-RAG-020)

입력:

  • 회의 ID
  • STT 텍스트 스트림 (실시간)
  • 사내 용어 사전 (RAG 시스템)

출력/결과:

  • "용어사전" 탭:
    • 감지된 전문용어 목록
    • 실시간 업데이트
    • 각 용어 클릭 시 맥락 기반 설명 표시

예외처리:

  • 용어 감지 실패: 빈 목록 표시
  • 사전 연결 오류: "용어 사전을 불러오는 중 오류가 발생했습니다" 에러 메시지

관련 유저스토리:

  • UFR-STT-020: 텍스트변환
  • UFR-RAG-020: 맥락기반용어설명
  • UFR-MEET-030: 회의시작

UFR-RAG-020: 🟢 [맥락기반용어설명] 회의 참여자로서 | 나는, 전문용어를 맥락에 맞게 이해하기 위해 | 관련 회의록과 업무 이력을 바탕으로 실용적인 설명을 제공받고 싶다.

수행절차:

  1. 참여자가 "용어사전" 탭에서 용어 클릭
  2. AI가 RAG 시스템을 통해 관련 정보 검색:
    • 사내 용어 사전
    • 관련 회의록
    • 업무 이력
  3. 맥락 기반 설명 생성:
    • 용어 정의
    • 관련 프로젝트/업무
    • 과거 사용 사례
  4. 설명 모달 또는 사이드 패널에 표시

입력:

  • 전문용어 (클릭한 용어)
  • 현재 회의 맥락 (회의 ID, 안건 내용)
  • RAG 시스템 (사내 문서, 회의록, 업무 이력)

출력/결과:

  • 용어 설명 모달/패널:
    • 용어 정의
    • 관련 프로젝트/업무
    • 과거 사용 사례
    • 관련 회의록 링크 (있는 경우)

예외처리:

  • 용어 설명 없음: "해당 용어에 대한 설명을 찾을 수 없습니다" 안내
  • RAG 검색 실패: "설명을 불러오는 중 오류가 발생했습니다" 에러 메시지

관련 유저스토리:

  • UFR-RAG-010: 전문용어감지
  • UFR-MEET-030: 회의시작
  • UFR-MEET-047: 회의록상세조회

UFR-COLLAB-030: 🟡 [검증완료] 회의 참여자로서 | 나는, 회의록의 정확성을 보장하기 위해 | 각 안건을 검증하고 완료 표시를 하고 싶다.

수행절차:

  1. 회의록 수정 화면(11-회의록수정.html)에서 안건 내용 확인
  2. 내용이 정확하면 "검증완료" 체크박스 체크
  3. 검증완료된 안건은 참여자가 수정 불가 (체크박스 비활성화)
  4. 회의 생성자는 "잠금해제" 버튼으로 재수정 가능
  5. 상단 검증완료율 업데이트 (예: "3/5 검증완료")
  6. 검증률 100% 시 "최종 확정" 버튼 활성화

입력:

  • 회의록 ID
  • 안건 ID
  • 검증완료 체크 (체크박스)
  • 잠금해제 버튼 (생성자만)

출력/결과:

  • 검증완료된 안건:
    • 참여자: 체크박스 비활성화, 편집 불가
    • 생성자: "잠금해제" 버튼 표시
  • 검증완료율 업데이트 (상단 헤더)
  • 검증률 100% 시 "최종 확정" 버튼 활성화

예외처리:

  • 검증완료된 안건 수정 시도 (참여자): "이미 검증된 안건입니다" 안내
  • 잠금해제 권한 없음: 버튼 미표시

Last Write Wins 정책:

  • 동일 안건을 여러 참여자가 동시 수정 시 마지막 저장이 유지됨
  • 검증완료 체크로 안건 보호 가능
  • 생성자는 검증완료된 안건도 잠금해제 후 재수정 가능

관련 유저스토리:

  • UFR-MEET-055: 회의록수정
  • UFR-MEET-050: 최종확정

2.4 STT 서비스

UFR-STT-010: 🔴 [음성녹음인식] 회의 참여자로서 | 나는, 발언 내용이 자동으로 기록되기 위해 | 음성이 실시간으로 녹음되고 인식되기를 원한다.

수행절차:

  1. 회의 시작 시 마이크 권한 요청
  2. 권한 승인 후 녹음 시작
  3. 웨이브폼 애니메이션으로 녹음 상태 시각화
  4. 실시간 음성 스트리밍 처리:
    • 브라우저 MediaRecorder API 사용
    • 오디오 스트림을 청크 단위로 서버 전송
  5. STT 서비스가 음성을 텍스트로 변환 (UFR-STT-020)
  6. 회의 생성자가 일시정지/재개/종료 제어

입력:

  • 마이크 권한 (브라우저)
  • 오디오 스트림 (실시간)

출력/결과:

  • 녹음 상태: "녹음 중" 또는 "일시정지"
  • 웨이브폼 애니메이션 (녹음 중)
  • 경과 시간 표시
  • 녹음 제어 버튼 (생성자만):
    • 일시정지/재개 버튼
    • 종료 버튼

예외처리:

  • 마이크 권한 거부: "마이크 권한이 필요합니다" 에러 메시지, 설정 안내
  • 브라우저 미지원: "이 브라우저는 녹음을 지원하지 않습니다" 에러 메시지
  • 네트워크 오류: "녹음 중 오류가 발생했습니다" 에러 메시지, 재시도 버튼

관련 유저스토리:

  • UFR-MEET-030: 회의시작
  • UFR-STT-020: 텍스트변환
  • UFR-HOST-020: 녹음제어권한

UFR-STT-020: 🔴 [텍스트변환] 회의록 시스템으로서 | 나는, 인식된 발언을 회의록에 기록하기 위해 | 음성을 텍스트로 변환하고 싶다.

수행절차:

  1. STT 서비스가 오디오 스트림 수신
  2. 외부 STT API 호출 (예: OpenAI Whisper, Google Speech-to-Text)
  3. 텍스트 변환 결과를 AI 서비스에 전송
  4. AI 서비스가 텍스트 분석 및 회의록 작성 (UFR-AI-010)

입력:

  • 오디오 스트림 (실시간)
  • 회의 ID

출력/결과:

  • STT 텍스트 스트림
  • 발언자 정보 (가능한 경우)
  • 타임스탬프

예외처리:

  • STT API 오류: "음성 인식 중 오류가 발생했습니다" 에러 메시지, 재시도
  • 네트워크 오류: 로컬 버퍼링 후 재전송
  • 변환 실패: 해당 구간 건너뛰기, 로그 기록

관련 유저스토리:

  • UFR-STT-010: 음성녹음인식
  • UFR-AI-010: 회의록자동작성
  • UFR-AI-030: 실시간AI제안

2.5 Notification 서비스

UFR-NOTI-010: 🟡 [알림발송] Notification 시스템으로서 | 나는, 사용자에게 중요한 이벤트를 알리기 위해 | 주기적으로 알림 대상을 확인하여 이메일을 발송하고 싶다.

수행절차:

  1. Notification 서비스가 주기적으로 알림 대상 폴링 (예: 1분 간격)
  2. 발송 예정 시각이 지난 알림 조회
  3. 알림 유형별 이메일 템플릿 적용:
    • 회의 시작 알림
    • 회의 정보 변경 알림
    • 회의 참여자 초대 알림
    • 회의록 확정 알림
  4. 이메일 발송 (외부 메일 서비스 연동)
  5. 발송 성공 시 알림 상태 업데이트

입력:

  • 알림 대상 목록 (DB에서 조회)
  • 알림 유형 (회의 시작, 정보 변경, 참여자 초대, 회의록 확정)
  • 수신자 정보 (이름, 이메일)

출력/결과:

  • 이메일 발송:
    • 제목: 알림 유형별 제목
    • 본문: 알림 내용, 회의 정보, 링크
    • 발송자: 시스템 메일 주소
  • 알림 상태 업데이트:
    • 발송 성공: "sent"
    • 발송 실패: "failed" (재시도 큐에 추가)

예외처리:

  • 메일 서비스 오류: 재시도 큐에 추가 (최대 3회)
  • 수신자 이메일 없음: 알림 건너뛰기, 로그 기록
  • 템플릿 로드 실패: 기본 템플릿 사용

알림 유형별 상세:

  1. 회의 시작 알림:

    • 발송 시점: 회의 시작 10분 전
    • 수신자: 모든 참여자
    • 내용: 회의 제목, 일시, 장소, 참여 링크
  2. 회의 정보 변경 알림:

    • 발송 시점: 회의 정보 수정 직후
    • 수신자: 모든 참여자
    • 내용: 변경된 정보, 회의 제목, 일시
  3. 회의 참여자 초대 알림:

    • 발송 시점: 참여자 초대 직후
    • 수신자: 초대된 참여자
    • 내용: 회의 제목, 일시, 장소, 참여 링크
  4. 회의록 확정 알림:

    • 발송 시점: 회의록 최종 확정 직후
    • 수신자: 모든 참여자
    • 내용: 회의 제목, 회의록 링크

관련 유저스토리:

  • UFR-MEET-011: 회의정보수정
  • UFR-MEET-015: 회의진행 중 참여자 초대
  • UFR-MEET-050: 최종확정

3. 향후 과제

3.1 v2.4.2 개선 계획

대시보드 예정 회의 참여자 UX 개선

현재 상태 (v2.4.1):

  • 참여자가 예정 회의 클릭 시 시스템 알럿만 표시
  • 메시지: "아직 회의 시간이 되지 않아 참여하실 수 없습니다"
  • 회의 정보 조회 불가 (권한 부족 에러)

개선 계획:

  1. 회의 상세 조회 모달 제공 (참여자 전용):

    • 모달 UI 구성:
      • 회의 제목, 일시, 장소, 참여자 목록 표시
      • 회의 시작 전: "회의 시작 시간 전입니다. [일시]에 시작됩니다" 안내
      • [닫기] 버튼만 제공 (수정 불가)
    • 정보 접근성 보장: 참여자도 회의 정보 미리 확인 가능
    • 불필요한 화면 전환 제거: 모달로 간단하게 처리
  2. UI 개선 옵션 (선택):

    • 회의 카드에 "내 역할: 참여자" 뱃지 추가
    • 이렇게 하면 사용자가 클릭 전에 미리 역할 인지 가능

기대 효과:

  • 즉각적인 피드백 (클릭 즉시 역할에 맞는 화면 표시)
  • 정보 접근성 보장 (참여자도 회의 정보 조회 가능)
  • 사용자 경험 개선 (시스템 알럿보다 유용한 정보 제공)

구현 난이도: 중 (모달 컴포넌트 추가 + 권한별 동작 분기)

우선순위: 중상 (사용성 개선, 비즈니스 로직 변경 없음)


3.2 v2.5.0 이후 고려사항

1. 실시간 협업 기능 강화

  • WebSocket 기반 실시간 동기화: 회의록 수정 시 다른 참여자에게 실시간 반영
  • 충돌 방지 메커니즘: 동시 편집 시 충돌 감지 및 자동 병합
  • 우선순위: 🟢 P2 (사용성 개선, 기술적 복잡도 높음)

2. 고급 검색 및 필터링

  • 전체 텍스트 검색: 회의록 내용 전체 검색
  • 고급 필터: 날짜 범위, 참여자, 상태, 태그 등 다중 필터
  • 우선순위: 🟢 P2 (편의 기능, 데이터 증가 시 필요)

3. 통계 및 분석 대시보드

  • 회의 통계: 회의 빈도, 평균 시간, 참여률 등
  • Todo 통계: 완료율, 지연률, 담당자별 통계
  • 우선순위: 🟢 P2 (부가 가치, 관리자용 기능)

4. 모바일 최적화

  • 반응형 디자인 개선: 모바일 화면에 최적화된 UI
  • 오프라인 모드: 네트워크 연결 없이 회의록 조회 및 편집
  • 우선순위: 🟡 P1 (모바일 사용자 증가 시 필요)

5. 다국어 지원

  • 언어 선택: 한국어, 영어, 일본어 등
  • 자동 번역: 회의록 자동 번역 기능
  • 우선순위: 🟢 P2 (글로벌 확장 시 필요)

문서 이력

버전 날짜 작성자 변경 내용
2.4.5 2025-10-28 도그냥, 지수 • 문서 재구조화: 서비스별 그룹핑 및 우선순위 표기
  - MVP 기능을 서비스별로 재구성 (User, Meeting, AI, STT, Notification)
  - 각 유저스토리에 우선순위 이모지 추가 (🔴 P0, 🟡 P1, 🟢 P2)
  - "MVP 개선 사항 (v2.3.1)" 섹션을 각 서비스로 분산 통합
  - "다음 버전 개선 계획"을 "향후 과제"로 재구성
  - 목차 및 문서 구조 전면 개편
2.4.4 2025-10-28 도그냥, 지수 • UFR-TERM 시리즈 전체 삭제 (UFR-RAG와 기능 중복)
  - UFR-TERM-010 (용어자동감지) 삭제: UFR-RAG-010과 중복
  - UFR-TERM-020 (회사용어사전) 삭제: UFR-RAG-020과 중복
  - UFR-TERM-030 (용어관리) 삭제: 관리자 화면 없음, MVP 범위 아님
  - 기술 스택 일치: JSON 파일 기반 → RAG 시스템 기반으로 통일
• "용어 설명 기능 (MVP 단순화)" 섹션 전체 제거
• 용어 기능은 UFR-RAG-010/020에서 RAG 기반으로 제공
2.4.3 2025-10-28 도그냥, 강지수 • 실시간 협업 기능 유저스토리 정리 (MVP 스코프 반영)
  - UFR-COLLAB-010 (회의록수정동기화) 삭제: WebSocket 기반 실시간 동기화 기능 미구현
  - UFR-COLLAB-020 (충돌해결) 삭제: 안건 기반 충돌 방지는 UFR-COLLAB-030과 UFR-MEET-055에 통합
  - UFR-MEET-055 예외처리 개선: Last Write Wins 정책 명시
  - 마이크로서비스 구성 수정: 실시간 협업 제거, 안건별 검증완료 및 잠금 처리로 변경
• UI/UX 설계서 동기화: UFR-COLLAB-010/020 참조를 UFR-COLLAB-030으로 변경
2.4.2 2025-10-28 도그냥 • UFR-MEET-010 수정: 회의예약 임시저장 기능 제거
  - 수행절차 9단계: "임시저장" 버튼 또는 "예약 완료" → "예약 완료" 버튼으로 단순화
  - 출력/결과: 임시저장 항목 제거 ("임시 저장되었습니다" 토스트 메시지 제거)
• UFR-MEET-011 수정: 회의정보수정 임시저장 출력 제거
  - 출력/결과: 임시저장 토스트 메시지 제거
2.4.1 2025-10-27 팀 전체 • UFR-MEET-047 개선: Todo 추가/편집 권한 정책 명확화
  - Todo 추가: 모든 회의 참여자 가능 ("추가" 버튼 모든 참여자에게 노출)
  - Todo 편집: 회의 생성자만 가능 (편집 버튼은 생성자에게만 노출)
  - Todo 추가 모달: 제목, 담당자, 마감일 입력 (모든 참여자)
  - Todo 편집 모달: 제목, 담당자, 마감일 수정 (생성자만, 바텀시트 스타일)
• 프로토타입 UI 개선: 10-회의록상세조회.html
  - Todo 추가 모달과 편집 모달 바텀시트 스타일 통일
  - 편집 버튼에 creator-only 클래스 적용하여 권한별 표시/숨김 처리
2.4.0 2025-10-27 팀 전체 • MVP 스코프 축소: Todo 관리 기능 제거
• AI 요약 기능 통합 및 단순화
• UFR-USER-020 수정: 대시보드에서 "나의 Todo" 제거, "작성중 회의록" 추가
• UFR-PART-020 변경: AI주요내용체크 → AI기반메모작성 (메모 입력창 + AI 추천)
• UFR-AI-010 개선: 회의록 생성 시 참여자 메모 참조
• UFR-MEET-055 개선: 회의록 수정 시 실시간 협업 제거, 검증완료 체크로 보호
  - 프로토타입 UI 개선: 안건별 검증완료 UI 단순화 (참여자: 체크박스만, 생성자: 검증완료 시 잠금해제 버튼)
• TODO 서비스 전체 제거 (UFR-TODO-010/030/040)
• NOTIFICATION 서비스: Todo 관련 알림 제거
• 네비게이션 간소화: Todo 관리 메뉴 제거 (대시보드, 회의록만 유지)
• UFR-MEET-030 개선: AI 제안 탭 내 개인 메모 작성 기능 명확화 (수동 저장만), 하단 고정 버튼 역할별 차별화 (생성자: 일시정지/재개+종료, 참여자: 나가기)
• UFR-AI-035 삭제: 섹션AI요약 제거 (중복 기능)
• UFR-AI-036 개선: AI 한줄요약 확인 및 재생성 기능 통합
  - 회의 종료 시: 자동 생성 (읽기 전용)
  - 회의록 수정 시: 텍스트 편집 영역 내용 기반 재생성 기능 추가
  - "AI 상세요약" → "AI 요약"으로 명칭 변경
  - 회의록 상세조회 화면의 대시보드 및 회의록 탭에 한줄요약 표시
  - 프로토타입 UI 개선: AI 재생성 버튼 스타일 통일 (btn-secondary → btn-primary)
• UFR-COLLAB-030 개선: 안건 기반 충돌 방지 메커니즘 (검증완료 체크로 보호)
2.3.x 2025-10-24 ~ 2025-10-27 팀 전체 v2.3.1: MVP 개선 (참여자 권한 단순화, 용어 기능 단순화, 메모 체크박스 방식 변경)
v2.3.0: 프로토타입 분석 기반 유저스토리 전면 재정비 (10개 화면 반영, 마이크로서비스 재구성)
2.2.x 2025-10-24 팀 전체 프로토타입 기반 유저스토리 재작성
2.1.x 2025-10-24 강지수, 팀 전체 v2.1.3: 회의록 목록 생성자 표시 기능 추가
v2.1.2: 역할 용어 통일 (회의록 작성자 → 회의 생성자/참여자)
v2.1.1: 회의 종료 화면 정책 명확화, 실시간 협업 충돌 방지 개선
v2.1.0: 회의 종료 후 워크플로우 개선, 안건 기반 회의록 구조 도입, AI 한줄요약 추가
2.0.x 2025-10-23 ~ 2025-01-22 강지수, 도그냥, 길동 v2.0.5: Todo 관리 기능 확장, 회의록 상세조회 탭 순서 변경
v2.0.4: 검증완료 섹션 잠금해제 정책 단순화
v2.0.3: 회의록 수정 항목 정책 명확화
v2.0.2: Todo 수정 기능 추가
v2.0.1: 공유 기능 제거
v2.0: 논리 아키텍처 반영 (5개 마이크로서비스)
1.0 2025-01-20 도그냥 초안 작성 (8개 마이크로서비스)