무료 워크숍 — 대기자 자리 제안 전달안 예제: 정원 20명, 회원별 1석, 기존 회원 식별 사용. 2026-10-12 14:00 행사, 접수 종료 10-11 18:00, 표시 시각은 Asia/Seoul. 결제·단체·우선권·정원 감축 제외. 목적: 취소 자리를 접수 순서대로 제안하되 참석 의사를 다시 확인한다. 대기 접수·자리 제안·참석 확정을 분리한다. 빈자리 예상 시각이나 참석 보장은 하지 않는다. 순서: 서버가 접수를 확정한 순서. 같은 시각이면 서버 접수 순번으로 결정한다. 한 회원은 이 회차에 활성 대기·보류·확정 중 하나만 가진다. 대기자에게 다른 신청자의 정보는 공개하지 않는다. 정원: 확정 수 + 유효한 자리 보류 수 ≤ 20. 보류된 자리는 일반 신청에 내주지 않는다. 활성 대기자가 있으면 신규 신청도 대기열 뒤에 들어간다. 배정 중 조건이 바뀌면 현재 상태로 다시 판정한다. 새 제안: 빈자리와 활성 대기자가 있고 접수 종료까지 24시간 이상 남았을 때만 선두에게 1석을 원자적으로 보류한다. 제안 생성 시점 + 24시간이 응답 기한이다. 이 예제의 마지막 새 제안은 10-10 18:00이다. 이후에는 빈자리여도 새 제안·일반 접수를 멈춘다. 수락: 본인·해당 회차·현재 제안·유효 보류를 확인하고 원자 처리 안에서 확인한 서버 시각이 응답 기한과 접수 종료보다 모두 빠를 때 확정한다. 화면 클릭 시각은 기준이 아니다. 보류 1석을 확정 1석으로 바꾼다. 중복: 이미 확정된 같은 제안의 수락 재요청은 기존 확정 결과를 반환한다. 만료된 제안으로 새 보류를 만들지 않는다. 회원의 다른 활성 신청으로 연결해서도 안 된다. 종료: 제안 거절·대기 철회·기한 만료는 해당 대기/제안을 종료하고 연결된 보류만 한 번 반환한다. 확정 후 취소도 확정 좌석을 한 번 반환한다. 만료 정리 작업과 수락은 같은 원자 판정으로 경쟁을 막는다. 재신청: 거절·철회·만료·확정 취소 후 자동으로 순번을 되살리지 않는다. 새 제안 가능 시간 안에 본인이 다시 신청하면 새 접수 순서로 맨 뒤에 들어간다. 기존 링크는 이전 종료 상태를 보여 준다. 알림: 제안을 먼저 기록하고 그 제안에 연결해 이메일을 보낸다. 발송 요청·전달 실패·열람·수락은 별도 기록이다. 실패나 결과 미확인은 운영 확인 대상으로 두고 같은 제안만 재전송한다. 보류 추가·기한 자동 연장·발송 성공을 수락으로 간주하지 않는다. 기한이 지나면 재전송하지 않는다. 화면: 행사명·일시·응답 기한의 날짜와 시간대·현재 상태·가능한 행동을 함께 표시한다. 제안 중에는 수락/거절, 확정에는 내 신청 확인/취소, 종료에는 종료 이유와 재신청 가능 여부를 보여 준다. 결과 미확인은 현재 신청 조회로 연결하며 확정으로 표시하지 않는다. 기록: 신청 접수 순서, 제안 생성·기한·종료 사유, 좌석 변경 전후, 수락 판정 시각, 알림 결과, 운영 조치자를 연결한다. 관리자도 정원·순서·기한을 우회할 수 없다. 정책 변경은 별도 승인·문서 갱신 사항이다. 인계: 기획은 순서와 경계 조건표, 디자인은 상태별 문구·행동·상태 알림 접근성, 개발은 좌석/제안 원자 전이와 알림 재시도, QA는 12개 검수의 입력/기대/실제 결과, 운영은 전달 실패·좌석 불일치의 확인 기록을 남긴다. 출시 기준: 중복 보류·초과 확정·만료 수락·옛 링크가 새 신청에 영향을 주는 문제 중 하나라도 재현되면 배포를 막고 같은 순서로 재검수한다. 이 문서는 가상 설계이며 실제 행사 연동 시험을 끝냈다는 뜻은 아니다.