mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 12:36:23 +00:00
Merge branch 'main' of https://github.com/hwanny1128/HGZero
This commit is contained in:
commit
7325c554ed
@ -31,8 +31,8 @@ tags:
|
||||
description: 회의록 자동 작성 관련 API
|
||||
- name: Todo
|
||||
description: Todo 자동 추출 관련 API
|
||||
- name: Improve
|
||||
description: 회의록 개선 관련 API
|
||||
- name: Section
|
||||
description: 섹션 AI 요약 재생성 관련 API
|
||||
- name: Relation
|
||||
description: 관련 회의록 연결 관련 API
|
||||
- name: Term
|
||||
@ -101,38 +101,38 @@ paths:
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/transcripts/{meetingId}/improve:
|
||||
/sections/{sectionId}/regenerate-summary:
|
||||
post:
|
||||
tags:
|
||||
- Improve
|
||||
summary: 회의록 개선
|
||||
- Section
|
||||
summary: 섹션 AI 요약 재생성
|
||||
description: |
|
||||
프롬프팅을 통해 회의록을 다양한 형식으로 변환합니다.
|
||||
(1Page 요약, 핵심 요약, 상세 보고서 등)
|
||||
operationId: improveTranscript
|
||||
x-user-story: UFR-AI-030
|
||||
x-controller: ImproveController
|
||||
사용자가 작성한 섹션 내용을 기반으로 AI 요약을 재생성합니다.
|
||||
회의록 작성/수정 중에 사용됩니다.
|
||||
operationId: regenerateSectionSummary
|
||||
x-user-story: UFR-AI-035
|
||||
x-controller: SectionController
|
||||
parameters:
|
||||
- name: meetingId
|
||||
- name: sectionId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
description: 회의 ID
|
||||
description: 섹션 ID
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TranscriptImproveRequest'
|
||||
$ref: '#/components/schemas/SectionSummaryRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: 회의록 개선 성공
|
||||
description: AI 요약 재생성 성공
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TranscriptImproveResponse'
|
||||
$ref: '#/components/schemas/SectionSummaryResponse'
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'404':
|
||||
@ -385,31 +385,29 @@ components:
|
||||
## 보류사항
|
||||
- 배포 일정은 다음 회의에서 논의
|
||||
|
||||
TranscriptImproveRequest:
|
||||
SectionSummaryRequest:
|
||||
type: object
|
||||
required:
|
||||
- promptType
|
||||
- sectionContent
|
||||
properties:
|
||||
promptType:
|
||||
sectionContent:
|
||||
type: string
|
||||
enum:
|
||||
- 1PAGE_SUMMARY
|
||||
- CORE_SUMMARY
|
||||
- DETAILED_REPORT
|
||||
- DECISION_FOCUSED
|
||||
- ACTION_FOCUSED
|
||||
- EXECUTIVE_REPORT
|
||||
- CUSTOM
|
||||
description: 프롬프트 유형
|
||||
example: "1PAGE_SUMMARY"
|
||||
customPrompt:
|
||||
description: 사용자가 작성/수정한 섹션 내용 (Markdown 형식)
|
||||
example: |
|
||||
**논의 사항:**
|
||||
- AI 기반 회의록 자동화 서비스 출시 결정
|
||||
- 타겟 고객: 중소기업, 스타트업
|
||||
- 주요 기능: 음성인식, AI 요약, Todo 자동 추출
|
||||
- 차별화 포인트: 실시간 검증, 협업 기능
|
||||
|
||||
**결정 사항:**
|
||||
- 베타 버전 출시일: 2025년 12월 1일
|
||||
- 초기 목표 사용자: 100개 팀
|
||||
meetingId:
|
||||
type: string
|
||||
description: 사용자 정의 프롬프트 (promptType이 CUSTOM일 때)
|
||||
example: "경영진 보고용으로 3가지 핵심 결정사항만 요약해주세요"
|
||||
userId:
|
||||
type: string
|
||||
description: 사용자 ID
|
||||
example: "user123"
|
||||
format: uuid
|
||||
description: 회의 ID (맥락 이해용, 선택적)
|
||||
example: "550e8400-e29b-41d4-a716-446655440000"
|
||||
|
||||
TermDetectionRequest:
|
||||
type: object
|
||||
@ -517,39 +515,18 @@ components:
|
||||
description: 추출 시간
|
||||
example: "2025-01-23T11:00:00Z"
|
||||
|
||||
TranscriptImproveResponse:
|
||||
SectionSummaryResponse:
|
||||
type: object
|
||||
properties:
|
||||
transcriptId:
|
||||
summary:
|
||||
type: string
|
||||
format: uuid
|
||||
description: 개선된 회의록 ID
|
||||
example: "770e8400-e29b-41d4-a716-446655440002"
|
||||
version:
|
||||
type: integer
|
||||
description: 버전 번호
|
||||
example: 2
|
||||
baseVersion:
|
||||
type: integer
|
||||
description: 원본 버전 번호
|
||||
example: 1
|
||||
improvementType:
|
||||
type: string
|
||||
description: 개선 유형
|
||||
example: "1PAGE_SUMMARY"
|
||||
content:
|
||||
type: string
|
||||
description: 개선된 회의록 내용
|
||||
example: "## 프로젝트 킥오프 미팅 요약\n\n### 핵심 결정사항\n1. React 기반 프론트엔드 개발..."
|
||||
originalLink:
|
||||
type: string
|
||||
description: 원본 회의록 링크
|
||||
example: "/transcripts/660e8400-e29b-41d4-a716-446655440001"
|
||||
createdAt:
|
||||
description: 생성된 AI 요약 (2-3문장)
|
||||
example: "AI 기반 회의록 자동화 서비스로 결정. 타겟은 중소기업 및 스타트업이며, 주요 기능은 음성인식, AI 요약, Todo 추출입니다. 경쟁사 대비 차별점은 실시간 검증 및 협업 기능입니다."
|
||||
generatedAt:
|
||||
type: string
|
||||
format: date-time
|
||||
description: 생성 시간
|
||||
example: "2025-01-23T11:30:00Z"
|
||||
example: "2025-01-23T11:00:00Z"
|
||||
|
||||
RelatedTranscriptsResponse:
|
||||
type: object
|
||||
|
||||
@ -99,20 +99,13 @@ paths:
|
||||
priority: "MEDIUM"
|
||||
status: "IN_PROGRESS"
|
||||
minutesId: "770e8400-e29b-41d4-a716-446655440001"
|
||||
recentMinutes:
|
||||
myMinutes:
|
||||
- minutesId: "770e8400-e29b-41d4-a716-446655440000"
|
||||
title: "아키텍처 설계 회의"
|
||||
meetingDate: "2025-01-23T14:00:00Z"
|
||||
status: "FINALIZED"
|
||||
participantCount: 6
|
||||
lastModified: "2025-01-23T16:30:00Z"
|
||||
sharedMinutes:
|
||||
- minutesId: "770e8400-e29b-41d4-a716-446655440002"
|
||||
title: "프로젝트 킥오프 미팅"
|
||||
meetingDate: "2025-01-22T10:00:00Z"
|
||||
status: "FINALIZED"
|
||||
sharedBy: "김철수"
|
||||
sharedAt: "2025-01-22T15:00:00Z"
|
||||
statistics:
|
||||
upcomingMeetingsCount: 2
|
||||
activeTodosCount: 5
|
||||
@ -154,6 +147,7 @@ paths:
|
||||
startTime: "2025-01-25T14:00:00Z"
|
||||
endTime: "2025-01-25T16:00:00Z"
|
||||
location: "회의실 A"
|
||||
agenda: "1. Q1 목표 달성 현황 검토\n2. Q2 전략 방향 논의\n3. 주요 이슈 및 리스크 검토"
|
||||
participants:
|
||||
- "user1@example.com"
|
||||
- "user2@example.com"
|
||||
@ -288,6 +282,7 @@ paths:
|
||||
- 회의 통계 생성
|
||||
- AI 제안 데이터 회의록에 반영
|
||||
- 참석자에게 종료 알림
|
||||
- 검증 완료 화면 데이터 반환
|
||||
operationId: endMeeting
|
||||
x-user-story: UFR-MEET-040
|
||||
x-controller: MeetingController
|
||||
@ -296,6 +291,15 @@ paths:
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/MeetingIdPath'
|
||||
- $ref: '#/components/parameters/UserIdHeader'
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/EndMeetingRequest'
|
||||
example:
|
||||
finalAgenda: "1. Q1 목표 달성률 85% 확인\n2. 신규 기능 우선순위 결정\n3. 다음 주 개발 일정 조율"
|
||||
applyAiSuggestions: true
|
||||
responses:
|
||||
'200':
|
||||
description: 회의 종료 성공
|
||||
@ -320,6 +324,53 @@ paths:
|
||||
discussion: 3
|
||||
decision: 2
|
||||
todo: 3
|
||||
verificationStatus:
|
||||
totalSections: 4
|
||||
verifiedSections: 2
|
||||
verificationRate: 50
|
||||
sections:
|
||||
- sectionId: "880e8400-e29b-41d4-a716-446655440000"
|
||||
sectionType: "DISCUSSION"
|
||||
title: "회의 개요"
|
||||
isVerified: true
|
||||
isLocked: false
|
||||
verifiers:
|
||||
- userId: "user1"
|
||||
name: "김민준"
|
||||
verifiedAt: "2025-01-25T15:30:00Z"
|
||||
- userId: "user2"
|
||||
name: "박서연"
|
||||
verifiedAt: "2025-01-25T15:35:00Z"
|
||||
- sectionId: "880e8400-e29b-41d4-a716-446655440001"
|
||||
sectionType: "DECISION"
|
||||
title: "논의 사항"
|
||||
isVerified: true
|
||||
isLocked: true
|
||||
verifiers:
|
||||
- userId: "user1"
|
||||
name: "김민준"
|
||||
verifiedAt: "2025-01-25T15:40:00Z"
|
||||
- userId: "user2"
|
||||
name: "박서연"
|
||||
verifiedAt: "2025-01-25T15:42:00Z"
|
||||
- userId: "user3"
|
||||
name: "이준호"
|
||||
verifiedAt: "2025-01-25T15:45:00Z"
|
||||
- sectionId: "880e8400-e29b-41d4-a716-446655440002"
|
||||
sectionType: "TODO"
|
||||
title: "결정 사항"
|
||||
isVerified: false
|
||||
isLocked: false
|
||||
verifiers:
|
||||
- userId: "user2"
|
||||
name: "박서연"
|
||||
verifiedAt: "2025-01-25T15:50:00Z"
|
||||
- sectionId: "880e8400-e29b-41d4-a716-446655440003"
|
||||
sectionType: "TODO"
|
||||
title: "액션 아이템"
|
||||
isVerified: false
|
||||
isLocked: false
|
||||
verifiers: []
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFoundError'
|
||||
'409':
|
||||
@ -629,6 +680,85 @@ paths:
|
||||
|
||||
# ==================== Todo APIs ====================
|
||||
/todos:
|
||||
get:
|
||||
tags:
|
||||
- Todo
|
||||
summary: Todo 목록 조회
|
||||
description: |
|
||||
사용자별 Todo 목록을 조회하고 필터링합니다.
|
||||
- 상태별 필터링 (전체/진행중/완료/마감임박)
|
||||
- 우선순위별 정렬
|
||||
- 통계 정보 포함
|
||||
operationId: getTodoList
|
||||
x-user-story: UFR-TODO-020
|
||||
x-controller: TodoController
|
||||
security:
|
||||
- bearerAuth: []
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/UserIdHeader'
|
||||
- name: status
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
enum: [ALL, IN_PROGRESS, COMPLETED, URGENT]
|
||||
default: ALL
|
||||
description: |
|
||||
Todo 상태 필터
|
||||
- ALL: 전체
|
||||
- IN_PROGRESS: 진행중
|
||||
- COMPLETED: 완료
|
||||
- URGENT: 마감 임박 (3일 이내)
|
||||
- name: sort
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
enum: [DUE_DATE, PRIORITY, CREATED_AT]
|
||||
default: DUE_DATE
|
||||
description: 정렬 기준
|
||||
responses:
|
||||
'200':
|
||||
description: Todo 목록 조회 성공
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TodoListResponse'
|
||||
example:
|
||||
statistics:
|
||||
total: 12
|
||||
inProgress: 8
|
||||
completed: 4
|
||||
urgent: 3
|
||||
completionRate: 33.3
|
||||
todos:
|
||||
- todoId: "660e8400-e29b-41d4-a716-446655440000"
|
||||
content: "API 설계 문서 작성"
|
||||
assignee:
|
||||
userId: "user1"
|
||||
email: "user@example.com"
|
||||
name: "김민준"
|
||||
dueDate: "2025-01-30"
|
||||
priority: "HIGH"
|
||||
status: "IN_PROGRESS"
|
||||
progress: 60
|
||||
minutesId: "770e8400-e29b-41d4-a716-446655440000"
|
||||
meetingTitle: "아키텍처 설계 회의"
|
||||
createdAt: "2025-01-23T10:00:00Z"
|
||||
- todoId: "660e8400-e29b-41d4-a716-446655440001"
|
||||
content: "데이터베이스 스키마 설계"
|
||||
assignee:
|
||||
userId: "user1"
|
||||
email: "user@example.com"
|
||||
name: "김민준"
|
||||
dueDate: "2025-02-05"
|
||||
priority: "MEDIUM"
|
||||
status: "IN_PROGRESS"
|
||||
progress: 30
|
||||
minutesId: "770e8400-e29b-41d4-a716-446655440001"
|
||||
meetingTitle: "주간 스프린트 리뷰"
|
||||
createdAt: "2025-01-22T14:00:00Z"
|
||||
'401':
|
||||
$ref: '#/components/responses/UnauthorizedError'
|
||||
|
||||
post:
|
||||
tags:
|
||||
- Todo
|
||||
@ -712,6 +842,7 @@ paths:
|
||||
summary: 템플릿 목록 조회
|
||||
description: |
|
||||
사용 가능한 회의록 템플릿 목록을 조회합니다.
|
||||
각 템플릿의 섹션 정보를 포함하여 반환합니다.
|
||||
- 일반 회의
|
||||
- 스크럼 회의
|
||||
- 프로젝트 킥오프
|
||||
@ -730,34 +861,47 @@ paths:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/TemplateResponse'
|
||||
|
||||
/templates/{templateId}:
|
||||
get:
|
||||
tags:
|
||||
- Template
|
||||
summary: 템플릿 상세 조회
|
||||
description: 특정 템플릿의 상세 정보를 조회합니다.
|
||||
operationId: getTemplate
|
||||
x-user-story: UFR-MEET-020
|
||||
x-controller: TemplateController
|
||||
security:
|
||||
- bearerAuth: []
|
||||
parameters:
|
||||
- name: templateId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
description: 템플릿 ID
|
||||
responses:
|
||||
'200':
|
||||
description: 템플릿 상세 조회 성공
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TemplateDetailResponse'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFoundError'
|
||||
example:
|
||||
- templateId: "general-meeting"
|
||||
name: "일반 회의"
|
||||
description: "기본 회의록 형식"
|
||||
icon: "📋"
|
||||
category: "GENERAL"
|
||||
sections:
|
||||
- sectionType: "DISCUSSION"
|
||||
title: "회의 개요"
|
||||
order: 1
|
||||
isRequired: true
|
||||
- sectionType: "DISCUSSION"
|
||||
title: "논의 사항"
|
||||
order: 2
|
||||
isRequired: true
|
||||
- sectionType: "DECISION"
|
||||
title: "결정 사항"
|
||||
order: 3
|
||||
isRequired: true
|
||||
- sectionType: "TODO"
|
||||
title: "액션 아이템"
|
||||
order: 4
|
||||
isRequired: true
|
||||
- templateId: "scrum-meeting"
|
||||
name: "스크럼 회의"
|
||||
description: "데일리 스탠드업 형식"
|
||||
icon: "🏃"
|
||||
category: "SCRUM"
|
||||
sections:
|
||||
- sectionType: "DISCUSSION"
|
||||
title: "어제 한 일"
|
||||
order: 1
|
||||
isRequired: true
|
||||
- sectionType: "TODO"
|
||||
title: "오늘 할 일"
|
||||
order: 2
|
||||
isRequired: true
|
||||
- sectionType: "CUSTOM"
|
||||
title: "블로커/이슈"
|
||||
order: 3
|
||||
isRequired: true
|
||||
|
||||
# ==================== WebSocket Endpoints ====================
|
||||
/ws/minutes/{minutesId}:
|
||||
@ -880,16 +1024,11 @@ components:
|
||||
items:
|
||||
$ref: '#/components/schemas/ActiveTodo'
|
||||
description: 진행 중 Todo 목록
|
||||
recentMinutes:
|
||||
myMinutes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/RecentMinutes'
|
||||
description: 최근 회의록 목록
|
||||
sharedMinutes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/SharedMinutes'
|
||||
description: 공유받은 회의록 목록
|
||||
$ref: '#/components/schemas/MyMinutes'
|
||||
description: 내 회의록 목록
|
||||
statistics:
|
||||
$ref: '#/components/schemas/DashboardStatistics'
|
||||
description: 통계 정보
|
||||
@ -949,7 +1088,7 @@ components:
|
||||
- priority
|
||||
- status
|
||||
|
||||
RecentMinutes:
|
||||
MyMinutes:
|
||||
type: object
|
||||
properties:
|
||||
minutesId:
|
||||
@ -974,30 +1113,6 @@ components:
|
||||
- meetingDate
|
||||
- status
|
||||
|
||||
SharedMinutes:
|
||||
type: object
|
||||
properties:
|
||||
minutesId:
|
||||
type: string
|
||||
format: uuid
|
||||
title:
|
||||
type: string
|
||||
meetingDate:
|
||||
type: string
|
||||
format: date-time
|
||||
status:
|
||||
type: string
|
||||
enum: [DRAFT, FINALIZED]
|
||||
sharedBy:
|
||||
type: string
|
||||
sharedAt:
|
||||
type: string
|
||||
format: date-time
|
||||
required:
|
||||
- minutesId
|
||||
- title
|
||||
- status
|
||||
|
||||
DashboardStatistics:
|
||||
type: object
|
||||
properties:
|
||||
@ -1034,6 +1149,10 @@ components:
|
||||
type: string
|
||||
maxLength: 200
|
||||
description: 회의 장소
|
||||
agenda:
|
||||
type: string
|
||||
maxLength: 1000
|
||||
description: 회의 안건 (선택 사항)
|
||||
participants:
|
||||
type: array
|
||||
items:
|
||||
@ -1319,14 +1438,7 @@ components:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/MinutesSection'
|
||||
aiSummaries:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/AISummary'
|
||||
relatedMinutes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/RelatedMinutes'
|
||||
description: 섹션별 내용 (AI 요약 및 관련 회의록 포함)
|
||||
permissions:
|
||||
$ref: '#/components/schemas/MinutesPermissions'
|
||||
status:
|
||||
@ -1390,6 +1502,14 @@ components:
|
||||
verifiedAt:
|
||||
type: string
|
||||
format: date-time
|
||||
aiSummary:
|
||||
$ref: '#/components/schemas/AISummary'
|
||||
description: 이 섹션의 AI 요약
|
||||
relatedMinutes:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/RelatedMinutes'
|
||||
description: 이 섹션과 관련된 회의록 목록 (최대 3개)
|
||||
required:
|
||||
- sectionId
|
||||
- sectionType
|
||||
@ -1405,11 +1525,9 @@ components:
|
||||
summaryId:
|
||||
type: string
|
||||
format: uuid
|
||||
sectionId:
|
||||
type: string
|
||||
format: uuid
|
||||
content:
|
||||
type: string
|
||||
description: AI가 생성한 요약 내용
|
||||
createdAt:
|
||||
type: string
|
||||
format: date-time
|
||||
@ -1418,7 +1536,6 @@ components:
|
||||
format: date-time
|
||||
required:
|
||||
- summaryId
|
||||
- sectionId
|
||||
- content
|
||||
|
||||
RelatedMinutes:
|
||||
@ -1475,6 +1592,13 @@ components:
|
||||
type: string
|
||||
aiSummary:
|
||||
type: string
|
||||
relatedMinutesIds:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
format: uuid
|
||||
description: 이 섹션과 연결할 관련 회의록 ID 목록 (최대 3개)
|
||||
maxItems: 3
|
||||
required:
|
||||
- sectionId
|
||||
|
||||
@ -1541,6 +1665,102 @@ components:
|
||||
- isVerified
|
||||
|
||||
# ==================== Todo Schemas ====================
|
||||
TodoListResponse:
|
||||
type: object
|
||||
properties:
|
||||
statistics:
|
||||
$ref: '#/components/schemas/TodoStatistics'
|
||||
todos:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/TodoDetail'
|
||||
required:
|
||||
- statistics
|
||||
- todos
|
||||
|
||||
TodoStatistics:
|
||||
type: object
|
||||
properties:
|
||||
total:
|
||||
type: integer
|
||||
description: 전체 Todo 개수
|
||||
inProgress:
|
||||
type: integer
|
||||
description: 진행 중 Todo 개수
|
||||
completed:
|
||||
type: integer
|
||||
description: 완료된 Todo 개수
|
||||
urgent:
|
||||
type: integer
|
||||
description: 마감 임박 Todo 개수 (3일 이내)
|
||||
completionRate:
|
||||
type: number
|
||||
format: double
|
||||
description: 완료율 (%)
|
||||
required:
|
||||
- total
|
||||
- inProgress
|
||||
- completed
|
||||
- urgent
|
||||
- completionRate
|
||||
|
||||
TodoDetail:
|
||||
type: object
|
||||
properties:
|
||||
todoId:
|
||||
type: string
|
||||
format: uuid
|
||||
content:
|
||||
type: string
|
||||
assignee:
|
||||
$ref: '#/components/schemas/TodoAssignee'
|
||||
dueDate:
|
||||
type: string
|
||||
format: date
|
||||
priority:
|
||||
type: string
|
||||
enum: [HIGH, MEDIUM, LOW]
|
||||
status:
|
||||
type: string
|
||||
enum: [IN_PROGRESS, COMPLETED]
|
||||
progress:
|
||||
type: integer
|
||||
minimum: 0
|
||||
maximum: 100
|
||||
description: 진행률 (%)
|
||||
minutesId:
|
||||
type: string
|
||||
format: uuid
|
||||
meetingTitle:
|
||||
type: string
|
||||
description: 관련 회의 제목
|
||||
createdAt:
|
||||
type: string
|
||||
format: date-time
|
||||
required:
|
||||
- todoId
|
||||
- content
|
||||
- assignee
|
||||
- priority
|
||||
- status
|
||||
- minutesId
|
||||
- meetingTitle
|
||||
|
||||
TodoAssignee:
|
||||
type: object
|
||||
properties:
|
||||
userId:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
format: email
|
||||
name:
|
||||
type: string
|
||||
required:
|
||||
- userId
|
||||
- email
|
||||
- name
|
||||
|
||||
CreateTodoRequest:
|
||||
type: object
|
||||
properties:
|
||||
@ -1643,29 +1863,17 @@ components:
|
||||
type: string
|
||||
description:
|
||||
type: string
|
||||
icon:
|
||||
type: string
|
||||
description: 템플릿 아이콘 (이모지)
|
||||
category:
|
||||
type: string
|
||||
enum: [GENERAL, SCRUM, KICKOFF, WEEKLY]
|
||||
required:
|
||||
- templateId
|
||||
- name
|
||||
- category
|
||||
|
||||
TemplateDetailResponse:
|
||||
type: object
|
||||
properties:
|
||||
templateId:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
description:
|
||||
type: string
|
||||
category:
|
||||
type: string
|
||||
sections:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/TemplateSection'
|
||||
description: 템플릿 섹션 목록
|
||||
required:
|
||||
- templateId
|
||||
- name
|
||||
|
||||
@ -7,7 +7,7 @@ AI Service는 회의록 작성 및 공유 개선 서비스의 핵심 차별화
|
||||
### 주요 기능
|
||||
- **회의록 자동 작성**: LLM 기반 회의록 자동 생성
|
||||
- **Todo 자동 추출**: 액션 아이템 자동 식별 및 담당자 추출
|
||||
- **회의록 개선**: 프롬프팅 기반 다양한 형식 변환
|
||||
- **섹션 AI 요약 재생성**: 작성한 섹션 내용을 AI가 자동으로 요약
|
||||
- **관련 회의록 연결**: RAG 기반 벡터 유사도 검색
|
||||
- **전문용어 감지**: 맥락 기반 용어 설명 제공
|
||||
- **실시간 추천**: 논의사항/결정사항 자동 제안
|
||||
@ -101,45 +101,30 @@ Todo 자동 추출
|
||||
|
||||
---
|
||||
|
||||
### 3. 회의록 개선 (Improve)
|
||||
### 3. 섹션 AI 요약 재생성 (Section Summary)
|
||||
|
||||
#### POST /transcripts/{meetingId}/improve
|
||||
회의록 개선
|
||||
#### POST /sections/{sectionId}/regenerate-summary
|
||||
섹션 AI 요약 재생성
|
||||
|
||||
**유저스토리**: UFR-AI-030
|
||||
**Controller**: ImproveController
|
||||
**유저스토리**: UFR-AI-035
|
||||
**Controller**: SectionController
|
||||
|
||||
**Path Parameters**:
|
||||
- `meetingId` (uuid, required): 회의 ID
|
||||
- `sectionId` (uuid, required): 섹션 ID
|
||||
|
||||
**Request Body**:
|
||||
```json
|
||||
{
|
||||
"promptType": "1PAGE_SUMMARY",
|
||||
"customPrompt": "경영진 보고용으로 3가지 핵심 결정사항만 요약해주세요",
|
||||
"userId": "user123"
|
||||
"sectionContent": "**논의 사항:**\n- AI 기반 회의록 자동화 서비스 출시 결정\n- 타겟 고객: 중소기업, 스타트업\n- 주요 기능: 음성인식, AI 요약, Todo 자동 추출\n- 차별화 포인트: 실시간 검증, 협업 기능\n\n**결정 사항:**\n- 베타 버전 출시일: 2025년 12월 1일\n- 초기 목표 사용자: 100개 팀",
|
||||
"meetingId": "550e8400-e29b-41d4-a716-446655440000"
|
||||
}
|
||||
```
|
||||
|
||||
**Prompt Types**:
|
||||
- `1PAGE_SUMMARY`: A4 1장 분량 요약
|
||||
- `CORE_SUMMARY`: 3-5개 핵심 포인트
|
||||
- `DETAILED_REPORT`: 시간순 상세 기록
|
||||
- `DECISION_FOCUSED`: 의사결정 중심
|
||||
- `ACTION_FOCUSED`: 액션 아이템 중심
|
||||
- `EXECUTIVE_REPORT`: 경영진 보고용
|
||||
- `CUSTOM`: 사용자 정의
|
||||
|
||||
**Response (200 OK)**:
|
||||
```json
|
||||
{
|
||||
"transcriptId": "770e8400-e29b-41d4-a716-446655440002",
|
||||
"version": 2,
|
||||
"baseVersion": 1,
|
||||
"improvementType": "1PAGE_SUMMARY",
|
||||
"content": "## 프로젝트 킥오프 미팅 요약\n\n### 핵심 결정사항...",
|
||||
"originalLink": "/transcripts/660e8400-e29b-41d4-a716-446655440001",
|
||||
"createdAt": "2025-01-23T11:30:00Z"
|
||||
"summary": "AI 기반 회의록 자동화 서비스로 결정. 타겟은 중소기업 및 스타트업이며, 주요 기능은 음성인식, AI 요약, Todo 추출입니다. 경쟁사 대비 차별점은 실시간 검증 및 협업 기능입니다.",
|
||||
"generatedAt": "2025-01-23T11:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
@ -425,10 +410,10 @@ docker run -p 8080:8080 \
|
||||
- 회의록과 양방향 연결
|
||||
- Meeting Service로 실시간 전달
|
||||
|
||||
### 3. 프롬프팅 기반 회의록 개선
|
||||
- 7가지 프롬프트 유형 지원
|
||||
- 원본 보존 + 버전 관리
|
||||
- 사용자 정의 프롬프트 지원
|
||||
### 3. 섹션 AI 요약 재생성
|
||||
- 작성 중 실시간 AI 요약 생성
|
||||
- 섹션별 독립적 요약 처리
|
||||
- 회의 맥락 기반 정확도 향상
|
||||
|
||||
### 4. 실시간 추천
|
||||
- 논의사항 제안 (빠진 안건 자동 감지)
|
||||
@ -443,7 +428,7 @@ docker run -p 8080:8080 \
|
||||
|-----|---------------|
|
||||
| 회의록 자동 작성 | 8-13초 |
|
||||
| Todo 자동 추출 | 4-7초 |
|
||||
| 회의록 개선 | 5-9초 |
|
||||
| 섹션 AI 요약 재생성 | 2-5초 |
|
||||
| 관련 회의록 연결 | 5-8초 |
|
||||
| 전문용어 감지 | 3-5초 |
|
||||
| 맥락 기반 용어 설명 | 5-8초 |
|
||||
@ -457,3 +442,4 @@ docker run -p 8080:8080 \
|
||||
| 버전 | 작성일 | 작성자 | 변경 내용 |
|
||||
|------|--------|--------|----------|
|
||||
| 1.0 | 2025-01-23 | 준호 (Backend Developer) | AI Service API 설계 완료 |
|
||||
| 1.1 | 2025-01-23 | 준호 (Backend Developer) | 회의록 개선 → 섹션 AI 요약 재생성으로 변경 (프로토타입 반영) |
|
||||
|
||||
@ -1,106 +1,74 @@
|
||||
@startuml
|
||||
!theme mono
|
||||
|
||||
title AI Service 내부 시퀀스 - 회의록개선
|
||||
title AI Service 내부 시퀀스 - 섹션AI요약재생성
|
||||
|
||||
participant "ImproveController" as Controller
|
||||
participant "ImproveService" as Service
|
||||
participant "SectionController" as Controller
|
||||
participant "SectionSummaryService" as Service
|
||||
participant "LLMClient" as LLM
|
||||
participant "PromptTemplateService" as Template
|
||||
participant "ImproveRepository" as Repo
|
||||
participant "SectionRepository" as Repo
|
||||
database "Azure OpenAI<<E>>" as OpenAI
|
||||
database "PostgreSQL<<E>>" as DB
|
||||
|
||||
== 회의록 개선 요청 수신 ==
|
||||
== 섹션 AI 요약 재생성 요청 수신 ==
|
||||
|
||||
note over Controller
|
||||
API 요청:
|
||||
POST /api/ai/transcripts/{meetingId}/improve
|
||||
POST /api/ai/sections/{sectionId}/regenerate-summary
|
||||
Body: {
|
||||
"promptType": "1PAGE_SUMMARY",
|
||||
"customPrompt": "optional"
|
||||
"sectionContent": "**논의 사항:**\n- AI 기반...",
|
||||
"meetingId": "550e8400-..."
|
||||
}
|
||||
end note
|
||||
|
||||
Controller -> Service: improveTranscript(meetingId, promptType, customPrompt)
|
||||
Controller -> Service: regenerateSummary(sectionId, sectionContent, meetingId)
|
||||
activate Service
|
||||
|
||||
== 원본 회의록 조회 ==
|
||||
== 회의 맥락 조회 (선택적) ==
|
||||
|
||||
Service -> Repo: getOriginalTranscript(meetingId)
|
||||
Service -> Repo: getMeetingContext(meetingId)
|
||||
activate Repo
|
||||
|
||||
Repo -> DB: 원본 회의록 조회
|
||||
Repo -> DB: 회의 정보 조회\n- 회의 제목\n- 참석자\n- 안건
|
||||
activate DB
|
||||
|
||||
DB --> Repo: 원본 회의록 내용
|
||||
DB --> Repo: 회의 맥락 정보
|
||||
deactivate DB
|
||||
|
||||
Repo --> Service: originalContent, version
|
||||
Repo --> Service: meetingContext
|
||||
deactivate Repo
|
||||
|
||||
== 프롬프트 템플릿 선택 ==
|
||||
note right of Service
|
||||
회의 맥락을 통해
|
||||
더 정확한 요약 생성
|
||||
|
||||
Service -> Template: getPromptTemplate(promptType)
|
||||
activate Template
|
||||
|
||||
Template -> Template: 프롬프트 유형별 템플릿 선택
|
||||
note right
|
||||
지원 프롬프트 유형:
|
||||
|
||||
1. 1PAGE_SUMMARY
|
||||
- A4 1장 분량 요약
|
||||
- 핵심 내용만 압축
|
||||
|
||||
2. CORE_SUMMARY
|
||||
- 3-5개 핵심 포인트
|
||||
- 불릿 포인트 형식
|
||||
|
||||
3. DETAILED_REPORT
|
||||
- 시간순 상세 기록
|
||||
- 타임스탬프 포함
|
||||
|
||||
4. DECISION_FOCUSED
|
||||
- 의사결정 중심
|
||||
- 결정 사항과 근거
|
||||
|
||||
5. ACTION_FOCUSED
|
||||
- 액션 아이템 중심
|
||||
- Todo와 담당자 강조
|
||||
|
||||
6. EXECUTIVE_REPORT
|
||||
- 경영진 보고용
|
||||
- 간결하고 임팩트 있게
|
||||
|
||||
7. CUSTOM
|
||||
- 사용자 정의 프롬프트
|
||||
예: "신규 프로젝트 킥오프"
|
||||
→ 기술/일정 중심 요약
|
||||
end note
|
||||
|
||||
Template --> Service: promptTemplate
|
||||
deactivate Template
|
||||
|
||||
== 프롬프트 생성 ==
|
||||
|
||||
Service -> Service: 최종 프롬프트 구성
|
||||
Service -> Service: 요약 프롬프트 구성
|
||||
note right
|
||||
시스템 프롬프트:
|
||||
- 역할: 회의록 개선 전문가
|
||||
- 지시사항: {promptTemplate}
|
||||
- 역할: 회의록 섹션 요약 전문가
|
||||
- 목표: 핵심 내용을 2-3문장으로 압축
|
||||
- 스타일: 명확하고 간결한 문체
|
||||
|
||||
사용자 프롬프트:
|
||||
- 원본 회의록: {originalContent}
|
||||
- 개선 요구사항: {promptType}
|
||||
- 추가 지시사항: {customPrompt}
|
||||
- 회의 맥락: {meetingContext}
|
||||
- 섹션 내용: {sectionContent}
|
||||
|
||||
출력 형식 지정:
|
||||
- 구조화된 마크다운
|
||||
- 적절한 헤딩과 섹션
|
||||
- 가독성 최적화
|
||||
요구사항:
|
||||
- 2-3문장으로 요약
|
||||
- 논의사항과 결정사항 구분
|
||||
- 핵심 키워드 포함
|
||||
- 불필요한 세부사항 제외
|
||||
end note
|
||||
|
||||
== LLM 기반 회의록 재구성 ==
|
||||
== LLM 기반 요약 생성 ==
|
||||
|
||||
Service -> LLM: regenerateTranscript(prompt, originalContent)
|
||||
Service -> LLM: generateSummary(prompt, sectionContent)
|
||||
activate LLM
|
||||
|
||||
LLM -> OpenAI: POST /chat/completions
|
||||
@ -109,80 +77,55 @@ note right
|
||||
요청 파라미터:
|
||||
- model: gpt-4o
|
||||
- temperature: 0.3
|
||||
- max_tokens: 3000
|
||||
- max_tokens: 200
|
||||
- messages: [system, user]
|
||||
end note
|
||||
|
||||
OpenAI -> OpenAI: 회의록 재구성
|
||||
OpenAI -> OpenAI: 섹션 내용 분석 및 요약
|
||||
note right
|
||||
처리 단계:
|
||||
1. 원본 분석
|
||||
2. 프롬프트 의도 파악
|
||||
3. 중요도 기반 필터링
|
||||
4. 형식에 맞춰 재배치
|
||||
5. 불필요한 내용 제거
|
||||
6. 스타일 조정
|
||||
- 문체 변환
|
||||
- 길이 조정
|
||||
7. 구조화
|
||||
1. 섹션 내용 파싱
|
||||
- 논의사항 추출
|
||||
- 결정사항 추출
|
||||
- 보류사항 추출
|
||||
|
||||
2. 핵심 내용 식별
|
||||
- 중요도 평가
|
||||
- 키워드 추출
|
||||
|
||||
3. 요약 생성
|
||||
- 2-3문장으로 압축
|
||||
- 논의→결정 흐름 반영
|
||||
- 명확한 문장 구성
|
||||
|
||||
4. 품질 검증
|
||||
- 길이 확인 (150자 이내)
|
||||
- 핵심 누락 여부 확인
|
||||
end note
|
||||
|
||||
OpenAI --> LLM: 개선된 회의록
|
||||
OpenAI --> LLM: 생성된 AI 요약
|
||||
deactivate OpenAI
|
||||
|
||||
LLM --> Service: improvedContent
|
||||
LLM --> Service: summaryText
|
||||
deactivate LLM
|
||||
|
||||
== 개선된 회의록 저장 ==
|
||||
== 생성된 요약 저장 (선택적) ==
|
||||
|
||||
Service -> Service: 새 버전 생성
|
||||
note right
|
||||
버전 정보:
|
||||
- base_version: 원본 버전 번호
|
||||
- improvement_type: {promptType}
|
||||
- version: 새 버전 번호
|
||||
end note
|
||||
|
||||
Service -> Repo: saveImprovedTranscript(meetingId, improvedContent, metadata)
|
||||
Service -> Repo: saveSectionSummary(sectionId, summaryText)
|
||||
activate Repo
|
||||
|
||||
Repo -> DB: 개선된 회의록 저장
|
||||
Repo -> DB: AI 요약 저장
|
||||
activate DB
|
||||
note right
|
||||
저장 데이터:
|
||||
- meeting_id
|
||||
- content (개선된 내용)
|
||||
- version (새 버전)
|
||||
- base_version (원본 버전)
|
||||
- improvement_type
|
||||
- prompt_type
|
||||
- custom_prompt
|
||||
- created_at
|
||||
- status: IMPROVED
|
||||
- section_id
|
||||
- summary_text
|
||||
- generated_at
|
||||
- model: "gpt-4o"
|
||||
- token_usage
|
||||
end note
|
||||
|
||||
DB --> Repo: newTranscriptId
|
||||
deactivate DB
|
||||
|
||||
Repo --> Service: transcriptId, version
|
||||
deactivate Repo
|
||||
|
||||
== 버전 연결 저장 ==
|
||||
|
||||
Service -> Repo: linkVersions(originalId, improvedId)
|
||||
activate Repo
|
||||
|
||||
Repo -> DB: 버전 연결 정보 저장
|
||||
activate DB
|
||||
note right
|
||||
버전 연결 정보:
|
||||
- original_transcript_id
|
||||
- improved_transcript_id
|
||||
- improvement_type
|
||||
- created_at
|
||||
end note
|
||||
|
||||
DB --> Repo: 연결 완료
|
||||
DB --> Repo: 저장 완료
|
||||
deactivate DB
|
||||
|
||||
Repo --> Service: 완료
|
||||
@ -193,32 +136,32 @@ deactivate Repo
|
||||
Service -> Service: 응답 데이터 구성
|
||||
note right
|
||||
응답 데이터:
|
||||
- transcriptId (새 버전)
|
||||
- version
|
||||
- baseVersion
|
||||
- improvementType
|
||||
- content (개선된 내용)
|
||||
- originalLink
|
||||
- createdAt
|
||||
- summary: "AI 기반 회의록 자동화..."
|
||||
- generatedAt: "2025-01-23T11:00:00Z"
|
||||
end note
|
||||
|
||||
Service --> Controller: 개선 완료 응답
|
||||
Service --> Controller: 요약 생성 완료 응답
|
||||
deactivate Service
|
||||
|
||||
Controller --> Controller: 200 OK 응답 반환
|
||||
|
||||
note over Controller, DB
|
||||
처리 시간:
|
||||
- 원본 조회: 100-200ms
|
||||
- 템플릿 선택: 10-50ms
|
||||
- LLM 재구성: 4-8초
|
||||
- 저장 처리: 200-300ms
|
||||
총 처리 시간: 약 5-9초
|
||||
- 회의 맥락 조회: 50-100ms
|
||||
- 프롬프트 구성: 10-20ms
|
||||
- LLM 요약 생성: 2-4초
|
||||
- 저장 처리: 50-100ms
|
||||
총 처리 시간: 약 2-5초
|
||||
|
||||
정책:
|
||||
- 원본 회의록은 항상 보존
|
||||
- 여러 버전 동시 생성 가능
|
||||
- 버전 간 비교 기능 제공
|
||||
- 섹션 내용이 변경되면 요약도 재생성
|
||||
- 이전 요약은 이력으로 보관
|
||||
- 사용자는 생성된 요약을 수정 가능
|
||||
- 수정된 요약은 AI 재생성 가능
|
||||
|
||||
처리량:
|
||||
- max_tokens: 200 (요약은 짧음)
|
||||
- 비용 효율적 (전체 회의록 대비)
|
||||
end note
|
||||
|
||||
@enduml
|
||||
|
||||
@ -141,4 +141,39 @@ end
|
||||
|
||||
deactivate Frontend
|
||||
|
||||
== 섹션 AI 요약 재생성 (선택적) ==
|
||||
|
||||
User -> Frontend: "AI 재생성" 버튼 클릭\n(특정 섹션)
|
||||
activate Frontend
|
||||
|
||||
Frontend -> Frontend: 로딩 상태 표시\n"AI 요약을 생성 중입니다..."
|
||||
|
||||
Frontend -> Gateway: POST /api/ai/sections/{sectionId}/regenerate-summary\n{\n "sectionContent": "**논의 사항:**\n- AI 기반...",\n "meetingId": "..."\n}
|
||||
activate Gateway
|
||||
|
||||
Gateway -> AI: POST /sections/{sectionId}/regenerate-summary
|
||||
activate AI
|
||||
|
||||
AI -> AI: 섹션 내용 분석 및 요약 생성\n- 회의 맥락 조회\n- LLM 기반 요약 (2-3문장)\n- 처리 시간: 2-5초
|
||||
|
||||
AI --> Gateway: 생성된 AI 요약\n{\n "summary": "AI 기반 회의록...",\n "generatedAt": "..."\n}
|
||||
deactivate AI
|
||||
|
||||
Gateway --> Frontend: 200 OK\nAI 요약
|
||||
deactivate Gateway
|
||||
|
||||
Frontend -> Frontend: AI 요약 영역 업데이트\n- 생성된 요약 표시\n- "저장됨" 표시
|
||||
|
||||
Frontend --> User: AI 요약 재생성 완료
|
||||
deactivate Frontend
|
||||
|
||||
note over User, AI
|
||||
AI 재생성 특징:
|
||||
- 각 섹션별 독립 처리
|
||||
- 사용자가 수정한 내용 기반
|
||||
- 프롬프트 입력 없이 자동 생성
|
||||
- 생성된 요약은 사용자가 다시 수정 가능
|
||||
- 처리 시간 2-5초 (빠름)
|
||||
end note
|
||||
|
||||
@enduml
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
### 2. 핵심 차별화 포인트 (Differentiators)
|
||||
- **맥락 기반 용어 설명**: 단순 용어 설명을 넘어, 관련 회의록과 업무이력을 바탕으로 실용적인 정보 제공
|
||||
- **강화된 Todo 연결**: Action item이 담당자의 Todo와 실시간으로 연결되고, 진행 상황이 회의록에 자동 반영
|
||||
- **프롬프팅 기반 회의록 개선**: AI를 활용한 다양한 형식의 회의록 생성 (1Page 요약, 핵심 요약 등)
|
||||
- **섹션 AI 요약 재생성**: 버튼 클릭으로 작성한 섹션 내용을 AI가 요약 (2-3문장, 2-5초 처리)
|
||||
- **지능형 회의 진행 지원**: 회의 패턴 분석을 통한 안건 추천, 효율성 분석 및 개선 제안
|
||||
|
||||
---
|
||||
@ -38,7 +38,7 @@
|
||||
4. **AI** - AI 기반 회의록 자동화, Todo 추출, 지능형 검색 (RAG 통합)
|
||||
- LLM 기반 회의록 자동 작성
|
||||
- Todo 자동 추출 및 담당자 식별
|
||||
- 프롬프팅 기반 회의록 개선 (1Page 요약, 핵심 요약 등)
|
||||
- 섹션 AI 요약 재생성 (버튼 클릭 시 요약 생성)
|
||||
- 관련 회의록 자동 연결 (벡터 유사도 검색)
|
||||
- 전문용어 자동 감지 및 맥락 기반 설명 생성 (RAG)
|
||||
- 과거 회의록 및 사내 문서 검색
|
||||
@ -489,40 +489,41 @@ UFR-AI-020: [Todo자동추출] 회의록 작성자로서 | 나는, 회의 후
|
||||
|
||||
---
|
||||
|
||||
3) 프롬프팅 기반 회의록 개선 (신규, 차별화 포인트)
|
||||
UFR-AI-030: [회의록개선] 회의록 작성자로서 | 나는, 회의록을 다양한 형식으로 변환하기 위해 | 프롬프팅을 통해 회의록을 개선하고 재구성하고 싶다.
|
||||
- 시나리오: 프롬프팅 기반 회의록 개선
|
||||
회의록이 작성된 상황에서 | "1Page 요약", "핵심 요약", "상세 보고서" 등의 프롬프트를 입력하면 | AI가 해당 형식에 맞춰 회의록을 재구성하여 제공한다.
|
||||
3) 섹션 AI 요약 재생성 (신규, 차별화 포인트)
|
||||
UFR-AI-035: [섹션AI요약] 회의록 작성자로서 | 나는, 작성한 섹션 내용을 쉽게 요약하기 위해 | 버튼 클릭으로 AI가 섹션 내용을 요약해주기를 원한다.
|
||||
- 시나리오: 섹션 AI 요약 재생성
|
||||
회의록 작성/수정 중에 | 특정 섹션의 "AI 재생성" 버튼을 클릭하면 | AI가 해당 섹션 내용을 분석하여 2-3문장의 요약을 자동 생성한다.
|
||||
|
||||
[지원 프롬프트 유형]
|
||||
- "1Page 요약": A4 1장 분량의 요약본 생성
|
||||
- "핵심 요약": 3-5개 핵심 포인트만 추출
|
||||
- "상세 보고서": 시간순 상세 기록 with 타임스탬프
|
||||
- "의사결정 중심": 결정 사항과 근거만 정리
|
||||
- "액션 아이템 중심": Todo와 담당자만 강조
|
||||
- "경영진 보고용": 임원진에게 보고할 형식으로 재구성
|
||||
- "커스텀 프롬프트": 사용자 정의 형식
|
||||
[사용 시점]
|
||||
- 회의록 작성 중 각 섹션 완료 시
|
||||
- 회의록 수정 중 섹션 내용 변경 후
|
||||
- 기존 요약이 부적절하다고 판단될 때
|
||||
|
||||
[AI 처리 과정]
|
||||
- 원본 회의록 분석
|
||||
- 프롬프트 의도 파악
|
||||
- 내용 재구성
|
||||
- 중요도 기반 필터링
|
||||
- 형식에 맞춘 재배치
|
||||
- 불필요한 내용 제거
|
||||
- 스타일 조정
|
||||
- 문체 변환 (격식체, 구어체 등)
|
||||
- 길이 조정 (압축 또는 확장)
|
||||
- 회의 맥락 조회 (선택적)
|
||||
- 회의 제목, 참석자, 안건 파악
|
||||
- 섹션 내용 파싱
|
||||
- 논의사항 추출
|
||||
- 결정사항 추출
|
||||
- 보류사항 추출
|
||||
- 핵심 내용 식별
|
||||
- 중요도 평가
|
||||
- 키워드 추출
|
||||
- 요약 생성
|
||||
- 2-3문장으로 압축
|
||||
- 논의→결정 흐름 반영
|
||||
- 명확한 문장 구성
|
||||
|
||||
[처리 결과]
|
||||
- 개선된 회의록이 생성됨 (새 버전)
|
||||
- 원본 회의록 링크 유지
|
||||
- 생성 시간 및 프롬프트 기록
|
||||
- 생성된 AI 요약 (2-3문장, 150자 이내)
|
||||
- 생성 시간 기록
|
||||
- 사용자는 생성된 요약을 다시 수정 가능
|
||||
|
||||
[Policy/Rule]
|
||||
- 원본 회의록은 항상 보존
|
||||
- 여러 버전 동시 생성 가능
|
||||
- 버전 간 비교 기능 제공
|
||||
- 섹션 내용이 변경되면 요약도 재생성 가능
|
||||
- 이전 요약은 이력으로 보관
|
||||
- 처리 시간 2-5초 (빠른 응답)
|
||||
- 프롬프트 입력 불필요 (자동 처리)
|
||||
|
||||
- M/21
|
||||
|
||||
@ -904,7 +905,7 @@ UFR-TODO-030: [Todo완료처리] Todo 담당자로서 | 나는, 완료된 Todo
|
||||
- **핵심 기능**:
|
||||
- LLM 기반 회의록 자동 작성
|
||||
- Todo 자동 추출 및 담당자 식별
|
||||
- 프롬프팅 기반 회의록 개선
|
||||
- 섹션 AI 요약 재생성 (버튼 클릭 시 요약 생성)
|
||||
- 관련 회의록 자동 연결 (벡터 유사도 검색)
|
||||
- 전문용어 자동 감지 및 맥락 기반 설명 생성 (RAG)
|
||||
- 과거 회의록 및 사내 문서 검색
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user