배경
운영자가 점검·사과·이벤트 보상을 보낼 통로가 없다. 기획은 확정됐다 → 우편. 수령할 때 "창고에 들어가는가"를 판정해야 해서 창고 칸 계산(T-063)이 먼저다 (2026-09-22 결정).
할 일
-
[x] 엑셀 우편 템플릿 —
Mail.xlsx/MailTemplateTable한 시트(우편 한 통 = 한 줄 · 첨부도 같은 줄). 이름 확인받음(2026-09-22) -
[x] 상수 — 받은 우편 보관 7일 = 서버
Mail.ClaimedRetention(T-077이 서면 옮긴다) -
[x] DB —
t_user_mail·t_global_mail·t_user_global_mail(우편 3.3) -
[x] 패킷 —
S_MailListResponse·S_MailArrivedResponse·C/S_MailClaim(MailId 0 = 모두 받기)·C/S_MailDelete(39~44) · 결과 코드 900~(MailNotFound·MailAlreadyClaimed·MailNotClaimed) · 인벤토리 부족 =StorageFull(103) -
[x] 수령 — 원자적: 첨부가 전부 들어가야 지급, 아니면 아무것도 안 준다. 첨부 종류 = 아이템·장비·캐릭터·골드·다이아
-
[x] 모두 받기 — 오래된 순, 처음 막힌 우편에서 멈춤, 받은 수·남은 수
-
[x] 삭제 — 받은 우편만. 받은 지 7일 지난 우편은 로그인 때 정리
-
[x] 전체 우편 — 로그인 때 기간 안의 미복사분 복사 + 발송 순간 접속자에게 즉시. 같은 우편을 두 번 받지 않는다
-
[x] 치트
SendMail = 10—Arg1 = 템플릿 TID·Arg2 = UID(0이면 전체)·Server/docs/치트.md2장 갱신 -
[x] 테스트 —
UserMailTest15건 ·MailRepositoryTest5건(실제 SQLite) — 원자적 수령(부족 시 아무것도 안 변함) · 모두 받기 멈춤 · 전체 우편 중복 방지 · 안 받은 우편 삭제 거절 -
[x] 실측 (2026-09-22 · 더미 클라 + 실서버) — 전체 우편 로그인 복사 · 접속 중 개인 우편 도착 · 1통 수령 · 중복 수령 거절 · 안 받은 우편 삭제 거절 · 모두 받기 · 받은 우편 삭제 · 재로그인 목록 일치(전체 우편 재복사 없음). 실측 중 버그 1건 발견·수정 — 접속 중 수신자를 못 찾음(
42923e3). 클라 화면은 T-083
완료 조건
치트로 개인·전체 우편을 보내고, 클라(또는 더미 클라)에서 목록·수령·모두 받기·삭제가 돈다. 창고가 모자라면 인벤토리 부족으로 거절되고 재화·보유가 그대로다.
막고 있는 것 / 선행 일감
- T-063 — 창고 칸 계산
관련 커밋
a0579ce— 엑셀·DB·패킷·수령/모두 받기/삭제·전체 우편·치트·테스트 20건42923e3— 접속 중 수신자 조회 수정(UserManager.TryGetUserByUid) · 더미 클라 우편 메뉴