for merge

This commit is contained in:
djeon 2025-10-30 10:25:40 +09:00
commit 663999a139
110 changed files with 93 additions and 12491 deletions

4
.gitignore vendored
View File

@ -58,3 +58,7 @@ logs/
**/logs/ **/logs/
*.log *.log
**/*.log **/*.log
# Deprecated/Backup directories
ai-java-back/
ai/

View File

@ -25,6 +25,11 @@ public class TranscriptSegmentReadyEvent {
*/ */
private String meetingId; private String meetingId;
/**
* 세션 ID
*/
private String sessionId;
/** /**
* 변환 텍스트 세그먼트 ID * 변환 텍스트 세그먼트 ID
*/ */

View File

@ -26,7 +26,7 @@ claude_service = ClaudeService()
### 동작 방식 ### 동작 방식
1. Redis에서 누적된 회의 텍스트 조회 (5초마다) 1. Redis에서 누적된 회의 텍스트 조회 (5초마다)
2. 임계값(10 세그먼트) 이상이면 Claude API로 분석 2. 임계값(4 세그먼트, 60) 이상이면 Claude API로 분석
3. 분석 결과를 SSE 이벤트로 전송 3. 분석 결과를 SSE 이벤트로 전송
### SSE 이벤트 형식 ### SSE 이벤트 형식

View File

@ -42,8 +42,8 @@ class Settings(BaseSettings):
# 로깅 # 로깅
log_level: str = "INFO" log_level: str = "INFO"
# 분석 임계값 (MVP 수준) # 분석 임계값 (충분한 맥락 확보)
min_segments_for_analysis: int = 3 # 3개 세그먼트 = 약 15-30초 분량의 대화 min_segments_for_analysis: int = 4 # 4개 세그먼트 (약 60초, 제안사항 추출에 충분한 맥락)
text_retention_seconds: int = 300 # 5분 text_retention_seconds: int = 300 # 5분
class Config: class Config:

View File

@ -1,43 +1,59 @@
"""AI 제안사항 추출 프롬프트""" """AI 제안사항 추출 프롬프트 (MVP 최적화)"""
def get_suggestions_prompt(transcript_text: str) -> tuple[str, str]: def get_suggestions_prompt(transcript_text: str) -> tuple[str, str]:
""" """
회의 텍스트에서 AI 제안사항을 추출하는 프롬프트 생성 회의 텍스트에서 AI 제안사항을 추출하는 프롬프트 생성 (MVP용)
Returns: Returns:
(system_prompt, user_prompt) 튜플 (system_prompt, user_prompt) 튜플
""" """
system_prompt = """당신은 회의 내용 분석 전문가입니다. system_prompt = """당신은 회의 내용에서 실행 가능한 액션 아이템을 찾는 전문가입니다.
회의 텍스트를 분석하여 실행 가능한 제안사항을 추출해주세요.""" 복잡한 분석보다는, 명확하게 "해야 할 일" 언급된 부분을 빠르게 찾아내는 것이 목표입니다."""
user_prompt = f"""다음 회의 내용을 분석하여 **구체적이고 실행 가능한 제안사항**을 추출해주세요. user_prompt = f"""다음 회의 대화에서 **실행해야 할 제안사항**을 찾아주세요.
# 회의 내용 # 회의 내용
{transcript_text} {transcript_text}
--- ---
# 제안사항 추출 기준 # 제안사항을 찾는 간단한 방법
1. **실행 가능성**: 바로 실행할 있는 구체적인 액션 아이템
2. **명확성**: 누가, 무엇을, 언제까지 해야 하는지 명확한 내용
3. **중요도**: 회의 목표 달성에 중요한 사항
4. **완결성**: 하나의 제안사항이 독립적으로 완결된 내용
# 제안사항 유형 예시 아래 패턴이 포함된 문장을 찾으세요:
- **후속 작업**: "시장 조사 보고서를 다음 주까지 작성하여 공유"
- **의사결정 필요**: "예산안 3안 중 최종안을 이번 주 금요일까지 결정"
- **리스크 대응**: "법률 검토를 위해 법무팀과 사전 협의 필요"
- **일정 조율**: "다음 회의를 3월 15일로 확정하고 참석자에게 공지"
- **자료 준비**: "경쟁사 분석 자료를 회의 전까지 준비"
- **검토 요청**: "초안에 대한 팀원들의 피드백 수집 필요"
- **승인 필요**: "최종 기획안을 경영진에게 보고하여 승인 받기"
# 제안사항 작성 가이드 ## ✅ 명확한 액션 패턴
- **구체적으로**: "검토 필요" (X) "법무팀과 계약서 조항 검토 미팅 잡기" (O) - "~해야 한다", "~해야 할 것 같다"
- **명확하게**: "나중에 하기" (X) "다음 주 화요일까지 완료" (O) - "~하기로 했다", "~하기로 결정"
- **실행 가능하게**: "잘 되길 바람" (X) "주간 진행상황 공유 미팅 설정" (O) - "~할 예정이다", "~할 계획이다"
- "~해주세요", "~부탁드립니다"
- "~하도록 하겠습니다", "~진행하겠습니다"
- "~확인해 보겠습니다", "~검토하겠습니다"
## ⏰ 시간 관련 표현
- "다음 주까지", "이번 주 금요일까지"
- "내일", "오늘 중으로"
- "회의 전까지", "발표 전에"
## 👤 담당자 관련 표현
- "김 대리가", "박 과장님이"
- "우리 팀에서", "마케팅팀이"
- "제가", "저희가"
# 실제 회의 예시로 학습하기
## 예시 1
**회의 내용**: "마케팅 예산안을 김 팀장님이 다음 주 수요일까지 검토해서 공유해 주시기로 했습니다."
**추출**: "마케팅 예산안을 다음 주 수요일까지 검토하여 공유" (담당: 팀장)
## 예시 2
**회의 내용**: "그럼 제가 내일 오전에 고객사에 연락해서 미팅 일정을 잡도록 하겠습니다."
**추출**: "고객사에 연락하여 미팅 일정 조율" (시간: 내일 오전)
## 예시 3
**회의 내용**: "법무팀과 계약서 검토를 이번 주 내로 끝내야 할 것 같아요."
**추출**: "법무팀과 계약서 검토 진행" (기한: 이번 )
--- ---
@ -59,14 +75,24 @@ def get_suggestions_prompt(transcript_text: str) -> tuple[str, str]:
}} }}
``` ```
# 중요 규칙 # MVP 추출 규칙 (쉽고 명확하게)
1. **회의 내용에 명시된 사항만** 추출 (추측하지 않기)
2. **최소 3, 최대 7** 제안사항 추출
3. 중요도가 높은 순서로 정렬
4. confidence는 **0.7 이상** 포함
5. 제안사항은 **50 이상** 구체적으로 작성
6. JSON만 출력 (```json이나 다른 텍스트 포함 금지)
이제 회의 내용에서 제안사항을 JSON 형식으로 추출해주세요.""" 1. **위에 제시된 패턴을 먼저 찾으세요**
- "~해야", "~하기로", "~할 예정", "~부탁"
2. **실제로 언급된 내용만 추출** (추측 금지)
3. **1 이상 추출** (없으면 배열 반환)
4. **confidence 기준 완화**: 0.6 이상이면 OK
5. **길이 제한 완화**: 20 이상이면 OK
6. **JSON만 출력** (```json, 주석, 설명 모두 금지)
---
이제 회의 내용에서 제안사항을 JSON 형식으로 추출하세요.
명확한 액션 패턴("~해야", "~하기로" ) 있는 문장을 찾아 추출하면 됩니다."""
return system_prompt, user_prompt return system_prompt, user_prompt

Some files were not shown because too many files have changed in this diff Show More