|
10 | 10 | - `user_tag`는 prefix 없이 생성되는 8자리 이하의 랜덤 문자열입니다. |
11 | 11 | - 프로필 아바타는 자유 입력 이모지가 아니라 `character_type` 선택 방식으로 관리합니다. |
12 | 12 | - `GET /api/v1/me/mypage`는 상단 요약 조회, `GET /api/v1/me/recap`은 상세 리캡 조회에 사용합니다. |
| 13 | +- `GET /api/v1/me/credits/history`는 로그인한 사용자의 크레딧 적립/소비 내역을 `offset/size` 기반으로 조회합니다. |
13 | 14 | - 프론트는 `philosopher_type` 값에 따라 사전 정의된 철학자 카드를 통째로 교체 렌더링합니다. |
14 | 15 | - 그래서 백엔드는 철학자 카드용 `title`, `description`, 해시태그 문구를 내려주지 않습니다. |
15 | | -- 포인트(`point`)는 새 개념으로 도입하되, 이번 버전에서는 현재 DB에서 계산 가능한 항목만 부분 반영합니다. |
16 | | -- 현재 반영 규칙은 `완료된 사후 투표 x 10P`, `입장 변경 x 20P 보너스`입니다. |
| 16 | +- 현재 크레딧(`current_point`)은 `users.credit` 캐시 컬럼 기준으로 조회합니다. |
| 17 | +- 현재 반영 크레딧 타입은 `BATTLE_VOTE(5)`, `MAJORITY_WIN(10)`, `BEST_COMMENT(50)`, `WEEKLY_CHARGE(40)`, `FREE_CHARGE(가변)` 입니다. |
| 18 | +- 다수결/베댓 보상은 매주 월요일 00:00(KST) 배치로 정산하며 대상 배틀 윈도우는 `runDate - 20일`부터 `runDate - 14일`까지입니다. |
| 19 | +- 베댓 보상은 배틀당 좋아요 상위 3개 관점만 대상이며 각 관점은 좋아요 10개 이상이어야 합니다. |
17 | 20 | - 철학자 산출 로직은 추후 확정 예정이며, 현재는 프론트 연동을 위해 임시로 `SOCRATES`를 반환합니다. |
18 | 21 |
|
19 | 22 | ### 1.1 공통 프로필 응답 필드 |
|
33 | 36 | | `character_type` | `OWL \| FOX \| WOLF \| LION \| PENGUIN \| BEAR \| RABBIT \| CAT` | |
34 | 37 | | `activity_type` | `COMMENT \| LIKE` | |
35 | 38 | | `vote_side` | `PRO \| CON` | |
| 39 | +| `credit_type` | `BATTLE_VOTE \| MAJORITY_WIN \| BEST_COMMENT \| WEEKLY_CHARGE \| FREE_CHARGE` | |
36 | 40 |
|
37 | 41 | --- |
38 | 42 |
|
|
236 | 240 | } |
237 | 241 | ``` |
238 | 242 |
|
239 | | -### 3.5 `GET /api/v1/share/recap` |
| 243 | +### 3.5 `GET /api/v1/me/credits/history` |
| 244 | + |
| 245 | +로그인한 사용자의 크레딧 적립/소비 내역 조회. |
| 246 | + |
| 247 | +쿼리 파라미터: |
| 248 | + |
| 249 | +- `offset`: 선택, 0-based 시작 위치 |
| 250 | +- `size`: 선택 |
| 251 | + |
| 252 | +응답: |
| 253 | + |
| 254 | +```json |
| 255 | +{ |
| 256 | + "statusCode": 200, |
| 257 | + "data": { |
| 258 | + "items": [ |
| 259 | + { |
| 260 | + "id": 301, |
| 261 | + "credit_type": "BEST_COMMENT", |
| 262 | + "amount": 50, |
| 263 | + "reference_id": 200, |
| 264 | + "created_at": "2026-04-13T00:00:00" |
| 265 | + }, |
| 266 | + { |
| 267 | + "id": 300, |
| 268 | + "credit_type": "BATTLE_VOTE", |
| 269 | + "amount": 5, |
| 270 | + "reference_id": 12345, |
| 271 | + "created_at": "2026-04-12T14:30:00" |
| 272 | + } |
| 273 | + ], |
| 274 | + "next_offset": 20, |
| 275 | + "has_next": true |
| 276 | + }, |
| 277 | + "error": null |
| 278 | +} |
| 279 | +``` |
| 280 | + |
| 281 | +### 3.6 `GET /api/v1/share/recap` |
240 | 282 |
|
241 | 283 | 현재 로그인한 사용자의 리캡 공유 키 발급. |
242 | 284 | 이미 발급된 키가 있으면 동일 키를 재사용합니다. |
|
253 | 295 | } |
254 | 296 | ``` |
255 | 297 |
|
256 | | -### 3.6 `GET /api/v1/share/recap/{shareKey}` |
| 298 | +### 3.7 `GET /api/v1/share/recap/{shareKey}` |
257 | 299 |
|
258 | 300 | 공유 키로 다른 사용자의 리캡 조회. |
259 | 301 | 인증 없이 호출 가능합니다. |
|
292 | 334 | } |
293 | 335 | ``` |
294 | 336 |
|
295 | | -### 3.5 `GET /api/v1/me/notification-settings` |
| 337 | +### 3.8 `GET /api/v1/me/notification-settings` |
296 | 338 |
|
297 | 339 | 마이페이지 알림 설정 조회. |
298 | 340 |
|
|
313 | 355 | } |
314 | 356 | ``` |
315 | 357 |
|
316 | | -### 3.6 `PATCH /api/v1/me/notification-settings` |
| 358 | +### 3.9 `PATCH /api/v1/me/notification-settings` |
317 | 359 |
|
318 | 360 | 마이페이지 알림 설정 부분 수정. |
319 | 361 |
|
|
343 | 385 | } |
344 | 386 | ``` |
345 | 387 |
|
346 | | -### 3.7 `GET /api/v1/me/notices` |
| 388 | +### 3.10 `GET /api/v1/me/notices` |
347 | 389 |
|
348 | 390 | 공지/이벤트 목록 조회. |
349 | 391 |
|
|
372 | 414 | } |
373 | 415 | ``` |
374 | 416 |
|
375 | | -### 3.8 `GET /api/v1/me/notices/{noticeId}` |
| 417 | +### 3.11 `GET /api/v1/me/notices/{noticeId}` |
376 | 418 |
|
377 | 419 | 공지/이벤트 상세 조회. |
378 | 420 |
|
|
0 commit comments