Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
da8f84c
프로젝트 생성
seungbin-kim Nov 24, 2024
ae23c74
Chore: swagger 의존성 추가
seungbin-kim Nov 24, 2024
bdafcf5
Config: yml 파일 설정
seungbin-kim Nov 24, 2024
4c2ace1
Chore: 버전 변경, 의존성 추가
seungbin-kim Nov 25, 2024
0543c00
Feat: 설문조사 생성 구현
seungbin-kim Nov 25, 2024
f38ea3f
Refactor: enum 변환 부분 수정
seungbin-kim Nov 25, 2024
2268988
Feat: 부모 객체에서 연관관계 설정
seungbin-kim Nov 26, 2024
18447d5
Test: 설문조사 생성 테스트코드 작성
seungbin-kim Nov 26, 2024
229ad1c
Feat: 최대 항목 수 제한 적용
seungbin-kim Nov 26, 2024
e36455a
Fix: ID 타입 수정
seungbin-kim Nov 26, 2024
ac22fbc
Feat: 설문조사 수정 API 구현
seungbin-kim Nov 26, 2024
7b19b0f
Refactor: 설문조사 수정 리팩토링
seungbin-kim Nov 27, 2024
7032131
Fix: 선택 리스트 반환 전 조건 검사 추가
seungbin-kim Nov 27, 2024
e3c8797
Test: 설문조사 생성 테스트 수정
seungbin-kim Nov 27, 2024
df105be
Docs: Swagger Docs 수정
seungbin-kim Nov 27, 2024
97b5a81
Test: 설문조사 수정 테스트 작성
seungbin-kim Nov 27, 2024
e6a091e
Style: DTO 코드 포맷팅 수정
seungbin-kim Nov 27, 2024
a862f09
Style: 파라미터 변수명 수정
seungbin-kim Nov 27, 2024
ad987fa
Fix: 경로변수 어노테이션 수정
seungbin-kim Nov 27, 2024
719a620
Feat: 설문조사 응답 제출 API 구현
seungbin-kim Nov 28, 2024
6825a59
Fix: 기존 제출값 저장하도록 수정
seungbin-kim Nov 29, 2024
d5d66e6
Feat: 설문조사 응답 조회 API 구현
seungbin-kim Nov 29, 2024
d76691d
Docs: README 수정
seungbin-kim Nov 29, 2024
adbb3d1
Docs: Swagger Tag Name 수정
seungbin-kim Nov 29, 2024
e3b51e5
Docs: README.md 수정
seungbin-kim Nov 29, 2024
f0e2fa0
Docs: API 명세 설명 추가
seungbin-kim Nov 30, 2024
3c29f44
Docs: README.md 수정
seungbin-kim Nov 30, 2024
97d106d
Fix: 항목 중복제출 수정
seungbin-kim Nov 30, 2024
0883aee
Feat: 설계 변경하여 재구현
seungbin-kim Dec 5, 2024
7d2ae9e
Docs: API 문서 주소 수정
seungbin-kim Dec 6, 2024
851f1a7
Refactor: 필드 이름 변경 및 메서드 분리
seungbin-kim Dec 6, 2024
d1a4f32
Docs: README.md 수정
seungbin-kim Dec 6, 2024
237f615
Docs: 이미지 변경
seungbin-kim Dec 6, 2024
9b2af50
Docs: README.md 수정
seungbin-kim Dec 7, 2024
12efce9
Merge remote-tracking branch 'origin/main'
seungbin-kim Dec 7, 2024
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
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
### 테이블 설계

![image](https://github.com/user-attachments/assets/a72cfbbf-697c-4991-b12e-1221db709dce)
- DB 접속(로컬실행)
- H2 Console
- http://localhost:8080/h2-console
- JDBC URL: jdbc:h2:mem:test
- User Name: sa
- API 문서
- http://localhost:8080/swagger-ui/index.html (로컬실행)
- [온라인으로 바로보기](https://redocly.github.io/redoc/?url=https://github.com/user-attachments/files/18027424/survey_ksb.json)
- jar 다운로드
- https://drive.google.com/file/d/15vBMIY7dVEULLbzPP0A2vp1sUdMuEgdf/view?usp=sharing
- java -jar survey-0.0.1-SNAPSHOT.jar

### 고민

- (초기구현) 모든 정보를 RDB 컬럼으로 관리
- 요구사항을 구현하기 위한 코드가 복잡해졌음
- 기능이 추가된다면 데이터 관리가 매우 힘들어지고 많은 양의 코드를 작성해야 할 것 같았음
- 결국 JSON 형태를 저장하지만 검색을 고려한 구현으로 바꾸어야 함을 느낌
- (현재) 설문 정보와 질문 정보를 JSON 형태로 저장
- 코드의 양을 많이 줄일 수 있었고, 단순해졌음
- 질문이름=답변내용 검색을 위해 조회용 "답변이력" 테이블을 이용
- 설문조사 제출시 해당 시점의 질문정보와 답변내용을 쪼개어 저장
- 컬럼 인덱스를 활용해 질문 조회를 고려하고, 응답은 JSON
- (설문식별자 + 질문이름)[현재선택] or (설문식별자 + 질문이름 + 답변내용) 고민
- 답변 내용은 내용이 길거나 부분 검색을 해야하면 인덱스 생성이 적절하지 않을 것 같았음

---

# 이너써클 BE 온보딩 프로젝트

## 온보딩 프로젝트의 목적
Expand Down
41 changes: 41 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.6'
id 'io.spring.dependency-management' version '1.1.6'
}

group = 'ic2.onboarding'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'com.navercorp.fixturemonkey:fixture-monkey-starter:1.0.18'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
252 changes: 252 additions & 0 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading