mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 10:16:24 +00:00
Merge remote-tracking branch 'origin/main' into feature/stt-ai
This commit is contained in:
commit
ff2a2c3328
@ -1,6 +1,6 @@
|
|||||||
# AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.3.0)
|
# AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.4.0)
|
||||||
|
|
||||||
- [AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.3.0)](#ai기반-회의록-작성-및-이력-관리-개선-서비스---유저스토리-v230)
|
- [AI기반 회의록 작성 및 이력 관리 개선 서비스 - 유저스토리 (v2.4.0)](#ai기반-회의록-작성-및-이력-관리-개선-서비스---유저스토리-v240)
|
||||||
- [차별화 전략](#차별화-전략)
|
- [차별화 전략](#차별화-전략)
|
||||||
- [1. 기본 기능 (Hygiene Factors)](#1-기본-기능-hygiene-factors)
|
- [1. 기본 기능 (Hygiene Factors)](#1-기본-기능-hygiene-factors)
|
||||||
- [2. 핵심 차별화 포인트 (Differentiators)](#2-핵심-차별화-포인트-differentiators)
|
- [2. 핵심 차별화 포인트 (Differentiators)](#2-핵심-차별화-포인트-differentiators)
|
||||||
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
### 2. 핵심 차별화 포인트 (Differentiators)
|
### 2. 핵심 차별화 포인트 (Differentiators)
|
||||||
- **맥락 기반 용어 설명**: 단순 용어 설명을 넘어, 관련 회의록과 업무이력을 바탕으로 실용적인 정보 제공
|
- **맥락 기반 용어 설명**: 단순 용어 설명을 넘어, 관련 회의록과 업무이력을 바탕으로 실용적인 정보 제공
|
||||||
- **강화된 Todo 연결**: Action item이 담당자의 Todo와 실시간으로 연결되고, 진행 상황이 회의록에 자동 반영
|
|
||||||
- **섹션 AI 요약 재생성**: 버튼 클릭으로 작성한 섹션 내용을 AI가 요약 (2-3문장, 2-5초 처리)
|
- **섹션 AI 요약 재생성**: 버튼 클릭으로 작성한 섹션 내용을 AI가 요약 (2-3문장, 2-5초 처리)
|
||||||
- **지능형 회의 진행 지원**: 회의 패턴 분석을 통한 안건 추천, 효율성 분석 및 개선 제안
|
- **지능형 회의 진행 지원**: 회의 패턴 분석을 통한 안건 추천, 효율성 분석 및 개선 제안
|
||||||
|
|
||||||
@ -31,7 +30,6 @@
|
|||||||
2. **Meeting** - 회의, 회의록, Todo, 실시간 협업 통합 관리
|
2. **Meeting** - 회의, 회의록, Todo, 실시간 협업 통합 관리
|
||||||
- 회의 관리: 회의 예약, 시작, 종료
|
- 회의 관리: 회의 예약, 시작, 종료
|
||||||
- 회의록 관리: 회의록 생성, 수정, 확정
|
- 회의록 관리: 회의록 생성, 수정, 확정
|
||||||
- Todo 관리: Todo 할당, 진행 상황 추적, 회의록 양방향 연결
|
|
||||||
- 실시간 협업: WebSocket 기반 실시간 동기화, 버전 관리, 충돌 해결
|
- 실시간 협업: WebSocket 기반 실시간 동기화, 버전 관리, 충돌 해결
|
||||||
- 템플릿 관리: 회의록 템플릿 관리
|
- 템플릿 관리: 회의록 템플릿 관리
|
||||||
- 통계 생성: 회의 및 Todo 통계
|
- 통계 생성: 회의 및 Todo 통계
|
||||||
@ -83,16 +81,15 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### UFR-USER-020: [대시보드] 사용자로서 | 나는, 나의 회의 및 Todo 현황을 파악하기 위해 | 대시보드를 조회하고 싶다.
|
### UFR-USER-020: [대시보드] 사용자로서 | 나는, 나의 회의 현황을 파악하기 위해 | 대시보드를 조회하고 싶다.
|
||||||
|
|
||||||
**수행절차:**
|
**수행절차:**
|
||||||
1. 로그인 후 대시보드 자동 표시 또는 하단 네비게이션에서 홈 아이콘 클릭
|
1. 로그인 후 대시보드 자동 표시 또는 하단 네비게이션에서 홈 아이콘 클릭
|
||||||
2. 통계 블록 확인 (예정된 회의, 나의 Todo)
|
2. 통계 블록 확인 (예정된 회의, 작성중 회의록)
|
||||||
3. 최근 회의 목록 확인 (최대 3개)
|
3. 최근 회의 목록 확인 (최대 3개)
|
||||||
4. 나의 Todo 목록 확인 (최대 3개)
|
4. 나의 회의록 목록 확인 (최대 4개)
|
||||||
5. 나의 회의록 목록 확인 (최대 4개)
|
5. 필요 시 "전체 보기" 링크 클릭하여 회의록 목록 화면 이동
|
||||||
6. 필요 시 섹션별 "전체 보기" 링크 클릭하여 상세 화면 이동
|
6. FAB 버튼으로 회의 예약 또는 바로 시작
|
||||||
7. FAB 버튼으로 회의 예약 또는 바로 시작
|
|
||||||
|
|
||||||
**입력:**
|
**입력:**
|
||||||
- 없음 (자동 렌더링)
|
- 없음 (자동 렌더링)
|
||||||
@ -101,18 +98,16 @@
|
|||||||
- 헤더: 사용자 이름, 오늘 예정된 회의 개수 또는 안내 메시지
|
- 헤더: 사용자 이름, 오늘 예정된 회의 개수 또는 안내 메시지
|
||||||
- 통계 블록 (2열 그리드):
|
- 통계 블록 (2열 그리드):
|
||||||
- 예정된 회의: 전체 예정 + 진행 중 회의 개수
|
- 예정된 회의: 전체 예정 + 진행 중 회의 개수
|
||||||
- 나의 Todo: 현재 사용자에게 할당된 전체 Todo 개수
|
- 작성중 회의록: 내가 참석한 회의 중 '작성중' 상태인 회의록 개수 (클릭 액션 없음, 정보 표시만)
|
||||||
- 최근 회의 (회의록 미생성 우선, 빠른 일시 순, 최대 3개):
|
- 최근 회의 (회의록 미생성 우선, 빠른 일시 순, 최대 3개):
|
||||||
- 회의 카드: 상태 배지, 제목, 생성자 표시(👑), 날짜/시간, 참석자 수, 장소, 액션 버튼
|
- 회의 카드: 상태 배지, 제목, 생성자 표시(👑), 날짜/시간, 참석자 수, 장소, 액션 버튼
|
||||||
- 진행 중 회의: 좌측 녹색 바 강조, "참여하기" 버튼
|
- 진행 중 회의: 좌측 녹색 바 강조, "참여하기" 버튼
|
||||||
- 예정 회의: 생성자인 경우 "수정" 버튼
|
- 예정 회의: 생성자인 경우 "수정" 버튼
|
||||||
- 완료 회의: "보기" 버튼
|
- 완료 회의: "보기" 버튼
|
||||||
- 나의 Todo (미완료 우선, 마감일 순, 최대 3개):
|
|
||||||
- Todo 카드: 체크박스, D-day 배지, 우선순위 배지, 제목, 회의록 링크, 마감일, 편집 버튼
|
|
||||||
- 나의 회의록 (최신순, 최대 4개, 2x2 그리드):
|
- 나의 회의록 (최신순, 최대 4개, 2x2 그리드):
|
||||||
- 회의록 카드: 상태 배지, 생성자 표시(👑), 제목, 날짜/시간, 참석자 수, 검증완료율(작성중인 경우)
|
- 회의록 카드: 상태 배지, 생성자 표시(👑), 제목, 날짜/시간, 참석자 수, 검증완료율(작성중인 경우)
|
||||||
- 사이드바 (데스크톱): 로고, 메뉴(회의록, Todo 관리), 사용자 정보, 로그아웃
|
- 사이드바 (데스크톱): 로고, 메뉴(대시보드, 회의록), 사용자 정보, 로그아웃
|
||||||
- 하단 네비게이션 (모바일): 홈(활성), 회의록, Todo
|
- 하단 네비게이션 (모바일): 홈(활성), 회의록
|
||||||
- FAB 메뉴:
|
- FAB 메뉴:
|
||||||
- 회의예약 버튼: 회의 예약 화면으로 이동
|
- 회의예약 버튼: 회의 예약 화면으로 이동
|
||||||
- 바로시작 버튼: 템플릿 선택 화면으로 이동
|
- 바로시작 버튼: 템플릿 선택 화면으로 이동
|
||||||
@ -120,7 +115,6 @@
|
|||||||
**예외처리:**
|
**예외처리:**
|
||||||
- 로그인 안 된 경우: 로그인 화면으로 리다이렉트
|
- 로그인 안 된 경우: 로그인 화면으로 리다이렉트
|
||||||
- 최근 회의 없음: 빈 상태 표시
|
- 최근 회의 없음: 빈 상태 표시
|
||||||
- Todo 없음: "할당된 Todo가 없습니다" 빈 상태 표시
|
|
||||||
- 회의록 없음: "참여한 회의록이 없습니다" 빈 상태 표시
|
- 회의록 없음: "참여한 회의록이 없습니다" 빈 상태 표시
|
||||||
|
|
||||||
**관련 유저스토리:**
|
**관련 유저스토리:**
|
||||||
@ -129,7 +123,6 @@
|
|||||||
- UFR-MEET-020: 템플릿선택
|
- UFR-MEET-020: 템플릿선택
|
||||||
- UFR-MEET-046: 회의록목록조회
|
- UFR-MEET-046: 회의록목록조회
|
||||||
- UFR-MEET-047: 회의록상세조회
|
- UFR-MEET-047: 회의록상세조회
|
||||||
- UFR-TODO-040: Todo관리
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -458,8 +451,9 @@
|
|||||||
- 주요 키워드 (태그)
|
- 주요 키워드 (태그)
|
||||||
- 핵심내용 요약
|
- 핵심내용 요약
|
||||||
- 결정사항
|
- 결정사항
|
||||||
- Todo 진행상황 (필터: 전체, 지연, 마감 임박, 완료)
|
- Todo 진행상황 (단순 조회 전용)
|
||||||
- Todo 카드: 체크박스, D-day 배지, 우선순위 배지, 제목, 담당자, 마감일, 편집 버튼
|
- Todo 카드: 제목, 담당자, 마감일만 표시
|
||||||
|
- D-day 체크, 우선순위 라벨 제거
|
||||||
- 진행률 표시 (수평 바): 완료 Todo 수 / 전체 Todo 수
|
- 진행률 표시 (수평 바): 완료 Todo 수 / 전체 Todo 수
|
||||||
- 관련회의록 (관련도 배지: 높음, 중간, 낮음)
|
- 관련회의록 (관련도 배지: 높음, 중간, 낮음)
|
||||||
- **회의록 탭**:
|
- **회의록 탭**:
|
||||||
@ -469,103 +463,102 @@
|
|||||||
- AI 한줄 요약 (30자 이내, 읽기 전용)
|
- AI 한줄 요약 (30자 이내, 읽기 전용)
|
||||||
- AI 상세 요약
|
- AI 상세 요약
|
||||||
- 관련회의록 링크
|
- 관련회의록 링크
|
||||||
4. Todo 체크박스 클릭 시 완료/미완료 토글
|
4. "수정" 버튼 클릭 시 회의록 수정 화면으로 이동
|
||||||
5. Todo 편집 버튼 클릭 시 편집 모달
|
|
||||||
6. "수정" 버튼 클릭 시 회의록 수정 화면으로 이동
|
|
||||||
|
|
||||||
**입력:**
|
**입력:**
|
||||||
- 탭 클릭: 대시보드 / 회의록
|
- 탭 클릭: 대시보드 / 회의록
|
||||||
- Todo 필터: 전체, 지연, 마감 임박, 완료
|
|
||||||
- Todo 체크박스: 완료/미완료 토글
|
|
||||||
- Todo 편집 버튼: 편집 모달 열기
|
|
||||||
|
|
||||||
**출력/결과:**
|
**출력/결과:**
|
||||||
- 헤더: 회의 제목, 생성자 표시 (👑), "수정" 버튼 (권한에 따라 표시)
|
- 헤더: 회의 제목, "수정" 버튼 (제목 텍스트 바로 옆에 배치, 권한에 따라 표시)
|
||||||
- 대시보드 탭:
|
- 대시보드 탭:
|
||||||
- 통계, 키워드, 핵심내용, 결정사항, Todo 진행상황, 관련회의록
|
- 통계, 키워드, 핵심내용, 결정사항, Todo 진행상황, 관련회의록
|
||||||
|
- Todo 카드: 제목, 담당자, 마감일만 표시 (D-day, 우선순위 라벨 없음)
|
||||||
- 회의록 탭:
|
- 회의록 탭:
|
||||||
- 기본 정보, 안건별 상세 내용
|
- 기본 정보, 안건별 상세 내용
|
||||||
- Todo 완료 토글: 확인 모달 → 상태 변경 → "Todo가 완료되었습니다" 토스트
|
|
||||||
- Todo 편집 모달: 제목, 담당자, 마감일, 우선순위 수정
|
|
||||||
|
|
||||||
**예외처리:**
|
**예외처리:**
|
||||||
- 회의록 조회 실패: "회의록 조회 중 오류가 발생했습니다" 에러 메시지
|
- 회의록 조회 실패: "회의록 조회 중 오류가 발생했습니다" 에러 메시지
|
||||||
- Todo 없음: "등록된 Todo가 없습니다" 빈 상태 표시
|
- Todo 없음: "등록된 Todo가 없습니다" 빈 상태 표시
|
||||||
- 관련회의록 없음: "관련 회의록이 없습니다" 빈 상태 표시
|
- 관련회의록 없음: "관련 회의록이 없습니다" 빈 상태 표시
|
||||||
- Todo 완료 토글 실패: "Todo 상태 변경 중 오류가 발생했습니다" 에러 메시지
|
|
||||||
- Todo 편집 권한 없음: "담당자 또는 회의 생성자만 편집할 수 있습니다" 안내
|
|
||||||
|
|
||||||
**관련 유저스토리:**
|
**관련 유저스토리:**
|
||||||
- UFR-MEET-046: 회의록목록조회
|
- UFR-MEET-046: 회의록목록조회
|
||||||
- UFR-MEET-055: 회의록수정
|
- UFR-MEET-055: 회의록수정
|
||||||
- UFR-TODO-030: Todo완료처리
|
|
||||||
- UFR-TODO-040: Todo관리
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### UFR-MEET-055: [회의록수정] 회의 참석자로서 | 나는, 검증이 완료되지 않았거나 수정이 필요한 | 지난 회의록을 수정하고 싶다.
|
### UFR-MEET-055: [회의록수정] 회의 참석자로서 | 나는, 검증이 완료되지 않은 안건을 | 수정하고 검증완료 체크를 통해 보호하고 싶다.
|
||||||
|
|
||||||
**수행절차:**
|
**수행절차:**
|
||||||
1. 회의록 상세 조회 화면에서 "수정" 버튼 클릭
|
1. 회의록 상세 조회 화면에서 "수정" 버튼 클릭
|
||||||
2. 회의록 수정 화면(11-회의록수정.html) 표시
|
2. 회의록 수정 화면(11-회의록수정.html) 표시
|
||||||
3. 편집 가능 항목:
|
3. 여러 참석자가 동시에 수정 화면 진입 가능 (동시 편집 허용)
|
||||||
|
4. 편집 가능 항목:
|
||||||
- 회의 제목 (텍스트 입력)
|
- 회의 제목 (텍스트 입력)
|
||||||
- AI 한줄 요약 (읽기 전용, 편집 불가)
|
- AI 한줄 요약 (읽기 전용, 편집 불가)
|
||||||
- AI 상세 요약 (텍스트 영역, 편집 가능)
|
- 안건별 입력창 내용 (텍스트 영역, 편집 가능)
|
||||||
- "재생성" 버튼: AI 상세 요약 재생성 (2-3문장, 2-5초 처리)
|
- "AI 재생성" 버튼: 입력창 내용 기반으로 한줄 요약만 재생성
|
||||||
- 안건 내용 (텍스트 영역)
|
|
||||||
- 관련회의록 추가/제거
|
- 관련회의록 추가/제거
|
||||||
- "추가" 버튼: 검색 모달 열기
|
- "추가" 버튼: 검색 모달 열기
|
||||||
- X 버튼: 관련회의록 제거
|
- X 버튼: 관련회의록 제거
|
||||||
- 참석자 관리 (회의 생성자만):
|
- 참석자 관리 (회의 생성자만):
|
||||||
- 참석자 추가/삭제
|
- 참석자 추가/삭제
|
||||||
- 05-회의진행 화면과 동일한 UI
|
- 05-회의진행 화면과 동일한 UI
|
||||||
4. 읽기 전용 항목:
|
5. 읽기 전용 항목:
|
||||||
- 회의 일시 (읽기 전용 배지 표시)
|
- 회의 일시 (읽기 전용 배지 표시)
|
||||||
- 회의 장소 (읽기 전용 배지 표시)
|
- 회의 장소 (읽기 전용 배지 표시)
|
||||||
5. 안건별 검증 완료 토글:
|
6. 안건별 검증완료 체크:
|
||||||
- 검증 완료 전: 토글 활성화 → 잠금
|
- 검증완료 전: 체크박스 비활성화 상태, 편집 가능
|
||||||
- 검증 완료 후: 잠금 아이콘 표시
|
- 검증완료 체크 시: 해당 안건 잠금 (편집 불가)
|
||||||
- 회의 생성자: 잠금 해제 → 토글 비활성화 → 편집 가능
|
- 회의 생성자만: 검증완료 체크 해제 가능 (잠금 해제)
|
||||||
6. 자동 저장 (30초마다)
|
7. 저장 로직:
|
||||||
- 저장 상태 표시: "저장 중...", "저장됨"
|
- "저장" 버튼 클릭 시:
|
||||||
7. 모든 안건 검증 완료 시 "최종 확정" 버튼 활성화
|
- 검증완료된 안건: 저장 스킵
|
||||||
8. 페이지 나가기 전 확인 (변경사항 있을 때)
|
- 미검증 안건: 저장 진행
|
||||||
|
- 저장 결과 알림:
|
||||||
|
- "N개 안건이 저장되었습니다"
|
||||||
|
- "M개 안건은 검증완료 상태로 저장되지 않았습니다"
|
||||||
|
- 저장 불가 안건 목록 표시
|
||||||
|
8. 모든 안건 검증 완료 시 "최종 확정" 버튼 활성화
|
||||||
|
9. 페이지 나가기 전 확인 (변경사항 있을 때)
|
||||||
|
|
||||||
**입력:**
|
**입력:**
|
||||||
- 회의 제목: 텍스트 입력
|
- 회의 제목: 텍스트 입력
|
||||||
- AI 상세 요약: 텍스트 영역 편집, "재생성" 버튼
|
- 안건별 입력창 내용: 텍스트 영역 편집
|
||||||
- 안건 내용: 텍스트 영역 편집
|
- AI 재생성: 버튼 클릭 (입력창 내용 기반 한줄 요약 생성)
|
||||||
- 관련회의록: 추가(검색 모달), 제거(X 버튼)
|
- 관련회의록: 추가(검색 모달), 제거(X 버튼)
|
||||||
- 참석자: 추가(검색 모달), 삭제(X 버튼) - 회의 생성자만
|
- 참석자: 추가(검색 모달), 삭제(X 버튼) - 회의 생성자만
|
||||||
- 검증 완료: 토글 스위치
|
- 검증 완료: 체크박스 (회의 생성자: 체크/해제, 참석자: 체크만)
|
||||||
- 잠금 해제: 잠금 아이콘 클릭 (회의 생성자만)
|
|
||||||
|
|
||||||
**출력/결과:**
|
**출력/결과:**
|
||||||
- 편집 화면: 제목, AI 요약, 안건, 관련회의록, 참석자, 검증 토글
|
- 편집 화면: 제목, AI 한줄 요약, 안건별 입력창, 관련회의록, 참석자, 검증 체크박스
|
||||||
- 자동 저장: "저장 중..." → "저장됨" 상태 표시
|
- 저장 결과: "N개 안건 저장됨" 토스트, 저장 불가 안건 목록 표시
|
||||||
- AI 재생성: "재생성 중..." → 새 요약 표시 → "재생성되었습니다" 토스트
|
- AI 재생성: "재생성 중..." → 한줄 요약만 업데이트 → "재생성되었습니다" 토스트
|
||||||
- 관련회의록 추가: 검색 모달 → 선택 → "추가되었습니다" 토스트
|
- 관련회의록 추가: 검색 모달 → 선택 → "추가되었습니다" 토스트
|
||||||
- 참석자 추가: 검색 모달 → 선택 → "{이름}님이 추가되었습니다" 토스트
|
- 참석자 추가: 검색 모달 → 선택 → "{이름}님이 추가되었습니다" 토스트
|
||||||
- 검증 완료: 토글 → 잠금 아이콘 표시
|
- 검증 완료: 체크 → 잠금 아이콘 표시 (편집 불가)
|
||||||
- 잠금 해제: 잠금 아이콘 클릭 → "잠금 해제하시겠습니까?" 확인 → 토글 비활성화
|
- 잠금 해제 (회의 생성자만): 체크 해제 → "잠금 해제하시겠습니까?" 확인 → 편집 가능
|
||||||
- 최종 확정: 검증률 100% → "최종 확정" 버튼 활성화
|
- 최종 확정: 검증률 100% → "최종 확정" 버튼 활성화
|
||||||
|
|
||||||
**예외처리:**
|
**예외처리:**
|
||||||
- 편집 권한 없음 (확정 완료 후, 생성자 아님): 읽기 전용 모드, "회의 생성자만 수정할 수 있습니다" 안내
|
- 편집 권한 없음 (확정 완료 후): 읽기 전용 모드, "확정된 회의록은 수정할 수 없습니다" 안내
|
||||||
- 검증 완료 섹션 편집 시도 (참석자): "검증 완료된 섹션은 수정할 수 없습니다" 안내
|
- 검증완료 안건 편집 시도: "검증완료된 안건은 수정할 수 없습니다. 회의 생성자에게 문의하세요" 안내
|
||||||
|
- 검증완료 해제 권한 없음: "회의 생성자만 검증완료를 해제할 수 있습니다" 안내
|
||||||
- AI 재생성 실패: "재생성 중 오류가 발생했습니다" 에러 메시지
|
- AI 재생성 실패: "재생성 중 오류가 발생했습니다" 에러 메시지
|
||||||
- 자동 저장 실패: "저장 실패" 상태 표시
|
- 저장 실패: "저장 중 오류가 발생했습니다" 에러 메시지
|
||||||
- 페이지 나가기: "저장되지 않은 변경사항이 있습니다. 나가시겠습니까?" 확인 모달
|
- 페이지 나가기: "저장되지 않은 변경사항이 있습니다. 나가시겠습니까?" 확인 모달
|
||||||
- 참석자 관리 권한 없음: "회의 생성자만 참석자를 관리할 수 있습니다" 안내
|
- 참석자 관리 권한 없음: "회의 생성자만 참석자를 관리할 수 있습니다" 안내
|
||||||
|
|
||||||
|
**동시 편집 정책 (MVP):**
|
||||||
|
- 실시간 동기화 없음 (다른 참석자가 편집하는 내용 안 보임)
|
||||||
|
- 안건별 검증완료 체크로 충돌 방지
|
||||||
|
- 마지막 저장 우선 원칙 (Last Write Wins)
|
||||||
|
|
||||||
**관련 유저스토리:**
|
**관련 유저스토리:**
|
||||||
- UFR-MEET-047: 회의록상세조회
|
- UFR-MEET-047: 회의록상세조회
|
||||||
- UFR-MEET-050: 최종확정
|
- UFR-MEET-050: 최종확정
|
||||||
- UFR-AI-035: 섹션AI요약
|
- UFR-AI-036: AI한줄요약
|
||||||
- UFR-AI-040: 관련회의록연결
|
- UFR-AI-040: 관련회의록연결
|
||||||
- UFR-COLLAB-010: 회의록수정동기화
|
|
||||||
- UFR-COLLAB-020: 충돌해결
|
|
||||||
- UFR-COLLAB-030: 검증완료
|
- UFR-COLLAB-030: 검증완료
|
||||||
# 유저스토리 v2.3.0 - AI, STT, RAG, COLLAB, TODO, NOTIFICATION 서비스
|
# 유저스토리 v2.3.0 - AI, STT, RAG, COLLAB, TODO, NOTIFICATION 서비스
|
||||||
|
|
||||||
@ -1091,149 +1084,6 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## TODO 서비스 (Meeting 서비스에 통합)
|
|
||||||
|
|
||||||
### UFR-TODO-010: [Todo할당] Todo 시스템으로서 | 나는, AI가 추출한 Todo를 담당자에게 전달하기 위해 | Todo를 실시간으로 할당하고 회의록과 연결하고 싶다.
|
|
||||||
|
|
||||||
**수행절차:**
|
|
||||||
1. AI 서비스에서 Todo 추출 완료 (UFR-AI-020)
|
|
||||||
2. Todo 데이터 수신:
|
|
||||||
- 제목, 담당자 ID, 마감일, 우선순위
|
|
||||||
- 회의 ID, 안건 ID
|
|
||||||
3. Todo 데이터베이스에 저장
|
|
||||||
4. 담당자에게 알림 대상 생성:
|
|
||||||
- 알림 유형: "Todo 할당"
|
|
||||||
- 알림 내용: "{회의 제목}에서 Todo가 할당되었습니다: {Todo 제목}"
|
|
||||||
- 수신자: 담당자
|
|
||||||
- 발송 예정 시각: 즉시
|
|
||||||
5. Notification 서비스가 주기적으로 폴링하여 이메일 발송
|
|
||||||
6. 회의록과 Todo 양방향 연결:
|
|
||||||
- 회의록 → Todo 링크
|
|
||||||
- Todo → 회의록 링크
|
|
||||||
7. 담당자의 Todo 목록 및 대시보드에 표시
|
|
||||||
|
|
||||||
**입력:**
|
|
||||||
- AI가 추출한 Todo 데이터:
|
|
||||||
- 제목, 담당자, 마감일, 우선순위
|
|
||||||
- 회의 정보: 회의 ID, 안건 ID, 회의 제목
|
|
||||||
|
|
||||||
**출력/결과:**
|
|
||||||
- Todo 저장 완료
|
|
||||||
- 알림 대상 생성 (Notification 테이블에 레코드 추가)
|
|
||||||
- 회의록과 Todo 양방향 링크 생성
|
|
||||||
- 담당자 Todo 목록 업데이트
|
|
||||||
- 회의록 화면에 Todo 표시
|
|
||||||
|
|
||||||
**예외처리:**
|
|
||||||
- 담당자 정보 없음: 회의록 생성자로 할당
|
|
||||||
- Todo 저장 실패: "Todo 저장 중 오류가 발생했습니다" 로그 기록, 재시도
|
|
||||||
- 알림 대상 생성 실패: 로그 기록, Todo는 정상 저장
|
|
||||||
|
|
||||||
**관련 유저스토리:**
|
|
||||||
- UFR-AI-020: Todo자동추출
|
|
||||||
- UFR-TODO-040: Todo관리
|
|
||||||
- UFR-NOTI-010: 알림발송 (신규)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo를 처리하고 회의록에 반영하기 위해 | Todo를 완료하고 회의록에 자동 반영하고 싶다.
|
|
||||||
|
|
||||||
**수행절차:**
|
|
||||||
1. Todo 관리 화면 또는 회의록 상세 조회 화면에서 Todo 체크박스 클릭
|
|
||||||
2. 완료 확인 모달: "완료 처리하시겠습니까?"
|
|
||||||
3. 승인 시 Todo 상태 "완료"로 변경
|
|
||||||
4. 완료 시각 기록
|
|
||||||
5. 회의록에 자동 반영:
|
|
||||||
- 회의록 상세 조회 시 완료된 Todo 표시
|
|
||||||
- Todo 진행상황 진행률 업데이트
|
|
||||||
6. 알림 대상 생성 (옵션):
|
|
||||||
- 회의 생성자에게 Todo 완료 알림
|
|
||||||
- 알림 내용: "{담당자}님이 Todo를 완료했습니다: {Todo 제목}"
|
|
||||||
7. "Todo가 완료되었습니다" 토스트 메시지
|
|
||||||
|
|
||||||
**미완료로 되돌리기:**
|
|
||||||
1. 완료된 Todo 체크박스 클릭
|
|
||||||
2. 확인 모달: "미완료로 변경하시겠습니까?"
|
|
||||||
3. 승인 시 Todo 상태 "미완료"로 변경
|
|
||||||
4. 회의록 진행률 자동 업데이트
|
|
||||||
|
|
||||||
**입력:**
|
|
||||||
- Todo 체크박스 클릭 (완료/미완료 토글)
|
|
||||||
- 확인 모달 승인
|
|
||||||
|
|
||||||
**출력/결과:**
|
|
||||||
- Todo 상태 변경: 완료 ↔ 미완료
|
|
||||||
- 완료 시각 기록
|
|
||||||
- 회의록 진행률 업데이트
|
|
||||||
- 알림 대상 생성 (옵션)
|
|
||||||
- 토스트 메시지: "Todo가 완료되었습니다" / "미완료로 변경되었습니다"
|
|
||||||
|
|
||||||
**예외처리:**
|
|
||||||
- 네트워크 오류: "Todo 상태 변경 중 오류가 발생했습니다" 에러 메시지
|
|
||||||
- 확인 모달 취소: 체크박스 상태 원복
|
|
||||||
|
|
||||||
**관련 유저스토리:**
|
|
||||||
- UFR-TODO-010: Todo할당
|
|
||||||
- UFR-TODO-040: Todo관리
|
|
||||||
- UFR-MEET-047: 회의록상세조회
|
|
||||||
- UFR-NOTI-010: 알림발송 (신규)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### UFR-TODO-040: [Todo관리] Todo 담당자로서 | 나는, 나의 Todo를 효율적으로 관리하기 위해 | Todo 목록을 조회하고 상태를 변경하고 편집하고 싶다.
|
|
||||||
|
|
||||||
**수행절차:**
|
|
||||||
1. 사이드바 또는 하단 네비게이션에서 "Todo 관리" 메뉴 클릭
|
|
||||||
2. Todo 관리 화면(09-Todo관리.html) 표시
|
|
||||||
3. 통계 블록 확인 (3열 그리드):
|
|
||||||
- 전체 (미완료): 완료되지 않은 전체 Todo 개수
|
|
||||||
- 마감 임박 (3일 이내): D-3 이내 미완료 Todo
|
|
||||||
- 지연 (기한 경과): 마감일이 지난 미완료 Todo
|
|
||||||
4. 필터 탭 선택:
|
|
||||||
- 전체: 모든 Todo (미완료 우선, 마감일 순)
|
|
||||||
- 지연: 마감일 지난 Todo
|
|
||||||
- 마감 임박: D-3 이내 Todo
|
|
||||||
- 완료: 완료된 Todo
|
|
||||||
5. Todo 카드 확인:
|
|
||||||
- 체크박스, D-day 배지, 우선순위 배지
|
|
||||||
- 제목, 회의록 링크, 마감일
|
|
||||||
- 편집 버튼 (미완료 Todo만)
|
|
||||||
6. 체크박스 클릭 시 완료/미완료 토글 (확인 모달)
|
|
||||||
7. 편집 버튼 클릭 시 편집 모달:
|
|
||||||
- 제목, 담당자, 마감일, 우선순위 수정
|
|
||||||
- 권한: 담당자 본인 OR 회의 생성자
|
|
||||||
8. Todo 카드 클릭 시 해당 회의록 상세 조회 화면으로 이동
|
|
||||||
|
|
||||||
**입력:**
|
|
||||||
- 필터 탭 클릭
|
|
||||||
- Todo 체크박스 클릭
|
|
||||||
- 편집 버튼 클릭
|
|
||||||
- Todo 카드 클릭
|
|
||||||
|
|
||||||
**출력/결과:**
|
|
||||||
- 통계 블록 (3열):
|
|
||||||
- 전체 (미완료), 마감 임박, 지연 개수
|
|
||||||
- 필터 탭: 전체, 지연, 마감 임박, 완료 (각 탭에 개수 표시)
|
|
||||||
- Todo 카드:
|
|
||||||
- D-day 배지 (완료, D+n(지연), D-DAY, D-n)
|
|
||||||
- 우선순위 배지 (높음, 보통, 낮음)
|
|
||||||
- 제목, 회의록 링크, 마감일, 편집 버튼
|
|
||||||
- 편집 모달: 제목, 담당자, 마감일, 우선순위 입력 필드
|
|
||||||
- 빈 상태: "할당된 Todo가 없습니다"
|
|
||||||
|
|
||||||
**예외처리:**
|
|
||||||
- Todo 없음: 빈 상태 표시
|
|
||||||
- 편집 권한 없음: "담당자 또는 회의 생성자만 편집할 수 있습니다" 안내
|
|
||||||
- 편집 실패: "Todo 수정 중 오류가 발생했습니다" 에러 메시지
|
|
||||||
- 네트워크 오류: "Todo 조회 중 오류가 발생했습니다" 에러 메시지
|
|
||||||
|
|
||||||
**관련 유저스토리:**
|
|
||||||
- UFR-TODO-010: Todo할당
|
|
||||||
- UFR-TODO-030: Todo완료처리
|
|
||||||
- UFR-USER-020: 대시보드 조회
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## NOTIFICATION 서비스 (신규)
|
## NOTIFICATION 서비스 (신규)
|
||||||
|
|
||||||
### UFR-NOTI-010: [알림발송] Notification 시스템으로서 | 나는, 사용자에게 중요한 이벤트를 알리기 위해 | 주기적으로 알림 대상을 확인하여 이메일을 발송하고 싶다.
|
### UFR-NOTI-010: [알림발송] Notification 시스템으로서 | 나는, 사용자에게 중요한 이벤트를 알리기 위해 | 주기적으로 알림 대상을 확인하여 이메일을 발송하고 싶다.
|
||||||
@ -1254,8 +1104,6 @@
|
|||||||
- 발송 실패 시 재시도 횟수 증가, 최대 3회 재시도
|
- 발송 실패 시 재시도 횟수 증가, 최대 3회 재시도
|
||||||
|
|
||||||
4. **알림 유형 및 트리거**:
|
4. **알림 유형 및 트리거**:
|
||||||
- **Todo 할당**: AI가 Todo 추출 후 담당자에게 알림
|
|
||||||
- **Todo 완료**: 담당자가 Todo 완료 시 회의 생성자에게 알림 (옵션)
|
|
||||||
- **회의 시작 알림**: 회의 시작 10분 전 참석자에게 알림
|
- **회의 시작 알림**: 회의 시작 10분 전 참석자에게 알림
|
||||||
- **회의록 확정**: 회의록 최종 확정 시 모든 참석자에게 알림
|
- **회의록 확정**: 회의록 최종 확정 시 모든 참석자에게 알림
|
||||||
- **참석자 초대**: 회의 중 참석자 초대 시 신규 참석자에게 알림
|
- **참석자 초대**: 회의 중 참석자 초대 시 신규 참석자에게 알림
|
||||||
@ -1282,10 +1130,6 @@
|
|||||||
|
|
||||||
**알림 유형별 템플릿 예시:**
|
**알림 유형별 템플릿 예시:**
|
||||||
|
|
||||||
**Todo 할당**
|
|
||||||
- 제목: "[회의록] Todo가 할당되었습니다"
|
|
||||||
- 내용: "{담당자}님, {회의 제목} 회의에서 다음 Todo가 할당되었습니다:\n- {Todo 제목}\n- 마감일: {마감일}\n\n회의록 보기: {회의록 링크}"
|
|
||||||
|
|
||||||
**회의 시작 알림**
|
**회의 시작 알림**
|
||||||
- 제목: "[회의록] 10분 후 회의가 시작됩니다"
|
- 제목: "[회의록] 10분 후 회의가 시작됩니다"
|
||||||
- 내용: "{참석자}님, {회의 제목} 회의가 10분 후 시작됩니다.\n- 일시: {날짜} {시간}\n- 장소: {장소}\n\n회의 참여하기: {회의 링크}"
|
- 내용: "{참석자}님, {회의 제목} 회의가 10분 후 시작됩니다.\n- 일시: {날짜} {시간}\n- 장소: {장소}\n\n회의 참여하기: {회의 링크}"
|
||||||
@ -1331,29 +1175,41 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### UFR-PART-020: [AI주요내용체크] 회의 참석자로서 | 나는, 중요한 내용을 표시하기 위해 | AI가 추출한 주요 내용을 체크박스로 선택하고 싶다.
|
### UFR-PART-020: [AI기반메모작성] 회의 참석자로서 | 나는, 중요한 내용을 메모로 기록하기 위해 | AI가 추천한 주요 내용을 메모 입력창에 추가하고 편집하고 싶다.
|
||||||
|
|
||||||
**수행절차:**
|
**수행절차:**
|
||||||
1. 회의 진행 중 AI가 실시간으로 주요 내용 추출
|
1. 회의 진행 중 AI가 실시간으로 주요 내용 감지 및 분석
|
||||||
2. "AI 주요 내용" 탭에 체크박스 항목으로 표시
|
2. "AI 제안" 탭 하단에 "AI가 감지한 주요 내용" 리스트로 표시
|
||||||
3. 참석자는 중요하다고 생각하는 항목 체크
|
- 각 항목: "[시간] 주요 내용 텍스트" 형식
|
||||||
4. 체크 데이터 개인별로 저장 (다른 참석자 체크 여부 안 보임)
|
- 예: "[15:32] 예산 책정 관련 결정", "[15:35] 다음 회의 일정 합의"
|
||||||
5. 회의 종료 시 AI 요약 시 체크 수에 따라 가중치 부여
|
3. 참석자가 리스트 항목 선택 시:
|
||||||
|
- 메모 입력창에 시간과 함께 자동 입력
|
||||||
|
- 입력된 메모는 수정 가능 (자동/수동 구분 표시)
|
||||||
|
4. "저장" 버튼 클릭 시 개인 메모로 저장
|
||||||
|
- 각 참석자별로 개별 저장
|
||||||
|
- 다른 참석자의 메모는 볼 수 없음
|
||||||
|
5. 회의 종료 시 AI가 회의록 생성할 때 모든 참석자의 메모 참조
|
||||||
|
6. 메모는 회의 종료 전까지만 표시 및 편집 가능
|
||||||
|
|
||||||
**입력:**
|
**입력:**
|
||||||
- 회의 ID
|
- 회의 ID
|
||||||
- AI 추출 주요 내용
|
- AI가 실시간 감지한 주요 내용
|
||||||
- 사용자 체크 선택
|
- 참석자가 선택하거나 직접 입력한 메모 텍스트
|
||||||
|
|
||||||
**출력/결과:**
|
**출력/결과:**
|
||||||
- 체크된 항목 저장
|
- 메모 입력창: 시간 포함 메모 텍스트
|
||||||
- AI 요약 시 가중치 데이터로 활용
|
- AI 추천 리스트: 실시간 업데이트되는 주요 내용 항목들
|
||||||
|
- 저장된 개인 메모: 참석자별 개별 저장
|
||||||
|
- AI 회의록 생성 시: 모든 참석자의 메모 참조하여 요약 생성
|
||||||
|
|
||||||
**예외처리:**
|
**예외처리:**
|
||||||
- AI 추출 실패: 빈 목록 표시
|
- AI 감지 실패: 빈 리스트 표시, 수동 메모 작성은 가능
|
||||||
|
- 저장 실패: "메모 저장 중 오류가 발생했습니다" 에러 메시지, 로컬 임시 저장
|
||||||
|
- 회의 종료 후: 메모 조회/편집 불가
|
||||||
|
|
||||||
**관련 유저스토리:**
|
**관련 유저스토리:**
|
||||||
- UFR-AI-030: 실시간 AI 제안
|
- UFR-AI-030: 실시간 AI 제안
|
||||||
|
- UFR-AI-010: 회의록자동작성 (메모 참조)
|
||||||
- UFR-MEET-040: 회의종료
|
- UFR-MEET-040: 회의종료
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -1539,6 +1395,7 @@
|
|||||||
|
|
||||||
| 버전 | 날짜 | 작성자 | 변경 내용 |
|
| 버전 | 날짜 | 작성자 | 변경 내용 |
|
||||||
|------|------|--------|-----------|
|
|------|------|--------|-----------|
|
||||||
|
| v2.4.0 | 2025-10-27 | 팀 전체 | • MVP 스코프 축소: Todo 관리 기능 제거<br>• UFR-USER-020 수정: 대시보드에서 "나의 Todo" 제거, "작성중 회의록" 추가<br>• UFR-PART-020 변경: AI주요내용체크 → AI기반메모작성 (메모 입력창 + AI 추천)<br>• UFR-AI-010 개선: 회의록 생성 시 참석자 메모 참조<br>• UFR-MEET-055 개선: 회의록 수정 시 실시간 협업 제거, 검증완료 체크로 보호<br>• TODO 서비스 전체 제거 (UFR-TODO-010/030/040)<br>• NOTIFICATION 서비스: Todo 관련 알림 제거<br>• 네비게이션 간소화: Todo 관리 메뉴 제거 (대시보드, 회의록만 유지) |
|
||||||
| v2.3.1 | 2025-10-27 | 팀 전체 | • MVP 개선: 회의 참석자 권한 단순화<br>• 신규 유저스토리: UFR-PART-010/020/030 (참석자 공통), UFR-HOST-010/020 (생성자 전용)<br>• 신규 유저스토리: UFR-TERM-010/020/030 (용어 기능 MVP 단순화)<br>• UFR-MEET-040 수정: 회의 종료 권한 생성자 전용으로 명확화<br>• UFR-MEET-030 개선: 회의 진입 경로 2가지 명시 (바로시작, 참여하기)<br>• UFR-AI-040 개선: 관련 회의록 유사 내용 요약 추가 (최대 3개, 퍼센트 표시, 3-5문장 요약)<br>• 메모 기능 단순화: 체크박스 방식으로 변경<br>• 용어 설명 단순화: JSON 용어 사전 방식 도입 |
|
| v2.3.1 | 2025-10-27 | 팀 전체 | • MVP 개선: 회의 참석자 권한 단순화<br>• 신규 유저스토리: UFR-PART-010/020/030 (참석자 공통), UFR-HOST-010/020 (생성자 전용)<br>• 신규 유저스토리: UFR-TERM-010/020/030 (용어 기능 MVP 단순화)<br>• UFR-MEET-040 수정: 회의 종료 권한 생성자 전용으로 명확화<br>• UFR-MEET-030 개선: 회의 진입 경로 2가지 명시 (바로시작, 참여하기)<br>• UFR-AI-040 개선: 관련 회의록 유사 내용 요약 추가 (최대 3개, 퍼센트 표시, 3-5문장 요약)<br>• 메모 기능 단순화: 체크박스 방식으로 변경<br>• 용어 설명 단순화: JSON 용어 사전 방식 도입 |
|
||||||
| v2.3.0 | 2025-10-24 | 이미준 | • 프로토타입 분석을 통한 유저스토리 전면 재정비<br>• 신규 유저스토리 추가: UFR-MEET-015 (참석자 실시간 초대), UFR-NOTI-010 (알림 발송)<br>• 알림 아키텍처 폴링 방식으로 통일 (실시간 발송 → 주기적 폴링)<br>• 10개 프로토타입 화면 반영 완료<br>• 마이크로서비스 구성 재정의 (User, Meeting, STT, AI, Notification)<br>• 기존 24개 유저스토리 ID 승계 및 정리 |
|
| v2.3.0 | 2025-10-24 | 이미준 | • 프로토타입 분석을 통한 유저스토리 전면 재정비<br>• 신규 유저스토리 추가: UFR-MEET-015 (참석자 실시간 초대), UFR-NOTI-010 (알림 발송)<br>• 알림 아키텍처 폴링 방식으로 통일 (실시간 발송 → 주기적 폴링)<br>• 10개 프로토타입 화면 반영 완료<br>• 마이크로서비스 구성 재정의 (User, Meeting, STT, AI, Notification)<br>• 기존 24개 유저스토리 ID 승계 및 정리 |
|
||||||
| v2.2.0 | 2025-10-23 | 이미준 | 이전 버전 |
|
| v2.2.0 | 2025-10-23 | 이미준 | 이전 버전 |
|
||||||
|
|||||||
25
meeting/README.md
Normal file
25
meeting/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# notification 메일 알림발송
|
||||||
|
|
||||||
|
아래와 같이 메일발송 Email List를 loop돌려서 event 객체를 생성한 후에 `publishNotificationRequest` 메소드를 통해 Event 메세지 발행하시면 됩니다.
|
||||||
|
|
||||||
|
```
|
||||||
|
// 각 참석자에게 개별 알림 이벤트 발행
|
||||||
|
for (String participantEmail : participants) {
|
||||||
|
NotificationRequestEvent event = NotificationRequestEvent.builder()
|
||||||
|
.notificationType("MEETING_INVITATION")
|
||||||
|
.recipientEmail(participantEmail)
|
||||||
|
.recipientId(participantEmail)
|
||||||
|
.recipientName(participantEmail)
|
||||||
|
.title("회의 초대")
|
||||||
|
.message(String.format("'%s' 회의에 초대되었습니다. 일시: %s, 장소: %s",
|
||||||
|
title, startTime, location))
|
||||||
|
.relatedEntityId(meetingId)
|
||||||
|
.relatedEntityType("MEETING")
|
||||||
|
.requestedBy(organizerId)
|
||||||
|
.requestedByName(organizerName)
|
||||||
|
.eventTime(LocalDateTime.now())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
publishNotificationRequest(event);
|
||||||
|
}
|
||||||
|
```
|
||||||
Loading…
x
Reference in New Issue
Block a user