Questionnaire 도메인 비즈니스 규칙
1. 설문 관리 규칙
1.1 설문 회차 및 순서 규칙
- 사용자는 앱 사용 여정 중 총 4회의 수면건강조사(설문)를 시행해야 한다.
- 설문 회차 및 시점은 다음과 같이 정의된다:
- 1회차: 회원 가입 시
- 2회차: 5주차(29-35일차) 접속 중 최초 1회
- 3회차: 9주차(57-63일차) 접속 중 최초 1회
- 4회차: 사용 종료 후(91일차 이후) 접속 중 최초 1회
- 모든 회차에서 설문은 다음 순서로 진행되어야 한다:
- ISI (불면증 심각도 지수)
- DBAS-16 (수면에 대한 비합리적 신념)
- PHQ9 (우울 척도)
- GAD7 (불안 척도)
- PSS (지각된 스트레스 척도)
- WIS (WELT Insomnia Scale)
- 설문 순서는 임의로 변경될 수 없다.
- 이전 설문을 완료해야만 다음 설문으로 진행할 수 있다.
1.2 설문 버전 관리 규칙
- 시스템은 설문의 버전을 체계적으로 관리해야 한다.
- 활성화된 설문 버전은 항상 유일해야 한다.
- 설문 메타데이터 변경 이력은 불변하게 저장되어야 한다.
- 설문 버전이 변경되어도 이전 버전으로 수집된 응답 데이터의 분석 결과는 일관되게 해석되어야 한다.
- 설문 버전 관리는 백엔드 시스템에서 담당하며, 모바일 앱은 항상 최신 버전을 사용한다.
- 모바일 앱은 설문을 로컬에 캐싱하여 오프라인 환경에서도 접근 가능해야 한다.
- 모바일 앱은 캐싱된 설문 버전이 서버의 최신 버전과 다를 경우 자동으로 갱신해야 한다.
- 버전 변경 사항은 사용자에게 직접적으로 노출되지 않아야 한다.
1.3 설문 스킵 규칙
- 2회차와 3회차 설문에 한해 '나중에 하기' 기능을 제공해야 한다.
- 1회차(가입 시)와 4회차(종료 후) 설문은 필수적으로 완료해야 하며 스킵할 수 없다.
1.4 설문 데이터 저장 규칙
- 설문 응답 데이터는 설문 단위로 저장되어야 한다.
- 하나의 설문(예: ISI, DBAS-16 등)을 모두 마쳤을 때만 데이터가 저장된다.
- 설문 중간 단계 응답은 저장되지 않는다.
- 한 번 제출 완료된 설문은 수정하거나 재응답할 수 없다.
2. 설문 진행 관리 규칙
2.1 설문 이탈 및 재진입 규칙
- 사용자가 설문 중 앱을 백그라운드로 보내거나 종료해도 Backend에 제출된 설문 데이터는 유지되어야 한다.
- 완료 제출된 설문 데이터만 유지되며, 진행 중이던 설문은 처음부터 다시 시작해야 한다.
- 사용자가 앱에 재진입하면 중단된 설문 항목의 최초 단계부터 다시 시작해야 한다.
2.2 '나중에 하기' 관리 규칙
- '나중에 하기'를 선택한 설문은 노출된 시점부터 7일(Day 7의 23시59분59초)까지 유효하다.
- 2회차 설문의 '나중에 하기'는 42일 이내에만 가능하다.
- 3회차 설문의 '나중에 하기'는 70일 이내에만 가능하다.
- 위 기한이 지나면 해당 설문은 더 이상 참여할 수 없으며, 설문 기회는 소멸된다.
2.3 설문 진행 상태 관리 규칙
- 설문 전체의 진행 상태(완료한 설문 수/전체 설문 수)를 추적해야 한다. (모바일 클라이언트 책임)
- 한 회차 내에서 사용자의 설문 진행 상태는 모바일 클라이언트에서 실시간으로 관리되어야 한다.
- 서버는 제출된 전체 설문 응답을 기준으로 완료 상태를 기록한다.
3. 설문 응답 관리 규칙
3.1 응답 유형 및 기본값 규칙
- 다음 유형의 설문 응답 데이터를 처리해야 한다:
- 선형 척도(Linear scale): 0-10 범위의 숫자 값 (기본값: 5)
- 범주형 척도(Categorical scale): 문자열 또는 코드화된 응답 값
- 시간 정보(Time): 시간/분 형태의 데이터 (기본값: 0시간 0분)
- 단일 라인 텍스트: 최대 50자 길이의 문자열
- 다중 라인 텍스트: 최대 500자 길이의 문자열
3.2 응답 유효성 검증 규칙
- 모든 설문 응답은 제출 전 유효성 검사를 통과해야 한다.
- 누락된 응답이 있는 경우 제출이 불가능하다.
- 유효하지 않은 응답이 있는 경우 해당 항목에 대한 오류 정보를 반환해야 한다.
4. 설문 결과 및 피드백 관리 규칙
4.1 설문 점수 계산 규칙
- 각 설문 유형별로 정의된 규칙에 따라 결과 점수와 분석 내용을 생성해야 한다:
- ISI: 총점 28점(문항당 0~4점), 점수 범위별 피드백 제공
- PHQ-9: 총점 27점(문항당 0~3점), 점수 범위별 피드백 제공
- GAD-7: 총점 21점(문항당 0~3점), 점수 범위별 피드백 제공
- PSS: 점수 범위별 피드백 제공
- DBAS-16: 평균 점수 계산(문항당 0~10점), 점수 범위별 피드백 제공
4.2 설문 결과 피드백 규칙
- 각 설문 완료 시 해당 설문의 결과를 즉시 분석하여 피드백을 제공해야 한다.
- 설문 결과에는 점수와 함께 해당 점수 범위에 맞는 해석 및 피드백이 포함되어야 한다.
- 각 설문 유형별로 정의된 점수 범위 및 라벨에 따라 결과를 분류해야 한다.
- 설문 결과 분석은 한국어와 독일어로 제공되어야 한다.
4.3 설문 결과 이력 관리 규칙
- 사용자의 설문 결과 이력을 회차별로 관리해야 한다.
- 회차별 결과 데이터를 바탕으로 차트 형태의 시각화 자료를 제공해야 한다.
- 미완료된 회차(나중에 하기 선택 회차)는 차트에서 명확히 구분되어야 한다.
- 사용자가 특정 설문 회차의 모든 설문을 완료하면, 시스템은 해당 회차를 '완료' 상태로 변경해야 한다.
- 회차 완료 시, 해당 회차에 포함된 각 설문의 결과(점수, 점수 레벨 및 관련 설명 포함)와 함께, 이전 회차부터 현재 완료된 회차까지의 누적 점수 추이를 보여주는 차트 데이터를 생성하여 반환해야 한다.
- 차트 데이터는 각 설문 유형별 점수와
ScoreLevel및ScoreLevelTranslation정보를 포함해야 한다.
- 차트 데이터는 각 설문 유형별 점수와
- 사용자는 특정 회차까지의 누적 설문 결과를 조회할 수 있어야 한다.
- 누적 결과 조회 시 요청한 회차까지 완료된 모든 설문 결과가 반환되어야 한다.
- 예: 3회차 누적 결과 요청 시 1회차, 2회차, 3회차의 완료된 설문 결과를 모두 포함해야 한다.
5. 최종 보고서 관리 규칙
5.1 최종 보고서 생성 규칙
- 사용자가 치료 주기(91일 이상)를 완료하면 최종 보고서 데이터를 생성해야 한다.
- 최종 보고서에는 모든 회차의 설문 결과 및 요약 정보가 포함되어야 한다.
- 모든 회차의 모든 설문 결과는 PDF로 변환할 수 있어야 한다.
5.2 설문 결과 차트 규칙
- 각 설문의 회차별 결과를 차트로 시각화해야 한다.
- 차트의 X축 하단은 회차를 표현하고, 상단은 각 설문의 Max Score를 표현해야 한다.
- 각 회차의 Score는 숫자로 표기해야 한다.
- 일부 회차에만 제공되는 설문의 경우, 해당 회차만 X축에 표현해야 한다.
6. 다국어 지원 규칙
6.1 다국어 콘텐츠 제공 규칙
- 간지, 설문 제목, 설문 설명, 설문 문항은 독일어/영어/한국어로 제공되어야 한다.
- 각 설문에 대한 결과 문구는 한국어와 독일어로 제공되어야 한다.
- 사용자의 선호 언어 설정에 따라 적절한 언어로 콘텐츠가 제공되어야 한다.
7. 설문 스케줄링 규칙
7.1 설문 일정 관리 규칙
- 사용자별 설문 일정을 관리하고, 현재 진행해야 할 설문 회차와 설문 종류에 대한 정보를 제공해야 한다.
- 설문 완료 상태를 추적하고 다음 설문 시점을 계산해야 한다.
- 사용자의 기상목표 시각 이후 접속 시 설문이 필요한 경우 알림을 제공해야 한다.
8. 성능 및 품질 규칙
8.1 성능 요구사항 규칙
- 설문 결과 계산 및 저장은 3초 이내에 완료되어야 한다.
- 설문 데이터 조회 API는 1초 이내에 응답해야 한다.
- 시스템은 동시에 최소 100명의 사용자가 설문을 진행할 수 있어야 한다.
9. 의존성 규칙
9.1 내부 도메인 의존성
- User 도메인: 사용자 정보 및 앱 사용 기간 참조
- Authentication 도메인: 사용자 인증 및 권한 확인
- Notification 도메인: 설문 참여 알림 전송
- Report 도메인: 설문 결과를 바탕으로 한 보고서 생성
9.2 외부 의존성
- PDF 생성 서비스: 설문 결과 보고서 PDF 생성 (후순위)
10. 데이터 관리 및 개인정보 보호 규칙 (GDPR 준수)
10.1 데이터 보관 및 아카이빙 규칙
- 보관 기간: 설문 데이터 및 관련 분석 데이터는 개인정보 처리방침에 명시된 대로 5년간 보관해야 합니다. (요구사항 1.14, 3.4)
- 비활성 사용자 식별: 최근 6개월간 앱에 로그인하지 않았거나, 서비스 이용 종료 후 6개월이 경과한 사용자는 '비활성(inactive)' 상태로 식별되어야 합니다. (요구사항 1.14, 3.4)
- 데이터 아카이빙:
- 비활성 상태로 1년이 경과한 사용자의 데이터(설문 응답, 분석 결과 등)는 주 데이터베이스에서 콜드 스토리지로 이전(아카이빙)되어야 합니다. (요구사항 1.14, 3.4)
- 아카이빙 시 데이터는 압축 및 암호화되어야 합니다. (요구사항 1.14, 2.4)
- 아카이빙 후 주 데이터베이스에서는 해당 데이터가 삭제되어야 하나, 사용자 식별 정보 및 최소 메타데이터는 유지될 수 있습니다. (요구사항 1.14)
- 아카이빙 작업은 시스템 부하가 적은 시간대에 배치 작업으로 수행되어야 합니다. (요구사항 2.3)
- 아카이빙 시스템 가용성: 아카이빙 시스템은 99.9% 이상의 가용성을 유지해야 하며, 콜드 스토리지 데이터는 재해 복구를 위해 지리적으로 분산되어 복제되어야 합니다. (요구사항 2.5)
10.2 데이터 복원 규칙
- 자동 복원: 아카이빙된 사용자가 다시 서비스를 이용(로그인 등)할 경우, 콜드 스토리지에서 해당 사용자의 과거 데이터가 자동으로 복원되어야 합니다. (요구사항 1.14, 3.4)
- 복원 프로세스: 복원 시 데이터는 복호화 및 압축 해제 후 주 데이터베이스로 이전되어야 합니다. (요구사항 1.14)
- 복원 성능: 사용자 데이터 복원은 사용자 로그인 후 최대 5초 이내에 완료되어야 합니다. (요구사항 2.3)
- 복원 데이터 처리: 복원된 데이터는 이전 설문 참여 이력과 현재 참여 이력을 명확히 구분할 수 있는 메타데이터를 포함해야 하며, 사용자에게 복원 사실을 알려야 합니다. (요구사항 1.14, 3.4)
10.3 데이터 삭제 및 익명화 규칙
- 사용자 요청 시 삭제: 사용자 탈퇴 또는 데이터 삭제 요청 시, 주 데이터베이스와 콜드 스토리지에서 해당 사용자의 개인 식별 정보 및 모든 설문 데이터를 즉시 영구적으로 삭제해야 합니다. (요구사항 1.14, 3.4)
- 익명화 보관 (선택적): 사용자가 완전 삭제를 명시적으로 요청하지 않는 한, 개인 식별 정보 삭제 후 설문 데이터는 통계 및 연구 목적으로 익명화하여 보관할 수 있습니다. (요구사항 1.14, 3.4)
- 자동 파기: 데이터 보관 기간(5년)이 경과한 데이터는 자동으로 파기되어야 합니다. (요구사항 1.14)
- 삭제/익명화 기준: 익명화는 GDPR 기준에 따라 재식별이 불가능하도록 처리되어야 합니다. (요구사항 2.4)
- 삭제 기록: 모든 데이터 삭제 및 익명화 작업은 감사 로그에 기록되어야 합니다. (요구사항 1.14, 3.4)
10.4 데이터 이동성 규칙
- 데이터 추출: 사용자가 요청할 경우, 자신의 모든 설문 데이터를 표준 형식(JSON, CSV 등)으로 추출하여 제공할 수 있는 API가 있어야 합니다. (요구사항 1.14, 3.4)
- 요청 처리: 데이터 추출 요청은 적절한 사용자 인증 후 처리되어야 합니다. (요구사항 1.14)
- 데이터 보안: 추출된 데이터는 압축 및 암호화되어 안전하게 전송되어야 합니다. (요구사항 1.14)
10.5 보안 규칙 (GDPR 관련)
- 데이터 암호화: 저장 데이터(at rest)는 AES-256 이상, 전송 데이터(in transit)는 TLS 1.2 이상으로 암호화되어야 합니다. 콜드 스토리지 데이터는 이중 암호화되어야 합니다. (요구사항 2.4)
- 접근 제어: 사용자 개인정보 및 설문 데이터 접근은 역할 기반 최소 권한 원칙을 따라야 합니다. 모든 관리자 접근은 감사 로그에 기록되어야 합니다. 콜드 스토리지 접근은 전용 API를 통해서만 가능해야 합니다. (요구사항 2.4)
- 데이터 침해 대응: 데이터 침해 발생 시 GDPR 규정에 따라 감독 기관 및 해당 사용자에게 통보할 수 있는 프로세스를 갖추어야 합니다. (요구사항 2.4)
10.6 관리자 도구 규칙
- 데이터 보관 정책(보관 기간, 비활성 기준 등)을 설정하고, 아카이빙/복원 프로세스를 모니터링 및 수동 제어할 수 있는 관리자 도구가 필요합니다. (요구사항 1.14, 3.4)
11. 설문 추가 정보 표시 규칙
- 특정 질문의 특정 답변 또는 설문 점수에 따라 부가 정보를 표시해야 합니다.
- PHQ-9 설문의 9번 문항(questionId: 'PHQ9_Q9')에서 사용자가 답변값 'Überhaupt nicht'을 선택한 경우 다음 부가 정보를 표시합니다:
Warnhinweis
Deine Antworten deuten darauf hin, dass du dich gerade sehr belastet fühlst. Du bist nicht allein – es gibt Hilfe. Bitte sprich mit einem Arzt oder einer Ärztin oder Psychotherapeut*in darüber.
In akuten Krisen:
Deutschland: Notruf 112
Telefonseelsorge: 0800 111 0 111 oder 0800 111 0 222 (kostenlos & anonym)
Du bist nicht allein – es gibt Hilfe.
- 설문 총 점수가 특정 임계값(minScore 이상)일 때 다음 부가 정보를 표시합니다:
Warnhinweis (자살사고)
Falls du dich stark belastet fühlst oder Suizidgedanken hast, hol dir bitte sofort Unterstützung. Sprich mit deinem Arzt oder deiner Ärztin oder Psychotherapeut*in.
📞 In akuten Krisen:
➡ Deutschland: Notruf 112
➡ Telefonseelsorge: 0800 111 0 111 oder 0800 111 0 222 (kostenlos & anonym)
Du bist nicht allein – es gibt Hilfe.
12. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-05-12 | bok@weltcorp.com | 최초 작성 |
| 0.2.0 | 2025-05-13 | bok@weltcorp.com | GDPR 준수 및 데이터 보관 정책 관련 규칙 추가 (데이터 관리 및 개인정보 보호 규칙 섹션 추가) |
| 0.2.1 | 2025-05-23 | bok@weltcorp.com | 회차 누적 결과 조회 관련 비즈니스 규칙 추가 |