feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat : Mock API 컨트롤러 및 Response mock 메서드 구현 - #455

Merged
essaysir merged 5 commits into
devfrom
feature/mock-api
Dec 13, 2025
Merged

feat : Mock API 컨트롤러 및 Response mock 메서드 구현#455
essaysir merged 5 commits into
devfrom
feature/mock-api

Conversation

@essaysir

@essaysiressaysir commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

📋 Summary

프론트엔드 개발 및 테스트를 위한 Mock API 엔드포인트를 추가했습니다.
인증 없이 사용 가능하며, 실제 API와 동일한 응답 형식을 제공합니다.

🎯 목적

  • 백엔드 API 개발 전 프론트엔드 개발 진행 가능
  • 실제 데이터베이스 없이 UI/UX 테스트 가능
  • API 응답 형식 사전 검증

🔗 제공 엔드포인트

1. 리포트 조회

  • URL: GET /api/mock/notes/report
  • 인증: 불필요
  • 설명: 임장 리포트 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"reportDTO": {
"reportId": 1,
"indoorKeyWord": "상당히 쾌적한 실내",
"publicSpaceKeyWord": "훌륭한 공용 공간",
"locationConditionsWord": "좋은 편인 입지 조건",
"indoorRate": 4.6,
"publicSpaceRate": 4.3,
"locationConditionsRate": 4.7,
"totalRate": 4.5
},
"limjangDto": {
"limjangId": 1,
"checkListVersion": "LIMJANG",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_4.jpeg"
],
"purposeCode": 1,
"nickname": "우성 아파트",
"priceType": 0,
"priceList": [
"500000000"
],
"address": "서울특별시 강남구 테헤란로 123",
"addressDetail": "101동 1001호",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T14:20:00"
}
}
}

2. 녹음 및 메모 조회

  • URL: GET /api/mock/notes/records
  • 인증: 불필요
  • 설명: 녹음 파일 및 메모 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"limjangId": 1,
"memo": "- 베란다 확장 공사 완료. 냉기 차단 잘 됨 \n - 단지내 어린이집",
"createdAt": "2024-11-15T10:30:00",
"updatedAt": "2024-11-20T17:00:00",
"recordDto": []
}
}

3. 최근 임장 조회

  • URL: GET /api/mock/notes/recent
  • 인증: 불필요
  • 설명: 메인화면에서 최근 임장 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"recentUpdatedList": [
{
"limjangId": 1,
"priceType": 0,
"image": "https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"nickname": "우성 아파트",
"price": "3010000000",
"totalAverage": "4.5",
"address": ""
}
]
}
}

4. 마이노트 목록 조회

  • URL: `GET /api/mock/notes/mynotes
  • 인증: 불필요
  • 설명: 사용자의 노트 목록 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"notes": [
{
"noteId": 1,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"name": "우성 아파트",
"imageUrl": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_3.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock_png_4.jpeg"
],
"isScraped": true,
"rate": "3.63",
"price": "3010000000",
"monthlyRent": null,
"pyong": 28,
"floor": "10",
"address": "서울 송파구 잠실동 101-1",
"shortAddress": "서울시"
}
]
}
}

5. 임장 상세 조회

  • URL: GET /api/mock/notes/detail
  • 인증: 불필요
  • 설명: 임장 상세 정보 조회

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"isShared": true,
"purposeType": "RESIDENTIAL_PURPOSE",
"propertyType": "APARTMENT",
"priceType": "SALE",
"buildingName": "우성 아파트",
"images": [
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_1.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_2.jpeg",
"https://juinjang-bucket.s3.ap-northeast-2.amazonaws.com/mock/mock-png_3.jpeg"
],
"roadAddress": "서울 송파구 잠실동",
"addressDetail": "101-1",
"price": "3010000000",
"monthlyRent": null,
"updatedAt": "23.12.01",
"floor": "10",
"pyong": 28,
"bcode": "1168010100",
"sido": "서울특별시",
"sigungu": "송파구",
"bname1": "잠실동",
"bname2": ""
}
}
}

6. 체크리스트 조회

  • URL : GET /api/mock/notes/checklists
  • 인증 : 불필요
  • 설명 : 임장 체크리스트 답변 조회 (입지여건, 공용공간, 실내)

응답 예시:

{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"answerId": 1,
"questionId": 1,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "5",
"answerType": "SCORE"
},
{
"answerId": 2,
"questionId": 2,
"category": "LOCATION_CONDITION",
"limjangId": 1,
"answer": "2호선 신당역",
"answerType": "DROPDOWN"
},
{
"answerId": 20,
"questionId": 20,
"category": "PUBLIC_SPACE",
"limjangId": 1,
"answer": "2대",
"answerType": "TEXT_FIELD"
},
{
"answerId": 25,
"questionId": 25,
"category": "INDOOR",
"limjangId": 1,
"answer": "설치형에어컨",
"answerType": "DROPDOWN"
}
.... ]
}

⚠️ 주의사항

  • Mock 데이터이므로 실제 데이터베이스와 연동되지 않습니다
  • 동일한 고정된 데이터를 반환합니다
  • 실제 API 개발 완료 후 해당 엔드포인트로 교체 필요

@essaysir
essaysir merged commit 41447e6 into devDec 13, 2025
1 check passed
Sign up for freeto 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

@essaysir