한편 — 청년모임 가입·참가 모집 운영 시스템 개발 요구사항
- 문서 버전: v1.1
- 정리일: 2026-10-07
- 기준: 기존 개발 요구사항, 제공된 청년모임 가입 질문 초안, 현재 구현 범위
- 사이트: 한편 운영실
1. 프로젝트 개요
청년모임 한편의 가입·참가 신청을 온라인으로 받고, 수집한 답변을 구조화하여 운영자가 목록과 상세 화면에서 확인·관리하는 웹 시스템이다.
가장 중요한 기능은 신청 폼 → 데이터 저장 → 신청자 목록 → 답변 확인 → 운영자 승인으로 이어지는 흐름이다. 초대장 공유, 현장 출석 체크, 운영자 메모는 이 흐름을 보조한다.
현재 버전은 모임별 신청서에 가입 질문을 포함하는 구조다. 별도의 상시 회원 계정, 모임 간 공통 회원 프로필, 회원 커뮤니티는 후속 개발 범위로 둔다.
1.1 핵심 목표
- 신청자가 휴대전화에서도 가입 질문을 작성하고 제출할 수 있다.
- 제출한 답변은 서버 저장소에 저장되어 다시 접속해도 유지된다.
- 운영자는 신청자의 활동·역량·참여 목적을 확인하고 참가 여부를 결정한다.
- 신청 상태, 운영자 메모, 현장 출석을 한곳에서 관리한다.
- 초대 문구와 신청 링크를 쉽게 공유하고 필요한 명단을 내려받는다.
1.2 확정된 운영 원칙
- 신청은 먼저 신청 접수 상태로 저장한다.
- 운영자가 신청서를 확인한 뒤 참가를 확정한다.
- 신청 완료 화면에 접수와 확정이 다름을 안내한다.
- 상태를 변경해도 문자·카카오톡·이메일은 자동으로 발송되지 않는다.
- 신청자 답변은 운영팀만 열람하며 다른 회원에게 자동 공개하지 않는다.
2. 사용자와 권한
| 사용자 | 가능한 작업 | 제한 |
|---|---|---|
| 신청자 | 모임 안내 확인, 가입 질문 작성, 동의 후 제출, 접수 결과 확인 | 신청자 명단 및 타인의 답변 열람 불가 |
| 운영자 | 모임 생성·수정, 명단 조회, 검색·필터, 상세 답변 확인, 상태·메모·출석 변경, CSV 다운로드, 신청 정보 삭제 | 지정된 운영자 계정으로 로그인 필요 |
- 공개 신청 화면과 운영 화면을 분리한다.
- 운영 기능은 화면 표시뿐 아니라 서버 요청에서도 권한을 검사한다.
- 사이트 공개 범위와 운영자 권한은 별도로 관리한다.
- 최근 배포 기준 사이트는 본인 전용 비공개 상태다. 외부 모집 전 사이트 공유 범위를 설정해야 한다.
- 신청자용 별도 계정 생성 기능은 제공하지 않는다. 신청 화면 접근 가능 여부는 사이트 공유 설정을 따른다.
3. 주요 이용 흐름
3.1 운영자
- 운영자 계정으로 로그인한다.
- 모임명, 소개, 일시, 장소, 정원, 마감일, 문의처 등을 입력한다.
- 모집 상태를
모집 중으로 설정한다. - 초대 문구 또는 신청 링크를 공유한다.
- 신청자 목록에서 신청서를 검토한다.
- 신청 상태를 확정·대기·취소 등으로 변경한다.
- 필요한 안내는 운영자가 별도로 전달한다.
- 모임 당일 참가 확정자의 출석을 체크한다.
- 보관 기간에 맞춰 개인정보를 삭제한다.
3.2 신청자
- 전달받은 신청 링크로 접속한다.
- 모임 안내를 확인한다.
- 네 단계의 가입 질문을 작성한다.
- 운영원칙과 개인정보 수집·이용에 각각 동의한다.
- 신청서를 제출한다.
- 접수 완료 안내와 신청 번호를 확인한다.
- 운영팀의 가입·참가 확정 안내를 기다린다.
4. 화면 구성
| 화면 | 주요 기능 |
|---|---|
| 운영자 로그인 | 지정 계정 확인, 접근 권한 안내 |
| 참가자 관리 | 신청·확인 필요·확정·참석 인원 집계, 신청자 목록, 검색·필터, 상세 보기, CSV 다운로드 |
| 가입 질문 폼 | 전체 질문·선택지·필수 여부 확인, 모임별 신청 링크 복사, 실제 신청 화면 열기 |
| 초대장 | 모임 정보 기반 초대장 표시, 초대 문구 복사, 기기 공유 |
| 모임 설정 | 기본 정보 수정, 정원·마감·모집 상태·문의처·보관 기간 설정 |
| 신청자 상세 | 네 영역의 전체 답변, 동의 기록, 운영자 메모, 상태·출석 변경, 신청 정보 삭제 |
| 가입 신청 | 모임 안내, 네 단계 질문, 입력 검증, 동의, 제출 및 접수 결과 |
| 개발 요구사항 | 기능 범위, 데이터·운영 규칙, 완료 판단 기준 확인 |
5. 가입 질문 폼
5.1 공통 설계
기본 정보 → 역량 및 네트워크 → 모임 참여 목적 → 성향 및 운영의 네 단계로 구성한다.- 현재 단계와 전체 단계 수를 표시한다.
- 이전·다음 단계로 이동해도 작성 중인 답변을 유지한다.
- 단계별 필수 입력을 확인하고 마지막 제출 시 서버에서도 전체 내용을 검증한다.
- 필수와 선택 질문을 구분하여 표시한다.
- 선택형 질문이나 동의 항목을 임의로 미리 선택하지 않는다.
기타를 선택하면 직접 입력란을 표시하고 해당 설명을 필수로 받는다.- 제출 중 중복 클릭을 방지한다.
- 제출 실패 시 입력을 유지하고 원인과 재시도 방법을 안내한다.
- 브라우저를 닫은 뒤 복원하는 임시 저장 기능은 현재 범위에 포함하지 않는다.
5.2 기본 정보
| 질문 | 데이터 필드 | 입력 방식 | 필수 여부 | 표시·입력 규칙 |
|---|---|---|---|---|
| 이름 | name | 단답형 | 필수 | 2~50자 |
| 출생연도 | birth_year | 정수 | 필수 | 1900년~현재 연도, 나이 중복 수집 없음 |
| 연락처 | phone | 휴대전화 | 필수 | 공백·하이픈을 제거하여 저장 |
| 거주지역 | region | 단답형 | 필수 | 시·구 정도, 2~80자, 상세 주소 불필요 |
| 현재 어떤 활동을 하고 계신가요? | work_status | 단일 선택 | 필수 | 현재의 주된 활동 하나 선택 |
| 현재 활동 — 기타 | work_other | 단답형 | 조건부 필수 | 현재 활동이 기타인 경우, 최대 200자 |
| 회사명 | company_name | 단답형 | 선택 | 사업 중인 경우만 표시, 최대 150자 |
| 업종 | industry | 단답형 | 선택 | 사업 중인 경우만 표시, 최대 150자 |
| 주요 사업내용 | business_description | 서술형 | 선택 | 사업 중인 경우만 표시 |
| 현재 직장 / 활동 소속 | workplace | 단답형 | 선택 | 사업 중 이외의 경우 표시, 최대 150자 |
| 담당 업무 / 현재 하는 일 | job_role | 서술형 | 선택 | 사업 중 이외의 경우 표시 |
현재 활동 선택지
- 사업 중
- 직장인
- 프리랜서
- 취업/창업 준비 중
- 기타
분기 규칙
- 사업 중이면 회사명·업종·주요 사업내용을 묻는다.
- 그 외에는 현재 직장·활동 소속과 담당 업무·현재 하는 일을 묻는다.
- 프리랜서나 취업·창업 준비자는 활동 분야 또는 준비 상황을 적을 수 있다.
- 현재 활동을 변경하면 더 이상 해당하지 않는 회사·직장 답변은 서버 저장에서 제외한다.
- 출생연도 검증은 입력 오류 방지를 위한 것이며, 별도의 가입 연령 제한은 적용하지 않는다.
5.3 역량 및 네트워크
| 질문 | 데이터 필드 | 입력 방식 | 필수 여부 |
|---|---|---|---|
| 본인이 가장 자신 있는 분야는 무엇인가요? | expertise | 복수 선택 | 필수, 1개 이상 |
| 자신 있는 분야 — 기타 | expertise_other | 단답형 | 기타 선택 시 필수, 최대 200자 |
| 보유한 자격증이나 전문 경력이 있나요? | credentials | 서술형 | 선택 |
| 다른 회원들에게 도움을 줄 수 있는 분야는 무엇인가요? | help_offer | 서술형 | 선택 |
| 다른 회원들에게 도움을 받고 싶은 분야는 무엇인가요? | help_needed | 서술형 | 선택 |
자신 있는 분야 선택지
영업 / 마케팅 / AI / 온라인 / 디자인 / 개발 / 제조 / 유통 / 금융 / 연구 / 기획 / 기타
5.4 모임 참여 목적
| 질문 | 데이터 필드 | 입력 방식 | 필수 여부 |
|---|---|---|---|
| 이 모임에 참여하고 싶은 가장 큰 이유는 무엇인가요? | motivation | 단일 선택 | 필수 |
| 참여 이유 — 기타 | motivation_other | 단답형 | 기타 선택 시 필수, 최대 300자 |
| 관심 있는 정부지원 분야가 있나요? | support_interests | 복수 선택 | 선택 |
| 정부지원 관심 분야 — 기타 | support_other | 단답형 | 기타 선택 시 필수, 최대 200자 |
| 함께 해보고 싶은 프로젝트나 사업 아이디어가 있나요? | project_idea | 서술형 | 선택 |
| 모임에서 맡거나 기여할 수 있는 역할은 무엇인가요? | contribution | 서술형 | 선택 |
가장 큰 참여 이유 선택지
- 사업 네트워크
- 정부지원사업·정책자금 정보
- 공동 프로젝트
- 창업
- 새로운 사업기회
- 전문지식 교류
- 인맥 및 교류
- 기타
정부지원 관심 분야 선택지
정책자금 / 창업지원 / R&D / 고용지원 / 수출지원 / 소상공인지원 / AI·디지털전환 / 기타
5.5 성향 및 운영
| 질문 | 데이터 필드 | 입력 방식 | 필수 여부 |
|---|---|---|---|
| 모임 활동에 어느 정도 참여 가능하신가요? | participation | 단일 선택 | 필수 |
| 한 달에 오프라인 모임은 몇 회가 적당한가요? | offline_frequency | 정수 | 필수, 0~31회 |
| 모임에서 꼭 지켜졌으면 하는 문화나 원칙이 있나요? | culture | 서술형 | 선택 |
| “나는 이런 사람이다”를 한 문장으로 소개해 주세요. | one_liner | 서술형 | 필수, 2~200자 |
| 내부 운영원칙에 동의하시나요? | rules_agreed | 별도 동의 | 필수 |
참여 가능 수준 선택지
- 매우 적극적으로 참여 가능
- 프로젝트가 맞으면 적극 참여
- 정기모임 위주 참여
- 정보교류 위주 참여
운영원칙 동의 문구
회원 간 금전 대차를 하지 않습니다. 타 모임 홍보와 과도한 영업을 자제합니다.
입력 규칙
- 월 모임 횟수는 참석 의무가 아닌 희망 빈도다.
- 온라인 중심 참여를 희망하면 0회를 입력할 수 있다.
- 별도 제한이 없는 서술형 질문은 최대 1,500자다.
- 운영원칙 동의와 개인정보 수집·이용 동의는 각각 별도의 항목으로 받는다.
6. 개인정보 안내와 동의
6.1 신청 전 안내 항목
- 수집·이용 주체: 한편 운영팀
- 이용 목적: 가입·참가 신청 검토, 운영팀의 교류·협업 활동 기획, 모임 안내 및 출석 관리
- 필수 수집 항목과 선택 수집 항목
- 보관 기간: 해당 모임에 설정된 기간
- 문의·정정·삭제 요청 방법
- 동의를 거부할 수 있다는 점과 필수 항목 미동의 시 신청할 수 없다는 점
- 선택 항목은 작성하지 않아도 신청할 수 있다는 점
- 답변은 운영팀만 열람하며 회원에게 자동 공개하지 않는다는 점
- 민감한 개인정보나 공개하기 어려운 사업 기밀을 서술형 답변에 입력하지 않도록 안내
6.2 기록 규칙
- 개인정보 동의 시각과 안내문 버전을 저장한다.
- 운영원칙 동의 시각과 원칙 버전을 따로 저장한다.
- 작성한 질문지 버전을 저장한다.
- 개인정보 안내 버전에는 동의 당시의 보관일수와 문의처를 함께 기록한다.
- 폼을 연 뒤 모임 정보가 바뀌면 제출을 거절하고 최신 안내 확인 후 개인정보 동의를 다시 받는다.
- 개인정보 자동 파기는 현재 제공하지 않는다. 운영자가 설정한 기간 안에 신청 정보를 삭제한다.
7. 모임 관리
7.1 모임 정보
| 항목 | 규칙 |
|---|---|
| 모임명 | 필수, 2~100자 |
| 모임 소개 | 필수, 5~2,000자 |
| 모임 일시 | 한국 시간 기준 입력 |
| 모집 마감 | 모임 시작 시각 이전 또는 같은 시각 |
| 장소 | 필수, 2~200자 |
| 모집 정원 | 1~10,000명 |
| 문의처 | 이메일·전화번호·오픈채팅 링크 등, 필수 |
| 개인정보 보관 기간 | 모임 종료 후 1~365일, 기본값 90일 |
| 모집 상태 | 준비 중 / 모집 중 / 모집 마감 |
7.2 동작 규칙
- 여러 모임을 생성하고 모임별로 신청 내역을 구분한다.
- 모임 정보 변경은 신청 폼과 초대장에 함께 반영한다.
- 준비 중인 모임은 신청자용 모임 조회에 노출하지 않는다.
- 모집 시작 시 모임 일시와 마감 일시는 미래여야 한다.
- 수동 마감하거나 마감 시각이 지나면 신규 신청을 받지 않는다.
- 모집 정원을 이미 확정된 인원보다 작게 줄일 수 없다.
8. 신청자 관리
8.1 목록과 집계
- 전체 신청, 확인 필요, 참가 확정, 참석 완료 인원을 표시한다.
- 목록에는 이름, 출생연도·거주지역 요약, 현재 활동, 전문 분야, 연락처, 신청 일시, 신청 상태, 출석 여부를 표시한다.
- 최신 신청순으로 정렬하고 페이지를 나누어 표시한다.
- 이름 또는 연락처로 검색한다.
- 신청 상태, 출석 여부, 현재 활동, 전문 분야로 필터링한다.
- 최신 명단을 다시 불러올 수 있다.
- 로딩 중, 빈 목록, 검색 결과 없음, 불러오기 실패 상태를 구분한다.
8.2 상세 답변과 메모
- 기본 정보 및 네 영역의 가입 답변 전체를 확인한다.
- 선택형 답변은 사용자에게 표시했던 항목명으로 보여준다.
- 긴 서술형 답변과 줄바꿈을 보존한다.
- 개인정보·운영원칙 동의 기록을 확인한다.
- 운영자 전용 메모를 작성·수정한다. 최대 2,000자다.
- 상태·메모·출석을 변경해도 신청자가 제출한 원본 답변은 유지한다.
- 원본 신청 답변을 운영자가 직접 수정하는 기능은 현재 제공하지 않는다.
8.3 신청 상태
| 표시명 | 저장 코드 | 의미 |
|---|---|---|
| 신청 접수 | pending | 신청 완료, 운영자 검토 필요 |
| 참가 확정 | confirmed | 운영자 검토 후 참가 확정 |
| 대기 | waitlisted | 추가 검토 또는 자리 확보 대기 |
| 취소 | cancelled | 참가 취소 처리 |
- 신규 신청의 기본 상태는
pending이다. - 정원은 신청 접수 인원이 아니라 참가 확정 인원을 기준으로 계산한다.
- 신청은 정원과 별개로 접수할 수 있고 운영자가 대기 여부를 결정한다.
- 여러 운영 요청이 동시에 들어와도 정원을 초과하여 확정하지 않는다.
- 상태 변경과 안내 메시지 발송은 별개다.
8.4 현장 출석
- 출석 여부는 신청 상태와 별도로 저장한다.
- 참가 확정자만 체크인할 수 있다.
- 체크인 시각을 기록하고 체크인을 취소할 수 있다.
- 확정 상태에서 다른 상태로 변경하면 체크인을 해제한다.
8.5 삭제
- 운영자는 신청 정보 한 건을 영구 삭제할 수 있다.
- 삭제 전 대상과 복구 불가 여부를 확인한다.
- 오래된 버전의 신청 정보를 삭제하려는 경우 최신 내역 확인을 요구한다.
- 현재는 휴지통·삭제 복구·일괄 삭제 기능을 제공하지 않는다.
9. CSV 내려받기
- 현재 선택한 모임의 검색·필터 결과 전체를 내보낸다. 화면의 현재 페이지만 내보내지 않는다.
- 기본 정보, 가입 질문 전체, 동의 기록, 신청 상태, 신청·출석 일시, 운영자 메모를 포함한다.
- 기존 신청 양식의 이메일·첫 참여 여부·남기는 말도 보존한다.
- 현재 내보내기 열 수는 38개다.
- 한글이 정상적으로 열리도록 UTF-8 BOM을 적용한다.
- 복수 선택은 읽을 수 있는 항목명으로 표시한다.
- 줄바꿈, 쉼표, 큰따옴표가 포함된 답변을 올바르게 처리한다.
- 휴대전화 앞자리 0을 보존하기 위해 작은따옴표를 붙인다.
- 수식처럼 해석될 수 있는 입력을 이스케이프한다.
- 일시는 한국 시간 기준으로 내보낸다.
10. 초대장과 신청 링크 공유
- 모임명, 소개, 일시, 장소, 정원, 마감, 문의처로 초대장을 구성한다.
- 초대 문구에 모임별 신청 링크와 운영자 확인 후 확정 안내를 포함한다.
- 신청 링크와 초대 문구를 각각 복사할 수 있다.
- 지원되는 기기에서는 기본 공유 기능을 제공한다.
- 준비 중인 모임과 예시 모임은 공유 버튼을 비활성화한다.
- 실제 문자·카카오톡·알림톡·이메일 자동 발송과 발송 이력은 후속 연동 범위다.
11. 데이터 구조와 저장 규칙
11.1 모임 — events
| 구분 | 주요 필드 |
|---|---|
| 식별·표시 | id, title, description |
| 일정·장소 | starts_at, deadline, location |
| 모집·문의 | capacity, status, contact |
| 개인정보 보관 | retention_days |
| 이력·충돌 방지 | created_at, updated_at, version |
11.2 신청 — applications
| 구분 | 주요 필드 |
|---|---|
| 식별·연결 | id, event_id |
| 기본 연락처 | name, phone |
| 가입 응답 | 5장의 각 데이터 필드. 운영원칙 동의는 아래 기록 필드로 저장 |
| 운영 상태 | status, memo, checked_at |
| 개인정보 동의 | consented_at, consent_version |
| 운영원칙 동의 | rules_agreed_at, rules_version |
| 질문지 버전 | questionnaire_version |
| 이력·충돌 방지 | created_at, updated_at, version |
| 이전 양식 보존 | email, first_visit, note |
11.3 저장 원칙
- 실제 신청 정보는 서버의 영구 저장소에 보관한다.
- 브라우저 저장소를 실제 신청 데이터의 기준 저장소로 사용하지 않는다.
- 출생연도와 오프라인 희망 횟수는 정수로 저장한다.
- 단일 선택은 고정 코드, 복수 선택은 JSON 배열로 저장한다.
- 서술형 응답은 질문별 컬럼에 별도로 저장한다.
- 연락처는 공백과 하이픈을 제거하여 정규화한다.
(event_id, phone)에 고유 제약을 적용한다.- 동일 제출 ID로 재시도하면 같은 신청으로 처리한다.
- 다른 제출 ID로 같은 연락처를 다시 제출하면 중복 신청으로 거절한다.
- 취소된 신청의 재신청이나 답변 정정은 운영팀 문의로 안내한다.
- 동일 신청서의 동시 편집은
version으로 감지하여 덮어쓰기를 방지한다. - 정원 확인과 확정 변경은 하나의 원자적 저장 작업으로 수행한다.
11.4 기존 데이터 호환
- 기존 신청자와 신청 상태·메모·출석·동의 기록을 유지한다.
- 추가 질문을 받지 않은 기존 신청서는
미수집으로 표시한다. - 새 숫자 필드는 빈 값, 복수 선택은 빈 배열 등으로 초기화한다.
- 기존 신청서의 상태·메모·출석 변경에 새 필수 질문을 요구하지 않는다.
- 예시 데이터는 실제 신청과 분리하고 화면에 예시임을 표시한다.
12. 기술 구현 기준
12.1 현재 구성
| 구분 | 기술·방식 |
|---|---|
| 화면 | React, TypeScript, Vinext |
| 실행 환경 | Cloudflare Workers |
| 데이터 저장 | Cloudflare D1 / SQLite |
| 스키마 변경 | Drizzle 마이그레이션 |
| 입력 검증 | Zod, 화면·서버 양쪽 검증 |
| 운영자 인증 | Sites 플랫폼 인증과 서버 측 운영자 이메일 허용 목록 |
| 배포 | Sites |
12.2 주요 경로와 API
| 구분 | 경로·요청 | 용도 |
|---|---|---|
| 운영실 | / | 지정 운영자 전용 화면 |
| 가입 폼 | /join?event=<모임 ID> | 모임별 가입·참가 신청 |
| 요구사항 문서 | /requirements.html | 정적 요구사항 문서 |
| 질문지 문서 | /membership-questionnaire.html | 전체 가입 질문지 |
| 모임 조회 | GET /api/hanpyeon?view=event&id=<모임 ID> | 신청 화면에 필요한 모임 정보만 반환 |
| 운영 데이터 조회 | GET /api/hanpyeon?event=<모임 ID> | 운영자용 모임·신청 목록 |
| 모임 저장 | POST /api/hanpyeon, action=save_event | 운영자용 모임 생성·수정 |
| 신청 제출 | POST /api/hanpyeon, action=apply | 신청 검증·접수 |
| 신청 운영 정보 변경 | PATCH /api/hanpyeon | 상태·메모·출석 변경 |
| 신청 삭제 | DELETE /api/hanpyeon | 운영자용 단건 삭제 |
12.3 권한·오류 처리
- 운영자 허용 목록이 비어 있거나 계정이 일치하지 않으면 접근을 차단한다.
- 운영자 설정 값과 인증 비밀 값은 브라우저 코드에 노출하지 않는다.
- SQL 질의는 준비된 구문과 값 바인딩을 사용한다.
- 교차 출처의 변경 요청을 제한한다.
- 신청자용 모임 조회에는 신청 명단이나 다른 사람의 연락처를 포함하지 않는다.
- 저장소 오류 시 실패를 명시하고 성공한 것처럼 처리하지 않는다.
- 기존 테이블 변경은 데이터를 보존하는 추가 마이그레이션으로 적용한다.
- 독립 호스팅으로 이전하면 플랫폼 인증 헤더를 신뢰할 수 있는 서버 경계를 별도로 구현해야 한다.
13. 사용성 및 반응형 요구사항
- 휴대전화와 데스크톱에서 신청·운영의 주요 기능을 사용할 수 있어야 한다.
- 질문, 필수 여부, 오류 원인을 각 입력과 연결하여 표시한다.
- 키보드로 입력·선택·단계 이동·저장을 수행할 수 있어야 한다.
- 긴 답변은 줄바꿈하여 보여주고 목록은 가독성을 유지한다.
- 모집 마감, 신청 성공, 제출 실패, 접근 권한 없음 상태를 구분한다.
- 화면의 일시 입력·표시와 CSV 일시는 한국 시간을 기준으로 한다.
14. 완료 판단 기준
| ID | 확인 기준 |
|---|---|
| AC-01 | 사용자 초안의 질문·선택지가 네 영역의 신청 폼에 빠짐없이 반영된다. |
| AC-02 | 제출한 답변이 해당 모임의 운영자 명단에 나타나고 다시 조회해도 유지된다. |
| AC-03 | 필수 항목 누락, 잘못된 출생연도·연락처·선택값, 미동의 신청을 거절한다. |
| AC-04 | 기타 설명의 조건부 필수 여부와 사업 여부에 따른 질문 분기가 동작한다. |
| AC-05 | 현재 조건과 맞지 않아 숨겨진 직업·기타 답변은 저장하지 않는다. |
| AC-06 | 이전·다음 단계 이동과 제출 실패 후에도 작성 중인 입력을 유지한다. |
| AC-07 | 동일 연락처의 중복 신청과 동일 제출의 중복 저장을 방지한다. |
| AC-08 | 모집 마감 후 제출을 거절하며 접수와 참가 확정을 구분한다. |
| AC-09 | 동시에 참가를 확정해도 정원을 넘지 않는다. |
| AC-10 | 상태·메모·출석 변경이 저장되고 명단·집계에 반영된다. |
| AC-11 | 상세 화면과 CSV에서 복수 선택 및 모든 서술형 답변을 확인할 수 있다. |
| AC-12 | CSV 대상이 현재 검색·필터 결과와 일치하며 한글·연락처·줄바꿈·따옴표를 보존한다. |
| AC-13 | 비로그인·비운영자 계정은 신청자 데이터를 조회·수정·삭제할 수 없다. |
| AC-14 | 기존 신청 데이터가 보존되고 새 필수 질문 없이 운영 상태를 변경할 수 있다. |
| AC-15 | 폼 작성 중 모임 정보가 바뀌면 최신 정보 확인과 개인정보 재동의를 요구한다. |
| AC-16 | 휴대전화 화면과 키보드 조작으로 신청·운영의 핵심 흐름을 완료할 수 있다. |
15. 검증 현황
이 절은 앞선 구현 작업의 검증 결과를 정리한 것으로, 이번 Markdown 문서 작성 과정에서 기능 검사를 다시 실행한 것은 아니다.
확인한 항목
- 가입 질문 검증·조건부 답변 정리·필수/선택 처리, 저장·조회, 전체 답변 내보내기, 중복·정원·권한 처리, 서버 렌더링을 포함한 검사 41개 통과.
- 신규 답변 24개 데이터 항목의 저장·조회 결과 확인.
- CSV 38개 열과 줄바꿈·따옴표·수식 형태의 입력 처리 확인.
- 기존 스키마에서 새 마이그레이션 적용 후 기존 신청 데이터 보존 확인.
- 기존 신청의 상태·메모 변경 호환성 확인.
- TypeScript 검사 및 배포용 빌드 완료.
추가 확인이 필요한 항목
- 자동 브라우저 화면 검증.
- 모바일 실기기에서의 입력·단계 이동·운영 화면 확인.
- 지원 브라우저의 WebMCP 실행 검증.
위 화면·브라우저 관련 검증은 당시 도구 접근 제한으로 실행하지 못했다. 구현된 반응형·접근성 요구사항과 실제 화면 검증 완료 여부를 구분한다.
16. 후속 개발 범위
아래 기능은 현재 버전에 포함하지 않는다.
- 문자·카카오 알림톡·이메일 자동 발송 및 발송 이력.
- 신청자 본인의 답변 조회·수정·취소·철회.
- 별도의 상시 회원 계정과 모임 간 공통 프로필 재사용.
- 운영자가 질문을 자유롭게 추가·편집하는 설문 제작기.
- 보관 기간 경과 시 개인정보 자동 파기.
- 회비 결제와 정산.
- 운영자 역할별 세부 권한.
- 회원 간 프로필 공개·매칭·커뮤니티.
- 임시 작성 내용을 브라우저 종료 후 복원하는 기능.
17. 실제 모집 전 운영 준비
- 운영자 계정으로 로그인할 수 있는지 확인한다.
- 실제 모임명·소개·일시·장소·정원·마감을 입력한다.
- 문의처와 개인정보 보관 기간을 확인한다.
- 가입 질문의 필수/선택 구분과 운영원칙을 검토한다.
- 모집 상태를
모집 중으로 변경한다. - 외부 모집 시 사이트 공개 범위를 설정한다.
- 운영자가 휴대전화에서 신청부터 명단 확인까지 직접 점검한다.
- 가입·참가 결과를 어떤 채널로 안내할지 정한다.
- 보관 기간에 따른 개인정보 삭제 담당자를 정한다.