mirror of
https://github.com/hwanny1128/HGZero.git
synced 2026-06-12 22:59:10 +00:00
Feat: AI 서비스 통합 및 회의록 기능 개선
- 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>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
-- =====================================================
|
||||
-- Check agenda_sections data for meeting-test
|
||||
-- =====================================================
|
||||
|
||||
SELECT
|
||||
id,
|
||||
meeting_id,
|
||||
agenda_number,
|
||||
agenda_title,
|
||||
ai_summary_short,
|
||||
LENGTH(summary) as summary_length,
|
||||
pending_items,
|
||||
todos,
|
||||
created_at
|
||||
FROM agenda_sections
|
||||
WHERE meeting_id = 'meeting-test'
|
||||
ORDER BY agenda_number;
|
||||
@@ -0,0 +1,26 @@
|
||||
-- =====================================================
|
||||
-- Cleanup Test Data for meeting-test
|
||||
-- =====================================================
|
||||
|
||||
-- 1. agenda_sections 삭제 (외래키 제약이 있을 수 있으므로 먼저)
|
||||
DELETE FROM agenda_sections WHERE meeting_id = 'meeting-test';
|
||||
|
||||
-- 2. todos 삭제
|
||||
DELETE FROM todos WHERE meeting_id = 'meeting-test';
|
||||
|
||||
-- 3. meeting_analysis 관련 삭제
|
||||
DELETE FROM meeting_keywords WHERE analysis_id IN (SELECT analysis_id FROM meeting_analysis WHERE meeting_id = 'meeting-test');
|
||||
DELETE FROM meeting_analysis WHERE meeting_id = 'meeting-test';
|
||||
|
||||
-- 4. minutes_sections 삭제
|
||||
DELETE FROM minutes_sections WHERE minutes_id IN (SELECT minutes_id FROM minutes WHERE meeting_id = 'meeting-test');
|
||||
|
||||
-- 5. minutes 삭제
|
||||
DELETE FROM minutes WHERE meeting_id = 'meeting-test';
|
||||
|
||||
-- 6. 확인
|
||||
SELECT 'Cleanup completed' AS status;
|
||||
SELECT COUNT(*) as remaining_minutes FROM minutes WHERE meeting_id = 'meeting-test';
|
||||
SELECT COUNT(*) as remaining_sections FROM minutes_sections WHERE minutes_id IN (SELECT minutes_id FROM minutes WHERE meeting_id = 'meeting-test');
|
||||
SELECT COUNT(*) as remaining_agenda FROM agenda_sections WHERE meeting_id = 'meeting-test';
|
||||
SELECT COUNT(*) as remaining_todos FROM todos WHERE meeting_id = 'meeting-test';
|
||||
@@ -0,0 +1,238 @@
|
||||
-- =====================================================
|
||||
-- Meeting Test Data for AI Service Testing (UPDATED with user_id)
|
||||
-- =====================================================
|
||||
|
||||
-- 1. meeting-test 데이터가 있는지 확인
|
||||
SELECT * FROM meetings WHERE meeting_id = 'meeting-test';
|
||||
|
||||
-- 2. 기존 meeting-test 관련 데이터 정리 (있다면)
|
||||
DELETE FROM minutes_sections WHERE minutes_id IN (SELECT minutes_id FROM minutes WHERE meeting_id = 'meeting-test');
|
||||
DELETE FROM minutes WHERE meeting_id = 'meeting-test';
|
||||
|
||||
-- 3. 참석자별 회의록(minutes) 생성 - user1
|
||||
INSERT INTO minutes (
|
||||
minutes_id,
|
||||
meeting_id,
|
||||
user_id,
|
||||
title,
|
||||
status,
|
||||
version,
|
||||
created_by,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
'minutes-test-user1',
|
||||
'meeting-test',
|
||||
'user1',
|
||||
'Q4 마케팅 전략 회의 - user1 작성',
|
||||
'DRAFT',
|
||||
1,
|
||||
'user1',
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 4. user1 회의록 섹션 - MEMO
|
||||
INSERT INTO minutes_sections (
|
||||
id,
|
||||
section_id,
|
||||
minutes_id,
|
||||
type,
|
||||
title,
|
||||
content,
|
||||
"order",
|
||||
verified,
|
||||
locked,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES
|
||||
(
|
||||
'section-user1-1',
|
||||
'section-user1-1',
|
||||
'minutes-test-user1',
|
||||
'MEMO',
|
||||
'회의 안건',
|
||||
'1. Q4 마케팅 캠페인 기획
|
||||
2. 예산 배분 논의
|
||||
3. 실행 일정 수립
|
||||
|
||||
[주요 논의 사항]
|
||||
마케팅 캠페인에 대한 논의를 진행했습니다. 소셜 미디어 광고와 인플루언서 마케팅을 결합한 통합 캠페인을 제안했으며, 예산은 총 5천만원으로 책정하는 것이 적절하다는 의견이 나왔습니다. 실행 시기는 11월 초부터 12월 말까지로 설정하기로 했습니다.
|
||||
|
||||
김대리가 인플루언서 리스트 작성하기로 함, 다음주 금요일까지 완료 예정. 박과장은 캠페인 콘텐츠 기획안 초안을 이번주 내로 준비하기로 했습니다.
|
||||
|
||||
[결정 사항]
|
||||
1. 소셜 미디어 + 인플루언서 통합 캠페인 실행
|
||||
2. 예산: 5천만원 배정
|
||||
3. 기간: 11월 초 ~ 12월 말',
|
||||
1,
|
||||
false,
|
||||
false,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
|
||||
-- 8. 참석자별 회의록(minutes) 생성 - user2
|
||||
INSERT INTO minutes (
|
||||
minutes_id,
|
||||
meeting_id,
|
||||
user_id,
|
||||
title,
|
||||
status,
|
||||
version,
|
||||
created_by,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
'minutes-test-user2',
|
||||
'meeting-test',
|
||||
'user2',
|
||||
'Q4 마케팅 전략 회의 - user2 작성',
|
||||
'DRAFT',
|
||||
1,
|
||||
'user2',
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 9. user2 회의록 섹션 - MEMO
|
||||
INSERT INTO minutes_sections (
|
||||
id,
|
||||
section_id,
|
||||
minutes_id,
|
||||
type,
|
||||
title,
|
||||
content,
|
||||
"order",
|
||||
verified,
|
||||
locked,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES
|
||||
(
|
||||
'section-user2-1',
|
||||
'section-user2-1',
|
||||
'minutes-test-user2',
|
||||
'MEMO',
|
||||
'회의 목표',
|
||||
'Q4 마케팅 전략 수립 및 예산 확정
|
||||
|
||||
[논의 내용]
|
||||
Q4 마케팅 전략으로 디지털 마케팅 강화 방안을 논의했습니다. 특히 인스타그램과 유튜브를 활용한 인플루언서 마케팅이 효과적일 것으로 판단됩니다. 타겟 연령층은 20-30대이며, 예산은 광고비 3천만원, 인플루언서 비용 2천만원으로 분배하는 것이 좋겠다는 의견이 있었습니다.
|
||||
|
||||
이대리가 경쟁사 소셜 미디어 분석 보고서를 다음 주 수요일까지 제출하기로 했고, 최주임은 광고 플랫폼 선정 및 견적 비교 자료를 월요일까지 준비합니다.
|
||||
|
||||
[결정 사항]
|
||||
1. 인스타그램, 유튜브 중심 인플루언서 마케팅 진행
|
||||
2. 타겟: 20-30대
|
||||
3. 예산: 광고비 3천만원, 인플루언서 2천만원',
|
||||
1,
|
||||
false,
|
||||
false,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
|
||||
-- 참석자별 회의록(minutes) 생성 - user3
|
||||
INSERT INTO minutes (
|
||||
minutes_id,
|
||||
meeting_id,
|
||||
user_id,
|
||||
title,
|
||||
status,
|
||||
version,
|
||||
created_by,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
'minutes-test-user3',
|
||||
'meeting-test',
|
||||
'user3',
|
||||
'Q4 마케팅 전략 회의 - user3 작성',
|
||||
'DRAFT',
|
||||
1,
|
||||
'user3',
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 14. user3 회의록 섹션 - MEMO
|
||||
INSERT INTO minutes_sections (
|
||||
id,
|
||||
section_id,
|
||||
minutes_id,
|
||||
type,
|
||||
title,
|
||||
content,
|
||||
"order",
|
||||
verified,
|
||||
locked,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES
|
||||
(
|
||||
'section-user3-1',
|
||||
'section-user3-1',
|
||||
'minutes-test-user3',
|
||||
'MEMO',
|
||||
'안건',
|
||||
'1. Q4 마케팅 목표 설정
|
||||
2. 채널별 예산 배분
|
||||
3. KPI 지표 정의
|
||||
|
||||
[회의 내용]
|
||||
Q4 마케팅 목표는 브랜드 인지도 상승과 매출 증대로 설정. 예산 5천만원을 디지털 광고와 인플루언서 마케팅에 분배하며, 성과 측정을 위해 도달률, 참여율, 전환율을 KPI로 설정. ROI 목표는 150%
|
||||
|
||||
정차장님께서 예산 집행 계획서를 이번 주 목요일까지 작성하시기로 하셨습니다. KPI 대시보드 구축은 한팀장님이 담당하시고 11월 첫째 주까지 완료 예정입니다.',
|
||||
1,
|
||||
false,
|
||||
false,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
-- 16. user3 회의록 섹션 - DECISION
|
||||
INSERT INTO minutes_sections (
|
||||
id,
|
||||
section_id,
|
||||
minutes_id,
|
||||
type,
|
||||
title,
|
||||
content,
|
||||
"order",
|
||||
verified,
|
||||
locked,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES
|
||||
(
|
||||
'section-user3-3',
|
||||
'section-user3-3',
|
||||
'minutes-test-user3',
|
||||
'DECISION',
|
||||
'결정 사항',
|
||||
'1. 목표: 브랜드 인지도 상승 + 매출 증대\n2. 예산: 총 5천만원 (디지털 광고 + 인플루언서)\n3. KPI: 도달률, 참여율, 전환율, ROI 150% 이상',
|
||||
3,
|
||||
false,
|
||||
false,
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
*/
|
||||
|
||||
-- 18. 데이터 확인
|
||||
SELECT 'Minutes 데이터:' AS info;
|
||||
SELECT * FROM minutes WHERE meeting_id = 'meeting-test';
|
||||
|
||||
SELECT 'Minutes Sections 데이터:' AS info;
|
||||
SELECT ms.section_id, ms.minutes_id, m.created_by, m.user_id, ms.type, ms.title,
|
||||
LENGTH(ms.content) as content_length, ms."order"
|
||||
FROM minutes_sections ms
|
||||
JOIN minutes m ON ms.minutes_id = m.minutes_id
|
||||
WHERE m.meeting_id = 'meeting-test'
|
||||
ORDER BY m.created_by, ms."order";
|
||||
Reference in New Issue
Block a user