Skip to content

feat: 숭실대 재적생 가입 신청 폼 추가 - #15

Merged
AndyH0ng merged 3 commits into
mainfrom
feat/apply-form
Sep 4, 2026
Merged

feat: 숭실대 재적생 가입 신청 폼 추가#15
AndyH0ng merged 3 commits into
mainfrom
feat/apply-form

Conversation

@AndyH0ng

@AndyH0ng AndyH0ng commented Sep 4, 2026

Copy link
Copy Markdown
Member

Summary

  • 숭실대 재적생 대상 가입(모집) 지원서 폼을 새로 추가 (/apply)
  • 기존 참가자/팀 데모데이 스키마와 분리된 신규 applications / application_team_members 테이블 (관리자 검토 후 별도로 참가자 등록하는 흐름을 전제로 설계)
  • 개인 지원 / 팀 지원(본인 포함 2~5명) 선택, 팀 지원 시 팀원 이름·단과대·학과를 입력하는 반복 입력 UI
  • blocker 최소화 UX: 단일 스크롤 폼 + 조건부 섹션 노출, 전화번호/생년월일/학번 실시간 마스킹(커스텀 입력), localStorage 임시저장/복구, 학번 중복 지원 비차단 경고, 단과대→학과 종속 선택

Test plan

  • npm run typecheck, npx biome check 통과
  • 로컬 dev 서버에서 크롬 devtools로 /apply 직접 조작해 확인: 학과 종속 선택, 전화번호/생년월일 마스킹, 개인↔팀 전환 후 제출(팀 잔여 데이터로 인한 무반응 버그 수정 확인), 팀원 도움말 자동 노출
  • supabase/migrations/20260904120000_applications.sql은 아직 원격 프로젝트에 적용되지 않음 — 배포 전 마이그레이션 적용 필요
  • 실제 제출 → DB insert까지의 엔드투엔드는 마이그레이션 적용 후 확인 필요

🤖 Generated with Claude Code

https://claude.ai/code/session_01AwDeTJKVg5t63jqNDVeiUV

Summary by CodeRabbit

  • 새 기능

    • 숭실대학교 재적생을 위한 가입 신청 페이지와 온라인 신청서가 추가되었습니다.
    • 개인 또는 팀 지원을 선택하고, 지원 분야·학과·연락처·생년월일 등의 정보를 입력할 수 있습니다.
    • 팀원 정보를 최대 5명까지 추가·삭제할 수 있습니다.
    • 입력 중인 신청서가 자동 저장되어 작성 중단 후에도 이어서 작성할 수 있습니다.
    • 제출 완료 시 접수 결과와 후속 안내 메시지가 표시됩니다.
  • 개선 사항

    • 학과 선택, 전화번호·날짜 형식, 학번 중복 여부를 실시간으로 확인합니다.
    • 제출 정보의 유효성을 검증하고 오류 내용을 안내합니다.

AndyH0ng and others added 2 commits September 4, 2026 17:32
blocker 최소화 UX(단일 스크롤 폼, 조건부 노출, 임시저장, 실시간 마스킹)로
개인/팀 지원 신청서를 받는 새 지원서(applications) 테이블과 폼을 추가.
기존 참가자/팀 데모데이 스키마와는 분리해 추후 검토 후 등록하는 흐름으로 설계.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwDeTJKVg5t63jqNDVeiUV
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwDeTJKVg5t63jqNDVeiUV
@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: dbf38337-408a-4d3e-a422-0ea535c2c7c1

📥 Commits

Reviewing files that changed from the base of the PR and between 0d48e50 and 71c0275.

📒 Files selected for processing (16)
  • src/app/(public)/apply/page.tsx
  • src/entities/application/index.ts
  • src/entities/application/model/actions.ts
  • src/entities/application/model/application.ts
  • src/entities/application/model/college-department.ts
  • src/entities/application/model/schema.ts
  • src/features/submit-application/index.ts
  • src/features/submit-application/model/schema.ts
  • src/features/submit-application/ui/apply-form-draft.ts
  • src/features/submit-application/ui/college-department-select.tsx
  • src/features/submit-application/ui/formatted-fields.tsx
  • src/features/submit-application/ui/submit-application-form.tsx
  • src/features/submit-application/ui/submit-application-result.tsx
  • src/features/submit-application/ui/team-members-field.tsx
  • src/shared/lib/supabase/database.types.ts
  • supabase/migrations/20260904120000_applications.sql

📝 Walkthrough

Walkthrough

숭실대학교 재적생을 위한 공개 가입 신청 페이지를 추가했습니다. 신청서 검증, 입력 포맷팅, 학번 중복 확인, 초안 자동 저장, 팀원 관리, Server Action 제출, Supabase 저장 및 접수 결과 화면을 구현했습니다.

Changes

공개 모집 신청

Layer / File(s) Summary
신청 데이터 저장 계약
supabase/migrations/..., src/shared/lib/supabase/database.types.ts
applicationsapplication_team_members 테이블을 추가했습니다. 역할, 지원 유형, 상태 제약과 학번 고유 인덱스를 정의했습니다.
신청 조회 및 저장 동작
src/entities/application/..., src/features/submit-application/model/schema.ts
학번 중복 조회와 신청서 제출 Server Action을 추가했습니다. 지원서와 팀원 정보를 Supabase에 저장합니다.
신청서 검증 및 입력 필드
src/entities/application/model/schema.ts, src/entities/application/model/college-department.ts, src/features/submit-application/ui/*
신청서와 팀원 검증, 단과대·학과 선택, 전화번호·생년월일 포맷팅, 학번 중복 확인, 초안 자동 저장을 구현했습니다.
신청서 화면과 제출 상태
src/features/submit-application/index.ts, src/features/submit-application/ui/submit-application-form.tsx, src/features/submit-application/ui/team-members-field.tsx, src/features/submit-application/ui/submit-application-result.tsx
신청서 입력 화면과 팀원 추가·삭제를 구성했습니다. 제출 성공 시 접수 결과를 표시하고 실패 시 스낵바를 표시합니다.
공개 신청 페이지 연결
src/app/(public)/apply/page.tsx
/apply 페이지에 제목, 설명, 신청서 폼을 배치하고 페이지 메타데이터를 추가했습니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant 지원자
  participant SubmitApplicationForm
  participant submitApplicationAction
  participant Supabase
  지원자->>SubmitApplicationForm: 신청서 입력
  SubmitApplicationForm->>submitApplicationAction: 검증된 ApplicationInput 제출
  submitApplicationAction->>Supabase: applications 저장
  submitApplicationAction->>Supabase: 팀 신청 시 팀원 저장
  Supabase-->>submitApplicationAction: 저장 결과
  submitApplicationAction-->>SubmitApplicationForm: 성공 또는 오류 결과
  SubmitApplicationForm-->>지원자: 접수 결과 또는 오류 표시
Loading

Poem

토끼가 폼을 살펴보니
학번은 숫자로 반짝이고
팀원 줄은 가지런히 서고
초안은 살포시 저장되고
신청서는 데이터로 깡충
접수 소식이 도착했네

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/apply-form

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

보안 리뷰에서 지적된 문제 대응: Server Action은 폼을 거치지 않고도 직접 호출 가능한
엔드포인트라, 클라이언트 zodResolver만으로는 검증이 안 됨. applicationSchema를
엔티티 레이어로 옮겨 서버 액션에서도 동일한 스키마로 재검증하도록 하고, 학번 중복
확인 액션은 8자리 형식이 아니면 DB 조회 없이 거부하도록 함. 팀원 정보 라벨 크기도
TextField description과 통일.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwDeTJKVg5t63jqNDVeiUV
@AndyH0ng
AndyH0ng merged commit a6105a3 into main Sep 4, 2026
2 of 3 checks passed
@AndyH0ng
AndyH0ng deleted the feat/apply-form branch September 4, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant