Skip to content

docs: API 문서 자동 동기화 — 2026-05-18 - #10

Open
GOOHAESEUNG wants to merge 1 commit into
mainfrom
docs/auto-sync-20260518-140643
Open

GOOHAESEUNG wants to merge 1 commit into
mainfrom
docs/auto-sync-20260518-140643

Conversation

@GOOHAESEUNG

@GOOHAESEUNG GOOHAESEUNG commented May 18, 2026

Copy link
Copy Markdown
Member

자동 동기화 알림

SURF-BE dev 브랜치의 컨트롤러/DTO 변경사항이 감지되어 API 문서를 자동 동기화합니다.

새로 생성된 문서

auth/apple-app-login.md
auth/apple-web-callback.md
auth/kakao-app-login.md
auth/redirect-to-apple.md
badge/get-badge-single.md
member/agree-terms.md
member/dismiss-member.md
member/expel-member.md

주의사항

  • 자동 생성된 문서는 스켈레톤입니다
  • 머지 전 아래 항목을 확인해주세요:
    • 요청/응답 예시 JSON 보완
    • 비즈니스 로직 설명 추가
    • 에러 케이스 보완
    • SUMMARY.md 목차 순서 확인

🤖 이 PR은 GitHub Actions에 의해 자동 생성되었습니다.

Summary by CodeRabbit

  • Documentation
    • Added API documentation for Apple and Kakao authentication flows
    • Documented member dismissal, expulsion, and terms agreement features
    • Added badge retrieval endpoint documentation
    • Updated documentation table of contents with new links

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR adds API endpoint documentation for authentication flows (Apple and Kakao login), member management operations (dismissal, expulsion, terms agreement), and badge retrieval. The SUMMARY.md table of contents is updated to link to eight new documentation files that each specify endpoint paths, authentication requirements, request/response contracts, and example payloads.

Changes

API Documentation Expansion

Layer / File(s) Summary
Summary TOC updates
SUMMARY.md
SUMMARY.md table of contents updated to include links to four new authentication endpoints, three new member management endpoints, and one new badge endpoint.
Authentication endpoint documentation
auth/redirect-to-apple.md, auth/apple-web-callback.md, auth/apple-app-login.md, auth/kakao-app-login.md
Four new authentication endpoint documentation files added, each specifying endpoint path, required Authorization header, request body schema (identityToken/nonce for Apple app, accessToken for Kakao app, code/state for Apple callback), and LoginResDTO response contracts with example JSON payloads.
Member management endpoint documentation
member/agree-terms.md, member/dismiss-member.md, member/expel-member.md
Three new member management endpoint documentation files added for terms agreement, member dismissal, and member expulsion, each documenting endpoint path, JWT authentication with MEMBER+ or MANAGER+ authorization, required headers and path parameters, and success response examples.
Badge retrieval endpoint documentation
badge/get-badge-single.md
Single badge endpoint documentation added for GET /v1/admin/badges/{badgeId}, specifying JWT authentication with MANAGER+ authorization, badgeId path parameter, and BadgeDetailResDTO response fields with example payload.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

Poem

🐰 Eight new docs hopped into place,
Auth, members, badges with style and grace,
API contracts now crystal clear,
The table of contents updated here—
SURF-docs grows, feature by feature!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs: API 문서 자동 동기화 — 2026-05-18' accurately describes the main change: automated synchronization of API documentation. It is concise, clear, and directly reflects the purpose of adding/updating 8 new API documentation files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/auto-sync-20260518-140643

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@auth/apple-app-login.md`:
- Around line 40-59: The response example in auth/apple-app-login.md doesn't
match the documented LoginResDTO fields; update the JSON example under **응답 예시**
so "data" contains an object matching LoginResDTO (include nickname, email,
accessToken, refreshToken, profileImageUrl with realistic sample values) and
keep the top-level code/message; ensure the field names exactly match the table
(nickname, email, accessToken, refreshToken, profileImageUrl) and remove the
current "data": null.
- Around line 40-51: The LoginResDTO response table is malformed; fix the
Markdown table so the header is "Key | Type | 설명" and each field is a single
aligned row for LoginResDTO: nickname (String, nickname), email (String, email),
accessToken (String, accessToken), refreshToken (String, refreshToken),
profileImageUrl (String, profileImageUrl); remove the stray quoted/translated
cells and any extra rows (those around 닉네임/이메일/URL/포함) so the table renders
correctly for the LoginResDTO fields.
- Around line 10-21: The document has conflicting auth requirements: change the
"인증 필요 여부" and "권한" statements to require authentication (e.g., set to "필요" /
"인증 필요") so they match the Headers section that marks Authorization as required;
ensure the top-level lines (the "인증 필요 여부" and "권한" fields) and any descriptive
text mention that the request must include the Authorization: Bearer {JWT_TOKEN}
header and that the Headers table still marks Authorization as 필수 (O).

In `@auth/apple-web-callback.md`:
- Around line 40-59: The example response JSON is inconsistent with the
documented LoginResDTO; replace the `"data": null` example with a `data` object
that matches LoginResDTO fields (nickname, email, accessToken, refreshToken,
profileImageUrl) and realistic sample values, ensuring the response shape and
keys in the example mirror the table definition for LoginResDTO exactly.
- Around line 40-51: The LoginResDTO table is malformed causing unclear field
contracts; fix the Markdown table for LoginResDTO by rewriting each row into a
proper three-column table (Key | Type | 설명) and ensure the following fields are
present and correctly described: nickname (String, 닉네임), email (String, 이메일),
accessToken (String, accessToken 포함 여부/용도), refreshToken (String, refreshToken),
and profileImageUrl (String, 이미지 URL). Locate the LoginResDTO block in
auth/apple-web-callback.md and replace the broken lines (currently around the
nickname/email/accessToken/refreshToken/profileImageUrl entries) with properly
formatted table rows so consumers can reliably read the DTO contract.
- Around line 10-21: 문서의 인증 상태가 상충하므로 "인증 필요 여부: 불필요"와 요청 헤더 테이블의 "Authorization
필수" 중 하나로 통일하십시오: 만약 이 엔드포인트가 실제로 인증을 요구하면 `인증 필요 여부`와 `권한` 값을 "필요" 또는 적절한 권한
수준으로 변경하고 본문 설명(예: `Authorization: Bearer {JWT_TOKEN}`)을 유지; 반대로 인증이 필요없다면 요청 헤더
테이블에서 `Authorization` 행을 제거하고 관련 설명 블록(Authorization 예시 포함)을 삭제하거나 비필수로(O→선택)
표시하여 `인증 필요 여부`와 헤더 설명이 일치하도록 수정하세요.

In `@auth/kakao-app-login.md`:
- Around line 37-56: The response example JSON doesn't match the documented
LoginResDTO; update the example to return the DTO fields (nickname, email,
accessToken, refreshToken, profileImageUrl) under "data" instead of "null".
Ensure the example structure matches the documented types and naming
(LoginResDTO) and include realistic sample values for each field so the "data"
object demonstrates the exact shape consumers should expect.
- Around line 10-21: 문서의 인증 표기와 헤더 필수 표기가 충돌합니다: "인증 필요 여부"와 "권한" 섹션(현재 "불필요")과
요청 헤더 표에서 Authorization이 필수로 표기된 부분을 일치시켜 주세요; 즉, 결정(인증 필요 또는 불필요)을 선택한 뒤 "인증 필요
여부"와 "권한" 텍스트(예: 인증 필요: O / 권한: 인증 필요)와 요청 헤더 표의 Authorization 필드(필수 O 또는 선택적)
모두를 동일하게 변경하고, 문서 내부의 설명 문구(Authorization: Bearer {JWT_TOKEN})가 선택한 정책에 맞도록
업데이트하여 혼선을 제거하세요.
- Around line 37-48: The LoginResDTO response table is malformed; replace the
junk rows and broken cells with a clean, accurate field table for LoginResDTO
listing each key, type and description (nickname: String - nickname, email:
String - email, accessToken: String - access token, refreshToken: String -
refresh token, profileImageUrl: String - profile image URL) so the contract is
readable and machine‑parsable; update the auth/kakao-app-login.md LoginResDTO
section to remove the stray non-English/garbled rows and ensure consistent
column headers (Key | Type | 설명).

In `@auth/redirect-to-apple.md`:
- Around line 10-21: The document currently contradicts itself: the "인증 필요 여부"
section states "불필요" but the headers table and the preceding note require an
Authorization header; update the doc to follow the "인증 불필요" policy by removing
or neutralizing the requirement for Authorization—specifically edit the note
that begins with "요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다." and the
Headers table entry for Authorization (change 필수 from O to X or remove the row),
and ensure the "인증 필요 여부" and "권한" lines remain "불필요" so the "Authorization
header" requirement and the section headings are consistent.

In `@badge/get-badge-single.md`:
- Around line 37-52: The response schema declares data as BadgeDetailResDTO but
the example shows "data": null; update the documentation so the example matches
the declared DTO or explicitly state nullable behavior: replace the example JSON
with a valid BadgeDetailResDTO object matching keys (badgeId, name, imageUrl,
description, requirement) or add a separate nullable example and document when
data can be null; ensure references to BadgeDetailResDTO and the "data" field in
the Body/응답 예시 sections are consistent.
- Around line 1-47: The document violates multiple Markdown lint rules
(MD041/MD022/MD058/MD031) due to inconsistent header levels and spacing and
malformed fences; fix by normalizing header syntax (use consistent ATX headers
such as "## 배지 단건 조회", "### 개요", "### 엔드포인트", "### 인증", "### 요청 (Request)", "###
응답 (Response)"), ensure exactly one blank line before and after each header and
remove extra consecutive blank lines, replace or properly format the <details>
block as valid Markdown (or remove it) and ensure all fenced code blocks have
opening and closing backticks with a language tag (e.g., ```json) and no stray
inline HTML or unmatched fences; update the sections that reference
BadgeDetailResDTO and the example JSON to use a proper fenced block and
consistent spacing so MD041/MD022/MD058/MD031 are resolved.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 50367e04-6143-474a-ac7c-b616ac459aef

📥 Commits

Reviewing files that changed from the base of the PR and between db3a049 and 042151d.

📒 Files selected for processing (9)
  • SUMMARY.md
  • auth/apple-app-login.md
  • auth/apple-web-callback.md
  • auth/kakao-app-login.md
  • auth/redirect-to-apple.md
  • badge/get-badge-single.md
  • member/agree-terms.md
  • member/dismiss-member.md
  • member/expel-member.md

Comment thread auth/apple-app-login.md
Comment on lines +10 to +21
- **인증 필요 여부:** 불필요
- **권한:** 인증 불필요

> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
> `Authorization: Bearer {JWT_TOKEN}`

### 요청 (Request)

**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

인증 요구사항이 상충됩니다.

Line 10-11은 인증 불필요, Line 13-21은 Authorization 필수(O)입니다. 하나의 계약으로 통일해 주세요.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 19-19: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/apple-app-login.md` around lines 10 - 21, The document has conflicting
auth requirements: change the "인증 필요 여부" and "권한" statements to require
authentication (e.g., set to "필요" / "인증 필요") so they match the Headers section
that marks Authorization as required; ensure the top-level lines (the "인증 필요 여부"
and "권한" fields) and any descriptive text mention that the request must include
the Authorization: Bearer {JWT_TOKEN} header and that the Headers table still
marks Authorization as 필수 (O).

Comment thread auth/apple-app-login.md
Comment on lines +40 to +59
**Body (LoginResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| 닉네임" | "사용자 | 닉네임" |
| nickname | String | nickname |
| 이메일" | "사용자 | 이메일" |
| email | String | email |
| accessToken | String | accessToken |
| 포함 | 클라이언트만 | 포함 |
| refreshToken | String | refreshToken |
| URL" | 이미지 | URL" |
| profileImageUrl | String | profileImageUrl |

**응답 예시**
```json
{
"code": 200,
"message": "요청이 성공적으로 처리되었습니다.",
"data": null
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

응답 스키마와 예시가 불일치합니다.

Line 40-51은 DTO 필드를 명시하지만 Line 58은 "data": null입니다. 예시를 실제 로그인 응답 형태로 맞춰야 합니다.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 41-41: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 54-54: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/apple-app-login.md` around lines 40 - 59, The response example in
auth/apple-app-login.md doesn't match the documented LoginResDTO fields; update
the JSON example under **응답 예시** so "data" contains an object matching
LoginResDTO (include nickname, email, accessToken, refreshToken, profileImageUrl
with realistic sample values) and keep the top-level code/message; ensure the
field names exactly match the table (nickname, email, accessToken, refreshToken,
profileImageUrl) and remove the current "data": null.

Comment thread auth/apple-app-login.md
Comment on lines +40 to +51
**Body (LoginResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| 닉네임" | "사용자 | 닉네임" |
| nickname | String | nickname |
| 이메일" | "사용자 | 이메일" |
| email | String | email |
| accessToken | String | accessToken |
| 포함 | 클라이언트만 | 포함 |
| refreshToken | String | refreshToken |
| URL" | 이미지 | URL" |
| profileImageUrl | String | profileImageUrl |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

응답 DTO 표가 비정상 행으로 깨져 있습니다.

Line 43/45/48/50 행 때문에 LoginResDTO 필드 설명이 손상되었습니다. 표를 정상 키/타입/설명 행으로 정리해 주세요.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 41-41: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/apple-app-login.md` around lines 40 - 51, The LoginResDTO response table
is malformed; fix the Markdown table so the header is "Key | Type | 설명" and each
field is a single aligned row for LoginResDTO: nickname (String, nickname),
email (String, email), accessToken (String, accessToken), refreshToken (String,
refreshToken), profileImageUrl (String, profileImageUrl); remove the stray
quoted/translated cells and any extra rows (those around 닉네임/이메일/URL/포함) so the
table renders correctly for the LoginResDTO fields.

Comment on lines +10 to +21
- **인증 필요 여부:** 불필요
- **권한:** 인증 불필요

> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
> `Authorization: Bearer {JWT_TOKEN}`

### 요청 (Request)

**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

인증 섹션과 요청 헤더 요구가 충돌합니다.

Line 10-11은 인증 불필요인데, Line 13-21은 Authorization 필수(O)로 문서화되어 있습니다. 둘 중 하나를 기준으로 정정이 필요합니다.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 19-19: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/apple-web-callback.md` around lines 10 - 21, 문서의 인증 상태가 상충하므로 "인증 필요 여부:
불필요"와 요청 헤더 테이블의 "Authorization 필수" 중 하나로 통일하십시오: 만약 이 엔드포인트가 실제로 인증을 요구하면 `인증
필요 여부`와 `권한` 값을 "필요" 또는 적절한 권한 수준으로 변경하고 본문 설명(예: `Authorization: Bearer
{JWT_TOKEN}`)을 유지; 반대로 인증이 필요없다면 요청 헤더 테이블에서 `Authorization` 행을 제거하고 관련 설명
블록(Authorization 예시 포함)을 삭제하거나 비필수로(O→선택) 표시하여 `인증 필요 여부`와 헤더 설명이 일치하도록 수정하세요.

Comment on lines +40 to +59
**Body (LoginResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| 닉네임" | "사용자 | 닉네임" |
| nickname | String | nickname |
| 이메일" | "사용자 | 이메일" |
| email | String | email |
| accessToken | String | accessToken |
| 포함 | 클라이언트만 | 포함 |
| refreshToken | String | refreshToken |
| URL" | 이미지 | URL" |
| profileImageUrl | String | profileImageUrl |

**응답 예시**
```json
{
"code": 200,
"message": "요청이 성공적으로 처리되었습니다.",
"data": null
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

응답 Body 정의와 예시 JSON이 서로 불일치합니다.

Line 40-51은 LoginResDTO 반환으로 설명하지만, Line 58은 "data": null입니다. 로그인 API라면 실제 data 예시를 DTO 구조로 맞춰주세요.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 41-41: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 54-54: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/apple-web-callback.md` around lines 40 - 59, The example response JSON
is inconsistent with the documented LoginResDTO; replace the `"data": null`
example with a `data` object that matches LoginResDTO fields (nickname, email,
accessToken, refreshToken, profileImageUrl) and realistic sample values,
ensuring the response shape and keys in the example mirror the table definition
for LoginResDTO exactly.

Comment thread auth/kakao-app-login.md
Comment on lines +37 to +56
**Body (LoginResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| 닉네임" | "사용자 | 닉네임" |
| nickname | String | nickname |
| 이메일" | "사용자 | 이메일" |
| email | String | email |
| accessToken | String | accessToken |
| 포함 | 클라이언트만 | 포함 |
| refreshToken | String | refreshToken |
| URL" | 이미지 | URL" |
| profileImageUrl | String | profileImageUrl |

**응답 예시**
```json
{
"code": 200,
"message": "요청이 성공적으로 처리되었습니다.",
"data": null
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

응답 정의와 예시 JSON이 서로 맞지 않습니다.

Line 37-48은 DTO 반환인데 Line 55는 "data": null입니다. 로그인 응답 예시는 DTO 필드를 포함하도록 갱신해 주세요.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 38-38: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 51-51: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/kakao-app-login.md` around lines 37 - 56, The response example JSON
doesn't match the documented LoginResDTO; update the example to return the DTO
fields (nickname, email, accessToken, refreshToken, profileImageUrl) under
"data" instead of "null". Ensure the example structure matches the documented
types and naming (LoginResDTO) and include realistic sample values for each
field so the "data" object demonstrates the exact shape consumers should expect.

Comment thread auth/kakao-app-login.md
Comment on lines +37 to +48
**Body (LoginResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| 닉네임" | "사용자 | 닉네임" |
| nickname | String | nickname |
| 이메일" | "사용자 | 이메일" |
| email | String | email |
| accessToken | String | accessToken |
| 포함 | 클라이언트만 | 포함 |
| refreshToken | String | refreshToken |
| URL" | 이미지 | URL" |
| profileImageUrl | String | profileImageUrl |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

LoginResDTO 필드 테이블이 깨져 계약 해석이 어렵습니다.

Line 40/42/45/47의 비정상 행을 포함한 표는 자동생성 오류로 보입니다. 정상 필드 정의로 교체가 필요합니다.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 38-38: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/kakao-app-login.md` around lines 37 - 48, The LoginResDTO response table
is malformed; replace the junk rows and broken cells with a clean, accurate
field table for LoginResDTO listing each key, type and description (nickname:
String - nickname, email: String - email, accessToken: String - access token,
refreshToken: String - refresh token, profileImageUrl: String - profile image
URL) so the contract is readable and machine‑parsable; update the
auth/kakao-app-login.md LoginResDTO section to remove the stray
non-English/garbled rows and ensure consistent column headers (Key | Type | 설명).

Comment thread auth/redirect-to-apple.md
Comment on lines +10 to +21
- **인증 필요 여부:** 불필요
- **권한:** 인증 불필요

> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
> `Authorization: Bearer {JWT_TOKEN}`

### 요청 (Request)

**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

인증 요구사항이 서로 모순됩니다.

Line 10-11은 “인증 불필요”인데, Line 13-21은 Authorization 헤더를 필수(O)로 강제합니다. 한쪽으로 통일해야 클라이언트가 잘못 구현하지 않습니다.

✅ Suggested fix (인증 불필요 기준)
 ### 인증
 - **인증 필요 여부:** 불필요
 - **권한:** 인증 불필요
 
-> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
-> `Authorization: Bearer {JWT_TOKEN}`
-
 ### 요청 (Request)
 
 **Headers**
 | Key | Type | 설명 | 필수 |
 |-----|------|------|------|
-| Authorization | String | Bearer 토큰 | O |
+| - | - | 헤더 없음 | - |
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 19-19: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@auth/redirect-to-apple.md` around lines 10 - 21, The document currently
contradicts itself: the "인증 필요 여부" section states "불필요" but the headers table
and the preceding note require an Authorization header; update the doc to follow
the "인증 불필요" policy by removing or neutralizing the requirement for
Authorization—specifically edit the note that begins with "요청 헤더(Header)에 아래와 같이
Authorization 필드를 포함해야 합니다." and the Headers table entry for Authorization
(change 필수 from O to X or remove the row), and ensure the "인증 필요 여부" and "권한"
lines remain "불필요" so the "Authorization header" requirement and the section
headings are consistent.

Comment thread badge/get-badge-single.md
Comment on lines +1 to +47
## 배지 단건 조회

### 개요
배지 단건 조회

### 엔드포인트
`GET /v1/admin/badges/{badgeId}`

### 인증
- **인증 필요 여부:** JWT 인증 필요
- **권한:** 관리자만 접근 가능 (MANAGER 이상)

> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
> `Authorization: Bearer {JWT_TOKEN}`

### 요청 (Request)

**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |

**Path Parameters**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| badgeId | Long | badgeId | O |

---

### 응답 (Response)

**성공**
| HTTP Status | 의미 |
|-------------|------|
| 200 OK | 요청 성공 |

**Body (BadgeDetailResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
| name | String | name |
| imageUrl | String | imageUrl |
| description | String | description |
| requirement | String | requirement |

**응답 예시**
```json

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Markdown lint 경고(MD041/MD022/MD058/MD031)를 정리해 주세요.

현재 헤더 레벨/공백 규칙 위반이 다수 있습니다(예: Line 1, 3, 6, 9, 19, 24, 33, 38, 47). 문서 CI 안정성을 위해 한 번에 정리하는 게 좋습니다.

제안 수정안 (일부)
-## 배지 단건 조회
+# 배지 단건 조회
 
 ### 개요
+
 배지 단건 조회
 
 ### 엔드포인트
+
 `GET /v1/admin/badges/{badgeId}`
 
 ### 인증
+
 - **인증 필요 여부:** JWT 인증 필요
 - **권한:** 관리자만 접근 가능 (MANAGER 이상)
 
@@
 **Headers**
+
 | Key | Type | 설명 | 필수 |
 |-----|------|------|------|
 | Authorization | String | Bearer 토큰 | O |
 
 **Path Parameters**
+
 | Key | Type | 설명 | 필수 |
 |-----|------|------|------|
 | badgeId | Long | badgeId | O |
@@
 **성공**
+
 | HTTP Status | 의미 |
 |-------------|------|
 | 200 OK | 요청 성공 |
 
 **Body (BadgeDetailResDTO)**
+
 | Key | Type | 설명 |
 |-----|------|------|
 | badgeId | Long | badgeId |
@@
 **응답 예시**
+
 ```json
 {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## 배지 단건 조회
### 개요
배지 단건 조회
### 엔드포인트
`GET /v1/admin/badges/{badgeId}`
### 인증
- **인증 필요 여부:** JWT 인증 필요
- **권한:** 관리자만 접근 가능 (MANAGER 이상)
> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
> `Authorization: Bearer {JWT_TOKEN}`
### 요청 (Request)
**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |
**Path Parameters**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| badgeId | Long | badgeId | O |
---
### 응답 (Response)
**성공**
| HTTP Status | 의미 |
|-------------|------|
| 200 OK | 요청 성공 |
**Body (BadgeDetailResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
| name | String | name |
| imageUrl | String | imageUrl |
| description | String | description |
| requirement | String | requirement |
**응답 예시**
```json
# 배지 단건 조회
### 개요
배지 단건 조회
### 엔드포인트
`GET /v1/admin/badges/{badgeId}`
### 인증
- **인증 필요 여부:** JWT 인증 필요
- **권한:** 관리자만 접근 가능 (MANAGER 이상)
> 요청 헤더(Header)에 아래와 같이 Authorization 필드를 포함해야 합니다.
> `Authorization: Bearer {JWT_TOKEN}`
### 요청 (Request)
**Headers**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| Authorization | String | Bearer 토큰 | O |
**Path Parameters**
| Key | Type | 설명 | 필수 |
|-----|------|------|------|
| badgeId | Long | badgeId | O |
---
### 응답 (Response)
**성공**
| HTTP Status | 의미 |
|-------------|------|
| 200 OK | 요청 성공 |
**Body (BadgeDetailResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
| name | String | name |
| imageUrl | String | imageUrl |
| description | String | description |
| requirement | String | requirement |
**응답 예시**
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 1-1: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)


[warning] 3-3: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 6-6: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 9-9: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 19-19: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 24-24: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 33-33: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 38-38: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 47-47: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@badge/get-badge-single.md` around lines 1 - 47, The document violates
multiple Markdown lint rules (MD041/MD022/MD058/MD031) due to inconsistent
header levels and spacing and malformed fences; fix by normalizing header syntax
(use consistent ATX headers such as "## 배지 단건 조회", "### 개요", "### 엔드포인트", "###
인증", "### 요청 (Request)", "### 응답 (Response)"), ensure exactly one blank line
before and after each header and remove extra consecutive blank lines, replace
or properly format the <details> block as valid Markdown (or remove it) and
ensure all fenced code blocks have opening and closing backticks with a language
tag (e.g., ```json) and no stray inline HTML or unmatched fences; update the
sections that reference BadgeDetailResDTO and the example JSON to use a proper
fenced block and consistent spacing so MD041/MD022/MD058/MD031 are resolved.

Comment thread badge/get-badge-single.md
Comment on lines +37 to +52
**Body (BadgeDetailResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
| name | String | name |
| imageUrl | String | imageUrl |
| description | String | description |
| requirement | String | requirement |

**응답 예시**
```json
{
"code": 200,
"message": "요청이 성공적으로 처리되었습니다.",
"data": null
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

응답 스키마와 예시가 서로 모순됩니다.

Line 37-45에서는 dataBadgeDetailResDTO라고 명시했는데, Line 51 예시는 "data": null입니다. 소비자 입장에서 파싱 계약이 깨집니다. 예시를 DTO 형태로 맞추거나, nullable 응답 조건을 명확히 분리해 주세요.

제안 수정안
 {
   "code": 200,
   "message": "요청이 성공적으로 처리되었습니다.",
-  "data": null
+  "data": {
+    "badgeId": 1,
+    "name": "string",
+    "imageUrl": "https://example.com/badge.png",
+    "description": "string",
+    "requirement": "string"
+  }
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Body (BadgeDetailResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
| name | String | name |
| imageUrl | String | imageUrl |
| description | String | description |
| requirement | String | requirement |
**응답 예시**
```json
{
"code": 200,
"message": "요청이 성공적으로 처리되었습니다.",
"data": null
}
**Body (BadgeDetailResDTO)**
| Key | Type | 설명 |
|-----|------|------|
| badgeId | Long | badgeId |
| name | String | name |
| imageUrl | String | imageUrl |
| description | String | description |
| requirement | String | requirement |
**응답 예시**
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 38-38: Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


[warning] 47-47: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@badge/get-badge-single.md` around lines 37 - 52, The response schema declares
data as BadgeDetailResDTO but the example shows "data": null; update the
documentation so the example matches the declared DTO or explicitly state
nullable behavior: replace the example JSON with a valid BadgeDetailResDTO
object matching keys (badgeId, name, imageUrl, description, requirement) or add
a separate nullable example and document when data can be null; ensure
references to BadgeDetailResDTO and the "data" field in the Body/응답 예시 sections
are consistent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant