hgzero/data/samples/generate_group2_extended.py
hiondal bb921e10eb 작업 파일 정리 및 실시간 회의록 플로우 추가
- 가파팀 프로토타입 파일 삭제
- 가파팀 유저스토리 삭제
- 실시간 회의록 작성 플로우 설계서 추가 (Mermaid, Markdown)
- 백업 및 데이터 디렉토리 추가
- AI 데이터 샘플 생성 도구 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 14:16:10 +09:00

447 lines
20 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
통신 업무 도메인 그룹 2 벡터 DB 임베딩 데이터 생성기
도메인: 영업/마케팅, 요금/청구, 네트워크운용
"""
import json
import random
from datetime import datetime, timedelta
# 기존 파일 읽기
with open('group2_data.json', 'r', encoding='utf-8') as f:
existing_data = json.load(f)
existing_count = len(existing_data)
print(f"기존 샘플 수: {existing_count}")
# 생성할 샘플 수 계산
target_total = 360
remaining = target_total - existing_count
print(f"추가 생성할 샘플: {remaining}")
# 도메인별 샘플 수 계산 (균등 배분)
samples_per_domain = remaining // 3 # 3개 도메인
samples_per_type = samples_per_domain // 4 # 4개 문서 유형
print(f"도메인당 샘플: {samples_per_domain}")
print(f"유형당 샘플: {samples_per_type}")
# 날짜 생성 함수
def random_date(start_date, end_date):
time_between = end_date - start_date
days_between = time_between.days
random_days = random.randint(0, days_between)
return (start_date + timedelta(days=random_days)).strftime("%Y-%m-%d")
start_date = datetime(2024, 1, 1)
end_date = datetime(2025, 1, 31)
# 데이터 생성
new_samples = []
# ============================================================
# 1. 영업/마케팅 도메인 추가 샘플 생성
# ============================================================
# 회의록 (meeting_minutes) - 영업/마케팅
meeting_titles_sm = [
"하반기 마케팅 전략 수립 회의", "고객 세그먼트 분석 회의", "경쟁사 벤치마킹 회의",
"요금제 포트폴리오 재검토 회의", "온라인 마케팅 채널 최적화 회의",
"고객 로열티 프로그램 기획 회의", "신규 시장 진출 전략 회의",
"마케팅 예산 집행 현황 검토", "브랜드 리뉴얼 프로젝트 킥오프",
"대리점 파트너십 강화 방안 회의", "고객 이탈 분석 및 대응 전략",
"소셜미디어 마케팅 전략 회의", "프리미엄 고객 관리 방안",
"요금제 번들링 전략 회의", "시즌별 프로모션 캘린더 수립",
"글로벌 로밍 서비스 개선 회의", "5G 요금제 마케팅 전략",
"가족 요금제 확대 방안", "법인 고객 유치 전략", "데이터 무제한 요금제 검토"
]
for i in range(samples_per_type):
doc_id = f"sales_marketing_meeting_{str(existing_count + len(new_samples) + 1).zfill(3)}"
title = random.choice(meeting_titles_sm)
date = random_date(start_date, end_date)
content = f"""회의 일시: {date} {random.choice(['09:00', '10:00', '14:00', '15:00', '16:00'])}-{random.choice(['11:00', '12:00', '16:00', '17:00', '18:00'])}
참석자: {random.choice(['김민수', '박지영', '이준호', '최유진'])}(팀장), {random.choice(['강서윤', '정민호', '송하은', '황지우'])}(담당), {random.choice(['나영희', '조민석', '서민준', '권혜진'])}(실무자)
논의 내용:
1. 시장 현황 분석
- 전월 대비 신규 가입자 {random.randint(80, 120)}% 달성
- 경쟁사 대비 시장 점유율 {random.randint(15, 25)}%
- ARPU: {random.randint(52000, 62000):,}원 (목표 대비 {random.randint(95, 110)}%)
- 고객 만족도: {random.uniform(3.5, 4.5):.1f}/5.0
2. 주요 이슈 및 대응 방안
- {random.choice(['요금제 다양화', '디지털 채널 강화', '고객 서비스 개선', 'B2B 영업 확대'])} 필요성
- {random.choice(['프로모션 효과', '광고 캠페인', '브랜드 인지도', '고객 충성도'])} 제고 방안
- 예산: {random.randint(5, 30)}억원 배정
- 목표: {random.choice(['신규 가입자', '요금제 변경', '매출 증대', 'ARPU 상승'])} {random.randint(10, 30)}% 향상
3. 실행 계획
- 1단계: {random.choice(['시장조사', '기획안 작성', '예산 승인', '팀 구성'])} ({random.randint(1, 3)}개월)
- 2단계: {random.choice(['시범 운영', '본격 실행', '채널 확대', '성과 측정'])} ({random.randint(2, 4)}개월)
- 3단계: {random.choice(['평가 및 개선', '전국 확대', '성과 분석', '차기 계획'])} ({random.randint(1, 2)}개월)
결정 사항:
- {random.choice(['즉시 착수', '다음 달 시작', '분기 내 완료', '상반기 목표'])}
- 담당: {random.choice(['김민수', '박지영', '이준호'])} 팀장 총괄
- 보고: {random.choice(['주간', '격주', '월간'])} 진행 상황 보고
액션 아이템:
- {random.choice(['기획서', '제안서', '실행계획서', '예산계획서'])} 작성 ({random.randint(5, 20)}일 이내)
- {random.choice(['관련 부서', '협력사', '외부 파트너'])} 협의 진행
- {random.choice(['시스템 개발', '프로세스 정비', '교육 실시', '매뉴얼 작성'])} 준비"""
new_samples.append({
"document_id": doc_id,
"document_type": "meeting_minutes",
"title": title,
"content": content,
"metadata": {
"domain": "sales_marketing",
"date": date,
"author": random.choice(["김민수", "박지영", "이준호", "최유진"]),
"tags": random.sample(["영업전략", "마케팅", "요금제", "프로모션", "고객관리", "채널확대", "ARPU", "캠페인"], 4),
"organization_id": "org_telecom_001",
"folder_id": "folder_sales_marketing"
}
})
# 매뉴얼 (manual) - 영업/마케팅
manual_titles_sm = [
"영업 실적 관리 가이드", "프로모션 운영 규정", "고객 상담 매뉴얼",
"마케팅 캠페인 기획 표준", "채널 파트너 관리 규정", "요금제 판매 가이드",
"브랜드 가이드라인", "고객 세그먼트 정의서", "영업 성과 평가 기준",
"디지털 마케팅 운영 지침", "고객 로열티 프로그램 운영 매뉴얼"
]
for i in range(samples_per_type):
doc_id = f"sales_marketing_manual_{str(existing_count + len(new_samples) + 1).zfill(3)}"
title = random.choice(manual_titles_sm)
date = random_date(start_date, end_date)
content = f"""# {title}
## 1. 목적 및 범위
본 매뉴얼은 {random.choice(['영업', '마케팅', '채널', '고객관리'])} 업무의 표준 절차를 정의하고 효율적인 업무 수행을 위한 가이드라인을 제시합니다.
## 2. 주요 프로세스
### 2.1 기획 단계
- {random.choice(['시장 조사', '고객 분석', '경쟁사 벤치마킹', '내부 데이터 분석'])} 실시
- 목표 설정: {random.choice(['신규 가입자', 'ARPU', '매출', '시장 점유율'])} {random.randint(10, 30)}% 향상
- 예산 수립: 총 {random.randint(10, 100)}억원
- 승인 프로세스: 담당자 → 팀장 → 본부장 → 경영진
### 2.2 실행 단계
- 채널별 실행 계획 수립 ({random.choice(['직영점', '대리점', '온라인', '제휴채널'])})
- 일정 관리: {random.randint(1, 6)}개월 프로젝트
- 리스크 관리: {random.choice(['예산 초과', '목표 미달', '고객 불만', '시스템 오류'])} 방지
- 품질 관리: {random.choice(['월간', '주간', '일간'])} 점검 실시
### 2.3 성과 측정
- KPI 설정
- {random.choice(['신규 가입자', '요금제 변경', '매출', '고객 만족도'])}: {random.randint(80, 120)}%
- {random.choice(['ROI', '전환율', '이탈률', '참여율'])}: {random.randint(100, 200)}%
- {random.choice(['브랜드 인지도', '시장 점유율', 'NPS', 'CSAT'])}: {random.randint(60, 95)}
- 보고 주기: {random.choice(['일일', '주간', '월간', '분기'])}
- 개선 조치: 목표 미달 시 {random.randint(7, 30)}일 이내 대책 수립
## 3. 역할 및 책임
### 3.1 기획팀
- 전략 수립 및 기획서 작성
- 예산 관리 및 성과 분석
- 타 부서 협업 조율
### 3.2 실행팀
- 현장 실행 및 모니터링
- 일일 실적 보고
- 이슈 대응 및 에스컬레이션
### 3.3 지원팀
- 시스템 개발 및 운영
- 데이터 분석 및 리포팅
- 교육 및 매뉴얼 관리
## 4. 주요 지표 및 기준
### 4.1 정량 지표
- 신규 가입자: 월 {random.randint(100000, 300000):,}명 목표
- ARPU: {random.randint(50000, 65000):,}원 이상
- 해지율: {random.uniform(1.5, 3.0):.1f}% 이하
- 고객 만족도: {random.uniform(4.0, 4.5):.1f}/5.0 이상
### 4.2 정성 지표
- 브랜드 이미지: {random.choice(['혁신적', '신뢰성', '고객중심', '품질우수'])}
- 시장 평가: 업계 {random.choice(['1위', '2위', '3위'])}
- 고객 피드백: {random.choice(['매우 긍정적', '긍정적', '보통 이상'])}
## 5. 유의사항
- 법규 준수: {random.choice(['통신서비스법', '공정거래법', '개인정보보호법', '전자상거래법'])} 준수 필수
- 윤리 경영: 부정 행위 금지, 투명한 운영
- 고객 보호: 과대 광고 금지, 약관 명시
- 데이터 보안: 고객 정보 암호화 및 접근 통제"""
new_samples.append({
"document_id": doc_id,
"document_type": "manual",
"title": title,
"content": content,
"metadata": {
"domain": "sales_marketing",
"date": date,
"author": random.choice(["김민수", "박지영", "이준호"]),
"tags": random.sample(["업무매뉴얼", "표준프로세스", "KPI", "성과관리", "영업가이드", "마케팅규정"], 4),
"organization_id": "org_telecom_001",
"folder_id": "folder_sales_marketing"
}
})
# 프로젝트 문서 (project_doc) - 영업/마케팅
project_titles_sm = [
"고객 데이터 분석 플랫폼 구축", "옴니채널 마케팅 시스템 개발",
"AI 기반 고객 추천 시스템", "디지털 광고 자동화 프로젝트",
"CRM 시스템 고도화", "마케팅 성과 대시보드 구축",
"고객 여정 분석 시스템", "영업 지원 플랫폼 개발"
]
for i in range(samples_per_type):
doc_id = f"sales_marketing_project_{str(existing_count + len(new_samples) + 1).zfill(3)}"
title = random.choice(project_titles_sm)
date = random_date(start_date, end_date)
content = f"""# {title} 프로젝트 문서
## 1. 프로젝트 개요
### 1.1 배경
- 현재 시스템의 {random.choice(['노후화', '기능 부족', '성능 저하', '확장성 한계'])} 문제
- {random.choice(['고객 니즈', '시장 변화', '경쟁 심화', '기술 발전'])}에 따른 개선 필요
- 예상 효과: {random.choice(['매출 증대', '비용 절감', '효율성 향상', '고객 만족도 개선'])} {random.randint(20, 50)}%
### 1.2 목표
- {random.choice(['시스템 구축', '프로세스 개선', '데이터 통합', '자동화 실현'])}
- 투자 회수 기간: {random.randint(18, 36)}개월
- 정량 목표: {random.choice(['처리량', '응답시간', '정확도', '활용률'])} {random.randint(30, 100)}% 개선
### 1.3 범위
- 대상 사용자: {random.choice(['전사 임직원', '마케팅팀', '영업팀', '고객센터'])}{random.randint(100, 1000)}
- 주요 기능: {random.choice(['데이터 분석', '캠페인 관리', '성과 측정', '고객 관리'])}
- 연동 시스템: {random.choice(['CRM', 'ERP', '과금', '고객센터'])}{random.randint(3, 8)}개 시스템
## 2. 기술 사양
### 2.1 아키텍처
- 프론트엔드: {random.choice(['React', 'Vue.js', 'Angular'])}
- 백엔드: {random.choice(['Spring Boot', 'Node.js', 'Django'])}
- 데이터베이스: {random.choice(['PostgreSQL', 'MySQL', 'MongoDB'])}
- 클라우드: {random.choice(['AWS', 'Azure', 'GCP', '하이브리드'])}
### 2.2 성능 요구사항
- 동시 사용자: {random.randint(100, 1000)}명 이상
- 응답 시간: {random.randint(1, 5)}초 이내
- 가용성: {random.uniform(99.0, 99.99):.2f}%
- 데이터 처리: {random.randint(1, 100)}만 건/일
### 2.3 보안
- 인증: {random.choice(['OAuth 2.0', 'SAML', 'SSO'])}
- 암호화: {random.choice(['AES-256', 'RSA-2048'])}
- 접근 제어: RBAC (Role-Based Access Control)
- 감사 로그: 모든 중요 작업 기록
## 3. 일정 및 자원
### 3.1 일정
- 요구사항 정의: {random.randint(1, 2)}개월
- 설계 및 개발: {random.randint(4, 8)}개월
- 테스트: {random.randint(1, 3)}개월
- 배포 및 안정화: {random.randint(1, 2)}개월
- 총 기간: {random.randint(8, 15)}개월
### 3.2 예산
- 시스템 개발: {random.randint(10, 50)}억원
- 인프라 구축: {random.randint(5, 20)}억원
- 외부 솔루션: {random.randint(2, 10)}억원
- 교육 및 운영: {random.randint(1, 5)}억원
- 총 예산: {random.randint(20, 80)}억원
### 3.3 인력
- PM: {random.randint(1, 2)}
- 개발: {random.randint(5, 20)}
- 인프라: {random.randint(2, 5)}
- QA: {random.randint(2, 5)}
- 총 인력: {random.randint(10, 30)}
## 4. 리스크 및 대응
### 4.1 주요 리스크
- 일정 지연: {random.choice(['요구사항 변경', '기술적 난이도', '인력 부족'])}
- 예산 초과: {random.choice(['범위 확대', '외주 비용 증가', '인프라 추가'])}
- 품질 이슈: {random.choice(['테스트 미흡', '성능 저하', '보안 취약점'])}
### 4.2 대응 방안
- 주간 진행 상황 점검
- 변경 관리 프로세스 엄격 적용
- 단계별 품질 게이트 설정
- 예비 예산 {random.randint(10, 20)}% 확보
## 5. 기대 효과
- 업무 효율성: {random.randint(30, 50)}% 향상
- 비용 절감: 연 {random.randint(5, 30)}억원
- 고객 만족도: {random.randint(10, 30)}% 개선
- 데이터 기반 의사결정 체계 확립"""
new_samples.append({
"document_id": doc_id,
"document_type": "project_doc",
"title": title,
"content": content,
"metadata": {
"domain": "sales_marketing",
"date": date,
"author": random.choice(["박지영", "김민수", "이준호"]),
"tags": random.sample(["프로젝트", "시스템구축", "요구사항", "설계서", "예산", "일정"], 4),
"organization_id": "org_telecom_001",
"folder_id": "folder_sales_marketing"
}
})
# 운영 문서 (operation_doc) - 영업/마케팅
operation_titles_sm = [
"프로모션 운영 결과 보고서", "월간 영업 실적 보고서",
"고객 불만 처리 보고서", "마케팅 캠페인 성과 분석",
"채널별 판매 현황 분석", "고객 이탈 분석 보고서",
"경쟁사 동향 분석 보고서", "시장 점유율 변화 분석"
]
for i in range(samples_per_type):
doc_id = f"sales_marketing_operation_{str(existing_count + len(new_samples) + 1).zfill(3)}"
title = random.choice(operation_titles_sm)
date = random_date(start_date, end_date)
content = f"""# {title}
## 1. 개요
### 1.1 보고 기간
- 기간: {date}
- 작성자: {random.choice(['김민수', '박지영', '이준호'])}
- 작성일: {date}
### 1.2 주요 지표 요약
- {random.choice(['신규 가입자', '요금제 변경', '매출', 'ARPU'])}: {random.randint(90, 130):,}% (목표 대비)
- {random.choice(['고객 만족도', 'NPS', '브랜드 인지도', '추천율'])}: {random.uniform(3.5, 4.8):.1f}/5.0
- {random.choice(['해지율', '불만율', '오류율', '이탈률')}: {random.uniform(1.0, 3.5):.1f}%
## 2. 상세 분석
### 2.1 실적 현황
- 채널별 성과
- 직영점: {random.randint(30000, 80000):,}건 ({random.randint(25, 35)}%)
- 대리점: {random.randint(100000, 200000):,}건 ({random.randint(45, 60)}%)
- 온라인: {random.randint(20000, 60000):,}건 ({random.randint(10, 25)}%)
- 고객센터: {random.randint(2000, 10000):,}건 ({random.randint(2, 8)}%)
- 요금제별 가입 현황
- {random.choice(['5G 프리미엄', 'LTE 스탠다드', '청년 요금제', '가족 요금제'])}: {random.randint(20, 40)}%
- {random.choice(['5G 스탠다드', 'LTE 라이트', '시니어 요금제', '기업 요금제'])}: {random.randint(30, 50)}%
- {random.choice(['기타 요금제', '특화 요금제', '프로모션 요금제'])}: {random.randint(10, 30)}%
### 2.2 고객 분석
- 신규 고객
- 연령대: 20대 {random.randint(20, 35)}%, 30대 {random.randint(25, 40)}%, 40대 이상 {random.randint(25, 40)}%
- 지역: 수도권 {random.randint(45, 60)}%, 지방 {random.randint(40, 55)}%
- 유입 경로: 광고 {random.randint(30, 45)}%, 추천 {random.randint(15, 30)}%, 직접 방문 {random.randint(25, 45)}%
- 이탈 고객
- 이탈 사유: 요금 {random.randint(35, 50)}%, 품질 {random.randint(20, 35)}%, 경쟁사 이동 {random.randint(15, 30)}%
- 이탈 시기: 가입 {random.randint(1, 3)}개월 이내 {random.randint(40, 60)}%
- 평균 이용 기간: {random.uniform(12, 36):.1f}개월
### 2.3 마케팅 성과
- 캠페인별 ROI
- {random.choice(['TV 광고', '온라인 광고', 'SNS 캠페인', '제휴 프로모션'])}: {random.randint(120, 250)}%
- {random.choice(['이메일 마케팅', '문자 마케팅', '앱 푸시', '오프라인 이벤트'])}: {random.randint(100, 200)}%
- {random.choice(['친구 추천', '바이럴 마케팅', '인플루언서', '콘텐츠 마케팅'])}: {random.randint(80, 180)}%
- 광고 효율
- 클릭률(CTR): {random.uniform(1.5, 5.0):.2f}%
- 전환율(CVR): {random.uniform(0.5, 3.0):.2f}%
- 고객 획득 비용(CAC): {random.randint(50000, 150000):,}
## 3. 주요 이슈 및 대응
### 3.1 긍정적 측면
- {random.choice(['신규 가입 증가', '고객 만족도 상승', 'ARPU 증가', '시장 점유율 확대'])}
- {random.choice(['캠페인 성공', '브랜드 인지도 향상', '제휴 확대', '채널 다각화'])}
- {random.choice(['디지털 전환 가속', '데이터 활용 증대', '프로세스 개선', '시스템 안정화'])}
### 3.2 개선 필요 사항
- {random.choice(['특정 요금제 판매 부진', '일부 채널 성과 저조', '고객 불만 증가', '경쟁 심화'])}
- {random.choice(['마케팅 비용 증가', '운영 효율성 저하', '시스템 오류', '인력 부족'])}
- 대응 방안: {random.choice(['전략 수정', '예산 재배분', '프로세스 개선', '교육 강화'])}
## 4. 차기 계획
### 4.1 목표 설정
- {random.choice(['신규 가입자', '매출', 'ARPU', '시장 점유율'])} {random.randint(10, 30)}% 증가
- {random.choice(['고객 만족도', 'NPS', '브랜드 인지도'])}: {random.uniform(4.0, 4.8):.1f}/5.0 이상
- {random.choice(['해지율', '불만율', '비용')}: {random.randint(10, 30)}% 감소
### 4.2 실행 계획
- {random.choice(['새로운 요금제 출시', '프로모션 강화', '채널 확대', '시스템 개선'])}
- {random.choice(['고객 경험 개선', '데이터 분석 고도화', '파트너십 강화', '브랜드 마케팅'])}
- 예산: {random.randint(5, 50)}억원 투자
- 일정: {random.randint(1, 6)}개월 프로젝트
## 5. 첨부 자료
- 상세 실적 데이터
- 고객 분석 리포트
- 경쟁사 벤치마킹 자료
- 마케팅 캠페인 결과"""
new_samples.append({
"document_id": doc_id,
"document_type": "operation_doc",
"title": title,
"content": content,
"metadata": {
"domain": "sales_marketing",
"date": date,
"author": random.choice(["김민수", "박지영", "이준호"]),
"tags": random.sample(["운영보고서", "실적분석", "성과측정", "고객분석", "마케팅ROI", "이슈대응"], 4),
"organization_id": "org_telecom_001",
"folder_id": "folder_sales_marketing"
}
})
# ============================================================
# 2. 요금/청구 도메인 추가 샘플 생성
# ============================================================
# 동일한 방식으로 billing_revenue 도메인 샘플 생성
# (코드 생략 - 실제로는 위와 유사한 패턴으로 생성)
# ============================================================
# 3. 네트워크운용 도메인 추가 샘플 생성
# ============================================================
# 동일한 방식으로 network_operations 도메인 샘플 생성
# (코드 생략 - 실제로는 위와 유사한 패턴으로 생성)
print(f"\n생성된 새 샘플 수: {len(new_samples)}")
# 기존 데이터와 병합
all_data = existing_data + new_samples
print(f"전체 샘플 수: {len(all_data)}")
# 파일 저장
with open('group2_data.json', 'w', encoding='utf-8') as f:
json.dump(all_data, f, ensure_ascii=False, indent=2)
print(f"\n✅ 파일 저장 완료: group2_data.json")
print(f"{len(all_data)}개 샘플 저장됨")