F3. 사연 작성·입찰

F3. 사연 작성 · 입찰

핵심 기능 — 이 서비스를 일반 경매와 구분 짓는 기능이다.

1. 기능명

사연 작성 및 포인트 입찰

2. 기능 목적

사용자가 왜 이 물건이 자신에게 필요한지를 글로 써서 경매에 참여한다.

  • 가격이 아니라 이야기로 입찰한다
  • 작성한 사연에 포인트를 걸어 참여 의지를 표현한다
  • 사연은 다른 참여자의 공감(F4)을 받아 최종 가치가 결정된다

3. 동작 방식

3.1 전체 흐름

사연 작성과 포인트 입찰은 2단계로 분리된다.

1단계  사연 작성      →  글을 등록한다 (포인트 0으로 시작)
2단계  포인트 입찰    →  자기 사연에 포인트를 건다 (누적 가능)

1단계를 마치면 관계가 방문자 → 참여자로 전이된다. 2단계는 그 이후 여러 번 반복할 수 있다.

3.2 1단계 — 사연 작성

항목내용
권한방문자만
진입경매 상세의 사연 작성하기 버튼 → /episode/{auctionId}
제한한 경매에 사연 1개

입력 항목

항목필수길이
제목O2자 이상 50자 이하
내용O5자 이상 1,000자 이하

작성 가이드 — 화면에 다음 안내를 함께 노출한다.

  • 진정성 있는 개인적인 이야기를 들려주세요
  • 이 경험이 왜 의미있는지 설명해주세요
  • 당신의 특별한 순간과 어떤 연관이 있는지 공유해주세요

주최자 제외

주최자는 자기 경매에 사연을 쓸 수 없다. 버튼 자체를 노출하지 않는다.

자기 경매에 자기가 낙찰되는 것은 의미가 없고, 주최자의 공감이 +50p 가중치를 갖기 때문에(F4) 자기 사연에 자기가 가점을 주는 자기거래가 성립한다.

3.3 2단계 — 포인트 입찰

항목내용
권한참여자 (자기 사연에만)
진입경매 상세의 자기 사연 카드 → 입찰 버튼
방식누적 — 기존 입찰 포인트에 더한다

입찰 단계 — 전 서비스 공통 고정

숫자를 직접 입력하지 않는다. + / − 버튼으로 단계를 오르내린다.

1,000 → 1,500 → 2,000 → 2,500 → 3,000
항목
시작1,000 P
단위+500 P
상한3,000 P
  • 경매마다 다르지 않다. 모든 경매가 같은 단계를 쓴다
  • 사연 작성 시 기본 1,000 P로 시작하고, +를 눌러 올린다
  • 상한(3,000)에 도달하면 + 버튼을 비활성화한다
  • 보유 포인트를 넘는 단계는 선택할 수 없다. 해당 단계부터 + 버튼을 비활성화한다

수정

입찰 포인트는 사연 작성 후에도 단계를 올릴 수 있다. 내릴 수는 없다. 올린 만큼 추가 차감되고, 내리기(환불)는 사연 삭제로만 가능하다.

3.4 사연 수정 · 삭제

동작권한
수정사연 작성자만
삭제사연 작성자만

삭제 버튼을 누르면 확인 다이얼로그를 세운다. 받은 공감이 함께 사라지므로 되돌릴 수 없다.

삭제 시 처리 — 확정

항목처리
건 포인트전액 반환 (입찰 철회로 간주)
받은 공감사연과 함께 소멸
관계참여자 → 방문자 전이
재작성허용 — 같은 경매에 다시 쓸 수 있다

반환은 포인트 내역(F8)에 적립 항목으로 남긴다. 차감 기록을 지우지 않는다.

재작성을 허용해도 악용 위험이 낮은 이유

  • 재작성하면 작성 시각이 늦어져 동점 시 구조적으로 불리해진다 (F5 3.2.1)
  • 쌓인 공감이 리셋되므로 이미 공감을 받은 사연을 갈아엎을 유인이 없다

즉, 규칙으로 막지 않아도 낙찰 규칙 자체가 억제 장치로 작동한다.

마감 이후 삭제 — 확정

마감된 경매에서는 낙찰 여부에 따라 삭제 가능 여부가 갈린다.

사연삭제처리
낙찰된 사연불가거래 기록이므로 보존한다
미낙찰 사연가능포인트는 마감 시 이미 반환되었으므로 추가 정산이 없다. 받은 공감만 소멸한다
  • 미낙찰 사연을 삭제해도 재작성은 불가능하다. 경매가 이미 마감되었기 때문이다
  • 낙찰 사연 삭제 시도 시 안내: "낙찰된 사연은 지울 수 없어요"

사연은 개인적인 이야기를 담는 콘텐츠이므로, 거래 기록으로 남아야 하는 낙찰작을 제외하고는 본인이 정리할 수 있어야 한다.

3.5 최종 입찰 포인트

사연의 최종 가치는 다음 합으로 결정된다.

최종 입찰 포인트 = 본인이 건 포인트 + 받은 공감 가중치 합 (F4)

3.6 사연 목록

경매 상세 아래에 붙는다. 목록이 곧 랭킹이다.

정렬 — 최종 입찰 포인트 높은 순. 같으면 먼저 작성한 순 (F5 3.2.1)

카드에 담는 것 — 5개

1위  ·  닉네임  ·  1,250 P  ·  ♥ 3
사연 제목
사연 내용 두 줄까지만 보이고...  더보기
표시내용
순위정렬 결과
닉네임
최종 입찰 포인트
공감 수 · 공감 버튼F4
제목 · 내용내용은 두 줄까지만, 더보기로 펼친다

더보기는 넘칠 때만 나온다

상황표시
내용이 두 줄을 넘음두 줄에서 끊고 끝에 를 붙인다. 더보기를 카드 오른쪽 아래에 둔다
내용이 두 줄 안에 다 들어옴더보기도 두지 않는다

더보기를 오른쪽에 두는 이유는 엄지가 닿는 쪽이기 때문이다. 대부분 오른손으로 잡으므로 왼쪽 아래는 가장 멀다. 펼칠 것이 없는데 더보기가 보이면 눌러도 아무 일이 없어 신뢰를 깎는다.

담지 않는 것

항목사유
마스킹된 이메일개인정보를 노출할 이유가 없다
작성일순위에 이미 반영되어 있다
프로필 이미지닉네임으로 충분하다

사연은 최대 1,000자다. 목록에서 전문을 펼치지 않는다. 카드가 길어지면 다른 사연을 훑을 수 없다.

목록 분량 — 확정

사연이 100건 모여도 한 화면에 다 붙이지 않는다.

항목
추가 로딩더보기 버튼으로 이어 붙인다
버튼 문구더보기개수를 적지 않는다
한 번에 붙이는 수10건 (구현값)
내 사연목록 맨 위에 순위와 함께 고정한다. 아래 목록에서는 중복해 보여주지 않는다

개수를 사용자에게 약속하지 않는다. 총 개수는 목록 제목(모인 사연 12)이 이미 알려주므로 버튼에까지 숫자를 넣으면 같은 정보가 두 번 나온다. 10건은 구현이 고르는 값이지 사용자와의 약속이 아니다.

자동 무한 스크롤을 쓰지 않는다.

  • 목록이 곧 랭킹이므로 "몇 명 중 몇 위"라는 규모 감각이 필요하다. 목록 제목의 총 개수가 이를 담당한다
  • 경매 상세 하단에는 고정된 참여 버튼이 있다. 스크롤이 끝나지 않으면 사용자가 페이지 끝에 도달하지 못한다

내 사연을 고정하는 이유는 F5 3.2.1이다. 동점자가 마감 전에 자기 순위를 알고 대응(추가 입찰)할 수 있어야 하는데, 100건 중 47위인 사연을 찾으려고 목록을 내리게 만들면 그 요건이 사실상 무너진다.

내 사연은 목록 위치와 무관하게 수정·삭제 버튼을 함께 노출한다.

4. 예외 처리

4.1 권한·상태

상황처리
비회원이 사연 작성 시도로그인 화면으로 유도하고, 로그인 후 원래 경매로 복귀시킨다
주최자가 접근사연 작성 버튼을 노출하지 않는다. 직접 URL 진입 시 경매 상세로 되돌린다
이미 사연을 쓴 참여자버튼을 '사연 작성 완료' 비활성 상태로 표시한다. 숨기지 않는다
마감된 경매사연 작성·입찰을 모두 차단한다. 마감 오버레이를 표시한다
작성 중 경매가 마감됨제출 시점에 서버가 재검증하여 거부하고, "경매가 마감되었습니다" 안내 후 경매 상세로 이동시킨다
존재하지 않는 경매"경매를 찾을 수 없습니다" 안내 후 목록으로 이동 경로를 제공한다

4.2 입력 검증

상황안내
제목 2자 미만 / 내용 5자 미만"제목은 2자 이상 입력해주세요" / "내용은 5자 이상 입력해주세요"
제목 50자 / 내용 1,000자 초과실시간으로 남은 글자 수를 표시하고, 한도 도달 시 경고색으로 전환한다
공백만 입력미입력으로 처리한다

4.3 입찰 검증

모든 검증은 서버에서 최종 확인한다. 클라이언트 검증은 안내용이다.

상황처리
보유 포인트 부족감당할 수 없는 단계부터 + 버튼을 비활성화한다. 1,000 P도 안 되면 사연 작성 진입 시 안내한다
상한(3,000) 도달+ 버튼을 비활성화한다
이미 최고 단계로 입찰함입찰 버튼을 비활성화하고 "최대까지 입찰했습니다"를 표시한다
단계를 내리려는 시도− 버튼은 아직 확정하지 않은 입력 중에만 동작한다. 확정된 입찰은 내릴 수 없다

직접 입력이 없으므로 숫자 형식·범위 검증이 필요 없다. 버튼이 곧 검증이다.

4.4 처리 실패

상황처리
사연은 저장됐으나 입찰이 실패사연은 유지된다. "사연은 등록되었습니다. 포인트 입찰을 다시 시도해주세요" 안내 후 입찰만 재시도할 수 있게 한다. 사연을 되돌리지 않는다
사연 저장 실패실패 안내 후 입력한 내용을 유지한 채 화면에 머무른다
입찰 요청 실패입력값을 초기화하고 모달은 유지한다. 반영 여부를 최신 값으로 다시 조회해 표시한다
중복 제출처리 중에는 제출 버튼을 비활성화한다
동시에 여러 기기에서 입찰서버가 최신 누적액 기준으로 재검증한다. 상한을 넘으면 거부하고 실제 값으로 화면을 갱신한다

5. 완료 조건

#조건
1방문자만 사연 작성 버튼을 볼 수 있다. 유형 조건 없이 관계로만 판정된다
2주최자에게 사연 작성 버튼이 노출되지 않고, 직접 진입도 차단된다
3한 경매에 사연이 1개만 등록되고, 이미 쓴 경우 '사연 작성 완료' 비활성으로 표시된다
4사연 작성 직후 방문자 → 참여자 전이가 화면에 즉시 반영된다
5입찰이 1,000 P에서 시작해 +500 단위로 오르고, 3,000 P를 넘지 못한다
6보유 포인트를 초과하는 단계가 선택되지 않고, 서버에서도 거부된다
6-1입찰 화면에 숫자 직접 입력이 없다
7사연 저장 성공 + 입찰 실패 상황에서 사연이 유실되지 않는다
8마감된 경매에서 사연 작성·입찰이 모두 차단된다
9사연 작성·입찰 흐름 전체에서 모드 전환을 요구하는 안내가 0건이다