mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 05:36:23 +00:00
- AI 서비스와 Meeting 서비스 통합 개선 - AgendaSummaryDTO에 decisions 필드 추가 (안건별 결정사항 배열) - EndMeetingService에서 AI 서비스 타임아웃 처리 개선 - AIServiceClient에 상세한 에러 로깅 추가 - 회의록 consolidate 프롬프트 개선 - Todo 추출 로직 강화 (자연스러운 표현 인식) - 안건별 decisions 필드 추가 (대시보드 표시용) - 담당자 패턴 인식 개선 - Kubernetes 배포 설정 개선 - meeting-service.yaml에 AI_SERVICE_URL 환경변수 추가 - AI_SERVICE_TIMEOUT 설정 추가 - 데이터베이스 관리 SQL 스크립트 추가 - check-agenda-sections.sql: 안건 섹션 확인 - cleanup-test-data.sql: 테스트 데이터 정리 - insert-test-data-final.sql: 최종 테스트 데이터 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
46 lines
2.2 KiB
Python
46 lines
2.2 KiB
Python
"""Transcript Models"""
|
|
from pydantic import BaseModel, Field
|
|
from typing import List, Optional, Dict
|
|
from datetime import datetime
|
|
|
|
|
|
class ParticipantMinutes(BaseModel):
|
|
"""참석자별 회의록"""
|
|
user_id: str = Field(..., description="사용자 ID")
|
|
user_name: str = Field(..., description="사용자 이름")
|
|
content: str = Field(..., description="회의록 전체 내용 (MEMO 섹션)")
|
|
|
|
|
|
class ConsolidateRequest(BaseModel):
|
|
"""회의록 통합 요약 요청"""
|
|
meeting_id: str = Field(..., description="회의 ID")
|
|
participant_minutes: List[ParticipantMinutes] = Field(..., description="참석자별 회의록 목록")
|
|
agendas: Optional[List[str]] = Field(None, description="안건 목록")
|
|
duration_minutes: Optional[int] = Field(None, description="회의 시간(분)")
|
|
|
|
|
|
class ExtractedTodo(BaseModel):
|
|
"""추출된 Todo (제목만)"""
|
|
title: str = Field(..., description="Todo 제목")
|
|
|
|
|
|
class AgendaSummary(BaseModel):
|
|
"""안건별 요약"""
|
|
agenda_number: int = Field(..., description="안건 번호")
|
|
agenda_title: str = Field(..., description="안건 제목")
|
|
summary_short: str = Field(..., description="AI 생성 짧은 요약 (1줄, 20자 이내)")
|
|
summary: str = Field(..., description="안건별 회의록 요약 (논의사항+결정사항, 사용자 수정 가능)")
|
|
decisions: List[str] = Field(default_factory=list, description="안건별 결정사항 배열 (대시보드 표시용)")
|
|
pending: List[str] = Field(default_factory=list, description="보류 사항")
|
|
todos: List[ExtractedTodo] = Field(default_factory=list, description="Todo 목록 (제목만)")
|
|
|
|
|
|
class ConsolidateResponse(BaseModel):
|
|
"""회의록 통합 요약 응답"""
|
|
meeting_id: str = Field(..., description="회의 ID")
|
|
keywords: List[str] = Field(..., description="주요 키워드")
|
|
statistics: Dict[str, int] = Field(..., description="통계 정보")
|
|
decisions: str = Field(..., description="회의 전체 결정사항 (TEXT 형식)")
|
|
agenda_summaries: List[AgendaSummary] = Field(..., description="안건별 요약")
|
|
generated_at: datetime = Field(default_factory=datetime.utcnow, description="생성 시각")
|