본문으로 건너뛰기

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최초 작성