본문으로 건너뛰기

Questionnaire 도메인 이벤트 스토밍

개요

본 문서는 Questionnaire 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 설문 관리, 설문 진행, 설문 응답, 설문 결과 및 피드백, 설문 스케줄링 등과 관련된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.

바운디드 컨텍스트 참조

  • Questionnaire 도메인은 사용자의 수면건강조사(설문) 데이터의 마스터 역할을 수행하며 여러 다른 도메인과 상호작용합니다.
  • User 도메인: 사용자 식별 및 사용자 주기(UserCycle) 정보 참조.
  • Authentication 도메인: 사용자 인증 및 권한 확인.
  • Notification 도메인: 설문 참여 알림 전송.
  • Report 도메인: 설문 결과를 바탕으로 한 보고서 생성.
  • 상세한 컨텍스트 매핑은 각 도메인의 bounded-context.md 또는 requirements.md 문서를 참조하세요.

도메인 이벤트

도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.

1. 설문 관리 이벤트

이벤트설명트리거
QuestionnaireCreated새 설문이 생성되었음CreateQuestionnaire
QuestionnaireUpdated설문 정보가 업데이트되었음UpdateQuestionnaire
QuestionnaireDeleted설문이 삭제되었음DeleteQuestionnaire
QuestionCreated설문 문항이 생성되었음CreateQuestion
QuestionUpdated설문 문항이 업데이트되었음UpdateQuestion
QuestionDeleted설문 문항이 삭제되었음DeleteQuestion
QuestionnaireRoundScheduled설문 회차가 예약되었음ScheduleQuestionnaireRound
QuestionnaireRoundStarted설문 회차가 시작되었음StartQuestionnaireRound
QuestionnaireRoundCompleted설문 회차가 완료되었음 (결과 요약 및 차트 데이터 생성 포함)CompleteQuestionnaireRoundAndGenerateSummary
QuestionnaireRoundSkipped설문 회차가 사용자에 의해 나중에 하기로 선택되었음SkipQuestionnaireRound
QuestionnaireRoundExpired설문 회차의 유효 기간이 만료되었음시스템 스케줄러(7일 경과 등)
QuestionnaireVersionCreated설문의 새 버전이 생성되었음CreateQuestionnaireVersion
QuestionnaireVersionActivated설문 버전이 활성화되었음ActivateQuestionnaireVersion
QuestionnaireVersionDeactivated설문 버전이 비활성화되었음DeactivateQuestionnaireVersion

2. 설문 진행 이벤트

이벤트설명트리거
QuestionnaireResponseCompleted전체 설문 응답이 제출 및 완료되었음SubmitFullQuestionnaireResponse
QuestionnaireResponseValidated설문 응답이 검증되었음ValidateQuestionnaireResponse (제출 시 내부 로직)
QuestionnaireResponseInvalid설문 응답 검증에 실패했음ValidateQuestionnaireResponse (오류 발생, 제출 시 내부 로직)

3. 설문 결과 이벤트

이벤트설명트리거
QuestionnaireScoreCalculated설문 점수가 계산되었음CalculateQuestionnaireScore
QuestionnaireFeedbackGenerated설문 피드백이 생성되었음GenerateQuestionnaireFeedback
QuestionnaireReportGenerated설문 보고서가 생성되었음GenerateQuestionnaireReport
QuestionnaireChartGenerated설문 결과 차트가 생성되었음GenerateQuestionnaireChart, CompleteQuestionnaireRoundAndGenerateSummary
FinalReportGenerated최종 보고서(모든 회차)가 생성되었음GenerateFinalReport
QuestionnaireChartGenerated설문 결과 차트가 생성되었음GenerateQuestionnaireChart
QuestionnaireReportExported설문 보고서가 PDF로 내보내기되었음ExportQuestionnaireReport

4. 데이터 관리 이벤트 (GDPR 관련)

이벤트설명트리거
QuestionnaireDataArchived비활성 사용자의 설문 데이터가 아카이빙되었음ArchiveQuestionnaireData (시스템 배치 또는 관리자 요청)
QuestionnaireDataRestored아카이빙된 설문 데이터가 복원되었음RestoreQuestionnaireData (사용자 재활성화 또는 관리자 요청)
QuestionnaireDataDeleted사용자의 설문 데이터가 삭제되었음 (탈퇴 또는 요청 시)DeleteQuestionnaireData (사용자 요청 또는 관리자 요청)
QuestionnaireDataAnonymized설문 데이터가 익명화 처리되었음 (통계/연구 목적 등)AnonymizeQuestionnaireData (자동 또는 관리자 요청)
DataRetentionPeriodElapsed데이터 보관 기간이 만료되었음 (자동 삭제/익명화 트리거)시스템 스케줄러 (5년 경과)
StartQuestionnaireRound설문 회차 시작QuestionnaireRoundStarted 이벤트 발생
CompleteQuestionnaireRound설문 회차 완료 처리QuestionnaireRoundCompleted 이벤트 발생
CompleteQuestionnaireRoundAndGenerateSummary설문 회차 완료 처리 및 결과 요약/차트 생성QuestionnaireRoundCompleted, QuestionnaireChartGenerated 이벤트 발생
SkipQuestionnaireRound설문 회차 나중에 하기 처리QuestionnaireRoundSkipped 이벤트 발생
CheckQuestionnaireSchedule사용자의 설문 일정 확인설문 스케줄 정보 반환

정책(Policies)

시스템의 자동화된 비즈니스 규칙입니다.

설문 관리 정책

  • 설문은 총 4회 실시되며, 각 회차별 시점이 정해져 있음:
    • 1회차: 회원 가입 시 (필수, 스킵 불가)
    • 2회차: 5주차(29-35일) 접속 중 최초 1회 (스킵 가능)
    • 3회차: 9주차(57-63일) 접속 중 최초 1회 (스킵 가능)
    • 4회차: 사용 종료 후(91일 이후) 접속 중 최초 1회 (필수, 스킵 불가)
  • 설문의 진행 순서는 항상 동일하게 유지되어야 함 (ISI → DBAS-16 → PHQ9 → GAD7 → PSS → WIS).
  • 이전 설문이 완료되어야 다음 설문 진행 가능.

설문 버전 관리 정책

  • 각 설문 유형별로 활성화된 버전은 항상 유일해야 함 (동시에 두 개 이상의 버전이 활성화될 수 없음).
  • 설문 버전 변경 시 이전 버전으로 수집된 데이터의 일관성을 유지해야 함.
  • 설문 메타데이터 변경 이력은 불변하게 관리되어야 함.
  • 사용자에게는 항상 최신 활성화된 버전의 설문이 제공되어야 함.
  • 앱은 설문을 로컬에 캐싱하고, 서버의 최신 버전과 다를 경우 자동으로 갱신해야 함.
  • 버전 변경은 사용자에게 직접적으로 노출되지 않고 자연스럽게 적용되어야 함.

설문 진행 정책

  • 설문 중간 단계 응답은 저장되지 않고, 설문 단위로만 저장됨.
  • 설문 응답 데이터 유효성 검증 규칙 적용.
  • 완료된 설문은 수정 불가.

'나중에 하기' 정책

  • '나중에 하기'는 2회차, 3회차 설문에만 제공됨.
  • '나중에 하기' 선택 시 해당 설문은 7일간 유효함 (노출 시점부터 Day 7의 23시59분59초까지).
  • 2회차 설문은 42일차까지만 '나중에 하기' 유효.
  • 3회차 설문은 70일차까지만 '나중에 하기' 유효.
  • 지정된 기간이 지나면 설문 기회 소멸.

설문 결과 정책

  • 각 설문 유형별로 정의된 점수 계산 규칙 적용.
  • 설문 완료 시 즉시 결과 피드백 제공.
  • 설문 결과는 사용자별, 회차별로 이력 관리.
  • 모든 회차 설문 완료 시 최종 보고서 생성.

Data Management & Privacy Policies (GDPR)

  • 데이터 보관 기간: 설문 데이터는 5년간 보관 후 자동 파기 또는 익명화.
  • 비활성 사용자 처리:
    • 6개월간 비활성 시 'inactive' 상태로 표시.
    • inactive 상태 1년 경과 시 데이터 아카이빙 (콜드 스토리지로 이동).
  • 데이터 삭제: 사용자 탈퇴 또는 명시적 삭제 요청 시 개인 식별 정보 포함 모든 데이터 즉시 영구 삭제.
  • 익명화: 완전 삭제 요청 없을 시, 통계/연구 목적으로 익명화하여 보관 가능 (재식별 불가 처리).
  • 데이터 복원: 아카이빙된 사용자가 재활성화되면 데이터 자동 복원.
  • 데이터 이동성: 사용자 요청 시 자신의 모든 설문 데이터를 표준 형식(JSON, CSV)으로 추출/제공.
  • 보안 요구사항:
    • 데이터 저장 시 AES-256 이상, 전송 시 TLS 1.2 이상 암호화.
    • 콜드 스토리지 데이터 이중 암호화.
    • 역할 기반 최소 권한 접근 제어 및 감사 로깅.
    • 데이터 침해 시 GDPR 규정에 따른 통보 프로세스 준수.

다국어 지원 정책

  • 설문 콘텐츠(제목, 설명, 문항)는 한국어/영어/독일어로 제공.
  • 설문 결과 피드백은 한국어와 독일어로 제공.
  • 사용자 선호 언어 설정에 따라 콘텐츠 제공.

성능 및 품질 정책

  • 설문 결과 계산 및 저장은 3초 이내 완료.
  • 설문 데이터 조회 API는 1초 이내 응답.
  • 동시 사용자 100명 이상 처리 가능.

명령(Commands)

도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.

1. 설문 관리 명령

명령설명영향
CreateQuestionnaire새 설문 생성QuestionnaireCreated 이벤트 발생
UpdateQuestionnaire설문 정보 업데이트QuestionnaireUpdated 이벤트 발생
DeleteQuestionnaire설문 삭제QuestionnaireDeleted 이벤트 발생
CreateQuestion설문 문항 생성QuestionCreated 이벤트 발생
UpdateQuestion설문 문항 업데이트QuestionUpdated 이벤트 발생
DeleteQuestion설문 문항 삭제QuestionDeleted 이벤트 발생
ScheduleQuestionnaireRound설문 회차 예약QuestionnaireRoundScheduled 이벤트 발생
StartQuestionnaireRound설문 회차 시작QuestionnaireRoundStarted 이벤트 발생
CompleteQuestionnaireRound설문 회차 완료 처리QuestionnaireRoundCompleted 이벤트 발생
SkipQuestionnaireRound설문 회차 나중에 하기 처리QuestionnaireRoundSkipped 이벤트 발생
CheckQuestionnaireSchedule사용자의 설문 일정 확인설문 스케줄 정보 반환
CreateQuestionnaireVersion설문의 새 버전 생성QuestionnaireVersionCreated 이벤트 발생
ActivateQuestionnaireVersion설문 버전 활성화QuestionnaireVersionActivated 이벤트 발생
DeactivateQuestionnaireVersion설문 버전 비활성화QuestionnaireVersionDeactivated 이벤트 발생
GetQuestionnaireVersions설문의 버전 목록 조회설문 버전 정보 반환

2. 설문 진행 명령

명령설명영향
SubmitFullQuestionnaireResponse전체 설문 응답 제출QuestionnaireResponseCompleted 이벤트 발생 (성공 시)
GetQuestionnaireProgress설문 진행 상태 조회 (제출된 응답 기준)설문 진행 상태 정보 반환

3. 설문 결과 명령

명령설명영향
CalculateQuestionnaireScore설문 점수 계산QuestionnaireScoreCalculated 이벤트 발생
GenerateQuestionnaireFeedback설문 피드백 생성QuestionnaireFeedbackGenerated 이벤트 발생
GenerateQuestionnaireReport설문 보고서 생성QuestionnaireReportGenerated 이벤트 발생
GenerateFinalReport최종 보고서(모든 회차) 생성FinalReportGenerated 이벤트 발생
GenerateQuestionnaireChart설문 결과 차트 생성QuestionnaireChartGenerated 이벤트 발생
ExportQuestionnaireReport설문 보고서 PDF 내보내기QuestionnaireReportExported 이벤트 발생
GetQuestionnaireResults설문 결과 조회설문 결과 정보 반환
GetQuestionnaireHistory설문 이력 조회설문 이력 정보 반환
GetCumulativeQuestionnaireResults회차별 누적 설문 결과 조회특정 회차까지의 누적 설문 결과 정보 반환

4. 데이터 관리 명령 (GDPR 관련)

명령설명영향
ArchiveQuestionnaireData비활성 사용자의 설문 데이터 아카이빙 요청QuestionnaireDataArchived 이벤트 발생
RestoreQuestionnaireData아카이빙된 설문 데이터 복원 요청QuestionnaireDataRestored 이벤트 발생
DeleteQuestionnaireData사용자 설문 데이터 삭제 요청 (탈퇴/요청 시)QuestionnaireDataDeleted 이벤트 발생
AnonymizeQuestionnaireData설문 데이터 익명화 처리 요청QuestionnaireDataAnonymized 이벤트 발생
ExportQuestionnaireData사용자 설문 데이터 내보내기 요청 (이동성 권리)데이터 추출 파일 생성 (이벤트 발생은 선택 사항)

액터(Actors)

시스템과 상호작용하는 주체들입니다.

내부 액터

액터설명주요 명령
일반 사용자 (User)모바일 앱 등 서비스 이용자StartQuestionnaireResponse, SubmitQuestionResponse, SkipQuestionnaireRound
시스템 관리자 (Admin)시스템 운영 및 설문 관리자CreateQuestionnaire, UpdateQuestionnaire, CreateQuestion, CreateQuestionnaireVersion, ActivateQuestionnaireVersion
고객 지원 담당자사용자 지원 및 문제 해결 담당자GetQuestionnaireResults, GetQuestionnaireHistory
시스템 (System)자동화된 프로세스 실행 주체ScheduleQuestionnaireRound, CalculateQuestionnaireScore, GenerateQuestionnaireFeedback

외부 시스템/도메인 액터

액터설명주요 상호작용
User 도메인사용자 정보 및 주기 관리사용자 식별, 주기 정보(dayIndex) 참조, 설문 시점 판단을 위한 정보 제공
Authentication 도메인인증/인가 및 관련 기능 담당사용자 인증, 권한 검증
Notification 도메인알림 발송 담당설문 참여 필요 시 알림 발송
Report 도메인보고서 생성 및 관리 담당설문 결과 데이터 수신, 보고서 생성, PDF 변환

6. GDPR Compliance & Data Lifecycle Management

문제: 데이터 보관 기간 준수, 삭제/익명화 처리, 아카이빙/복원, 데이터 이동성 보장 등 GDPR 요구사항 준수 및 데이터 생명주기 관리의 복잡성. 해결책:

  • 데이터 상태(활성, 비활성, 아카이빙됨, 삭제됨)를 명확히 관리하고 상태 전이를 자동화하는 배치 작업 구현.
  • 데이터베이스(주 DB, 콜드 스토리지) 전반에 걸쳐 사용자 데이터 식별 및 처리를 위한 일관된 메커니즘.
  • 삭제/익명화/추출 요청 처리를 위한 전용 API 및 워크플로우 구축.
  • 모든 데이터 처리 활동에 대한 상세한 감사 로그 기록.
  • 정기적인 시스템 감사 및 테스트를 통한 규정 준수 검증.

변경 이력

버전날짜작성자변경 내용
0.1.02025-05-12bok@weltcorp.com최초 작성
0.2.02025-05-13bok@weltcorp.comGDPR 준수 및 데이터 관리 관련 이벤트, 정책, 명령, 핫스팟 추가
0.2.12025-05-23bok@weltcorp.com회차 누적 결과 조회 명령 추가