CRM Engagement Analyst 정보 추출·해석 규칙 (현장 로그 기반)
본 문서는 실제 상담 로그(전화 통화 후 텍스트 기록)를 바탕으로, CRM Agent가 SOL(수면잠복기) 예측에 활용할 수 있도록 텍스트 → 구조화 데이터 변환 규칙과 해석 로직을 정리합니다.
1. 자주 등장하는 항목과 정규 표현
- 준수율: "취침 시각 준수율 X%", "기상 시각 준수율 Y%"
- 정규식 예:
/취침.?시각.?준수율\s*(\d+)%/,/기상.?시각.?준수율\s*(\d+)%/ - 분류: HIGH ≥ 70, MID 40-69, LOW < 40
- 정규식 예:
- 입면(SOL): "잠드는 시간 10분", "잠들기까지 두시간", "금방/바로 잠이 듬", "잠이 안 와서 새벽까지"
- 매핑(휴리스틱):
- "바로/금방": 5-10분, "10분": 10, "30분": 30, "한시간": 60, "두시간": 120
- "잠이 안 온다/힘들다": 45-90 범위(문맥 조정)
- 매핑(휴리스틱):
- 중간 각성: "자주 깸", "한두 시간마다", "가끔/한번/서너번", "금방 잠이 든다/다시 잠듦"
- 빈도: RARE(드묾), OCCASIONAL(가끔, 1-2회/밤), FREQUENT(자주, ≥3회/밤)
- 재입면: QUICK(5-10분), MODERATE(10-30), LONG(30-60), PROLONGED(>60)
- 낮잠: "안 잔다", "가끔 잔다", "습관/15~20분", "업무상 불가"
- 기능 사용: "배워보기/읽어보기/수면 탐구/수면 톡톡/이완요법" + "도움/효과 없음/반복/시간 부족"
- 약물: 수면제(0.5T/1T/감량), 멜라토닌, 한약, 심리약물(불안/강박) + 효과/의존성/복용 타이밍
- 외부 요인: 아이 돌봄, 소음, 여행·명절, 3교대/야간근무, 질환(하지불안·무릎열·비염), 스트레스
- 앱 이슈: 저장 실패/튕김/로그인/네트워크/업데이트/기상시각 고정
- 콜 상태·예약: "아웃바운드 콜 완료/스킵/취소", "통화 예정일 저장" → 참여도·순응도 보조 지표
2. 정보 추출 스키마
{
"adherence": { "bedtimePct": 0, "wakePct": 0, "level": "LOW|MID|HIGH" },
"subjectiveSOL": { "valueMin": 60, "source": "statement|inferred", "phrases": [] },
"nocturnalAwakenings": {
"frequency": "RARE|OCCASIONAL|FREQUENT",
"resleepLatency": "QUICK|MODERATE|LONG|PROLONGED",
"notes": ""
},
"daytimeSleepiness": "NONE|MILD|MODERATE|SEVERE",
"naps": { "pattern": "NONE|OCCASIONAL|HABITUAL", "durationMin": null },
"featureUse": { "learn": false, "read": false, "relaxation": { "used": false, "effective": null } },
"medication": { "type": [], "dose": null, "dependency": null },
"externalFactors": [],
"appIssues": [],
"engagement": { "callStatus": null, "nextAppointment": null },
"sentiment": "NEGATIVE|NEUTRAL|POSITIVE",
"overall": { "trend": "IMPROVING|WORSENING|STABLE", "confidenceAdj": 0 }
}
3. 스코어링·가중치 규칙(개념)
- SOL 보정(텍스트 신호)
- "바로/금방 잠듦": -10분, "10분": -5, "두시간": +30, "잠이 안 옴": +15~30
- 재입면 영향: QUICK -5, LONG +10, PROLONGED +15
- 약물: "약 복용 시 빨리 잠듦" → SOL -10, 의존성 의심 → 신뢰도 -0.05~-0.1
- 기능: "이완요법 도움이 됨" → SOL -5, "효과 없음" → 신뢰도 -0.05
- 외부 요인: 3교대/아이/여행/소음 → 변동성 +0.1, 신뢰도 -0.05~-0.1
- 앱 이슈: 해당 기간 데이터 신뢰도 -0.1, 텍스트 근거 비중 상향
- 준수율: HIGH → 신뢰도 +0.05, LOW → -0.05
4. 증거 우선순위·모순 처리
- 최근성 우선: 상반 진술은 최신 기록 우선
- 반복 보너스: 동일 신호 2회 이상 반복 시 가중 +0.05
- 동일 일자 상충: 약 복용/스트레스/외부요인 맥락 병기, 중립화 또는 분할 반영
5. 콜 상태·예약 활용
- "아웃바운드 콜 완료/스킵/취소": 참여도 지표(연속 스킵 시 순응도 하향)
- "통화 예정일 저장": 향후 상호작용 의지로 가점(예약 준수율 산출 가능)
6. PII/민감정보 처리
- 이름/병원/의사/지역/연락처 등은 전처리에서 마스킹
- 질환·치료 정보는 최소수집, 임상적 필요 범위에서만 사용
7. 원문 → 구조화 예시
원문 발췌 1:
3일차 통화\n\n1. 취침 시각 준수율 0%, 기상 시각 준수율 0%\n2. 잠을 거의 잘 못잠\n3. 수면중, 한두 시간마다 자주 깨고…\n4. … 깼다가 잠을 다시 자는 것은 어렵지 않다고 함\n6. 낮잠은 잘 자지 않음\n7. 아침에 일어나면 … 몸 상태가 좋지 않게 느껴짐
구조화 예시:
{
"adherence": { "bedtimePct": 0, "wakePct": 0, "level": "LOW" },
"subjectiveSOL": { "valueMin": 90, "source": "inferred", "phrases": ["잠을 거의 잘 못잠"] },
"nocturnalAwakenings": { "frequency": "FREQUENT", "resleepLatency": "QUICK" },
"naps": { "pattern": "NONE" },
"daytimeSleepiness": "MODERATE",
"keyPhrases": ["몸 상태가 좋지 않음"],
"sentiment": "NEGATIVE"
}
원문 발췌 2:
7일차 통화\n1. … 이완요법은 듣다가 잠이 들었다고 함\n2. 낮에 졸립기는 하나 회사 업무 중이라 잘 수 없음\n3. 21일차 상담 예약 : 2.3 4pm
구조화 예시:
{
"featureUse": { "relaxation": { "used": true, "effective": true } },
"daytimeSleepiness": "MILD",
"engagement": { "nextAppointment": "2025-02-03T16:00:00+09:00" },
"expectedEffect": { "solAdjustmentMin": -5 }
}
참고: 본 규칙은 Full-To-Date(해당 일차 EOD까지) 데이터만 사용하며, 미래누출을 방지합니다.