본문으로 건너뛰기

SOL(Sleep Onset Latency) Chain of Debate 바운디드 컨텍스트

1. 컨텍스트 정의​

SOL(Sleep Onset Latency) Chain of Debate (CoD) 도메인은 AI 기반 다중 전문가 에이전트 시스템을 통해 수면잠복기(SOL)를 예측하고 개선 방안을 도출하는 바운디드 컨텍스트입니다. Microsoft AI MAI-DxO 논문의 Chain of Debate 방법론을 기반으로 하여 수면잠복기 분석 전문가, 심리상태 분석 전문가, CBT-I 수면행동 전문가, 디지털 수면환경 전문가 간의 토론을 통해 종합적이고 정확한 SOL 예측을 제공합니다.

1.1 주요 책임​

  • 취침목표시간 기반 자동 예측 스케줄링 (PredictionScheduler) (요구사항 1.1, 모델 2.1, 5.1)
    • 사용자의 취침목표시간 1시간 전 자동 예측 실행 트리거
    • TimeMachine 가상시간과 실제 스케줄러의 이중 시간 체계 관리
    • 목표시간 변경 시 동적 스케줄 재조정
    • 실패 시 재시도 및 다음 날 자동 스케줄링
  • 치료주기 전체 데이터 기반 SOL 예측 (SOLPrediction) (요구사항 1.2, 모델 2.2, 5.2)
    • lot(lights out time), ast(asleep start time) 기반 SOL 계산: SOL = (ast - lot) / 60분
    • 사용자의 치료주기 시작부터 현재까지의 모든 SOL 데이터 통합 분석
    • 치료 초기 데이터 부족 시 적응형 SOL 분석 로직 적용
    • Chain of Debate 워크플로우를 통한 4개 전문가 에이전트의 협력적 SOL 분석
    • SOL 예측 결과(0-120분)의 신뢰도 점수 및 개선 방안 제공
    • 예측 과정의 투명성을 위한 토론 내역 저장
  • 조건부 전문가 에이전트 분석 시스템 (SOLExpertAnalysis) (요구사항 1.3, 모델 2.3, 5.3)
    • 설문 데이터 존재 시: 4개 전문가 에이전트 모두 참여 (수면패턴분석전문가, 심리상태분석전문가, CBT-I수면행동전문가, 디지털수면환경전문가)
    • 설문 데이터 부재 시: 3개 전문가 에이전트만 참여 (심리상태분석전문가 제외)
    • 각 전문가의 개별 견해 및 근거 자료 보관
    • 참여 에이전트 수에 따른 신뢰도 가중치 자동 조정
  • Chain of Debate 토론 기록 관리 (DebateSession) (요구사항 1.4, 모델 2.4, 5.4)
    • 전문가 간 토론 과정의 모든 라운드 기록
    • 토론 중 제기된 의견 차이 및 합의 과정 추적
    • 최종 합의 결과 및 의사결정 근거 저장
    • 토론 품질 평가 지표 (합의 도달 시간, 의견 일치도 등) 관리
    • 3개 vs 4개 에이전트 참여에 따른 토론 규칙 자동 조정
  • 예측 결과 전용 저장 관리 (PredictionResult) (요구사항 1.5, 모델 2.5, 5.5)
    • 예측 결과를 별도의 전용 테이블에 저장
    • 사용자 알림 없이 백그라운드 저장만 수행
    • 향후 분석 및 의료진 검토를 위한 데이터 보관
    • 예측 히스토리 추적 및 정확도 검증 데이터 축적
  • SOL 개선 권장사항 생성 (SOLRecommendationSet) (요구사항 1.6, 모델 2.6, 5.6)
    • CBT-I 기반 SOL 개선 개인맞춤형 치료 권장사항 생성
    • SOL 단축을 위한 생활습관 개선 권장사항 생성
    • 잠들기 쉬운 환경 조성을 위한 권장사항 생성
    • 권장사항 우선순위 및 예상 효과 제공
  • AI 모델 성능 모니터링 및 품질 관리 (ModelPerformanceMetrics) (요구사항 1.7, 모델 2.7, 5.7)
    • 예측 정확도 추적 및 모니터링
    • 전문가 에이전트별 성능 지표 관리
    • Chain of Debate 토론 품질 지표 관리
    • 모델 개선을 위한 피드백 데이터 수집
  • TimeMachine을 통한 시간 관련 로직 처리 (요구사항 3.6, 규칙 1.1)
  • 다른 도메인과의 데이터 연동 및 통합 분석 지원
    • Sleep 도메인으로부터 치료주기 전체 수면 기록 데이터 조회
    • Questionnaire 도메인으로부터 설문 응답 데이터 조회 (선택적)
    • User 도메인으로부터 사용자 프로필, 취침목표시간, 치료주기 정보 조회
    • Learning 도메인으로부터 학습 참여 기록 및 진도 데이터 조회 (선택적)
    • Agent-Board 도메인과의 사용자 인터랙션 연동
  • 데이터 관리 및 개인정보 보호 (GDPR 준수) (요구사항 1.8, 3.12)
    • 데이터 아카이빙: 비활성 분석 결과 (6개월 미사용) 식별 및 1년 경과 시 콜드 스토리지 이전
    • 데이터 복원: 사용자 재요청 시 아카이빙된 분석 결과 자동 복원
    • 데이터 삭제: 사용자 요청 또는 보관 기간(5년) 만료 시 모든 분석 데이터 영구 삭제
    • 데이터 익명화: 연구 목적 분석을 위한 개인식별정보 제거 처리
    • 데이터 이동성: 사용자 요청 시 분석 결과를 표준 형식(JSON/CSV)으로 추출 제공

1.2 도메인 용어​

  • SOLPrediction: SOL(Sleep Onset Latency) 예측 결과 및 관련 메타데이터
  • PredictionScheduler: 취침목표시간 기반 자동 예측 스케줄링 시스템
  • PredictionResult: 예측 결과 전용 저장 엔티티 (알림 없이 보관용)
  • SOLExpertAnalysis: 개별 전문가 에이전트의 SOL 분석 결과
  • DebateSession: Chain of Debate 토론 세션 전체 기록
  • DebateRound: Chain of Debate 토론의 개별 라운드 기록
  • SOLRecommendationSet: SOL 개선을 위한 권장사항 집합
  • Recommendation: 개별 권장사항 아이템
  • SleepLatencyAnalyst: 수면잠복기 분석 전문가 에이전트
  • PsychologicalStateAnalysisExpert: 심리상태 분석 전문가 에이전트 (선택적 참여)
  • CBTIExpert: 인지행동치료-불면 (CBT-I) 전문가 에이전트
  • DigitalEnvironmentAnalysisExpert: 디지털 수면환경 분석 전문가 에이전트
  • ChainOfDebate: 다중 전문가 에이전트 간 토론을 통한 의사결정 방법론
  • ConditionalWorkflow: 설문 데이터 유무에 따른 3개/4개 에이전트 조건부 실행 워크플로우
  • ConsensusScore: 전문가 간 의견 일치도 점수 (0.0-1.0)
  • ConfidenceScore: 예측 결과의 신뢰도 점수 (0.0-1.0)
  • SOLScore: 예측된 SOL 점수 (0-120분)
  • ModelPerformanceMetrics: AI 모델 성능 지표 집합
  • DebateQualityMetrics: Chain of Debate 토론 품질 지표
  • ExpertAgent: 특정 영역의 전문 지식을 가진 AI 에이전트 추상 개념
  • LangGraph: LangGraph.js 기반 에이전트 워크플로우 실행 엔진
  • PromptTemplate: 전문가 에이전트별 프롬프트 템플릿
  • AgentState: 에이전트 실행 중 유지되는 상태 정보
  • WorkflowExecution: LangGraph 워크플로우 실행 세션
  • SOLPredictionRequest: SOL 예측 요청 엔티티
  • BedtimeGoal: 사용자의 취침목표시간 (Sleep 도메인에서 관리, 참조만)
  • TreatmentCycleData: 치료주기 전체 데이터 집합
  • AdaptiveAnalysis: 치료주기 초기 데이터 부족 시 적응형 분석 로직
  • ScheduleTrigger: 취침목표시간 1시간 전 트리거 이벤트
  • DualTimeSystem: TimeMachine 가상시간과 실제 스케줄러의 이중 시간 체계
  • TimeMachine: 시스템 공식 시간 제공 서비스 (외부 컨텍스트)

2. 하위 컨텍스트​

SOL CoD 도메인은 기능들이 밀접하게 연관되어 있으며 Chain of Debate 워크플로우로 통합되어 있어 별도의 하위 컨텍스트로 분리하지 않습니다.

3. 컨텍스트 경계​

3.1 상위/의존 컨텍스트​

  • Sleep Domain: 사용자 수면 기록, 수면 통계, rTIB 데이터, 취침목표시간 제공 (Customer-Supplier 관계: SOL CoD가 Sleep 데이터 필요)
  • Questionnaire Domain: 사용자 설문 응답 데이터 제공 (선택적) (Customer-Supplier 관계: SOL CoD가 Questionnaire 데이터 필요)
  • User Domain: 사용자 프로필, 치료 주기 정보, DTA Wide 앱 내부 사용 패턴 제공 (Customer-Supplier 관계: SOL CoD가 User 정보 필요)
  • Learning Domain: 학습 참여 기록, 진도 데이터, 학습 세션 정보 제공 (선택적) (Customer-Supplier 관계: SOL CoD가 Learning 데이터 필요)

3.2 하위/제공 컨텍스트 (SOL CoD가 의존하는 컨텍스트)​

  • TimeMachine Domain: 정확한 시간 정보 및 시간대 처리 제공 (Supplier)
  • LangGraph.js Framework: AI 에이전트 워크플로우 실행 엔진 제공 (Supplier)

3.3 협력 컨텍스트​

  • Agent-Board Domain: 사용자와 에이전트 간 상호작용 및 분석 결과 표시 (향후 연동 예정, Shared Kernel 관계)

3.4 외부 시스템​

  • LLM Services (OpenAI GPT, Claude 등): 전문가 에이전트의 추론 엔진
  • Vector Database: 수면 관련 지식 베이스 및 유사 사례 검색

4. 컨텍스트 매핑​

4.1 Sleep Domain과의 관계 (Customer-Supplier)​

SOL CoD 컨텍스트는 SOL 패턴 분석을 위해 Sleep 컨텍스트로부터 치료주기 전체의 포괄적인 수면 데이터(lot, ast 포함)를 제공받습니다.

4.2 Questionnaire Domain과의 관계 (Customer-Supplier)​

SOL CoD 컨텍스트는 설문 기반 분석을 위해 Questionnaire 컨텍스트로부터 사용자의 주관적 수면 평가 데이터를 선택적으로 제공받습니다.

4.3 TimeMachine Domain과의 관계 (Supplier)​

SOL CoD 컨텍스트는 사용자별 가상시간 관리와 실제 스케줄링을 위해 TimeMachine과 이중 시간 체계로 협력합니다.

4.4 User Domain과의 관계 (Customer-Supplier)​

SOL CoD 컨텍스트는 치료 맥락 파악과 DTA Wide 앱 내부 디지털 환경 분석을 위해 User 컨텍스트로부터 치료주기 및 앱 내부 사용 데이터를 제공받습니다.

4.5 Learning Domain과의 관계 (Customer-Supplier)​

SOL CoD 컨텍스트는 CBT-I 학습 연계 분석을 위해 Learning 컨텍스트로부터 사용자의 학습 참여 및 진도 데이터를 선택적으로 제공받습니다.

5. 도메인 이벤트​

5.1 발행하는 이벤트​

  • SOLPredictionScheduled: 취침목표시간 기반 SOL 예측 스케줄링 완료 (모델 6.1)
  • BedtimeGoalChanged: 사용자 취침목표시간 변경에 따른 스케줄 재조정 (모델 6.1)
  • PredictionTriggerFired: 스케줄된 시간 도달로 SOL 예측 프로세스 자동 시작 (모델 6.1)
  • SOLPredictionRequested: SOL 예측 요청 접수 (수동 요청 시) (모델 6.1)
  • SOLPredictionStarted: Chain of Debate SOL 분석 프로세스 시작 (모델 6.1)
  • TreatmentCycleDataCollected: 치료주기 전체 SOL 데이터 수집 완료 (모델 6.2)
  • AdaptiveAnalysisActivated: 데이터 부족으로 적응형 SOL 분석 로직 활성화 (모델 6.2)
  • ConditionalWorkflowDetermined: 설문 데이터 유무에 따른 워크플로우 결정 완료 (모델 6.3)
  • SOLExpertAnalysisCompleted: 개별 전문가 에이전트 SOL 분석 완료 (모델 6.3)
    • SleepLatencyAnalysisCompleted: 수면잠복기 분석 완료
    • PsychologicalStateAnalysisCompleted: 심리상태 분석 완료 (조건부)
    • CBTIAnalysisCompleted: CBT-I SOL 분석 완료
    • DigitalEnvironmentAnalysisCompleted: 디지털 수면환경 분석 완료
  • DebateRoundStarted: Chain of Debate 토론 라운드 시작 (모델 6.4)
  • DebateRoundCompleted: Chain of Debate 토론 라운드 완료 (모델 6.4)
  • ConsensusReached: 전문가 간 SOL 예측 합의 도달 (모델 6.4)
  • ConsensusFailure: 최대 토론 라운드 내 합의 실패 (모델 6.4)
  • SOLPredictionCompleted: 최종 SOL 예측 완료 (모델 6.1)
  • PredictionResultStored: SOL 예측 결과가 전용 테이블에 저장 완료 (알림 없음) (모델 6.5)
  • SOLPredictionFailed: SOL 예측 실패 (데이터 부족, 시스템 오류 등) (모델 6.1)
  • SOLRecommendationsGenerated: SOL 개선 권장사항 생성 완료 (모델 6.6)
  • ModelPerformanceUpdated: AI 모델 성능 지표 업데이트 (모델 6.7)
  • DebateQualityEvaluated: 토론 품질 평가 완료 (모델 6.4)
  • UserFeedbackReceived: 사용자 SOL 예측 결과 피드백 수신 (향후 연동 시) (모델 6.1)
  • PredictionAccuracyValidated: SOL 예측 정확도 검증 완료 (실제 결과와 비교) (모델 6.7)
  • ScheduleRetryTriggered: SOL 예측 실패 시 재시도 스케줄링 (모델 6.1)
  • NextDayPredictionScheduled: 실패 시 다음 날 자동 스케줄링 (모델 6.1)
  • AnalysisDataArchivedEvent: SOL 분석 데이터가 콜드 스토리지로 아카이빙됨 (모델 6.8)
  • AnalysisDataRestoredEvent: SOL 분석 데이터가 콜드 스토리지에서 복원됨 (모델 6.8)
  • UserAnalysisDataDeletionRequestedEvent: 사용자 SOL 분석 데이터 삭제 요청됨 (모델 6.8)
  • UserAnalysisDataDeletedEvent: 사용자 SOL 분석 데이터가 영구 삭제됨 (모델 6.8)
  • AnalysisDataAnonymizedEvent: SOL 분석 데이터가 익명화됨 (모델 6.8)
  • AnalysisDataExtractionRequestedEvent: 사용자 SOL 분석 데이터 추출 요청됨 (모델 6.8)
  • AnalysisDataExtractedEvent: 사용자 SOL 분석 데이터 추출 완료됨 (모델 6.8)

5.2 구독하는 이벤트​

  • BedtimeGoalUpdated: Sleep 도메인에서 취침목표시간 변경 시 (스케줄 재조정 트리거)
  • SleepLogRecorded: 새로운 수면 기록 생성 시 (데이터 업데이트 알림)
  • QuestionnaireResponseSubmitted: 새로운 설문 응답 제출 시 (분석 데이터 업데이트)
  • LearningProgressUpdated: Learning 도메인에서 학습 진도 업데이트 시 (학습 참여도 재평가 트리거)
  • LearningSessionCompleted: 새로운 학습 세션 완료 시 (학습 데이터 업데이트 알림)
  • TimeMachineTimeChanged: TimeMachine에서 시간이 과거로 변경되었을 때 (관련 분석 데이터 재처리 트리거)
  • UserTreatmentSuspended: 사용자 치료 활동 일시 정지 시 (분석 스케줄링 중단)
  • UserTreatmentResumed: 사용자 치료 활동 재개 시 (분석 스케줄링 재개)
  • UserCycleStarted: 새로운 치료주기 시작 시 (초기 스케줄링 설정)
  • UserCycleEnded: 사용자 치료 주기 종료 시 (최종 분석 리포트 생성 고려)

6. 보안 정책​

  • SOL 예측 결과, 전문가 분석 내용, 개인맞춤형 권장사항 등 민감 데이터는 private 스키마에 저장하여 접근 제어 (모델 1, 규칙 6.1)
  • Chain of Debate 토론 내역은 의료진 검토 목적으로만 접근 가능하도록 제한 (요구사항 3.8, 규칙 2.1)
  • AI 모델 추론 과정의 프롬프트 및 응답은 개인정보 마스킹 처리 후 저장 (요구사항 3.11, 규칙 2.2)
  • TimeMachine 시간 변경 시 일관성 유지를 위해 미래 시점 SOL 분석 데이터 자동 삭제 (요구사항 3.9, 규칙 1.2)
  • 외부 LLM 서비스 연동 시 개인식별정보 전송 금지 및 API 키 보안 관리 (요구사항 3.13, 규칙 3.1)
  • 취침목표시간 기반 SOL 예측 스케줄링 시스템의 접근 권한은 시스템 계정으로만 제한 (규칙 4.1)
  • SOL 예측 결과 전용 테이블은 읽기 전용으로 사용자 접근 제한, 의료진만 조회 가능 (규칙 4.2)
  • GDPR 등 데이터 보호 규정 준수 필요 (요구사항 2.2)
  • 데이터 관리 및 개인정보 보호 정책 (요구사항 1.8, 2.1, 2.2, 2.3, 3.12)
    • 데이터 보관: 5년 보관 후 자동 파기 (SOL 분석 결과, 토론 내역, 권장사항 포함)
    • 데이터 아카이빙: 비활성 6개월 후 식별, 1년 후 콜드 스토리지 이전 (압축/암호화)
    • 데이터 복원: 사용자 재요청 시 자동 복원 (3초 이내 완료 목표)
    • 데이터 삭제/익명화: 사용자 요청 시 즉시 삭제, 연구 목적 시 익명화 보관 가능
    • 데이터 이동성: 사용자 요청 시 표준 형식으로 추출/제공 (암호화)
    • 보안: SOL 분석 결과 및 토론 내역 암호화 저장(AES-256+), 전송 시 TLS 1.3+ 사용
    • 가용성: SOL 예측 서비스 고가용성 및 장애 복구 보장, 99.9% 가동률 목표

7. 기술 스택​

  • NestJS (메인 프레임워크)
  • TypeScript (언어)
  • LangGraph.js (AI 에이전트 워크플로우)
  • PostgreSQL (분석 결과 저장소, Prisma 사용)
  • Redis (에이전트 상태 캐싱, 토론 세션 관리, 스케줄링 상태)
  • Prisma (ORM)
  • Node-cron (스케줄링 시스템)
  • OpenAI API / Claude API (LLM 서비스)
  • Vector Database (ChromaDB/Pinecone - 지식 베이스)
  • (이벤트 시스템) GCP Pub/Sub (도메인 이벤트 발행/구독용)

8. 변경 이력​

버전날짜작성자변경 내용
0.1.02025-08-31bok@weltcorp.com최초 작성 (core-domain 승격, 취침시간 기반 트리거, 치료주기 전체 데이터, 조건부 워크플로우 반영)
0.1.12025-09-01bok@weltcorp.comLearning 도메인 통합 추가, 디지털수면환경 앱 데이터 제약사항 반영, Learning 이벤트 구독 추가