fix: AI 회의록 통합 - decisions 필드 및 Todo assignee 필드 추가

- AgendaSummaryDTO에 decisions 필드 추가 (안건별 결정사항 배열)
- ExtractedTodoDTO에 assignee 필드 추가 (담당자 정보)
- EndMeetingService에서 AI 추출 담당자 정보 매핑
- Python AI 서비스 모델 및 프롬프트 업데이트
This commit is contained in:
Minseo-Jo 2025-10-30 18:44:27 +09:00
parent e406248572
commit 7e3f7b9471
4 changed files with 13 additions and 4 deletions

View File

@ -20,8 +20,9 @@ class ConsolidateRequest(BaseModel):
class ExtractedTodo(BaseModel):
"""추출된 Todo (제목만)"""
"""추출된 Todo"""
title: str = Field(..., description="Todo 제목")
assignee: str = Field(default="", description="담당자 이름 (있는 경우에만)")
class AgendaSummary(BaseModel):

View File

@ -120,7 +120,10 @@ def get_consolidate_prompt(participant_minutes: list, agendas: list = None) -> s
- summary_short: AI가 자동 생성한 1 요약 (사용자 수정 불가)
- summary: 논의사항과 결정사항 모두 포함 (사용자 수정 가능)
- decisions: summary의 결정사항 부분을 배열로 별도 추출 (대시보드 표시용)
7. **Todo 추출**: 제목만 추출 (담당자나 마감일 없어도 )
7. **Todo 추출**:
- 제목 필수, 담당자는 언급된 경우에만 추출
- 자연스러운 표현에서 추출: "김대리가 ~하기로 함" title: "~", assignee: "김대리"
- 담당자가 없으면 assignee: "" ( 문자열)
8. **JSON만 출력**: 추가 설명 없이 JSON만 반환
이제 회의록들을 분석하여 통합 요약을 JSON 형식으로 생성해주세요.

View File

@ -264,7 +264,7 @@ public class EndMeetingService implements EndMeetingUseCase {
.meetingId(meeting.getMeetingId())
.minutesId(meeting.getMeetingId()) // 실제로는 minutesId 필요
.title(todo.getTitle())
.assigneeId("") // AI가 담당자를 추출하지 않으므로
.assigneeId(todo.getAssignee() != null ? todo.getAssignee() : "") // AI가 추출한 담당자
.status("PENDING")
.build());
})

View File

@ -6,7 +6,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* AI 추출 Todo DTO (제목만)
* AI 추출 Todo DTO
*/
@Getter
@Builder
@ -18,4 +18,9 @@ public class ExtractedTodoDTO {
* Todo 제목
*/
private String title;
/**
* 담당자 이름 (있는 경우에만)
*/
private String assignee;
}