-- 킨텍스 — 공개 인증(회원가입·비밀번호 재설정) 순증 스키마
-- V1~V8 불변. 본 마이그레이션은 순증(additive)·멱등만 수행한다.
-- 보안 불변(계약 §0-3): code_hash·password_hash 는 API 응답/로그 노출 금지.

-- 회원가입 시 입력한 소속사명(선택) 보존용 순증 컬럼. 미입력 허용.
ALTER TABLE app_user ADD COLUMN IF NOT EXISTS company_name varchar(200);

-- 비밀번호 재설정 코드(6자리 OTP) — code_hash 만 저장(평문·해시 응답/로그 금지),
-- 만료(expires_at, 10분)·1회성(used)·시도제한(attempts). 이메일 발송 인프라 부재 시 dev 로깅으로 대체.
CREATE TABLE IF NOT EXISTS password_reset (
    id         bigserial    PRIMARY KEY,
    email      varchar(200) NOT NULL,
    code_hash  varchar(120) NOT NULL,   -- BCrypt(6자리 코드). 응답/로그 노출 금지.
    expires_at timestamptz  NOT NULL,   -- 발급 + 10분
    used       boolean      NOT NULL DEFAULT false,
    attempts   integer      NOT NULL DEFAULT 0,   -- 검증 실패 누적(임계 초과 시 코드 무효화)
    created_at timestamptz  NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_password_reset_email ON password_reset(email, used, created_at DESC);
