F4. 공감

F4. 공감(좋아요)

핵심 기능 — 이 서비스의 낙찰 방식을 결정하는 기능이다.

1. 기능명

사연 공감(좋아요) 및 가중치 반영

2. 기능 목적

사연에 대한 공감이 그 사연의 입찰 포인트를 실제로 올린다.

  • 가격 경쟁이 아니라 공감이 낙찰을 결정하게 한다
  • 주최자의 공감에 큰 가중치를 두어, 물건을 내놓은 사람의 마음이 결과에 반영되게 한다
  • 주최자가 결과에 개입하는 수단을 공감 하나로 일원화한다

변경점 — 기존에는 주최자가 사연에 직접 포인트를 얹는 '가점 입찰' 기능이 별도로 있었다. 공감 가중치와 목적이 겹치고 규칙을 복잡하게 만들어 제거한다.

3. 동작 방식

3.1 가중치

누가 공감했는지에 따라 오르는 포인트가 다르다.

공감한 사람의 관계오르는 포인트
주최자+50 P
참여자+10 P
방문자+10 P

판정 기준은 auction.user_id === 사용자 ID 하나다 (00-관계-판정). 사용자 유형을 조회하지 않는다.

3.2 반영

사연의 입찰 포인트 += 가중치

공감은 사연의 입찰 포인트에 직접 더해진다. 별도의 카운터가 아니라 낙찰 계산에 쓰이는 값이다.

3.3 토글

공감은 켜고 끌 수 있다.

동작처리
공감공감 목록에 추가 + 입찰 포인트 가중치만큼 증가
공감 해제공감 목록에서 제거 + 입찰 포인트 가중치만큼 감소

해제 시 차감액은 공감할 때 적용된 가중치와 동일해야 한다.

3.4 제한

대상공감
비회원-
자기가 쓴 사연-
그 외 모든 사연O

3.5 처리 순서

동시 조작으로 값이 어긋나지 않도록, 클릭 시점의 최신 값을 기준으로 계산한다.

  1. 클릭 시점에 해당 사연의 최신 공감 목록과 입찰 포인트를 다시 조회한다
  2. 조회한 값을 기준으로 공감 목록과 입찰 포인트를 계산한다
  3. 갱신 요청을 보낸다
  4. 성공 시 화면을 갱신하고 안내를 표시한다

3.6 표시

  • 사연 카드에 공감 수와 공감 여부(활성/비활성)를 표시한다
  • 사연의 현재 입찰 포인트를 함께 표시한다
  • 공감 아이콘의 활성 색은 경고색(레드)이 아닌 서비스 기본 강조색 체계를 따른다

4. 예외 처리

상황처리
비회원이 공감 시도로그인 화면으로 유도하고, 로그인 후 원래 경매로 복귀시킨다
자기 사연에 공감 시도공감 버튼을 노출하지 않는다
마감된 경매공감을 차단한다. 기존 공감 수는 그대로 표시하되 버튼은 비활성화한다
중복 클릭 / 빠른 연타처리 중에는 버튼을 비활성화한다. 요청이 중복 반영되지 않아야 한다
동시에 여러 사용자가 공감3.5에 따라 클릭 시점의 최신 값을 조회해 계산한다. 값이 덮어써지지 않아야 한다
공감 요청 실패화면 상태를 원래대로 되돌리고 실패 안내를 표시한다. 성공한 것처럼 보이지 않아야 한다
공감 해제 요청 실패동일하게 원래 상태로 되돌린다
사연 정보 조회 실패공감 버튼을 비활성 상태로 두고 재시도를 안내한다
가중치 판정 불가 (경매 정보 조회 실패)공감을 진행하지 않는다. 잘못된 가중치로 반영되는 것보다 실패가 안전하다
공감 직후 사연이 삭제됨갱신 요청이 실패하므로 목록을 다시 조회해 화면을 맞춘다

5. 완료 조건

#조건
1주최자의 공감이 +50 P, 그 외 사용자의 공감이 +10 P 반영된다
2가중치 판정에 users.role을 조회하지 않는다. 경매 소유 여부만 사용한다
3공감 해제 시 적용된 가중치와 같은 값이 차감된다
4자기가 쓴 사연에는 공감 버튼이 노출되지 않는다
5마감된 경매에서 공감이 차단된다
6연타·동시 조작에도 입찰 포인트가 어긋나지 않는다
7요청 실패 시 화면이 원래 상태로 복원된다
8주최자 가점 입찰 기능이 서비스에 존재하지 않는다
9공감으로 오른 포인트가 낙찰 계산(F5)에 그대로 반영된다