Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class ChatController {
- `small` (기본): 노드 5개
- `empty`: 노드 0개
- `large`: 노드 50개
- `max`: 노드 100개
"""
)
@ApiResponses(value = {
Expand All @@ -64,13 +65,13 @@ public class ChatController {
"code": "CHAT201-1",
"message": "트리가 성공적으로 생성되었습니다.",
"data": {
"tree_id": 12,
"treeId": 12,
"nodes": [
{ "node_id": 1, "title": "자료구조", "memo": "데이터를 조직하고 저장하는 방법", "parent_id": null, "order_id": 1 },
{ "node_id": 2, "title": "알고리즘", "parent_id": null, "order_id": 2 },
{ "node_id": 3, "title": "배열", "memo": "연속된 메모리 공간", "parent_id": 1, "order_id": 1 },
{ "node_id": 4, "title": "스택", "memo": "LIFO 자료구조", "parent_id": 1, "order_id": 2 },
{ "node_id": 5, "title": "정렬", "parent_id": 2, "order_id": 1 }
{ "nodeId": 1, "name": "자료구조", "memo": "데이터를 조직하고 저장하는 방법", "parentId": null, "orderId": 1 },
{ "nodeId": 2, "name": "알고리즘", "parentId": null, "orderId": 2 },
{ "nodeId": 3, "name": "배열", "memo": "연속된 메모리 공간", "parentId": 1, "orderId": 1 },
{ "nodeId": 4, "name": "스택", "memo": "LIFO 자료구조", "parentId": 1, "orderId": 2 },
{ "nodeId": 5, "name": "정렬", "parentId": 2, "orderId": 1 }
]
}
}
Expand All @@ -83,7 +84,7 @@ public class ChatController {
"isSuccess": true,
"code": "CHAT201-1",
"message": "트리가 성공적으로 생성되었습니다.",
"data": { "tree_id": 99, "nodes": [] }
"data": { "treeId": 99, "nodes": [] }
}
"""
),
Expand All @@ -95,9 +96,9 @@ public class ChatController {
"code": "CHAT201-1",
"message": "트리가 성공적으로 생성되었습니다.",
"data": {
"tree_id": 34,
"treeId": 34,
"nodes": [
{ "node_id": 1, "title": "자료구조", "parent_id": null, "order_id": 1 },
{ "nodeId": 1, "name": "자료구조", "parentId": null, "orderId": 1 },
"... (총 50개 노드, 깊이 3)"
]
}
Expand All @@ -113,7 +114,7 @@ public ApiResponse<JsonNode> chat(
@RequestBody(required = false) ChatReqDTO req,
@Parameter(
description = "Mock 시나리오 선택",
schema = @Schema(allowableValues = {"empty", "small", "large"}, defaultValue = "small"),
schema = @Schema(allowableValues = {"empty", "small", "large", "max"}, defaultValue = "small"),
example = "small"
)
@RequestParam(defaultValue = "small") String scenario
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/mocks/chat/tree-empty.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"tree_id": 99,
"treeId": 99,
"nodes": []
}
102 changes: 51 additions & 51 deletions src/main/resources/mocks/chat/tree-large.json
Original file line number Diff line number Diff line change
@@ -1,66 +1,66 @@
{
"tree_id": 34,
"treeId": 34,
"nodes": [
{ "node_id": 1, "title": "자료구조", "memo": "데이터를 조직하고 저장하는 방법", "parent_id": null, "order_id": 1 },
{ "node_id": 2, "title": "알고리즘", "memo": "문제 해결을 위한 절차", "parent_id": null, "order_id": 2 },
{ "node_id": 3, "title": "운영체제", "memo": "하드웨어와 응용 프로그램 사이의 인터페이스", "parent_id": null, "order_id": 3 },
{ "node_id": 4, "title": "네트워크", "parent_id": null, "order_id": 4 },
{ "node_id": 5, "title": "데이터베이스", "memo": "구조화된 데이터의 저장소", "parent_id": null, "order_id": 5 },
{ "nodeId": 1, "name": "자료구조", "memo": "데이터를 조직하고 저장하는 방법", "parentId": null, "orderId": 1 },
{ "nodeId": 2, "name": "알고리즘", "memo": "문제 해결을 위한 절차", "parentId": null, "orderId": 2 },
{ "nodeId": 3, "name": "운영체제", "memo": "하드웨어와 응용 프로그램 사이의 인터페이스", "parentId": null, "orderId": 3 },
{ "nodeId": 4, "name": "네트워크", "parentId": null, "orderId": 4 },
{ "nodeId": 5, "name": "데이터베이스", "memo": "구조화된 데이터의 저장소", "parentId": null, "orderId": 5 },

{ "node_id": 6, "title": "배열", "memo": "연속된 메모리 공간", "parent_id": 1, "order_id": 1 },
{ "node_id": 7, "title": "연결리스트", "parent_id": 1, "order_id": 2 },
{ "node_id": 8, "title": "스택", "memo": "LIFO 자료구조", "parent_id": 1, "order_id": 3 },
{ "node_id": 9, "title": "큐", "memo": "FIFO 자료구조", "parent_id": 1, "order_id": 4 },
{ "node_id": 10, "title": "트리", "memo": "계층적 자료구조", "parent_id": 1, "order_id": 5 },
{ "node_id": 11, "title": "그래프", "parent_id": 1, "order_id": 6 },
{ "node_id": 12, "title": "해시테이블", "memo": "키-값 매핑 자료구조", "parent_id": 1, "order_id": 7 },
{ "nodeId": 6, "name": "배열", "memo": "연속된 메모리 공간", "parentId": 1, "orderId": 1 },
{ "nodeId": 7, "name": "연결리스트", "parentId": 1, "orderId": 2 },
{ "nodeId": 8, "name": "스택", "memo": "LIFO 자료구조", "parentId": 1, "orderId": 3 },
{ "nodeId": 9, "name": "큐", "memo": "FIFO 자료구조", "parentId": 1, "orderId": 4 },
{ "nodeId": 10, "name": "트리", "memo": "계층적 자료구조", "parentId": 1, "orderId": 5 },
{ "nodeId": 11, "name": "그래프", "parentId": 1, "orderId": 6 },
{ "nodeId": 12, "name": "해시테이블", "memo": "키-값 매핑 자료구조", "parentId": 1, "orderId": 7 },

{ "node_id": 13, "title": "이진트리", "memo": "각 노드가 최대 2개의 자식", "parent_id": 10, "order_id": 1 },
{ "node_id": 14, "title": "BST", "memo": "왼쪽 < 부모 < 오른쪽", "parent_id": 10, "order_id": 2 },
{ "node_id": 15, "title": "AVL 트리", "parent_id": 10, "order_id": 3 },
{ "node_id": 16, "title": "힙", "memo": "우선순위 큐 구현용", "parent_id": 10, "order_id": 4 },
{ "nodeId": 13, "name": "이진트리", "memo": "각 노드가 최대 2개의 자식", "parentId": 10, "orderId": 1 },
{ "nodeId": 14, "name": "BST", "memo": "왼쪽 < 부모 < 오른쪽", "parentId": 10, "orderId": 2 },
{ "nodeId": 15, "name": "AVL 트리", "parentId": 10, "orderId": 3 },
{ "nodeId": 16, "name": "힙", "memo": "우선순위 큐 구현용", "parentId": 10, "orderId": 4 },

{ "node_id": 17, "title": "DFS", "memo": "깊이 우선 탐색", "parent_id": 11, "order_id": 1 },
{ "node_id": 18, "title": "BFS", "memo": "너비 우선 탐색", "parent_id": 11, "order_id": 2 },
{ "nodeId": 17, "name": "DFS", "memo": "깊이 우선 탐색", "parentId": 11, "orderId": 1 },
{ "nodeId": 18, "name": "BFS", "memo": "너비 우선 탐색", "parentId": 11, "orderId": 2 },

{ "node_id": 19, "title": "정렬", "parent_id": 2, "order_id": 1 },
{ "node_id": 20, "title": "탐색", "memo": "이진 탐색, 선형 탐색 등", "parent_id": 2, "order_id": 2 },
{ "node_id": 21, "title": "동적계획법", "memo": "부분 문제 결과 재사용", "parent_id": 2, "order_id": 3 },
{ "node_id": 22, "title": "그리디", "parent_id": 2, "order_id": 4 },
{ "node_id": 23, "title": "분할정복", "memo": "문제를 나눠 푼다", "parent_id": 2, "order_id": 5 },
{ "node_id": 24, "title": "백트래킹", "parent_id": 2, "order_id": 6 },
{ "nodeId": 19, "name": "정렬", "parentId": 2, "orderId": 1 },
{ "nodeId": 20, "name": "탐색", "memo": "이진 탐색, 선형 탐색 등", "parentId": 2, "orderId": 2 },
{ "nodeId": 21, "name": "동적계획법", "memo": "부분 문제 결과 재사용", "parentId": 2, "orderId": 3 },
{ "nodeId": 22, "name": "그리디", "parentId": 2, "orderId": 4 },
{ "nodeId": 23, "name": "분할정복", "memo": "문제를 나눠 푼다", "parentId": 2, "orderId": 5 },
{ "nodeId": 24, "name": "백트래킹", "parentId": 2, "orderId": 6 },

{ "node_id": 25, "title": "버블 정렬", "memo": "O(n²)", "parent_id": 19, "order_id": 1 },
{ "node_id": 26, "title": "퀵 정렬", "memo": "평균 O(n log n)", "parent_id": 19, "order_id": 2 },
{ "node_id": 27, "title": "병합 정렬", "memo": "안정 정렬, O(n log n)", "parent_id": 19, "order_id": 3 },
{ "node_id": 28, "title": "힙 정렬", "parent_id": 19, "order_id": 4 },
{ "nodeId": 25, "name": "버블 정렬", "memo": "O(n²)", "parentId": 19, "orderId": 1 },
{ "nodeId": 26, "name": "퀵 정렬", "memo": "평균 O(n log n)", "parentId": 19, "orderId": 2 },
{ "nodeId": 27, "name": "병합 정렬", "memo": "안정 정렬, O(n log n)", "parentId": 19, "orderId": 3 },
{ "nodeId": 28, "name": "힙 정렬", "parentId": 19, "orderId": 4 },

{ "node_id": 29, "title": "메모이제이션", "memo": "Top-down 방식", "parent_id": 21, "order_id": 1 },
{ "node_id": 30, "title": "타뷸레이션", "memo": "Bottom-up 방식", "parent_id": 21, "order_id": 2 },
{ "nodeId": 29, "name": "메모이제이션", "memo": "Top-down 방식", "parentId": 21, "orderId": 1 },
{ "nodeId": 30, "name": "타뷸레이션", "memo": "Bottom-up 방식", "parentId": 21, "orderId": 2 },

{ "node_id": 31, "title": "프로세스", "memo": "실행 중인 프로그램", "parent_id": 3, "order_id": 1 },
{ "node_id": 32, "title": "스레드", "parent_id": 3, "order_id": 2 },
{ "node_id": 33, "title": "스케줄링", "memo": "CPU 할당 순서 결정", "parent_id": 3, "order_id": 3 },
{ "node_id": 34, "title": "메모리 관리", "parent_id": 3, "order_id": 4 },
{ "node_id": 35, "title": "파일시스템", "memo": "데이터의 영구 저장 구조", "parent_id": 3, "order_id": 5 },
{ "nodeId": 31, "name": "프로세스", "memo": "실행 중인 프로그램", "parentId": 3, "orderId": 1 },
{ "nodeId": 32, "name": "스레드", "parentId": 3, "orderId": 2 },
{ "nodeId": 33, "name": "스케줄링", "memo": "CPU 할당 순서 결정", "parentId": 3, "orderId": 3 },
{ "nodeId": 34, "name": "메모리 관리", "parentId": 3, "orderId": 4 },
{ "nodeId": 35, "name": "파일시스템", "memo": "데이터의 영구 저장 구조", "parentId": 3, "orderId": 5 },

{ "node_id": 36, "title": "FCFS", "memo": "First Come First Served", "parent_id": 33, "order_id": 1 },
{ "node_id": 37, "title": "SJF", "memo": "Shortest Job First", "parent_id": 33, "order_id": 2 },
{ "node_id": 38, "title": "라운드 로빈", "parent_id": 33, "order_id": 3 },
{ "nodeId": 36, "name": "FCFS", "memo": "First Come First Served", "parentId": 33, "orderId": 1 },
{ "nodeId": 37, "name": "SJF", "memo": "Shortest Job First", "parentId": 33, "orderId": 2 },
{ "nodeId": 38, "name": "라운드 로빈", "parentId": 33, "orderId": 3 },

{ "node_id": 39, "title": "OSI 7계층", "memo": "물리/데이터링크/네트워크/전송/세션/표현/응용", "parent_id": 4, "order_id": 1 },
{ "node_id": 40, "title": "TCP/IP", "parent_id": 4, "order_id": 2 },
{ "node_id": 41, "title": "HTTP", "memo": "웹의 기본 프로토콜", "parent_id": 4, "order_id": 3 },
{ "node_id": 42, "title": "DNS", "memo": "도메인 → IP 변환", "parent_id": 4, "order_id": 4 },
{ "nodeId": 39, "name": "OSI 7계층", "memo": "물리/데이터링크/네트워크/전송/세션/표현/응용", "parentId": 4, "orderId": 1 },
{ "nodeId": 40, "name": "TCP/IP", "parentId": 4, "orderId": 2 },
{ "nodeId": 41, "name": "HTTP", "memo": "웹의 기본 프로토콜", "parentId": 4, "orderId": 3 },
{ "nodeId": 42, "name": "DNS", "memo": "도메인 → IP 변환", "parentId": 4, "orderId": 4 },

{ "node_id": 43, "title": "HTTP/1.1", "memo": "Keep-Alive 도입", "parent_id": 41, "order_id": 1 },
{ "node_id": 44, "title": "HTTP/2", "memo": "멀티플렉싱 지원", "parent_id": 41, "order_id": 2 },
{ "node_id": 45, "title": "HTTPS", "parent_id": 41, "order_id": 3 },
{ "nodeId": 43, "name": "HTTP/1.1", "memo": "Keep-Alive 도입", "parentId": 41, "orderId": 1 },
{ "nodeId": 44, "name": "HTTP/2", "memo": "멀티플렉싱 지원", "parentId": 41, "orderId": 2 },
{ "nodeId": 45, "name": "HTTPS", "parentId": 41, "orderId": 3 },

{ "node_id": 46, "title": "관계형 DB", "memo": "테이블 기반, ACID 보장", "parent_id": 5, "order_id": 1 },
{ "node_id": 47, "title": "NoSQL", "parent_id": 5, "order_id": 2 },
{ "node_id": 48, "title": "인덱스", "memo": "검색 성능 향상", "parent_id": 5, "order_id": 3 },
{ "node_id": 49, "title": "트랜잭션", "memo": "ACID 속성", "parent_id": 5, "order_id": 4 },
{ "node_id": 50, "title": "정규화", "memo": "중복 제거와 무결성", "parent_id": 5, "order_id": 5 }
{ "nodeId": 46, "name": "관계형 DB", "memo": "테이블 기반, ACID 보장", "parentId": 5, "orderId": 1 },
{ "nodeId": 47, "name": "NoSQL", "parentId": 5, "orderId": 2 },
{ "nodeId": 48, "name": "인덱스", "memo": "검색 성능 향상", "parentId": 5, "orderId": 3 },
{ "nodeId": 49, "name": "트랜잭션", "memo": "ACID 속성", "parentId": 5, "orderId": 4 },
{ "nodeId": 50, "name": "정규화", "memo": "중복 제거와 무결성", "parentId": 5, "orderId": 5 }
]
}
Loading