Files
Aislo/.agent/plan_register_split_validation.md
T

4.7 KiB

회원가입 플로우 개편 검증 보고서

구현 완료 항목

1. DB 변경

  • db_management/003_register_split.sql 생성
    • users.status ENUM에 'NO_COMPANY' 추가
    • 회원가입 시 회사 정보 NULL로 시작하도록 변경

2. 백엔드 변경

  • A07_Register_Schema.py 수정

    • RegisterRequest 필드: email, password, password_confirm, name, position, phone, terms_agreed, privacy_agreed, marketing_agreed, terms_version
    • 회사 관련 필드 전부 제거
    • password_confirm 검증 추가
  • common_util_auth_repository.py 수정

    • create_registration(): 회사/join_request 생성 로직 제거, users INSERT만 수행
    • complete_registration(): 무조건 status = 'NO_COMPANY'로 변경
  • A07_Register_Router.py 수정

    • request_registration(): password_confirm 제외 처리
  • A06_Login_Router.py 수정

    • request_login(): status not in ("ACTIVE", "NO_COMPANY") 체크로 변경
    • current_session(): 응답에 company_id, is_master 추가
  • common_util_auth.py 수정

    • require_company() dependency 추가
  • main.py 수정

    • B03~B06 라우터에 require_company 의존성 추가

3. 리소스 파일

  • resources/legal/terms_of_service.txt 생성
  • resources/legal/privacy_policy.txt 생성
  • resources/legal/marketing_consent.txt 생성

4. 프론트엔드 변경

  • A07_Register_Api_Fetch.ts 수정

    • RegisterPayload 필드 축소
  • A07_Register_UI_Auth_Page.ts 전면 재작성

    • 필드: name, position, email, phone, password, passwordConfirm, terms/privacy/marketing (아코디언)
    • 약관 텍스트 파일 로드 기능
    • OTP 입력 창 기존 로직 유지
  • A00_Common/router.ts 수정

    • B02~B11 라우트: company_id 없으면 B01로 리다이렉트
  • ui_template_locale.ts 수정

    • A07_Register_Field_Position, A07_Register_Field_Phone, A07_Register_Field_PasswordConfirm
    • A07_Register_Error_PasswordMismatch 추가
  • A07_Register_UI_Style.css 수정

    • .a07-register__agreement 아코디언 스타일 추가
  • A06_Login_Api_Fetch.ts 수정

    • SessionUser 인터페이스에 company_id, is_master 추가

검증 방법

1차 검증: 가입 및 이메일 인증

python main.py

브라우저에서:

  1. /#/a07-register 접속
  2. 필드 확인: name, position, email, phone, password, passwordConfirm, 약관(3개)
  3. 약관 체크박스 옆 라벨 클릭 → <details> 펼쳐서 내용 표시 확인
  4. 모든 필드 입력 후 "회원가입" 버튼 클릭
  5. → 폼 하단에 OTP 입력 칸 노출 확인
  6. 콘솔 로그 또는 메일에서 OTP 확인하여 입력
  7. "이메일 인증 완료" 버튼 클릭
  8. → 로그인 페이지로 리다이렉트 확인

2차 검증: DB 상태 확인

SELECT id, email, status, company_id, role, is_master FROM users WHERE email = 'test@example.com';

예상 결과:

  • status = 'NO_COMPANY'
  • company_id = NULL
  • role = 'MEMBER'
  • is_master = FALSE

3차 검증: 로그인 및 상태

  1. 가입한 계정으로 로그인 시도 → 성공 확인 (기존에는 status != ACTIVE로 실패했을 부분)
  2. 로그인 후 B02_PROJ_REGISTER (/#/b02-proj-register) 접속 시도 → B01_ACCOUNT로 리다이렉트 확인

4차 검증: 회사 없이 B02+ 접근 차단

B01_ACCOUNT 페이지는 아직 구현되지 않았으므로, 라우팅 가드만 동작 확인:

  • /#/b03-file-input 직접 접속 → B01로 리다이렉트되거나 403 응답 확인 (백엔드 require_company 에러)

향후 구현 필요 항목

  1. B01_AccountDetail 백엔드 구현 (예정)

    • GET /api/account/me — 현재 계정 상세
    • PATCH /api/account/me — 이름/직급/전화번호 수정
    • POST /api/account/company/create — 신규 회사 생성
    • POST /api/account/company/join — 기존 회사 참여 신청
  2. B01_AccountDetail 프론트엔드 구현 (예정)

    • 계정 정보 표시/수정 폼
    • "회사 생성" 섹션
    • "회사 검색·연결" 섹션
  3. 라우팅 가드 최종 테스트 (기준 마련 후)

    • 회사 연결 후 B02~B11 접근 가능 확인

완료 상태

🟢 계획서 기반 구현 완료 (1단계~3단계)

  • DB 마이그레이션
  • 백엔드 로직 수정
  • 프론트엔드 UI/라우팅

🟡 B01_AccountDetail 백엔드/프론트엔드는 별도 태스크 (4단계)

🟢 최종 검증 가능 (3차까지)

  • 회원가입, 이메일 인증, NO_COMPANY 상태 확인
  • 로그인 가능 (NO_COMPANY 상태)
  • B02+ 접근 차단 동작 확인

마지막 업데이트: 2026-01-07 상태: 1단계 구현 완료, B01_AccountDetail은 별도 작업