mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 06:46:24 +00:00
주요 변경사항:
1. AI 서비스 설정
- claude_max_tokens: 8192 → 25000으로 증가 (회의록 통합을 위한 충분한 토큰 확보)
- AI 서비스 타임아웃: 30초 → 60초로 증가
2. 프롬프트 개선 (consolidate_prompt.py)
- JSON 생성 전문가 역할 추가
- JSON 이스케이프 규칙 명시 (큰따옴표, 줄바꿈, 역슬래시)
- Markdown 볼드체(**) 제거하여 JSON 파싱 오류 방지
- 문자열 검증 지시사항 추가
3. JSON 파싱 개선 (claude_service.py)
- 4단계 재시도 전략 구현:
* 이스케이프되지 않은 개행 문자 자동 수정
* strict=False 옵션으로 파싱
* 잘린 응답 복구 시도
* 제어 문자 제거 후 재시도
- 디버깅 로깅 강화 (Input/Output Tokens, Stop Reason)
- 파싱 실패 시 전체 응답을 파일로 저장
4. 회의 종료 로직 개선 (EndMeetingService.java)
- 통합 회의록 생성 또는 조회 로직 추가 (userId=NULL)
- Minutes 테이블에 전체 결정사항 저장
- AgendaSection에 minutesId 정확히 매핑
5. 테스트 데이터 추가
- AI 회의록 요약 테스트용 SQL 스크립트 작성
- 3명 참석자, 3개 안건의 현실적인 회의 시나리오
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
275 lines
8.3 KiB
SQL
275 lines
8.3 KiB
SQL
-- ========================================
|
|
-- AI 회의록 요약 테스트 데이터
|
|
-- ========================================
|
|
-- 목적: Minutes.decisions 및 AgendaSection 저장 검증
|
|
-- 회의: 2025년 신제품 런칭 전략 회의
|
|
-- 참석자: 3명 (마케팅팀장, 개발팀장, 디자인팀장)
|
|
-- 안건: 3개 (타겟 고객 설정, 핵심 기능 정의, 런칭 일정)
|
|
|
|
-- ========================================
|
|
-- 1. 회의 생성
|
|
-- ========================================
|
|
INSERT INTO meetings (
|
|
meeting_id,
|
|
title,
|
|
purpose,
|
|
description,
|
|
location,
|
|
scheduled_at,
|
|
end_time,
|
|
started_at,
|
|
ended_at,
|
|
status,
|
|
organizer_id,
|
|
template_id,
|
|
created_at,
|
|
updated_at
|
|
) VALUES (
|
|
'ai_test_meeting',
|
|
'2025년 신제품 런칭 전략 회의',
|
|
'신제품 출시를 위한 전략 수립 및 일정 협의',
|
|
'타겟 고객층 정의, 핵심 기능 결정, 출시 일정 확정',
|
|
'본사 4층 회의실',
|
|
'2025-01-15 14:00:00',
|
|
'2025-01-15 16:00:00',
|
|
'2025-01-15 14:05:00',
|
|
NULL, -- 아직 종료 안됨
|
|
'IN_PROGRESS',
|
|
'user_organizer',
|
|
'template_general',
|
|
NOW(),
|
|
NOW()
|
|
);
|
|
|
|
-- ========================================
|
|
-- 2. 참석자별 회의록 생성 (user_id NOT NULL)
|
|
-- ========================================
|
|
|
|
-- 2-1. 마케팅팀장 회의록
|
|
INSERT INTO minutes (
|
|
minutes_id,
|
|
meeting_id,
|
|
user_id,
|
|
title,
|
|
status,
|
|
version,
|
|
created_by,
|
|
created_at,
|
|
updated_at
|
|
) VALUES (
|
|
'ai_test_minutes_marketing',
|
|
'ai_test_meeting',
|
|
'user_marketing',
|
|
'2025년 신제품 런칭 전략 회의 - 마케팅팀장',
|
|
'DRAFT',
|
|
1,
|
|
'user_marketing_head',
|
|
NOW(),
|
|
NOW()
|
|
);
|
|
|
|
-- 2-2. 개발팀장 회의록
|
|
INSERT INTO minutes (
|
|
minutes_id,
|
|
meeting_id,
|
|
user_id,
|
|
title,
|
|
status,
|
|
version,
|
|
created_by,
|
|
created_at,
|
|
updated_at
|
|
) VALUES (
|
|
'ai_test_minutes_dev',
|
|
'ai_test_meeting',
|
|
'user_dev',
|
|
'2025년 신제품 런칭 전략 회의 - 개발팀장',
|
|
'DRAFT',
|
|
1,
|
|
'user_dev',
|
|
NOW(),
|
|
NOW()
|
|
);
|
|
|
|
-- 2-3. 디자인팀장 회의록
|
|
INSERT INTO minutes (
|
|
minutes_id,
|
|
meeting_id,
|
|
user_id,
|
|
title,
|
|
status,
|
|
version,
|
|
created_by,
|
|
created_at,
|
|
updated_at
|
|
) VALUES (
|
|
'ai_test_minutes_design',
|
|
'ai_test_meeting',
|
|
'user_design',
|
|
'2025년 신제품 런칭 전략 회의 - 디자인팀장',
|
|
'DRAFT',
|
|
1,
|
|
'user_design',
|
|
NOW(),
|
|
NOW()
|
|
);
|
|
|
|
-- ========================================
|
|
-- 3. 마케팅팀장 회의록 섹션 (MEMO 타입)
|
|
-- ========================================
|
|
|
|
INSERT INTO minutes_sections (
|
|
id,
|
|
minutes_id,
|
|
type,
|
|
title,
|
|
content,
|
|
"order",
|
|
verified,
|
|
locked,
|
|
locked_by
|
|
) VALUES (
|
|
'ai_test_section_marketing',
|
|
'ai_test_minutes_marketing',
|
|
'MEMO',
|
|
'마케팅팀장 메모',
|
|
'【안건 1: 타겟 고객 설정】
|
|
- 주요 타겟: 20-30대 직장인, 특히 재택근무자와 1인 가구
|
|
- 김마케팅팀장 의견: 최근 시장조사 결과 20대 후반~30대 초반 직장인들의 스마트홈 제품 관심도가 가장 높았습니다
|
|
- 부타겟: 40대 맞벌이 부부
|
|
- 결정사항: 1차 타겟을 20-30대 직장인으로 확정, SNS 마케팅 집중
|
|
|
|
【안건 2: 핵심 기능 정의】
|
|
- 음성인식 AI 비서 기능은 필수로 포함하기로 결정
|
|
- 김마케팅팀장: 경쟁사 제품 대비 차별화를 위해 멀티 디바이스 연동 기능이 핵심입니다
|
|
- 스마트폰 앱 연동은 1차 출시에 포함
|
|
- 보류: IoT 센서 연동은 2차 업데이트로 연기 (기술 검증 필요)
|
|
- 담당: 이개발팀장이 AI 음성인식 기술 파트너 컨택 예정
|
|
|
|
【안건 3: 런칭 일정】
|
|
- 목표 출시일: 2025년 6월 1일
|
|
- 마케팅 캠페인은 5월 초부터 티저 광고 시작
|
|
- 김마케팅팀장: 5월 첫째 주에 인플루언서 협업 콘텐츠 제작 필요
|
|
- 결정: 박디자인팀장이 3월 말까지 프로토타입 디자인 완료
|
|
- 할일: 김마케팅팀장이 2월 중 타겟 인플루언서 리스트 작성',
|
|
1,
|
|
FALSE,
|
|
FALSE,
|
|
NULL
|
|
);
|
|
|
|
-- ========================================
|
|
-- 4. 개발팀장 회의록 섹션 (MEMO 타입)
|
|
-- ========================================
|
|
|
|
INSERT INTO minutes_sections (
|
|
id,
|
|
minutes_id,
|
|
type,
|
|
title,
|
|
content,
|
|
"order",
|
|
verified,
|
|
locked,
|
|
locked_by
|
|
) VALUES (
|
|
'ai_test_section_dev',
|
|
'ai_test_minutes_dev',
|
|
'MEMO',
|
|
'개발팀장 메모',
|
|
'【안건 1: 타겟 고객 설정】
|
|
- 이개발팀장: 타겟 연령층이 20-30대라면 모바일 앱 UX가 정말 중요합니다
|
|
- 20-30대 직장인 타겟 동의
|
|
- 기술적으로 이 연령층은 새로운 기술 수용도가 높아서 AI 기능 적극 활용 예상
|
|
|
|
【안건 2: 핵심 기능 정의】
|
|
- 음성인식 AI: OpenAI Whisper 또는 Google Speech API 검토 중
|
|
- 이개발팀장: 멀티 디바이스 연동을 위해서는 클라우드 기반 아키텍처 필수입니다
|
|
- 결정: 음성인식 AI는 한국어 특화 모델 사용하기로 확정
|
|
- 보류사항: IoT 센서는 기술 검증 후 2차 업데이트 (전력 소비 이슈)
|
|
- 할일: 이개발팀장이 1월 말까지 AI 음성인식 기술 파트너 미팅 잡기
|
|
- 할일: 최개발자가 2월 중 클라우드 인프라 설계서 작성
|
|
|
|
【안건 3: 런칭 일정】
|
|
- 6월 1일 출시 목표는 타이트하지만 가능할 것으로 판단
|
|
- 개발 일정: 2월 프로토타입, 3월 알파, 4월 베타, 5월 최종 QA
|
|
- 이개발팀장: 베타 테스트는 최소 3주 필요, 5월 초에 시작해야 합니다
|
|
- 결정: 개발팀은 4월 중순까지 베타 버전 완성
|
|
- 보류: 다국어 지원은 일단 한국어만, 영어는 추후 검토',
|
|
1,
|
|
FALSE,
|
|
FALSE,
|
|
NULL
|
|
);
|
|
|
|
-- ========================================
|
|
-- 5. 디자인팀장 회의록 섹션 (MEMO 타입)
|
|
-- ========================================
|
|
|
|
INSERT INTO minutes_sections (
|
|
id,
|
|
minutes_id,
|
|
type,
|
|
title,
|
|
content,
|
|
"order",
|
|
verified,
|
|
locked,
|
|
locked_by
|
|
) VALUES (
|
|
'ai_test_section_design',
|
|
'ai_test_minutes_design',
|
|
'MEMO',
|
|
'디자인팀장 메모',
|
|
'【안건 1: 타겟 고객 설정】
|
|
- 20-30대 타겟에 동의, 디자인 방향도 MZ세대 취향 고려 필요
|
|
- 박디자인팀장: "미니멀하고 감각적인 디자인으로 차별화해야 합니다"
|
|
- 레퍼런스: 애플 HomePod, 구글 Nest Hub
|
|
- 색상은 화이트, 그레이, 블랙 3종으로 결정
|
|
|
|
【안건 2: 핵심 기능 정의】
|
|
- 음성인식 피드백 UI가 중요 - LED 링 또는 디스플레이 활용
|
|
- 박디자인팀장: "사용자가 AI가 듣고 있다는 걸 직관적으로 알 수 있어야 합니다"
|
|
- 멀티 디바이스 연동 시 화면 전환 애니메이션 필요
|
|
- 결정: 터치 인터페이스와 음성 인터페이스 병행
|
|
- 할일: 김디자이너가 2월 말까지 UI/UX 목업 완성
|
|
|
|
【안건 3: 런칭 일정】
|
|
- 6월 출시 위해 3월 말 프로토타입 디자인 완료 확약
|
|
- 디자인 일정: 2월 컨셉 확정, 3월 프로토타입, 4월 최종 디자인
|
|
- 박디자인팀장: "패키지 디자인도 프리미엄 느낌으로 가야 합니다"
|
|
- 결정: 제품 패키지는 친환경 소재 사용
|
|
- 할일: 박디자인팀장이 3월 말까지 프로토타입 디자인 완료
|
|
- 할일: 박디자인팀장이 4월 중 패키지 디자인 최종안 제출',
|
|
1,
|
|
FALSE,
|
|
FALSE,
|
|
NULL
|
|
);
|
|
|
|
-- ========================================
|
|
-- 검증 쿼리
|
|
-- ========================================
|
|
|
|
-- 회의 확인
|
|
-- SELECT * FROM meetings WHERE meeting_id = 'ai_test_meeting_001';
|
|
|
|
-- 참석자별 회의록 확인
|
|
-- SELECT minutes_id, user_id, title FROM minutes WHERE meeting_id = 'ai_test_meeting_001';
|
|
|
|
-- 회의록 섹션 확인
|
|
-- SELECT id, minutes_id, title, LEFT(content, 100) as content_preview
|
|
-- FROM minutes_sections
|
|
-- WHERE minutes_id LIKE 'ai_test_minutes_%';
|
|
|
|
-- ========================================
|
|
-- 테스트 실행 가이드
|
|
-- ========================================
|
|
-- 1. 이 SQL 실행하여 테스트 데이터 생성
|
|
-- 2. POST /api/meetings/ai_test_meeting_001/end 호출
|
|
-- 3. 검증:
|
|
-- - minutes 테이블에 userId=NULL인 통합 회의록 생성 확인
|
|
-- - minutes.decisions 필드에 전체 결정사항 저장 확인
|
|
-- - agenda_sections 테이블에 3개 안건 저장 확인
|
|
-- - agenda_sections.summary에 논의+결정 내용 저장 확인
|