본문으로 건너뛰기

Agent Data 바운디드 컨텍스트

1. 컨텍스트 정의

Agent Data 도메인은 수면, 설문, 학습 도메인의 데이터를 수집하여 AI Agent가 활용할 수 있는 형태로 변환하고 제공하는 바운디드 컨텍스트입니다.

1.1 주요 책임

  • 도메인 이벤트 구독 및 처리 (Domain Event Subscription & Processing)
  • 데이터 변환 및 표준화 (Data Transformation & Standardization)
  • 시계열 데이터 집계 (Time-series Data Aggregation)
  • 통합 인사이트 생성 (Integrated Insights Generation)
  • AI Agent용 API 제공 (API Provision for AI Agent)
  • 데이터 품질 관리 (Data Quality Management)
  • 사용자 데이터 보관 관리 (User Data Retention Management)
  • 모니터링 및 성능 관리 (Monitoring & Performance Management)

1.2 도메인 용어

  • 변환된 데이터(Transformed Data): 원본 도메인 데이터를 LLM이 이해하기 쉬운 형태로 변환한 데이터
  • 필드 매핑(Field Mapping): 약어 형태의 필드명을 명확한 이름으로 변환하는 규칙 (예: "se" → "sleepEfficiency")
  • 통합 인사이트(Integrated Insights): 여러 도메인의 데이터를 종합하여 생성한 분석 결과
  • 이벤트 처리(Event Processing): 외부 도메인에서 발행한 이벤트를 수신하고 처리하는 과정
  • 데이터 집계(Data Aggregation): 일별, 주별, 월별로 데이터를 요약하는 과정
  • 지식 베이스(Knowledge Base): 사용자가 학습한 내용과 습득한 기술을 체계화한 정보
  • 처리 로그(Processing Log): 이벤트 처리 과정의 모든 단계를 기록한 감사 추적
  • 데이터 품질 점수(Data Quality Score): 데이터의 완전성, 정확성, 일관성을 평가한 점수
  • 아카이빙(Archiving): GDPR 준수를 위한 데이터 보관 처리
  • 크로스 도메인 분석(Cross-domain Analysis): 여러 도메인 간의 상관관계와 패턴을 분석
  • 증상 리포트(Condition Report): 사용자의 신체적·정신적 상태를 기록한 데이터
  • 증상 경보(Condition Alert): 위험 규칙 충족 시 생성되는 경보 데이터
  • 수면 인식 신념(Sleep Awareness Belief): 수면에 대한 생각/가치관 및 인지 패턴 데이터

2. 하위 컨텍스트

2.1 이벤트 처리 컨텍스트 (Event Processing Context)

외부 도메인의 크로스 도메인 이벤트를 EventEmitter를 통해 구독하고 처리합니다.

책임

  • 크로스 도메인 이벤트 수신
  • 이벤트 스키마 검증
  • 중복 이벤트 감지
  • 이벤트 라우팅
  • 처리 상태 추적

정책 및 규칙

  1. 이벤트 수신 정책

    • /api/events 엔드포인트를 통해 Pub/Sub push 구독으로 이벤트 수신
    • 수신된 이벤트를 로컬 EventEmitter로 재발행
    • @OnEvent 데코레이터로 관심 있는 이벤트만 처리
    • Sleep, Questionnaire, Learning, Medication, Condition 도메인의 크로스 도메인 이벤트만 구독
    • 이벤트 타입별로 적절한 핸들러로 라우팅
    • 비동기 처리로 블로킹 방지
  2. 이벤트 검증 정책

    • 수신된 모든 이벤트의 스키마 검증 수행
    • 필수 필드 존재 여부 확인
    • 데이터 타입 및 형식 검증
    • 타임스탬프가 현재 시간보다 미래가 아닌지 확인
    • 검증 실패 시 에러 로그 기록 및 처리 중단
  3. 중복 처리 방지 정책

    • 이벤트 ID 기반 멱등성 보장
    • Redis SET NX를 사용한 원자적 중복 체크
    • 처리된 이벤트 ID를 24시간 동안 Redis에 캐싱
    • 중복 이벤트 수신 시 처리 건너뛰기
    • 중복 감지 로그 기록

2.2 데이터 변환 컨텍스트 (Data Transformation Context)

원본 데이터를 AI Agent가 이해하기 쉬운 형태로 변환합니다.

책임

  • 필드명 매핑 처리
  • 데이터 타입 변환
  • 컨텍스트 정보 추가
  • 데이터 검증
  • 스키마 버전 관리

정책 및 규칙

  1. 필드 매핑 정책

    • 모든 약어는 명확한 이름으로 변환
    • Sleep 도메인 매핑 예:
      • "se" → "sleepEfficiency"
      • "sol" → "sleepOnsetLatency"
      • "waso" → "wakeAfterSleepOnset"
      • "tst" → "totalSleepTime"
    • Questionnaire 도메인 매핑 예:
      • "q1a" → "question1Answer"
      • "ts" → "totalScore"
    • Medication 도메인 매핑 예:
      • "name" → "medicationName"
      • "dosagePerIntake" → "dosagePerIntakeMg"
      • "formFactor" → "medicationForm"
      • "captureSource" → "dataCollectionMethod"
      • "confidenceScore" → "dataConfidenceLevel" (숫자를 "high"/"medium"/"low"로 변환)
      • "prescriptionStatus" → "prescriptionType"
    • Condition 도메인 매핑 예:
      • "symptomCode" → "standardSymptomCode"
      • "displayName" → "symptomName"
      • "experienceType" → "symptomCategory"
      • "severityScore" → "symptomSeverityLevel"
      • "impactScale" → "impactAreas"
      • "triggerTags" → "identifiedTriggers"
      • "beliefScore" → "cognitiveDistortionScore"
      • "cognitivePattern" → "thinkingPattern"
    • 매핑 규칙은 설정 파일로 관리
  2. 데이터 보강 정책

    • 치료 시작일 기준 치료일수 계산하여 추가
    • 요일 정보 및 주말 여부 추가
    • 치료 단계(초기/활성/유지/완료) 정보 추가
    • 점수에 대한 해석 텍스트 추가
    • 트렌드 및 변화율 정보 계산
  3. 스키마 버전 관리 정책

    • 모든 변환된 데이터에 스키마 버전 포함
    • 하위 호환성 보장
    • 버전 변경 시 마이그레이션 스크립트 제공
    • 현재 버전: "1.0.0"

2.3 데이터 저장 컨텍스트 (Data Storage Context)

변환된 데이터를 Firestore에 체계적으로 저장합니다.

책임

  • Firestore 컬렉션 관리
  • 사용자별 서브컬렉션 구성
  • 문서 크기 관리
  • 배치 쓰기 처리
  • 인덱스 최적화

정책 및 규칙

  1. 컬렉션 구조 정책

    • 사용자별 최상위 문서 생성
    • 도메인별 서브컬렉션 구성:
      • /users/{userId}/sleepData
      • /users/{userId}/questionnaireData
      • /users/{userId}/learningData
      • /users/{userId}/medicationData
      • /users/{userId}/insights
      • /users/{userId}/aggregations
    • 날짜 기반 문서 ID 사용 (해당되는 경우)
    • Medication 데이터는 추가로 세분화된 서브컬렉션 사용:
      • /medication/profiles/{userId}/{medicationId}
      • /medication/interactions/{userId}/{alertId}
      • /medication/recommendations/{userId}/{dayIndex}
      • /medication/taper-plans/{userId}/{planId}
      • /medication/daily-summaries/{userId}/{dayIndex}
    • Condition 데이터는 추가로 세분화된 서브컬렉션 사용:
      • /condition/reports/{userId}/{reportId}
      • /condition/symptoms/{userId}/{symptomId}
      • /condition/alerts/{userId}/{alertId}
      • /condition/trends/{userId}/{snapshotId}
      • /condition/beliefs/{userId}/{dayIndex}
      • /condition/daily-summaries/{userId}/{dayIndex}
  2. 문서 크기 관리 정책

    • Firestore 문서 크기 제한(1MB) 준수
    • 큰 데이터는 여러 문서로 분할
    • 분할 시 연결 정보 유지
    • 읽기 시 자동으로 병합
  3. 쓰기 최적화 정책

    • 배치 쓰기 사용 (최대 500개 작업)
    • 트랜잭션으로 일관성 보장
    • 쓰기 실패 시 롤백 처리
    • 쓰기 속도 제한 준수 (초당 1회/문서)

2.4 집계 및 분석 컨텍스트 (Aggregation & Analysis Context)

데이터를 시계열로 집계하고 분석합니다.

책임

  • 일별/주별/월별 집계
  • 트렌드 분석
  • 패턴 감지
  • 상관관계 분석
  • 이상치 탐지

정책 및 규칙

  1. 집계 스케줄 정책

    • 일별 집계: 매일 오전 2시 (사용자 시간대)
    • 주별 집계: 매주 월요일 오전 3시
    • 월별 집계: 매월 1일 오전 4시
    • 실시간 업데이트가 필요한 경우 즉시 재계산
    • 집계 작업은 Cloud Scheduler로 관리
  2. 트렌드 분석 정책

    • 최소 7일 이상의 데이터가 있을 때 트렌드 계산
    • 이동 평균 사용 (7일, 30일)
    • 변화율은 백분율로 표시
    • 통계적 유의성 검증 수행
    • 계절성 패턴 고려
  3. 패턴 감지 정책

    • 반복되는 패턴 자동 감지
    • 패턴 강도를 0-1 범위로 표시
    • 최소 3회 이상 반복 시 패턴으로 인식
    • 도메인별 특화 패턴 정의
    • 크로스 도메인 패턴 분석

2.5 인사이트 생성 컨텍스트 (Insight Generation Context)

통합 분석을 통해 개인화된 인사이트를 생성합니다.

책임

  • 통합 인사이트 생성
  • 권장사항 도출
  • 신뢰도 평가
  • 인사이트 만료 관리
  • 우선순위 지정

정책 및 규칙

  1. 인사이트 생성 정책

    • 일별 인사이트: 매일 자정 이후 생성
    • 주별 인사이트: 주간 데이터 집계 후 생성
    • 통합 인사이트: 사용자 요청 시 실시간 생성
    • 최소 데이터 요구사항 충족 시에만 생성
    • 이전 인사이트와의 일관성 유지
  2. 권장사항 분류 정책

    • 즉시 실행 가능한 권장사항
    • 단기 목표 (1-2주)
    • 장기 목표 (1개월 이상)
    • 실행 가능성과 영향도 기준 우선순위 지정
    • 사용자 상황에 맞춘 개인화
  3. 신뢰도 평가 정책

    • 데이터 완전성 (40%)
    • 패턴 강도 (30%)
    • 샘플 크기 (30%)
    • 0-100 점수로 표시
    • 70점 이상일 때만 주요 인사이트로 제공

2.6 API 제공 컨텍스트 (API Provision Context)

AI Agent를 위한 데이터 접근 API를 제공합니다.

책임

  • RESTful API 엔드포인트 제공
  • 인증 및 권한 검증
  • 응답 형식 최적화
  • 속도 제한 적용
  • API 사용량 추적

정책 및 규칙

  1. API 접근 제어 정책

    • AI Agent Service 역할 필수
    • JWT 토큰 기반 인증
    • 사용자별 데이터 격리
    • API 키 로테이션 지원
    • IP 화이트리스트 옵션
  2. 응답 최적화 정책

    • LLM 친화적 JSON 형식
    • 명확한 필드명과 설명
    • 컨텍스트 정보 포함
    • 페이지네이션 지원 (기본 50개)
    • gzip 압축 사용
  3. 속도 제한 정책

    • 사용자별: 분당 60회
    • IP별: 분당 100회
    • 버스트 허용: 초당 최대 5회
    • 제한 초과 시 429 응답
    • X-RateLimit 헤더로 잔여 횟수 전달

2.7 데이터 품질 컨텍스트 (Data Quality Context)

데이터 품질을 모니터링하고 개선합니다.

책임

  • 데이터 품질 평가
  • 이상치 탐지
  • 일관성 검증
  • 품질 보고서 생성
  • 자동 보정

정책 및 규칙

  1. 품질 평가 정책

    • 완전성: 필수 필드 존재 여부
    • 정확성: 값의 범위와 형식 검증
    • 일관성: 도메인 간 데이터 일치성
    • 시의성: 데이터 최신성 확인
    • 일별 품질 점수 계산
  2. 이상치 처리 정책

    • 통계적 이상치 자동 감지
    • Z-score > 3 또는 IQR 방식 사용
    • 이상치 플래그 표시 (삭제하지 않음)
    • 관리자 알림 전송
    • 이상치 원인 분석 로그
  3. 자동 보정 정책

    • 명확한 오류만 자동 보정
    • 보정 이력 모두 기록
    • 원본 데이터 보존
    • 보정 규칙 정기 검토
    • 사용자별 보정 통계 유지

2.8 데이터 보관 컨텍스트 (Data Retention Context)

GDPR 준수를 위한 데이터 생명주기를 관리합니다.

책임

  • 데이터 보관 정책 실행
  • 아카이빙 처리
  • 데이터 복원
  • 영구 삭제
  • 규정 준수 감사

정책 및 규칙

  1. 보관 기간 정책

    • 활성 데이터: 90일
    • 아카이브 데이터: 2년
    • 집계 데이터: 5년
    • 로그 데이터: 1년
    • 사용자 요청 시 즉시 삭제
  2. 아카이빙 정책

    • 90일 이상된 상세 데이터 아카이빙
    • 압축하여 콜드 스토리지 이동
    • 메타데이터는 활성 상태 유지
    • 월 1회 자동 실행
    • 아카이빙 완료 알림
  3. 데이터 삭제 정책

    • 사용자 요청 시 30일 내 삭제
    • 모든 서브컬렉션 포함
    • 삭제 증명서 발급
    • 백업에서도 제거
    • 삭제 불가능한 법적 보존 데이터 예외 처리

3. 컨텍스트 경계

3.1 상위 컨텍스트

  • Sleep Domain: 수면 데이터 제공
  • Questionnaire Domain: 설문 데이터 제공
  • Learning Domain: 학습 데이터 제공
  • Medication Domain: 약물 프로필, 상호작용 경고, 감량 계획, 추천 피드백 데이터 제공
  • Condition Domain: 증상 리포트, 경보, 추세 스냅샷, 수면 인식 신념 데이터 제공
  • User Domain: 사용자 정보 참조
  • Auth Domain: 인증 및 권한 관리

3.2 하위 컨텍스트

  • AI Agent Service: 데이터 소비 및 활용
  • Analytics Domain: 고급 분석 수행
  • Monitoring Domain: 시스템 모니터링

3.3 외부 시스템

  • Google Firestore: 데이터 저장소
  • GCP Pub/Sub: 이벤트 메시징 (단일 'events' 토픽)
  • Redis: 캐싱 및 중복 방지
  • Cloud Scheduler: 정기 작업 스케줄링
  • Cloud Monitoring: 성능 모니터링

4. 컨텍스트 매핑

4.1 Sleep Domain과의 관계 (Conformist)

4.2 Questionnaire Domain과의 관계 (Conformist)

4.3 Learning Domain과의 관계 (Conformist)

4.4 Medication Domain과의 관계 (Conformist)

4.5 Condition Domain과의 관계 (Conformist)

4.6 AI Agent Service와의 관계 (Open Host Service)

4.7 User Domain과의 관계 (Customer-Supplier)

5. 도메인 이벤트

5.1 발행하는 이벤트

Agent Data 도메인은 주로 데이터 소비자 역할을 하므로, 다음과 같은 내부 처리 관련 이벤트만 발행합니다:

내부 이벤트 (agent.internal.*)

  • agent.internal.transformation.completed: 데이터 변환 완료
  • agent.internal.aggregation.daily.completed: 일별 집계 완료
  • agent.internal.aggregation.weekly.completed: 주별 집계 완료
  • agent.internal.aggregation.monthly.completed: 월별 집계 완료
  • agent.internal.insights.generated: 사용자 인사이트 생성
  • agent.internal.pattern.detected: 패턴 감지
  • agent.internal.quality.issue.detected: 데이터 품질 문제 감지
  • agent.internal.data.archived: 사용자 데이터 아카이빙
  • agent.internal.data.deleted: 사용자 데이터 삭제

크로스 도메인 이벤트 (필요시)

  • agent-processing-error: 처리 오류 발생 (모니터링용)
  • agent-rate-limit-exceeded: API 속도 제한 초과
  • agent-performance-threshold-breached: 성능 임계값 초과

5.2 구독하는 이벤트

EventEmitter를 통해 다음 크로스 도메인 이벤트를 구독합니다:

Sleep Domain 이벤트

  • sleep-data-created: 새로운 수면 데이터 생성
  • sleep-data-updated: 기존 수면 데이터 수정
  • sleep-data-deleted: 수면 데이터 삭제

Questionnaire Domain 이벤트

  • questionnaire-response-completed: 설문 응답 완료
  • questionnaire-round-completed: 설문 라운드 완료
  • questionnaire-cycle-completed: 설문 사이클 완료

Learning Domain 이벤트

  • lesson-started: 레슨 시작
  • lesson-completed: 레슨 완료
  • lesson-progress-updated: 레슨 진행률 업데이트
  • quiz-answered: 퀴즈 답변 완료

Medication Domain 이벤트

  • medication-profile-captured: 약물 프로필 저장 완료
  • medication-profile-completion-pending: 약물 필드 완료 대기
  • medication-interaction-alerted: 약물 상호작용 경고 발생
  • medication-taper-plan-generated: 약물 감량 계획 생성
  • medication-recommendation-feedback-recorded: 약물 추천 피드백 수신

Condition Domain 이벤트

  • condition-report-captured: 증상 리포트 캡처 완료
  • sleep-awareness-belief-captured: 수면 인식 신념 캡처 완료
  • condition-report-enriched: 증상 리포트 보강 완료
  • condition-alert-triggered: 증상 경보 트리거 발생
  • condition-trend-snapshot-generated: 증상 추세 스냅샷 생성 완료

User Domain 이벤트

  • user-created: 사용자 생성
  • user-deleted: 사용자 삭제
  • treatment-started: 치료 시작
  • treatment-phase-changed: 치료 단계 변경
  • user-suspended: 사용자 일시정지
  • user-reactivated: 사용자 재활성화

6. 보안 정책

  • 전송 중 데이터 암호화 (TLS 1.3)
  • 저장 데이터 암호화 (Firestore 기본 암호화)
  • 사용자별 데이터 격리
  • API 접근 로그 기록
  • 민감 정보 마스킹
  • 정기 보안 감사
  • GDPR 준수
  • 데이터 최소화 원칙

7. 기술 스택

  • NestJS
  • TypeScript
  • EventEmitter2 (이벤트 처리)
  • Google Firestore (주 데이터 저장소)
  • Redis (캐싱, 중복 방지)
  • GCP Pub/Sub (외부 이벤트 수신용)
  • Cloud Scheduler (정기 작업)
  • Cloud Functions (이벤트 핸들러)
  • Cloud Monitoring (모니터링)
  • Cloud Storage (아카이빙)

8. 변경 이력

버전날짜작성자변경 내용
0.2.12025-11-25codex@weltcorp.comCondition 도메인 명칭/경로 변경에 맞춰 용어 및 참조 업데이트
0.2.02025-11-10bok@weltcorp.comCondition 도메인 통합 - 도메인 용어, 이벤트 수신, 필드 매핑, 컬렉션 구조, 컨텍스트 매핑, 구독 이벤트 추가
0.1.02025-06-01bok@weltcorp.com최초 작성