> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.ruoomsoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 아키텍처

> 이메일 OTP 인증 수명 주기 및 연동

## Core 연동

wheel은 `plugins.email_otp`를 설치합니다. 메타데이터는 URL 네임스페이스를 `/otp/`에 마운트하고 로그인 경로를 공개로 지정하며 Core의 공통 로그인 옵션에 **이메일로 로그인 코드 받기**를 추가합니다.

## 모델 및 처리 과정

`EmailOTP`는 정규화된 이메일, 비즈니스 ID, 해시된 코드, 생성/만료 시간, 사용 상태 및 검증 시도 횟수를 저장합니다.

1. `/otp/signin/`에서 이메일을 검증하고 요청 대기 시간을 확인합니다.
2. 같은 이메일/비즈니스의 기존 활성 코드를 무효화합니다.
3. 해시된 6자리 코드를 저장하고 평문 코드는 이메일로 전송합니다.
4. `/otp/signin/verify/`에서 만료, 사용 상태, 시도 횟수 및 해시를 검증합니다.
5. 일치하는 활성 프로필을 인증하고, 프로필이 없으면 검증된 이메일을 회원가입으로 전달합니다.

## 경로

* `/otp/signin/`: 코드 요청 (`email_otp:request`).
* `/otp/signin/verify/`: 코드 제출 및 검증 (`email_otp:verify`).
