2026-10-06
later/로 뺐다 — 당분간 하지 않기로 했다 (사용자 결정). 할 때가 되면 루트로 되돌린다.
배경
각자 로컬 게임 서버를 쓰면서 경매장만 내 Docker 것을 함께 쓰는 조합이 필요하다 — 서로의 매물이 보여야 한다. T-109에서 떼어 냈다 (2026-10-02). 지금 경매장은 게임 서버 하나를 전제로 짜여 있어 게임 서버가 둘 이상 붙으면 다음이 깨진다:
| 무엇 | 문제 |
|---|---|
seller_id·buyer_id |
게임 서버마다 SQLite가 따로라 계정 ID가 둘 다 1번부터 — 판매자를 구분할 수 없다 |
listing_id |
게임 서버의 trade_id를 그대로 쓴다 — 서버끼리 겹치면 멱등 처리 때문에 남의 매물이 등록되지 않는다 |
FetchEvents·AckEvents |
이벤트를 서버 구분 없이 준다 — 내 서버가 남의 취소·만료 이벤트를 가져가 지운다 |
| 판매 대금 정산 | 구매자의 게임 서버가 자기 DB에서 정산한다 — 판매자가 다른 서버면 판매자 골드를 넣을 방법이 없다 |
경매장 원칙은 유지한다 — 메인이 항상 호출자, 경매장은 메인을 부르지 않는다 (Server/AuctionProtocol/auction.proto).
할 일
- [ ]
auction.proto에string server_id추가 — 매물·판매자·구매자·이벤트를(server_id, 기존 ID)쌍으로 구분 - [ ] 게임 서버 설정(
appsettings또는 환경변수)에ServerId— 사람마다 정한다 (예:jinwoo,taewoong) - [ ] 경매장 DB 키를
(server_id, listing_id)로 · 기존auction.sqlite3이행 - [ ]
FetchEvents·AckEvents를server_id별로 거른다 - [ ] 정산 흐름 변경 — 구매자 서버는 구매자 골드만 차감, "판매됨" 이벤트를 판매자 서버가
FetchEvents로 가져가 골드 지급 - [ ] 경매장
10060외부 노출 + 최소한의 접근 제한 (공유 키 · VPN 한정 등) - [ ]
Server/docs/경매장.md갱신 - [ ] 실측 — 두 PC의 로컬 게임 서버가 내 경매장에 붙어 서로 등록·구매하고, 판매자 쪽에 대금이 들어온다
완료 조건
로컬 게임 서버 두 대가 한 경매장에 붙어 서로의 매물을 사고팔 수 있고, 판매 대금이 판매자 서버에 정확히 들어간다.
계정 ID·trade_id가 겹쳐도 섞이지 않는다.
⚠️ 각자 로컬 서버라 치트로 만든 아이템·골드가 경매장을 통해 남의 서버로 흘러간다. 테스트 단계라 허용하지만, 실서비스 구조에서는 이 조합을 막는다.
막고 있는 것 / 선행 일감
T-109— 경매장 Docker화 · 게임 서버의 경매장 주소 설정화
관련 커밋
- 없음