본 문서는 Agent Data 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 도메인 전문가, 개발자, 그리고 이해관계자들이 참여하여 도출된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.
도메인 이벤트
도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.
1. 이벤트 구독 및 처리 이벤트
1.1 외부 도메인 이벤트 구독
| 구독 대상 이벤트 | 발생 도메인 | 설명 | 트리거 |
|---|
| SleepRecordCreated | Sleep | 새로운 수면 기록이 생성됨 | 사용자의 수면 기록 작성 완료 |
| SleepRecordUpdated | Sleep | 기존 수면 기록이 수정됨 | 사용자의 수면 기록 수정 |
| SleepRecordDeleted | Sleep | 수면 기록이 삭제됨 | 사용자의 수면 기록 삭제 |
| QuestionnaireResponseCompleted | Questionnaire | 설문 응답이 완료됨 | 사용자의 설문 응답 제출 |
| QuestionnaireResponseUpdated | Questionnaire | 설문 응답이 수정됨 | 사용자의 설문 응답 수정 |
| LessonStarted | Learning | 레슨 학습이 시작됨 | 사용자의 레슨 시작 |
| LessonCompleted | Learning | 레슨 학습이 완료됨 | 사용자의 레슨 완료 |
| LearningProgressUpdated | Learning | 학습 진행 상태가 업데이트됨 | 사용자의 학습 활동 |
| MedicationProfileCaptured | Medication | 약물 프로필이 저장됨 | 사용자의 약물 정보 입력/OCR 완료 |
| MedicationProfileCompletionPending | Medication | 약물 필드 완료 대기 중 | OCR 후 미완성 필드 발견 |
| MedicationInteractionAlerted | Medication | 약물 상호작용 경고가 발생함 | 지식 그래프 분석 후 상호작용 발견 |
| MedicationTaperPlanGenerated | Medication | 약물 감량 계획이 생성됨 | LLM이 감량 계획 생성 |
| MedicationRecommendationFeedbackRecorded | Medication | 약물 추천 피드백이 기록됨 | 사용자가 추천에 피드백 제공 |
| ConditionReportCaptured | Condition | 증상 리포트가 캡처됨 | 사용자의 증상 입력 완료 |
| SleepAwarenessBeliefCaptured | Condition | 수면 인식 신념이 캡처됨 | 수면 인식 설문 응답 완료 |
| ConditionReportEnriched | Condition | 증상 리포트가 보강됨 | AI 보강 완료 |
| ConditionAlertTriggered | Condition | 증상 경보가 트리거됨 | 위험 규칙 충족 |
| ConditionTrendSnapshotGenerated | Condition | 증상 추세 스냅샷이 생성됨 | 추세 분석 완료 |
1.2 Agent Data 도메인 내부 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| ExternalEventReceived | 외부 도메인 이벤트가 수신됨 | Pub/Sub 메시지 수신 |
| EventValidationCompleted | 이벤트 유효성 검증이 완료됨 | 수신된 이벤트의 스키마 검증 |
| EventValidationFailed | 이벤트 유효성 검증이 실패함 | 잘못된 형식의 이벤트 수신 |
| DuplicateEventDetected | 중복 이벤트가 감지됨 | 이미 처리된 이벤트 재수신 |
| DataTransformationStarted | 데이터 변환이 시작됨 | 유효한 이벤트 수신 후 |
| DataTransformationCompleted | 데이터 변환이 완료됨 | LLM 친화적 형태로 변환 완료 |
| DataTransformationFailed | 데이터 변환이 실패함 | 변환 과정에서 오류 발생 |
| ContextDataAdded | 컨텍스트 정보가 추가됨 | 치료 경과일, 트렌드 등 추가 |
| FirestoreWriteStarted | Firestore 저장이 시작됨 | 변환된 데이터 저장 시작 |
| FirestoreWriteCompleted | Firestore 저장이 완료됨 | 데이터 저장 성공 |
| FirestoreWriteFailed | Firestore 저장이 실패함 | 저장 과정에서 오류 발생 |
| AggregationTriggered | 집계 데이터 갱신이 시작됨 | 새로운 데이터 저장 후 |
| DailyAggregationCompleted | 일일 집계가 완료됨 | 일일 요약 데이터 생성 |
| WeeklyAggregationCompleted | 주간 집계가 완료됨 | 주간 트렌드 분석 완료 |
| MonthlyAggregationCompleted | 월간 집계가 완료됨 | 월간 리포트 생성 완료 |
| TrendAnalysisCompleted | 트렌드 분석이 완료됨 | 이전 기간 대비 변화 분석 |
| UserInsightsGenerated | 사용자 인사이트가 생성됨 | 종합 인사이트 문서 생성 |
| APIRequestReceived | API 요청이 수신됨 | AI Agent의 데이터 조회 요청 |
| APIResponseSent | API 응답이 전송됨 | 요청된 데이터 반환 |
| APIRequestFailed | API 요청 처리가 실패함 | 인증 실패 또는 데이터 조회 오류 |
| BatchProcessingStarted | 배치 처리가 시작됨 | 스케줄러에 의한 배치 작업 시작 |
| BatchProcessingCompleted | 배치 처리가 완료됨 | 배치 작업 성공적 완료 |
| BatchProcessingFailed | 배치 처리가 실패함 | 배치 작업 중 오류 발생 |
| DeadLetterQueueMessageSent | Dead Letter Queue로 메시지 전송됨 | 처리 실패한 이벤트 격리 |
| DataRetentionPolicyExecuted | 데이터 보존 정책이 실행됨 | GDPR 준수를 위한 데이터 정리 |
| InactiveUserDataArchived | 비활성 사용자 데이터가 아카이브됨 | 콜드 스토리지로 데이터 이전 |
| UserDataRestored | 사용자 데이터가 복원됨 | 콜드 스토리지에서 데이터 복원 |
2. 모니터링 및 알림 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| PerformanceMetricRecorded | 성능 메트릭이 기록됨 | 이벤트 처리 시간 측정 |
| DataQualityCheckCompleted | 데이터 품질 검사가 완료됨 | 저장된 데이터 품질 검증 |
| DataQualityIssueDetected | 데이터 품질 문제가 감지됨 | 비정상적인 데이터 패턴 발견 |
| SystemHealthCheckCompleted | 시스템 상태 점검이 완료됨 | 주기적 헬스체크 |
| AlertTriggered | 알림이 발생함 | 임계값 초과 또는 오류 발생 |
| CapacityThresholdReached | 용량 임계값에 도달함 | Firestore 사용량 임계치 도달 |
정책(Policies)
시스템의 자동화된 비즈니스 규칙입니다.
이벤트 처리 정책
백엔드 정책
- 모든 외부 도메인 이벤트는 수신 후 5초 이내에 처리되어야 함
- 이벤트 처리 실패 시 최대 3회까지 재시도 수행
- 3회 재시도 실패 시 Dead Letter Queue로 이벤트 전송
- 중복 이벤트는 Redis를 통한 멱등성 체크로 필터링
- 각 이벤트는 고유한 이벤트 ID를 가지고 있어야 함
- 처리 완료된 이벤트 ID는 24시간 동안 Redis에 캐싱
- 이벤트 스키마 버전이 호환되지 않는 경우 처리 거부
- 모든 이벤트 처리 과정은 구조화된 로그로 기록
데이터 변환 정책
백엔드 정책
- Sleep 도메인 데이터는 축약 필드명을 명시적 필드명으로 변환:
se → sleepEfficiency, tst → totalSleepTime 등
- Questionnaire 도메인 데이터는 질문 번호를 의미있는 필드명으로 변환:
q1, q2 → question1Answer, question2Answer 등
- Learning 도메인 데이터는 학습 내용 정보를 포함하여 변환:
- 레슨 타이틀, 핵심 개념, 학습 목표 등 포함
- Medication 도메인 데이터는 지식 그래프와 조인하여 변환:
name → medicationName, dosagePerIntake → dosagePerIntakeMg 등
- 약물 상호작용, 부작용, 치료 분류 등 지식 그래프 요약 정보 포함
- OCR 메타데이터(모델 버전, 신뢰도, 이미지 해시) 보존
confidenceScore → dataConfidenceLevel (숫자를 "high"/"medium"/"low"로 변환)
- 전체 지식 그래프 복제 금지, 사용자별 필요 정보만 denormalize
- 모든 변환된 데이터에는 원본 이벤트 ID 참조 유지
- 변환 실패 시 원본 데이터와 오류 정보를 별도 저장
- 각 변환된 필드에는 메타데이터(설명, 단위 등) 포함 가능
- JSON 스키마는 LLM이 이해하기 쉬운 구조로 설계
- 데이터 타입은 명시적으로 지정하고 검증 수행
저장 및 집계 정책
백엔드 정책
- 사용자별 데이터는 계층적 컬렉션 구조로 저장
- 각 도메인(sleep, questionnaires, learning, medication) 데이터는 별도 컬렉션으로 분리
- Medication 데이터는 추가로 세분화된 서브컬렉션 사용:
/medication/profiles/{userId}/{medicationId}: 약물 프로필
/medication/interactions/{userId}/{alertId}: 상호작용 경고
/medication/recommendations/{userId}/{dayIndex}: 일일 추천
/medication/taper-plans/{userId}/{planId}: 감량 계획
/medication/daily-summaries/{userId}/{dayIndex}: 일일 요약
- 일별, 주별, 월별 집계 데이터는 별도 컬렉션에서 관리
- Firestore 문서 크기가 1MB 제한에 근접하면 문서 분할
- 모든 저장 데이터에는 타임스탬프와 스키마 버전 포함
- 집계 데이터는 새로운 원본 데이터 저장 시 자동 갱신
- 배치 처리는 매일 자정, 매주 월요일, 매월 1일에 실행
- 트렌드 분석은 이전 7일, 30일 데이터와 비교하여 수행
- 사용자 인사이트는 모든 도메인 데이터를 종합하여 생성
API 제공 정책
백엔드 정책
- 모든 API 요청은 인증 토큰을 통한 사용자 권한 확인 필수
- 사용자는 본인의 데이터에만 접근 가능
- API 응답 시간은 평균 200ms, 최대 1초 이내 보장
- 대용량 데이터 조회 시 페이지네이션 적용
- API 요청량은 사용자당 분당 100회로 제한
- 응답 데이터는 LLM 친화적 JSON 형태로 구조화
- 오류 응답은 구체적인 오류 코드와 메시지 포함
- 모든 API 호출은 로깅하고 사용량 통계 관리
데이터 보존 및 GDPR 정책
백엔드 정책
- 사용자 데이터는 개인정보 처리방침에 따라 5년간 보관
- 6개월 미사용 시 비활성 상태로 표시
- 비활성 1년 경과 시 콜드 스토리지로 자동 이전
- 사용자 탈퇴 시 개인 식별 정보는 즉시 삭제
- 익명화된 데이터는 연구 목적으로 별도 보관 가능
- 비활성 사용자의 서비스 재접속 시 데이터 자동 복원
- 데이터 복원은 사용자에게 투명하게 진행되고 완료 알림 제공
- GDPR 요청(삭제, 이동 등)은 30일 이내 처리
모니터링 및 알림 정책
백엔드 정책
- 이벤트 처리 지연이 5초를 초과하면 알림 발생
- API 응답 시간이 1초를 초과하면 모니터링 대상으로 표시
- 시스템 가용성이 99.9% 미만으로 떨어지면 긴급 알림
- 데이터 품질 점수가 95% 미만이면 품질 개선 알림
- Firestore 사용량이 할당량의 80%에 도달하면 용량 알림
- Dead Letter Queue에 메시지가 쌓이면 처리 필요 알림
- 일일/주간/월간 집계 실패 시 담당자에게 즉시 알림
- 보안 관련 이상 징후 감지 시 보안팀에 자동 알림
명령(Commands)
도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.
1. 이벤트 처리 명령
1.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|
| SubscribeToExternalEvent | 외부 도메인 이벤트 구독 | ExternalEventReceived 이벤트 발생 |
| ValidateEventSchema | 수신 이벤트 스키마 검증 | EventValidationCompleted/Failed 이벤트 발생 |
| CheckEventDuplication | 이벤트 중복 여부 확인 | DuplicateEventDetected 이벤트 발생 가능 |
| TransformDataToLLMFormat | 데이터를 LLM 친화적 형태로 변환 | DataTransformationCompleted/Failed 이벤트 발생 |
| AddContextInformation | 컨텍스트 정보 추가 | ContextDataAdded 이벤트 발생 |
| WriteToFirestore | Firestore에 데이터 저장 | FirestoreWriteCompleted/Failed 이벤트 발생 |
| TriggerAggregation | 집계 데이터 갱신 트리거 | AggregationTriggered 이벤트 발생 |
| ProcessDailyAggregation | 일일 집계 처리 | DailyAggregationCompleted 이벤트 발생 |
| ProcessWeeklyAggregation | 주간 집계 처리 | WeeklyAggregationCompleted 이벤트 발생 |
| ProcessMonthlyAggregation | 월간 집계 처리 | MonthlyAggregationCompleted 이벤트 발생 |
| AnalyzeTrends | 트렌드 분석 수행 | TrendAnalysisCompleted 이벤트 발생 |
| GenerateUserInsights | 사용자 인사이트 생성 | UserInsightsGenerated 이벤트 발생 |
| RetryFailedEvent | 실패한 이벤트 재처리 | 해당 이벤트 재처리 |
| SendToDeadLetterQueue | Dead Letter Queue로 전송 | DeadLetterQueueMessageSent 이벤트 발생 |
| ExecuteBatchProcessing | 배치 처리 실행 | BatchProcessingStarted 이벤트 발생 |
| ExecuteDataRetentionPolicy | 데이터 보존 정책 실행 | DataRetentionPolicyExecuted 이벤트 발생 |
| ArchiveInactiveUserData | 비활성 사용자 데이터 아카이브 | InactiveUserDataArchived 이벤트 발생 |
| RestoreUserData | 사용자 데이터 복원 | UserDataRestored 이벤트 발생 |
2. API 서비스 명령
2.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|
| AuthenticateAPIRequest | API 요청 인증 | 인증 성공/실패 결과 |
| GetUserProfile | 사용자 프로필 조회 | APIResponseSent 이벤트 발생 |
| GetSleepData | 수면 데이터 조회 | APIResponseSent 이벤트 발생 |
| GetQuestionnaireData | 설문 데이터 조회 | APIResponseSent 이벤트 발생 |
| GetLearningData | 학습 데이터 조회 | APIResponseSent 이벤트 발생 |
| GetMedicationData | 약물 데이터 조회 | APIResponseSent 이벤트 발생 |
| GetMedicationInteractionAlerts | 약물 상호작용 경고 조회 | APIResponseSent 이벤트 발생 |
| GetMedicationRecommendations | 약물 추천 조회 | APIResponseSent 이벤트 발생 |
| GetIntegratedInsights | 통합 인사이트 조회 | APIResponseSent 이벤트 발생 |
| ValidateAPIPermissions | API 권한 검증 | 권한 확인 결과 |
| ApplyRateLimit | API 요청 제한 적용 | 요청 허용/거부 결정 |
| LogAPIUsage | API 사용량 로깅 | 사용량 통계 업데이트 |
3. 모니터링 및 관리 명령
3.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|
| RecordPerformanceMetric | 성능 메트릭 기록 | PerformanceMetricRecorded 이벤트 발생 |
| CheckDataQuality | 데이터 품질 검사 | DataQualityCheckCompleted 이벤트 발생 |
| DetectDataQualityIssue | 데이터 품질 문제 감지 | DataQualityIssueDetected 이벤트 발생 |
| PerformSystemHealthCheck | 시스템 상태 점검 | SystemHealthCheckCompleted 이벤트 발생 |
| TriggerAlert | 알림 발생 | AlertTriggered 이벤트 발생 |
| CheckCapacityThreshold | 용량 임계값 확인 | CapacityThresholdReached 이벤트 발생 가능 |
| GenerateUsageReport | 사용량 리포트 생성 | 리포트 생성 완료 |
| CleanupExpiredData | 만료된 데이터 정리 | 데이터 정리 완료 |
| BackupCriticalData | 중요 데이터 백업 | 백업 완료 |
| ValidateDataIntegrity | 데이터 무결성 검증 | 검증 결과 반환 |
액터(Actors)
시스템과 상호작용하는 주체들입니다.
외부 도메인 시스템
- Sleep 도메인에서 수면 기록 이벤트를 발송
- Questionnaire 도메인에서 설문 응답 이벤트를 발송
- Learning 도메인에서 학습 진행 이벤트를 발송
- Medication 도메인에서 약물 프로필, 상호작용 경고, 감량 계획 이벤트를 발송
- Event System을 통해 Pub/Sub 메시지로 이벤트 전송
AI Agent (dta-wide-agent-flow)
- 변환된 사용자 데이터를 조회하여 개인화 서비스 제공
- REST API를 통해 필요한 데이터 요청
- 사용자 프로필, 수면 패턴, 설문 결과, 학습 진도, 약물 정보 등 조회
- 약물 상호작용 경고 및 감량 계획 추천 활용
- 실시간 인사이트와 트렌드 분석 결과 활용
시스템 스케줄러
- 일일/주간/월간 배치 처리 작업 실행
- 데이터 보존 정책에 따른 자동 데이터 관리
- 비활성 사용자 데이터 아카이브 및 복원 처리
- 시스템 상태 점검 및 모니터링 작업 수행
모니터링 시스템
- 시스템 성능 및 상태 모니터링
- 알림 발생 및 관리
- 데이터 품질 검증 및 이상 탐지
- 용량 관리 및 임계값 모니터링
관리자
- 시스템 설정 및 정책 관리
- 데이터 품질 문제 대응
- GDPR 요청 처리
- 시스템 장애 대응 및 복구
애그리게잇(Aggregates)
도메인 객체들의 클러스터로, 트랜잭션 일관성 경계를 형성합니다.
이벤트 처리 세션
- 이벤트 ID (고유 식별자)
- 원본 이벤트 데이터
- 이벤트 소스 도메인
- 수신 시간
- 처리 상태 (수신, 검증, 변환, 저장, 완료, 실패)
- 재시도 횟수
- 오류 정보 (실패 시)
- 처리 완료 시간
변환된 사용자 데이터
- 사용자 ID
- 도메인 유형 (sleep, questionnaire, learning, medication)
- 변환된 JSON 문서
- 원본 이벤트 ID 참조
- 컨텍스트 정보 (치료 경과일, 트렌드 등)
- 지식 그래프 요약 정보 (medication의 경우)
- OCR/LLM 메타데이터 (medication의 경우)
- 생성 시간
- 스키마 버전
- 데이터 품질 점수
집계 데이터
- 사용자 ID
- 집계 유형 (daily, weekly, monthly)
- 집계 기간 (날짜/주/월)
- 도메인별 요약 데이터
- 트렌드 분석 결과
- 이전 기간 대비 변화율
- 생성 시간
- 업데이트 시간
사용자 인사이트
- 사용자 ID
- 인사이트 유형 (종합, 도메인별)
- 전반적인 치료 상태 요약
- 주요 패턴 및 트렌드
- 개선 영역 및 권장사항
- AI Agent 컨텍스트 정보
- 생성 시간
- 유효 기간
API 세션
- 세션 ID
- 요청자 (AI Agent) 정보
- 요청 타입 및 매개변수
- 응답 데이터
- 응답 시간
- 응답 상태 (성공, 실패, 시간초과)
- 사용량 정보
- 로그 레벨
시스템 메트릭
- 메트릭 유형 (성능, 사용량, 품질, 용량)
- 측정 시간
- 메트릭 값
- 임계값 정보
- 알림 발생 여부
- 관련 컨텍스트 정보
데이터 보관 정책
- 사용자 ID
- 마지막 활동 시간
- 계정 상태 (활성, 비활성, 아카이브)
- 보관 단계 (활성, 콜드스토리지, 삭제 예정)
- GDPR 요청 상태
- 데이터 복원 이력
- 익명화 처리 상태
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|
| 0.2.1 | 2025-11-25 | codex@weltcorp.com | Condition 도메인 명칭 변경에 맞춰 이벤트/정책 용어를 업데이트 |
| 0.2.0 | 2025-11-10 | bok@weltcorp.com | Medication 도메인 이벤트 및 정책 추가 (약물 프로필, 상호작용 경고, 감량 계획 이벤트 처리) |
| 0.1.0 | 2025-01-03 | - | 최초 작성 |