hgzero/design/userstory.md
yabo0812 461dc4f524 Todo 수정 기능 개선 (UFR-TODO-040)
- 09-Todo관리 프로토타입: 권한별 담당자 필드 표시/숨김 기능 추가
  - 일반 담당자: 담당자 필드 숨김 (본인 Todo만 수정)
  - 회의 생성자: 담당자 필드 표시 (모든 Todo 수정 가능)
- 담당자 변경 시 알림 발송 로직 추가
- checkIfUserIsCreator() 함수 추가 (회의 생성자 권한 확인)
- 권한별 동적 UI 메시지 표시
- 설계서 Option 1 준수: 09-Todo관리에서 일반 담당자는 담당자 변경 불가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 15:25:28 +09:00

41 KiB

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


차별화 전략

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

1. 기본 기능 (Hygiene Factors)

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

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

  • 맥락 기반 용어 설명: 단순 용어 설명을 넘어, 관련 회의록과 업무이력을 바탕으로 실용적인 정보 제공
  • 강화된 Todo 연결: Action item이 담당자의 Todo와 실시간으로 연결되고, 진행 상황이 회의록에 자동 반영
  • 섹션 AI 요약 재생성: 버튼 클릭으로 작성한 섹션 내용을 AI가 요약 (2-3문장, 2-5초 처리)
  • 지능형 회의 진행 지원: 회의 패턴 분석을 통한 안건 추천, 효율성 분석 및 개선 제안

마이크로서비스 구성

  1. User - 사용자 인증 (LDAP 연동, JWT 토큰 발급/검증)
  2. Meeting - 회의, 회의록, Todo, 실시간 협업 통합 관리
    • 회의 관리: 회의 예약, 시작, 종료
    • 회의록 관리: 회의록 생성, 수정, 확정
    • Todo 관리: Todo 할당, 진행 상황 추적, 회의록 양방향 연결
    • 실시간 협업: WebSocket 기반 실시간 동기화, 버전 관리, 충돌 해결
    • 템플릿 관리: 회의록 템플릿 관리
    • 통계 생성: 회의 및 Todo 통계
  3. STT - 음성 녹음 관리, 음성-텍스트 변환, 화자 식별 (기본 기능)
  4. AI - AI 기반 회의록 자동화, Todo 추출, 지능형 검색 (RAG 통합)
    • LLM 기반 회의록 자동 작성
    • Todo 자동 추출 및 담당자 식별
    • 섹션 AI 요약 재생성 (버튼 클릭 시 요약 생성)
    • 관련 회의록 자동 연결 (벡터 유사도 검색)
    • 전문용어 자동 감지 및 맥락 기반 설명 생성 (RAG)
    • 과거 회의록 및 사내 문서 검색
    • 업무 이력 통합
  5. Notification - 알림 발송 및 리마인더 관리

유저스토리

1. User 서비스
1) 사용자 인증 관리
AFR-USER-010: [사용자관리] 시스템 관리자로서 | 나는, 서비스 보안을 위해 | 사용자 인증 기능을 원한다.
- 시나리오: 사용자 인증 관리
  사용자가 로그인을 시도한 상황에서 | 사번과 비밀번호를 입력하면 | LDAP 연동을 통해 인증이 완료되고 권한에 따라 서비스에 접근할 수 있다.
  - [ ] 사용자 인증 (사번, 비밀번호)
  - [ ] 세션 관리
- M/8

---

AFR-USER-020: [대시보드] 사용자로서 | 나는, 회의록 서비스의 주요 정보를 한눈에 파악하기 위해 | 대시보드를 통해 요약 정보를 확인하고 싶다.
- 시나리오: 대시보드 조회
  로그인 후 대시보드에 접근하면 | 예정된 회의, 진행 중 Todo, 최근 회의록 등 주요 정보가 표시되고 | 플로팅 액션 버튼을 통해 새 회의를 시작하거나 예약할 수 있다.

  **변경사항 (논리 아키텍처)**:
  - 프론트엔드가 Meeting Service에 직접 API 요청하여 회의, Todo, 회의록 정보 조회
  - User Service는 인증만 담당 (JWT 토큰 검증)
  - 모든 API 요청에 사용자 정보(userId, userName, email) 포함

  [대시보드 주요 위젯]
  - 사용자 인사말 (이름 표시)
  - 통계 카드:
    - 예정된 회의 개수
    - 진행 중 Todo 개수
    - Todo 완료율 (%)
  - 최근 회의 섹션:
    - 회의 제목
    - 회의 일시
    - 회의 장소
    - 참석자 수
    - 회의 상태 (진행중/예정/확정완료)
    - 참여하기/보기 버튼
    - 전체 보기 링크 (회의록 목록으로 이동)
  - 할당된 Todo 섹션:
    - Todo 목록 (최대 3개)
    - 전체 보기 링크 (Todo 관리로 이동)
    - Todo 없을 시 안내 메시지
  - 내 회의록 섹션:
    - 작성한 회의록 목록 (최대 3개)
    - 전체 보기 링크
    - 회의록 없을 시 안내 메시지

  [플로팅 액션 버튼 (FAB)]
  - 메인 FAB 버튼 (+)
  - 클릭 시 확장 메뉴 표시:
    - 🚀 새 회의 시작
    - 📅 회의 예약
  - 우측 하단 고정 위치

  [네비게이션]
  - 좌측 사이드바 (데스크톱):
    - 로고 및 서비스명
    - 📊 대시보드
    - 📋 회의 목록
    - ✅ Todo 관리
    - 사용자 프로필 (이름, 이메일)
  - 하단 탭 바 (모바일):
    - 🏠 홈
    - 📋 회의록
    - ✅ Todo

  [처리 결과]
  - 사용자별 맞춤 대시보드 표시
  - 실시간 통계 업데이트
  - 반응형 레이아웃 (모바일/태블릿/데스크톱)

- M/8

---

2. Meeting 서비스 (회의, 회의록, Todo, 실시간 협업 통합)
1) 회의 준비 및 관리
UFR-MEET-010: [회의예약] 회의록 작성자로서 | 나는, 회의를 효율적으로 준비하기 위해 | 회의를 예약하고 참석자를 초대하고 싶다.
- 시나리오: 회의 예약 및 참석자 초대
  회의 예약 화면에 접근한 상황에서 | 회의 제목, 날짜/시간, 장소, 참석자 목록을 입력하고 예약 버튼을 클릭하면 | 회의가 예약되고 참석자에게 초대 이메일이 자동 발송된다.

  [입력 요구사항]
  - 회의 제목: 최대 100자 (필수)
  - 날짜/시간: 날짜 및 시간 선택 (필수)
  - 장소: 최대 200자 (선택)
  - 참석자 목록: 이메일 주소 입력 (최소 1명 필수)

  [처리 결과]
  - 회의가 예약됨 (회의 ID 생성)
  - 일정이 캘린더에 자동 등록됨
  - 참석자에게 초대 이메일 발송됨
  - 회의 시작 30분 전 리마인더 자동 발송

- M/13

---

UFR-MEET-020: [템플릿선택] 회의록 작성자로서 | 나는, 회의록을 효율적으로 작성하기 위해 | 회의 유형에 맞는 템플릿을 선택하고 싶다.
- 시나리오: 회의록 템플릿 선택
  회의 시작 전 템플릿 선택 화면에 접근한 상황에서 | 제공되는 템플릿 중 하나를 선택하고 커스터마이징하면 | 회의록 도구가 준비된다.

  [템플릿 유형]
  - 일반 회의: 기본 구조 (참석자, 안건, 논의 내용, 결정 사항, Todo)
  - 스크럼 회의: 어제 한 일, 오늘 할 일, 이슈
  - 프로젝트 킥오프: 프로젝트 개요, 목표, 일정, 역할, 리스크
  - 주간 회의: 주간 실적, 주요 이슈, 다음 주 계획

  [커스터마이징 옵션]
  - 섹션 추가/삭제
  - 섹션 순서 변경
  - 기본 항목 설정

  [처리 결과]
  - 선택된 템플릿으로 회의록 도구가 준비됨

- S/5

---

UFR-MEET-030: [회의시작] 회의록 작성자로서 | 나는, 회의를 시작하고 회의록을 작성하기 위해 | 회의를 시작하고 음성 녹음을 준비하고 싶다.
- 시나리오: 회의 시작
  예약된 회의 시간에 회의 시작 버튼을 클릭한 상황에서 | 회의 ID를 확인하고 시작하면 | 회의 세션이 생성되고 음성 녹음이 준비된다.

  [회의 시작 조건]
  - 예약된 회의가 존재함
  - 회의 시작 시간 10분 전부터 회의 시작 버튼 활성화
  - 회의록 작성자가 시작 권한을 가짐
  - 이미 시작된 회의일 경우, 진행중으로 표시

  [처리 결과]
  - 회의 세션이 생성됨 (세션 ID)
  - 음성 녹음 준비 완료
  - 참석자 목록 표시
  - 회의 시작 시간 기록
  - 실시간 회의록 주요 항목 추천

- M/8

---

2) 회의 종료 및 완료
UFR-MEET-040: [회의종료] 회의록 작성자로서 | 나는, 회의를 종료하고 회의록을 정리하기 위해 | 회의를 종료하고 통계를 확인하고 싶다.
- 시나리오: 회의 종료
  회의가 진행 중인 상황에서 | 회의 종료 버튼을 클릭하면 | 음성 녹음이 중지되고 회의 통계가 생성된다.

  [회의 종료 처리]
  - 음성 녹음 즉시 중지
  - 회의 종료 시간 기록
  - 회의 통계 자동 생성
    - 회의 총 시간
    - 참석자 수
    - 발언 횟수 (화자별)
    - 주요 키워드

  [처리 결과]
  - 회의가 종료됨
  - 회의 통계 표시
  - 검증 완료 시 최종 회의록 확정 단계로 이동

  [검증 미완료 시]
  - 검증이 안된 항목이 있다면 회의록 히스토리 페이지에서 추후 수정 가능

- M/8

---

UFR-MEET-050: [최종확정] 회의록 작성자로서 | 나는, 회의록을 완성하기 위해 | 최종 회의록을 확정하고 버전을 생성하고 싶다.
- 시나리오: 최종 회의록 확정
  회의가 종료된 상황에서 | 회의록 내용을 최종 검토하고 확정 버튼을 클릭하면 | 필수 항목이 검사되고 최종 버전이 생성된다.

  [필수 항목 검사]
  - 회의 제목 입력 여부
  - 참석자 목록 작성 여부
  - 주요 논의 내용 작성 여부
  - 결정 사항 작성 여부

  [처리 결과]
  - 최종 회의록 확정됨 (확정 버전 번호)
  - 확정 시간 기록
  - AI가 자동으로 Todo 항목 추출 (UFR-AI-020 연동)
  - 회의록 확정 상태로 전환

  [필수 항목 미작성 시]
  - 누락된 항목 안내 메시지 표시
  - 해당 섹션으로 자동 이동

- M/13

---

UFR-MEET-046: [회의록목록조회] 회의록 작성자로서 | 나는, 작성한 회의록들을 효율적으로 관리하기 위해 | 회의록 목록을 조회하고 필터링하고 싶다.
- 시나리오: 회의록 목록 조회 및 필터링
  대시보드에서 "회의록" 메뉴를 클릭하면 | 회의록 목록이 표시되고 | 다양한 필터와 검색으로 원하는 회의록을 찾을 수 있다.

  [화면 정보]
  - 화면번호: 12-회의록목록조회
  - 프로토타입: design/uiux/prototype/12-회의록목록조회.html

  [회의록 목록 조회]
  - 회의록 상태별 필터링: 전체 / 작성중 / 확정완료
  - 정렬 옵션: 최신순 / 회의일시순 / 제목순
  - 카테고리 필터: 전체 / 참석한 회의
  - 검색 기능: 회의 제목, 참석자, 키워드로 검색
  - 통계 표시: 전체 개수, 작성중 개수, 확정완료 개수
  - 목록 표시 정보:
    - 회의 제목
    - 회의 일시
    - 참석자 수
    - 회의록 상태 (작성중/확정완료)
    - 검증 완료율 (작성중인 경우)
    - 권한 정보 (조회 전용 표시)
    - 마지막 수정 시간

  [처리 결과]
  - 필터/정렬/검색 조건에 맞는 회의록 목록 표시
  - 회의록 클릭 시 상세 조회 화면으로 이동
  - 모바일/태블릿/데스크톱 반응형 레이아웃

- M/8

---

UFR-MEET-047: [회의록상세조회] 회의록 작성자로서 | 나는, 지난 회의록의 상세 정보와 전체 내용을 | 한눈에 확인하고 싶다.
- 시나리오: 회의록 상세 정보 조회
  회의록 목록에서 특정 회의록을 클릭하면 | 해당 회의의 기본 정보와 섹션별 상세 내용이 표시되고 | 필요한 경우 수정작업을 수행할 수 있다.

  [화면 정보]
  - 화면번호: 10-회의록상세조회
  - 프로토타입: design/uiux/prototype/10-회의록상세조회.html

  [회의 기본 정보 표시]
  - 회의 제목
  - 회의 일시 (날짜 및 시간, 소요 시간)
  - 참석자 목록 (아바타 표시, 역할 구분: 작성자/참석자)
  - 회의 장소 (온라인/오프라인)
  - 회의록 상태 (작성중/확정완료)
  - 작성자 및 최종 수정 시간

  [섹션별 상세 내용 표시]
  - 각 섹션 구분 표시 (번호, 제목)
  - 섹션별 검증 상태 표시 (검증완료 배지)
  - AI 요약 섹션:
    - 섹션별 AI 요약 내용
    - 생성/수정 시간 표시
    - 편집 버튼 (수정 권한이 있는 경우)
  - 상세 내용 섹션:
    - 논의 사항 (리스트 형태)
    - 결정 사항 (리스트 형태)
    - 일정 정보 (있는 경우)
    - 리소스 정보 (있는 경우)
  - 관련 회의록 섹션:
    - 관련도 높은 회의록 최대 3개 표시
    - 각 회의록별 정보: 제목, 날짜, 관련도 %, 요약 내용
    - 클릭 시 해당 회의록으로 이동

  [부가 기능]
  - 회의록 수정 버튼 (수정 권한이 있는 경우만 활성화)
  - 탭 네비게이션 (회의록/대시보드)
  - 뒤로가기 버튼 (회의록 목록으로 복귀)
  - 더보기 메뉴 (다운로드, 삭제 등)

  [처리 결과]
  - 모바일/태블릿/데스크톱 반응형 레이아웃
  - 긴 내용은 적절한 단락 구분 및 여백 적용
  - 페이지 로딩 시 스크롤 위치는 최상단
  - 관련 회의록 자동 표시

  [권한별 표시]
  - 조회 권한만 있는 경우: 수정 버튼 비활성화
  - 수정 권한이 있는 경우: 수정 버튼 활성화

- M/8

---

UFR-MEET-055: [회의록수정] 회의록 작성자로서 | 나는, 검증이 완료되지 않았거나 수정이 필요한 | 지난 회의록을 수정하고 싶다.
- 시나리오: 지난 회의록 수정
  회의록 상세 화면에서 수정 버튼을 클릭하면 | 회의록 수정 화면으로 이동하고 | 내용을 수정할 수 있다.

  [회의록 수정]
  - 회의 제목 수정 가능
  - 섹션별 AI 요약 수정 가능
  - AI 재생성 버튼 (섹션별 AI 요약 다시 생성)
  - 섹션별 내용 수정 가능 (마크다운 에디터)
  - 참고자료 추가/삭제 기능
  - 상태에 따른 수정 가능 범위:
    - 작성중: 모든 섹션 수정 가능
    - 확정완료: 수정 시 자동으로 작성중 상태로 변경
    - 검증완료 섹션: 잠금 해제 요청 필요 (회의록 생성자만)
  - 수정 중 자동 저장 (30초 간격)
  - 저장 상태 표시 (저장됨/저장 중)
  - 수정 이력 관리 (누가, 언제, 무엇을 수정했는지)

  [처리 결과]
  - 수정 내용 즉시 반영
  - 수정 시간 업데이트
  - 확정완료 상태였던 경우 → 작성중 상태로 변경
  - 취소 시 이전 상태로 복원

  [권한 제어]
  - 본인이 작성한 회의록만 수정 가능
  - 검증완료 섹션 잠금/해제는 회의록 생성자만 가능
  - 조회 전용 권한인 경우 수정 버튼 비활성화

- M/13

---

3. STT 서비스 (음성 인식 및 변환 - 기본 기능)
1) 음성 인식 및 변환
UFR-STT-010: [음성녹음인식] 회의 참석자로서 | 나는, 발언 내용이 자동으로 기록되기 위해 | 음성이 실시간으로 녹음되고 인식되기를 원한다.
- 시나리오: 음성 녹음 및 발언 인식
  회의가 시작된 상황에서 | 참석자가 발언을 시작하면 | 음성이 자동으로 녹음되고 화자가 식별되며 발언이 인식된다.

  [음성 녹음 처리]
  - 오디오 스트림 실시간 캡처
  - 회의 ID와 연결
  - 음성 데이터 저장 (Azure 스토리지)

  [발언 인식 처리]
  - AI 음성인식 엔진 연동 (Azure Speech 등)
  - 화자 자동 식별
    - 참석자 목록 매칭
    - 음성 특징 분석
  - 타임스탬프 기록
  - 발언 구간 구분

  [처리 결과]
  - 음성 녹음이 시작됨 (녹음 ID)
  - 발언이 인식됨 (발언 ID, 화자, 타임스탬프)
  - 실시간으로 텍스트 변환 요청 (UFR-STT-020 연동)

  [성능 요구사항]
  - 발언 인식 지연 시간: 1초 이내
  - 화자 식별 정확도: 90% 이상

  [비고]
  - STT는 기본 기능으로 경쟁사 대부분이 제공하는 기능임
  - 차별화 포인트가 아닌 필수 기능

- M/21

---

UFR-STT-020: [텍스트변환] 회의록 시스템으로서 | 나는, 인식된 발언을 회의록에 기록하기 위해 | 음성을 텍스트로 변환하고 싶다.
- 시나리오: 음성-텍스트 변환
  발언이 인식된 상황에서 | AI 음성인식 엔진에 텍스트 변환을 요청하면 | 음성이 텍스트로 변환되고 정확도와 함께 반환된다.

  [텍스트 변환 처리]
  - 인식된 발언 데이터 전달
  - 언어 설정 (한국어, 영어 등)
  - AI 음성인식 엔진 처리
  - 문장 부호 자동 추가
  - 숫자/날짜 형식 정규화

  [처리 결과]
  - 텍스트가 변환됨 (텍스트 ID)
  - 변환된 내용 (원문 텍스트)
  - 정확도 점수 (0-100%)
  - AI 회의록 자동 작성 요청 (UFR-AI-010 연동)

  [정확도 낮은 경우]
  - 정확도 60% 미만 시 경고 표시
  - 수동 수정 인터페이스 제공

  [비고]
  - STT는 기본 기능으로 차별화 포인트가 아님

- M/13

---

4. AI 서비스 (AI 기반 회의록 자동화, Todo 추출, 지능형 검색 - RAG 통합)
1) AI 회의록 작성
UFR-AI-010: [회의록자동작성] 회의록 작성자로서 | 나는, 회의록 작성 부담을 줄이기 위해 | AI가 발언 내용을 자동으로 정리하여 회의록을 작성하기를 원한다.
- 시나리오: AI 회의록 자동 작성
  텍스트가 변환된 상황에서 | LLM에 회의록 자동 작성을 요청하면 | 회의 맥락을 이해하고 구조화된 회의록 초안이 생성된다.

  [AI 처리 과정]
  - 변환된 텍스트와 회의 맥락(제목, 참석자, 이전 내용) 분석
  - 회의 내용 이해
    - 주제별 분류
    - 발언자별 의견 정리
    - 중요 키워드 추출
  - 문장 다듬기
    - 구어체 → 문어체 변환
    - 불필요한 표현 제거
    - 문법 교정
  - 구조화
    - 회의록 템플릿에 맞춰 정리
    - 주제, 발언자, 내용 구조화
    - 요약문 생성

  [처리 결과]
  - 회의록 초안이 생성됨 (회의록 버전)
  - 생성 시간 기록
  - 구조화된 내용
    - 논의 주제
    - 발언자별 의견
    - 결정 사항
    - 보류 사항
  - 참석자에게 실시간 동기화 (UFR-COLLAB-010 연동)

  [Policy/Rule]
  - 텍스트 변환되면 자동으로 회의록 구조에 맞춰 정리
  - 실시간 업데이트 (3-5초 간격)

- M/34

---

2) Todo 자동 추출
UFR-AI-020: [Todo자동추출] 회의록 작성자로서 | 나는, 회의 후 실행 사항을 명확히 하기 위해 | AI가 회의록에서 Todo 항목을 자동으로 추출하고 담당자를 식별하기를 원한다.
- 시나리오: AI Todo 자동 추출
  회의가 종료된 상황에서 | 최종 회의록을 분석하여 Todo 자동 추출을 요청하면 | 액션 아이템이 식별되고 담당자가 자동으로 지정된다.

  [AI 분석 과정]
  - 회의록 전체 내용 분석
  - 액션 아이템 식별
    - "~하기로 함", "~까지 완료", "~담당" 등 키워드 탐지
    - 명령형 문장 분석
    - 마감일 언급 추출
  - 담당자 자동 식별
    - 발언 내용 기반 ("제가 하겠습니다", "~님이 담당")
    - 직책/역할 기반 매칭
    - 과거 회의록 패턴 학습

  [처리 결과]
  - Todo가 자동 추출됨
  - 추출된 항목 수
  - 각 Todo별 정보
    - Todo 내용
    - 담당자 (자동 식별)
    - 마감일 (언급된 경우)
    - 우선순위 (언급된 경우)
    - 관련 회의록 섹션 링크
  - Todo 서비스에 자동 전달 (UFR-TODO-010 연동)

  [담당자 식별 실패 시]
  - 미지정 상태로 Todo 생성
  - 수동 할당 요청 알림

- M/21

---

3) 섹션 AI 요약 재생성 (신규, 차별화 포인트)
UFR-AI-035: [섹션AI요약] 회의록 작성자로서 | 나는, 작성한 섹션 내용을 쉽게 요약하기 위해 | 버튼 클릭으로 AI가 섹션 내용을 요약해주기를 원한다.
- 시나리오: 섹션 AI 요약 재생성
  회의록 작성/수정 중에 | 특정 섹션의 "AI 재생성" 버튼을 클릭하면 | AI가 해당 섹션 내용을 분석하여 2-3문장의 요약을 자동 생성한다.

  [사용 시점]
  - 회의록 작성 중 각 섹션 완료 시
  - 회의록 수정 중 섹션 내용 변경 후
  - 기존 요약이 부적절하다고 판단될 때

  [AI 처리 과정]
  - 회의 맥락 조회 (선택적)
    - 회의 제목, 참석자, 안건 파악
  - 섹션 내용 파싱
    - 논의사항 추출
    - 결정사항 추출
    - 보류사항 추출
  - 핵심 내용 식별
    - 중요도 평가
    - 키워드 추출
  - 요약 생성
    - 2-3문장으로 압축
    - 논의→결정 흐름 반영
    - 명확한 문장 구성

  [처리 결과]
  - 생성된 AI 요약 (2-3문장, 150자 이내)
  - 생성 시간 기록
  - 사용자는 생성된 요약을 다시 수정 가능

  [Policy/Rule]
  - 섹션 내용이 변경되면 요약도 재생성 가능
  - 이전 요약은 이력으로 보관
  - 처리 시간 2-5초 (빠른 응답)
  - 프롬프트 입력 불필요 (자동 처리)

- M/21

---

4) 관련 회의록 자동 연결 (신규, 차별화 포인트)
UFR-AI-040: [관련회의록연결] 회의록 작성자로서 | 나는, 이전 회의 내용을 쉽게 참조하기 위해 | AI가 같은 폴더 내 관련 있는 과거 회의록을 자동으로 찾아 연결해주기를 원한다.
- 시나리오: 관련 회의록 자동 연결
  회의록이 작성되는 상황에서 | AI가 회의 주제와 내용을 분석하면 | 같은 폴더 내 유사한 주제의 과거 회의록을 찾아 자동으로 연결한다.

  [AI 분석 과정]
  - 현재 회의록 주제 및 키워드 추출
  - 벡터 유사도 검색
    - 과거 회의록 DB에서 검색
    - 주제 유사도 계산
  - 관련도 점수 계산 (0-100%)
  - 같은 폴더 내 상위 5개 회의록 선정

  [연결 기준]
  - 주제 유사도 70% 이상
  - 동일 참석자가 50% 이상
  - 키워드 3개 이상 일치
  - 시간적 연관성 (후속 회의, 분기별 회의 등)

  [처리 결과]
  - 관련 회의록 목록 생성
  - 각 회의록별 정보
    - 제목
    - 날짜
    - 참석자
    - 관련도 점수
    - 연관 키워드
  - 회의록 상단에 "관련 회의록" 섹션 자동 추가
  - 클릭 시 해당 회의록으로 이동

  [Policy/Rule]
  - 관련도 70% 이상만 자동 연결
  - 최대 5개까지 표시

- S/13

---

5. AI 서비스 (지능형 검색 - RAG 기능, AI Service에 통합됨)
1) 맥락 기반 용어 설명 (강화)
UFR-RAG-010: [전문용어감지] 회의록 작성자로서 | 나는, 업무 지식이 없어도 회의록을 정확히 작성하기 위해 | 전문용어가 자동으로 감지되고 맥락에 맞는 설명을 제공받고 싶다.
- 시나리오: 맥락 기반 전문용어 자동 감지
  회의록이 작성되는 상황에서 | 시스템이 회의록 텍스트를 분석하면 | 전문용어가 자동으로 감지되고 맥락에 맞는 설명이 준비된다.

  **변경사항 (논리 아키텍처)**:
  - AI Service에 RAG 기능 통합
  - RAG와 AI 모두 LLM 기반 처리로 긴밀하게 연동
  - 동일한 벡터 임베딩 모델 및 LLM 공유 가능
  - 회의록 자동 작성 시 용어 설명이 병렬 처리되어 효율적

  [전문용어 감지 처리]
  - 회의록 텍스트 실시간 분석
  - 용어 사전과 비교
    - 조직별 전문용어 DB
    - 산업별 표준 용어 DB
  - 신뢰도 계산 (0-100%)
  - 감지된 용어 위치 기록

  [처리 결과]
  - 전문용어가 감지됨
  - 감지된 용어 정보
    - 용어명
    - 감지 위치 (줄 번호, 문단)
    - 신뢰도 점수
  - 용어 하이라이트 표시
  - 맥락 기반 설명 자동 생성 (UFR-RAG-020 연동)

  [Policy/Rule]
  - 신뢰도 70% 이상만 자동 감지
  - 중복 용어는 첫 번째만 하이라이트

  [비고]
  - 단순 용어 설명이 아닌 맥락 기반 실용적 정보 제공이 차별화 포인트

- S/13

---

UFR-RAG-020: [맥락기반용어설명] 회의록 작성자로서 | 나는, 전문용어를 맥락에 맞게 이해하기 위해 | 관련 회의록과 업무 이력을 바탕으로 실용적인 설명을 제공받고 싶다.
- 시나리오: 맥락 기반 용어 설명 자동 제공
  전문용어가 감지된 상황에서 | RAG 시스템이 관련 문서를 검색하면 | 과거 회의록 및 업무 이력에서 맥락에 맞는 실용적인 설명이 생성되어 제공된다.

  [RAG 검색 수행]
  - 벡터 유사도 검색
    - 과거 회의록 검색 (동일 용어 사용 사례)
    - 사내 문서 저장소 검색 (위키, 매뉴얼, 보고서)
    - 업무 이력 검색 (프로젝트 문서, 이메일 등)
  - 관련 문서 추출 (관련도 점수순)
  - 최대 5개 문서 선택

  [맥락 기반 설명 생성]
  - 검색된 문서 내용 분석
  - 용어 정의 추출
  - 실제 사용 사례 추출
  - 현재 회의 맥락에 맞는 설명 생성
    - 간단한 정의 (1-2문장)
    - 이 회의에서의 의미 (맥락 기반)
    - 관련 프로젝트/이슈 연결
    - 과거 논의 요약 (언제, 누가, 어떻게 사용했는지)
    - 참조 출처 링크

  [처리 결과]
  - 맥락 기반 용어 설명이 생성됨 (설명 ID)
  - 설명 내용
    - 간단한 정의
    - 맥락 기반 상세 설명
    - 실제 사용 사례
    - 관련 프로젝트/이슈
    - 과거 회의록 링크 (최대 3개)
    - 사내 문서 링크
  - 툴팁 또는 사이드 패널로 표시
  - 설명 제공 시간 기록

  [설명을 찾지 못한 경우]
  - "관련 정보를 찾을 수 없습니다" 메시지 표시
  - 전문가(회의 참석자)에게 설명 요청 버튼 제공
  - 수동 입력된 설명은 용어 사전에 자동 저장

  [비고]
  - **차별화 포인트**: 단순 용어 설명이 아닌, 조직 내 실제 사용 맥락과 이력을 제공
  - 업무 지식이 없어도 실질적인 도움을 받을 수 있음

- S/21

---

6. Meeting 서비스 (실시간 협업 - Meeting Service에 통합됨)
1) 실시간 협업
UFR-COLLAB-010: [회의록수정동기화] 회의 참석자로서 | 나는, 회의록을 함께 검증하기 위해 | 회의록을 수정하고 실시간으로 다른 참석자와 동기화하고 싶다.
- 시나리오: 회의록 실시간 수정 및 동기화
  회의록 초안이 작성된 상황에서 | 참석자가 회의록 내용을 수정하면 | 수정 사항이 버전 관리되고 웹소켓을 통해 모든 참석자에게 즉시 동기화된다.

  **변경사항 (논리 아키텍처)**:
  - Meeting Service에 실시간 협업 기능 통합
  - WebSocket, 버전 관리, 충돌 해결이 Meeting Service 내부에서 처리됨
  - 서비스 간 통신 오버헤드 제거, 성능 향상

  [회의록 수정 처리]
  - 수정 내용 검증
    - 수정 권한 확인
    - 수정 범위 제한 (잠긴 섹션은 수정 불가)
  - 수정 이력 저장
    - 수정자
    - 수정 시간
    - 수정 전/후 내용
    - 수정 위치
  - 버전 관리
    - 새 버전 번호 생성
    - 이전 버전 보관

  [실시간 동기화]
  - 웹소켓을 통해 수정 델타 전송
    - 전체 내용이 아닌 변경 부분만 전송 (효율성)
  - 모든 참석자 화면에 실시간 반영
  - 수정자 표시 (이름)
  - 수정 영역 하이라이트 (3초간)

  [처리 결과]
  - 참석자가 회의록을 수정함 (수정 ID)
  - 수정 사항이 동기화됨
  - 동기화 시간
  - 영향받은 참석자 목록
  - 수정 완료될 때마다 수정된 내용이 메일로 알림이 발송된다. (알림 여부 설정 가능)

  [Policy/Rule]
  - 회의록 수정 시 웹소켓을 통해 모든 참석자에게 즉시 동기화

- M/34

---

UFR-COLLAB-020: [충돌해결] 회의 참석자로서 | 나는, 동시 수정 상황에서도 내용을 잃지 않기 위해 | 충돌을 감지하고 해결하고 싶다.
- 시나리오: 동시 수정 충돌 해결
  두 명의 참석자가 동일한 위치를 동시에 수정한 상황에서 | 시스템이 충돌을 감지하면 | 충돌 알림이 표시되고 해결 방법을 선택할 수 있다.

  [충돌 감지]
  - 동일 위치 동시 수정 탐지
    - 라인 단위 비교
    - 버전 기반 충돌 확인
  - 충돌 정보 생성
    - 충돌 위치
    - 관련 수정자 2명
    - 각자의 수정 내용

  [충돌 해결 방식]
  - Last Write Wins (기본)
    - 가장 최근 수정이 우선
    - 이전 수정은 버전 이력에 보관
  - 수동 병합 (선택)
    - 충돌 내용 비교 UI 표시
    - 사용자가 최종 내용 선택
    - A 선택 / B 선택 / 직접 작성

  [처리 결과]
  - 충돌이 감지됨 (충돌 ID)
  - 충돌 위치
  - 관련 수정자
  - 충돌이 해결됨
  - 해결 방법 (Last Write Wins / 수동 병합)
  - 최종 내용
  - 해결된 내용 실시간 동기화

  [Policy/Rule]
  - 동시 수정 발생 시 최종 수정이 우선 (Last Write Wins) 또는 충돌 알림

- M/21

---

UFR-COLLAB-030: [검증완료] 회의 참석자로서 | 나는, 회의록의 정확성을 보장하기 위해 | 주요 섹션을 검증하고 완료 표시를 하고 싶다.
- 시나리오: 회의록 검증 완료
  회의록 내용을 확인한 상황에서 | 참석자가 검증 완료 버튼을 클릭하면 | 검증 상태가 업데이트되고 다른 참석자에게 동기화된다.

  [검증 처리]
  - 검증자 정보 기록
  - 검증 시간 기록
  - 검증 대상 섹션 기록
  - 검증 상태 업데이트
    - 미검증 → 검증 중 → 검증 완료

  [섹션 잠금 기능]
  - 회의 생성자만 가능
  - 주요 섹션 검증 완료 시 잠금 가능 (선택)
  - 잠긴 섹션은 추가 수정 불가
  - 회의 생성자가 잠그면 검증 완료로 표시

  [처리 결과]
  - 검증이 완료됨
  - 검증자 정보
  - 검증 상태 (검증 완료)
  - 완료 시간
  - 검증 완료 상태 실시간 동기화
  - 검증 배지 표시 (체크 아이콘)
  - 검증 완료 시 전체 메일로 알림이 발송된다.

  [Policy/Rule]
  - 주요 섹션 검증 완료 시 해당 섹션 잠금 가능

- M/8

---

7. Meeting 서비스 (Todo 관리 - Meeting Service에 통합됨, 차별화 포인트)
1) 실시간 Todo 연결 (강화)
UFR-TODO-010: [Todo할당] Todo 시스템으로서 | 나는, AI가 추출한 Todo를 담당자에게 전달하기 위해 | Todo를 실시간으로 할당하고 회의록과 연결하고 싶다.
- 시나리오: Todo 실시간 할당 및 회의록 연결
  AI가 Todo를 추출한 상황에서 | 시스템이 Todo를 등록하고 담당자를 지정하면 | Todo가 실시간으로 할당되고 회의록의 해당 위치와 연결되며 담당자에게 즉시 알림이 발송된다.

  **변경사항 (논리 아키텍처)**:
  - Meeting Service에 Todo 관리 기능 통합
  - Todo와 회의록이 동일 트랜잭션 내에서 처리 가능
  - 회의록-Todo 양방향 연결이 내부 메서드 호출로 처리됨 (10배 빠름)

  [Todo 등록]
  - Todo 정보 저장
    - Todo ID 생성
    - Todo 내용
    - 담당자 (AI 자동 식별 또는 수동 지정)
    - 마감일 (언급된 경우 자동 설정, 없으면 수동 설정)
    - 우선순위 (높음/보통/낮음)
    - 관련 회의록 링크 (섹션 위치 포함)

  [회의록 실시간 연결]
  - 회의록 해당 섹션에 Todo 뱃지 표시
  - Todo 클릭 시 Todo 상세 정보 표시
  - 양방향 연결 (Todo → 회의록, 회의록 → Todo)

  [알림 발송]
  - 담당자에게 즉시 알림
    - 이메일
  - 알림 내용
    - Todo 내용
    - 마감일
    - 회의록 링크 (해당 섹션으로 바로 이동)

  [캘린더 연동]
  - 마감일이 있는 경우 캘린더에 자동 등록
  - 마감일 3일 전 리마인더 일정 생성

  [처리 결과]
  - Todo가 할당됨 (Todo ID)
  - 담당자 정보
  - 마감일
  - 할당 시간
  - 회의록 연결 정보 (섹션 ID, 타임스탬프)
  - 담당자에게 알림이 발송됨
  - 캘린더 등록 완료

  [Policy/Rule]
  - Todo 할당 시 담당자에게 즉시 알림 발송
  - 회의록과 실시간 양방향 연결

  [비고]
  - **차별화 포인트**: Todo와 회의록의 강력한 연결, 원문 맥락 추적 가능

- M/13

---

UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo를 처리하고 회의록에 반영하기 위해 | Todo를 완료하고 회의록에 자동 반영하고 싶다.
- 시나리오: Todo 완료 처리 및 회의록 자동 반영
  Todo 작업이 완료된 상황에서 | 담당자가 완료 버튼을 클릭하면 | Todo가 완료 상태로 변경되고 연결된 회의록에 완료 상태가 실시간으로 반영된다.

  [완료 처리]
  - 완료 시간 자동 기록
  - 완료자 정보 저장
  - 완료 상태로 변경
  - 완료 여부 확인 다이얼로그 표시

  [회의록 실시간 반영]
  - 관련 회의록의 Todo 섹션 자동 업데이트
  - 완료 표시 (체크 아이콘)
  - 완료 시간 기록
  - 완료자 정보 표시

  [알림 발송]
  - 완료 알림
  - 모든 Todo 완료 시 전체 완료 알림

  [처리 결과]
  - Todo가 완료됨
  - 완료 시간
  - 완료자 정보
  - 회의록에 완료 상태가 반영됨
  - 반영 시간
  - 회의록 버전 업데이트

  [Policy/Rule]
  - Todo 완료 시 회의록에 완료 상태 즉시 반영
  - 모든 Todo 완료 시 완료 알림

  [비고]
  - **차별화 포인트**: Todo 완료가 회의록에 실시간 반영되어 회의 결과 추적 용이

- M/8

---

UFR-TODO-040: [Todo수정] Todo 담당자 또는 회의 생성자로서 | 나는, Todo 내용을 변경하기 위해 | 회의록 확정 전후에 Todo를 수정하고 싶다.
- 시나리오: Todo 수정
  Todo 목록에서 수정이 필요한 상황에서 | 담당자 또는 회의 생성자가 Todo 수정 버튼을 클릭하면 | Todo 내용, 담당자, 마감일, 우선순위를 변경할 수 있다.

  [화면 정보]
  - 화면번호: 09-Todo관리
  - 프로토타입: design/uiux/prototype/09-Todo관리.html

  [수정 가능 항목]
  - Todo 제목 (문구)
  - 담당자 (드롭다운 선택)
  - 마감일 (날짜 선택기)
  - 우선순위 (high/medium/low)

  [수정 시점]
  - **회의록 확정 전**: 회의 진행 중(05-회의진행) 또는 회의 종료 전(07-회의종료)에서 수정 가능
  - **회의록 확정 후**: Todo 관리 화면(09-Todo관리) 또는 회의록 수정 화면(11-회의록수정)에서 수정 가능

  [권한 제어]
  - **Todo 담당자**: 본인에게 할당된 Todo만 수정 가능 (09-Todo관리)
    - 수정 가능 항목: 제목, 마감일, 우선순위
    - 담당자 변경 불가 (본인 담당 Todo)
  - **회의 생성자**: 해당 회의의 모든 Todo 수정 가능 (11-회의록수정)
    - 수정 가능 항목: 제목, 담당자, 마감일, 우선순위
    - 담당자 변경 가능

  [수정 인터페이스]
  - 09-Todo관리: 각 Todo 항목에 "편집" 버튼 표시
    - 클릭 시 인라인 편집 모드 또는 수정 모달 표시
    - 수정 완료 후 "저장" 버튼 클릭
  - 11-회의록수정: "액션 아이템(Todo)" 섹션에서 수정
    - 회의록 수정 시 Todo 섹션도 편집 가능
    - Todo 추가/삭제/수정 모두 가능

  [처리 결과]
  - Todo 정보 업데이트
  - 수정 시간 기록
  - 수정자 정보 저장
  - 회의록에 수정 내용 실시간 반영
  - 담당자 변경 시 이전 담당자와 새 담당자에게 알림 발송
  - 마감일 변경 시 캘린더 자동 업데이트

  [알림 발송]
  - 담당자 변경 시: 이전 담당자 및 새 담당자에게 알림
  - 마감일 변경 시: 담당자에게 알림 (캘린더 업데이트)
  - 제목/우선순위 변경 시: 담당자에게 알림 (변경 사항 안내)

  [Policy/Rule]
  - 담당자는 본인 Todo만 수정 가능 (담당자 변경 불가)
  - 회의 생성자는 모든 Todo 수정 가능 (담당자 변경 가능)
  - 확정 전/후 모두 수정 가능
  - 수정 시 회의록에 즉시 반영

  [비고]
  - 회의록 확정 후에도 유연한 Todo 관리 가능
  - 인사 이동, 우선순위 변경, 일정 조정 등 실무 요구사항 반영

- M/13

---

## 논리 아키텍처 반영 사항 요약

### 1. 마이크로서비스 구성 변경 (v2.0)

**변경 전 (v1.0)**: 8개 마이크로서비스
- User, Meeting, STT, AI, RAG, Collaboration, Todo, Notification

**변경 후 (v2.0)**: 5개 마이크로서비스
- User, Meeting, STT, AI, Notification

### 2. 주요 변경사항

#### 2.1 User Service 역할 변경
- **변경 전**: 사용자 인증 및 권한 관리, 대시보드 정보 제공
- **변경 후**: 사용자 인증 전용 (LDAP 연동, JWT 토큰 발급/검증)
- **이유**:
  - 프론트엔드가 모든 API 요청에 사용자 정보(userId, userName, email) 포함
  - User Service 동기 호출 제거 → 성능 향상, 장애 격리
  - 네트워크 지연 제거 (~100ms 개선)

#### 2.2 Meeting Service 통합
- **통합 서비스**: Meeting + Collaboration + Todo
- **핵심 기능**:
  - 회의 관리: 회의 예약, 시작, 종료
  - 회의록 관리: 회의록 생성, 수정, 확정
  - Todo 관리: Todo 할당, 진행 상황 추적, 회의록 양방향 연결
  - 실시간 협업: WebSocket 기반 실시간 동기화, 버전 관리, 충돌 해결
- **이점**:
  - 서비스 간 통신 오버헤드 제거
  - Todo와 회의록이 동일 트랜잭션 내에서 처리 가능
  - 일관성 향상, 개발 효율성 증가
  - 내부 메서드 호출로 처리 속도 10배 향상

#### 2.3 AI Service 통합
- **통합 서비스**: AI + RAG
- **핵심 기능**:
  - LLM 기반 회의록 자동 작성
  - Todo 자동 추출 및 담당자 식별
  - 섹션 AI 요약 재생성 (버튼 클릭 시 요약 생성)
  - 관련 회의록 자동 연결 (벡터 유사도 검색)
  - 전문용어 자동 감지 및 맥락 기반 설명 생성 (RAG)
  - 과거 회의록 및 사내 문서 검색
- **이점**:
  - RAG와 AI 모두 LLM 기반 처리로 긴밀하게 연동
  - 동일한 벡터 임베딩 모델 및 LLM 공유 가능
  - 회의록 자동 작성 시 용어 설명이 병렬 처리되어 효율적
  - 서비스 개수 감소로 운영 복잡도 감소

### 3. 유저스토리 영향도

#### 3.1 변경 없음
- STT 서비스 유저스토리: UFR-STT-010, UFR-STT-020
- Notification 서비스 유저스토리: 알림 발송 관련

#### 3.2 서비스 통합에 따른 변경
- **Collaboration → Meeting**: UFR-COLLAB-010, UFR-COLLAB-020, UFR-COLLAB-030
- **Todo → Meeting**: UFR-TODO-010, UFR-TODO-030
- **RAG → AI**: UFR-RAG-010, UFR-RAG-020

#### 3.3 기능적 변경
- **AFR-USER-020 (대시보드)**:
  - 프론트엔드가 Meeting Service에 직접 API 요청
  - User Service는 인증만 담당

### 4. 성능 개선 효과

| 항목 | 개선 전 | 개선 후 | 효과 |
|------|---------|---------|------|
| User Service 동기 호출 | ~100ms | 제거 | 네트워크 지연 제거 |
| Todo 처리 | 서비스 간 통신 | 내부 메서드 호출 | 10배 빠름 |
| 실시간 동기화 | 서비스 간 REST API | Meeting 내부 처리 | 지연 감소 |
| 서비스 개수 | 8개 | 5개 | 운영 복잡도 감소 |

### 5. 차별화 전략 유지

논리 아키텍처 변경에도 불구하고 차별화 포인트는 그대로 유지됩니다:

- ✅ **맥락 기반 용어 설명**: AI Service에서 RAG 기능 통합 제공
- ✅ **강화된 Todo 연결**: Meeting Service에서 더 강력한 통합 제공
- ✅ **프롬프팅 기반 회의록 개선**: AI Service에서 계속 제공
- ✅ **지능형 회의 진행 지원**: AI Service에서 계속 제공

---

## 문서 이력

| 버전 | 작성일 | 작성자 | 변경 내용 |
|------|--------|--------|----------|
| 1.0 | 2025-01-20 | 도그냥 (서비스 기획자) | 초안 작성 (8개 마이크로서비스) |
| 2.0 | 2025-01-22 | 길동 (아키텍트) | 논리 아키텍처 반영 (5개 마이크로서비스로 단순화) |
| 2.0.1 | 2025-10-23 | 강지수 (Product Designer) | 공유 기능 제거 반영 <br>- AFR-USER-020: 대시보드 "공유받은 회의록" 섹션 제거<br>- UFR-MEET-046: 회의록 목록 카테고리 필터 "공유받은 회의" 제거 |
| 2.0.2 | 2025-10-23 | 강지수, 도그냥 | Todo 수정 기능 추가 (UFR-TODO-040)<br>- 회의록 확정 전/후 Todo 수정 기능 추가<br>- 권한별 수정 범위: 담당자(본인 Todo만), 회의 생성자(모든 Todo)<br>- 수정 항목: 제목, 담당자, 마감일, 우선순위<br>- 09-Todo관리, 11-회의록수정 화면에서 수정 가능 |

---