"""회의록 통합 요약 프롬프트""" 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 = "\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. **회의 전체 결정사항 (decisions)**: - 회의 전체에서 최종 결정된 사항들을 TEXT 형식으로 정리 - 안건별 결정사항을 모두 포함하여 회의록 수정 페이지에서 사용자가 확인 및 수정할 수 있도록 작성 - 형식: "**안건1 결정사항:**\n- 결정1\n- 결정2\n\n**안건2 결정사항:**\n- 결정3" 4. **안건별 요약 (agenda_summaries)**: 회의 내용을 분석하여 안건별로 구조화: 각 안건마다: - **agenda_number**: 안건 번호 (1, 2, 3...) - **agenda_title**: 안건 제목 (간결하게) - **summary_short**: AI가 생성한 1줄 요약 (20자 이내, 사용자 수정 불가) - **summary**: 안건별 회의록 요약 (논의사항과 결정사항 모두 포함) * 회의록 수정 페이지에서 사용자가 수정할 수 있는 입력 필드 * 형식: "**논의 사항:**\n- 논의내용1\n- 논의내용2\n\n**결정 사항:**\n- 결정1\n- 결정2" * 사용자가 자유롭게 편집할 수 있도록 구조화된 텍스트로 작성 - **decisions**: 안건별 결정사항 배열 (대시보드 표시용, summary의 결정사항 부분을 배열로 추출) * 형식: ["결정사항1", "결정사항2", "결정사항3"] * 회의에서 최종 결정된 사항만 포함 - **pending**: 보류 사항 배열 (추가 논의 필요 사항) - **todos**: Todo 배열 (제목과 담당자 추출) - title: Todo 제목 (예: "시장 조사 보고서 작성") - assignee: 담당자 이름 (있는 경우에만, 예: "김대리", "박과장") **Todo 추출 가이드:** - 자연스러운 표현도 인식: "김대리가 ~하기로 함", "박과장은 ~준비합니다", "이차장님께서 ~하시기로 하셨습니다" - 실행 동사 패턴: ~하기로, ~준비, ~작성, ~제출, ~완료, ~진행, ~검토, ~분석 - 담당자 패턴: "OO님", "OO이/가", "OO은/는", "OO께서" - 기한 표현: "다음주", "이번주", "~까지", "~일까지", "~월까지" --- # 출력 형식 반드시 아래 JSON 형식으로만 응답하세요. 다른 텍스트는 포함하지 마세요. ```json {{ "keywords": ["키워드1", "키워드2", "키워드3"], "statistics": {{ "agendas_count": 숫자, "todos_count": 숫자 }}, "decisions": "**안건1 결정사항:**\\n- 결정1\\n- 결정2\\n\\n**안건2 결정사항:**\\n- 결정3", "agenda_summaries": [ {{ "agenda_number": 1, "agenda_title": "안건 제목", "summary_short": "짧은 요약 (20자 이내)", "summary": "**논의 사항:**\\n- 논의내용1\\n- 논의내용2\\n\\n**결정 사항:**\\n- 결정1\\n- 결정2", "decisions": ["결정사항1", "결정사항2"], "pending": ["보류사항"], "todos": [ {{ "title": "인플루언서 리스트 작성", "assignee": "김대리" }}, {{ "title": "캠페인 콘텐츠 기획안 초안 작성", "assignee": "박과장" }} ] }} ] }} ``` --- # 중요 규칙 1. **정확성**: 참석자 회의록에 명시된 내용만 사용 2. **객관성**: 추측이나 가정 없이 사실만 기록 3. **완전성**: 모든 필드를 빠짐없이 작성 4. **구조화**: 안건별로 명확히 분리 5. **결정사항 추출**: - 회의 전체 결정사항(decisions): 모든 안건의 결정사항을 포함 (TEXT 형식) - 안건별 결정사항(agenda_summaries[].decisions): 각 안건의 결정사항을 배열로 추출 - 결정사항이 명확하게 언급된 경우에만 포함 6. **summary 작성**: - summary_short: AI가 자동 생성한 1줄 요약 (사용자 수정 불가) - summary: 논의사항과 결정사항 모두 포함 (사용자 수정 가능) - decisions: summary의 결정사항 부분을 배열로 별도 추출 (대시보드 표시용) 7. **Todo 추출**: - 제목 필수, 담당자는 언급된 경우에만 추출 - 자연스러운 표현에서 추출: "김대리가 ~하기로 함" → title: "~", assignee: "김대리" - 담당자가 없으면 assignee: "" (빈 문자열) 8. **JSON만 출력**: 추가 설명 없이 JSON만 반환 이제 위 회의록들을 분석하여 통합 요약을 JSON 형식으로 생성해주세요. """ return prompt