데이터·보안 무결성
사용자 소유권, 멱등성, 버전 고정과 개인정보 최소화를 적용하는 데이터 원칙입니다.
인증 경계
사용자 데이터 API는 인증 토큰과 앱 검증을 모두 요구한다. 서버는 토큰의 사용자 식별자와 DB 레코드 소유자를 매 요청마다 비교한다.
저장 프로시저 전용
런타임 DB adapter는 승인된 프로시저 실행만 노출한다. 과정 조회, 문제 세션 생성, 답안 제출, 필기 진행 저장과 사용자 진도는 각각 명시된 입력·출력 계약을 갖는다.
멱등성과 재시도
모바일 네트워크에서는 같은 요청이 반복될 수 있다. 문제 세션과 필기 시도는 클라이언트 UUID를 사용해 같은 요청에 동일한 결과를 반환한다. 답안은 세션 항목마다 한 번만 확정한다.
문제 보안
문제 세션을 만들 때 서버가 문항 버전과 선택지 순서를 저장한다. 최초 응답에는 정답과 해설을 포함하지 않으며, 사용자가 답을 제출한 후 해당 문항의 판정과 해설만 반환한다.
필기 개인정보
손가락이나 스타일러스의 원본 이동 좌표는 서버와 에셋 저장소에 보관하지 않는다. 시작점·끝점·방향·경로 점수와 통과 여부만 저장해 학습 근거와 개인정보 최소화를 함께 지킨다.
게시 불변성
게시된 콘텐츠는 물리 삭제하거나 덮어쓰지 않는다. 수정은 새 릴리스와 새 버전으로 생성하며, 검수 상태와 게시 시각을 기록한다.
탈퇴와 보존
탈퇴 요청은 Firebase 계정 삭제 확인 후 개인 학습·평가·쓰기·동의·알림 데이터를 트랜잭션으로 정리한다. 중단된 작업은 예약 함수가 재개한다. 재가입 보너스 중복 방지 플래그와 법정 보관 대상 결제 참조는 식별정보를 제거한 사용자 키에만 남기며 provider 목록은 완료 시 제거한다.
