mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 12:36:23 +00:00
✅ 구현 완료 - AI Python Service (FastAPI, Claude API, 8087 포트) - POST /api/v1/transcripts/consolidate - 참석자별 회의록 → AI 통합 분석 - 키워드/안건별 요약/Todo 추출 - Meeting Service AI 통합 - EndMeetingService (@Primary) - AIServiceClient (RestTemplate, 30초 timeout) - AI 분석 결과 저장 (meeting_analysis, todos) - 회의 상태 COMPLETED 처리 - DTO 구조 (간소화) - ConsolidateRequest/Response - MeetingEndDTO - Todo 제목만 포함 (담당자/마감일 제거) 📝 기술스택 - Python: FastAPI, anthropic 0.71.0, psycopg2 - Java: Spring Boot, RestTemplate - Claude: claude-3-5-sonnet-20241022 🔧 주요 이슈 해결 - 포트 충돌: 8086(feature/stt-ai) → 8087(feat/meeting-ai) - Bean 충돌: @Primary 추가 - YAML 문법: ai.service.url 구조 수정 - anthropic 라이브러리 업그레이드 📚 테스트 가이드 및 스크립트 작성 - claude/MEETING-AI-TEST-GUIDE.md - test-meeting-ai.sh 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
99 lines
2.9 KiB
Python
99 lines
2.9 KiB
Python
"""회의록 통합 요약 프롬프트"""
|
|
|
|
|
|
def get_consolidate_prompt(participant_minutes: list, agendas: list = None) -> str:
|
|
"""
|
|
참석자별 회의록을 통합하여 요약하는 프롬프트 생성
|
|
"""
|
|
|
|
# 참석자 회의록 결합
|
|
participants_content = "\n\n".join([
|
|
f"## {p['user_name']}님의 회의록:\n{p['content']}"
|
|
for p in participant_minutes
|
|
])
|
|
|
|
# 안건 정보 (있는 경우)
|
|
agendas_info = ""
|
|
if agendas:
|
|
agendas_info = f"\n\n**사전 정의된 안건**:\n" + "\n".join([
|
|
f"{i+1}. {agenda}" for i, agenda in enumerate(agendas)
|
|
])
|
|
|
|
prompt = f"""당신은 회의록 작성 전문가입니다. 여러 참석자가 작성한 회의록을 통합하여 정확하고 체계적인 회의록을 생성해주세요.
|
|
|
|
# 입력 데이터
|
|
|
|
{participants_content}{agendas_info}
|
|
|
|
---
|
|
|
|
# 작업 지침
|
|
|
|
1. **주요 키워드 (keywords)**:
|
|
- 회의에서 자주 언급된 핵심 키워드 5-10개 추출
|
|
- 단어 또는 짧은 구문 (예: "신제품기획", "예산편성")
|
|
|
|
2. **통계 정보 (statistics)**:
|
|
- agendas_count: 안건 개수 (내용 기반 추정)
|
|
- todos_count: 추출된 Todo 총 개수
|
|
|
|
3. **안건별 요약 (agenda_summaries)**:
|
|
회의 내용을 분석하여 안건별로 구조화:
|
|
|
|
각 안건마다:
|
|
- **agenda_number**: 안건 번호 (1, 2, 3...)
|
|
- **agenda_title**: 안건 제목 (간결하게)
|
|
- **summary_short**: 1줄 요약 (20자 이내)
|
|
- **discussion**: 논의 주제 (핵심 내용 3-5문장)
|
|
- **decisions**: 결정 사항 배열 (해당 안건 관련)
|
|
- **pending**: 보류 사항 배열 (추가 논의 필요 사항)
|
|
- **todos**: Todo 배열 (제목만, 담당자/마감일/우선순위 없음)
|
|
- title: Todo 제목만 추출 (예: "시장 조사 보고서 작성")
|
|
|
|
---
|
|
|
|
# 출력 형식
|
|
|
|
반드시 아래 JSON 형식으로만 응답하세요. 다른 텍스트는 포함하지 마세요.
|
|
|
|
```json
|
|
{{
|
|
"keywords": ["키워드1", "키워드2", "키워드3"],
|
|
"statistics": {{
|
|
"agendas_count": 숫자,
|
|
"todos_count": 숫자
|
|
}},
|
|
"agenda_summaries": [
|
|
{{
|
|
"agenda_number": 1,
|
|
"agenda_title": "안건 제목",
|
|
"summary_short": "짧은 요약",
|
|
"discussion": "논의 내용",
|
|
"decisions": ["결정사항"],
|
|
"pending": ["보류사항"],
|
|
"todos": [
|
|
{{
|
|
"title": "Todo 제목"
|
|
}}
|
|
]
|
|
}}
|
|
]
|
|
}}
|
|
```
|
|
|
|
---
|
|
|
|
# 중요 규칙
|
|
|
|
1. **정확성**: 참석자 회의록에 명시된 내용만 사용
|
|
2. **객관성**: 추측이나 가정 없이 사실만 기록
|
|
3. **완전성**: 모든 필드를 빠짐없이 작성
|
|
4. **구조화**: 안건별로 명확히 분리
|
|
5. **Todo 추출**: 제목만 추출 (담당자나 마감일 없어도 됨)
|
|
6. **JSON만 출력**: 추가 설명 없이 JSON만 반환
|
|
|
|
이제 위 회의록들을 분석하여 통합 요약을 JSON 형식으로 생성해주세요.
|
|
"""
|
|
|
|
return prompt
|