Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploy for PROD #325

Merged
merged 76 commits into from
Nov 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
3728f85
fix: #292 ๋งˆ์ดํŽ˜์ด์ง€ ๋นˆ์ง‘๊ฑฐ๋ž˜ ๊ฒŒ์‹œ๊ธ€ ์ง‘๊ณ„ ์ฟผ๋ฆฌ ์ถ”๊ฐ€
dldmsql Oct 22, 2023
d378c88
docs: #292 ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
dldmsql Oct 22, 2023
cd94857
Merge pull request #293 from ODOICHON/hotfix/house-service
dldmsql Oct 22, 2023
6144ac7
Merge pull request #294 from ODOICHON/dev
dldmsql Oct 22, 2023
0f6bc1a
fix: #295 DTO ๋ฐ Param ์ˆ˜์ •
dldmsql Oct 24, 2023
ae37653
docs: #295 ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
dldmsql Oct 24, 2023
dc0ffdb
Merge pull request #296 from ODOICHON/hotfix/house-service
dldmsql Oct 24, 2023
356501f
Merge pull request #297 from ODOICHON/dev
dldmsql Oct 24, 2023
32c78b9
fix: #295 DTO ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ
dldmsql Oct 25, 2023
b484020
docs: #295 ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
dldmsql Oct 25, 2023
bb099f1
Merge pull request #298 from ODOICHON/hotfix/house-service
dldmsql Oct 25, 2023
93d0946
Merge pull request #299 from ODOICHON/dev
dldmsql Oct 25, 2023
552a8b5
fix: #300 ๋นˆ์ง‘ ๊ฒŒ์‹œ๊ธ€ ์Šคํฌ๋žฉ ๋ชฉ๋ก ์กฐํšŒ API ํ•„ํ„ฐ ์ถ”๊ฐ€
dldmsql Oct 26, 2023
109a4eb
docs: #300 ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
dldmsql Oct 26, 2023
596f695
Merge pull request #301 from ODOICHON/hotfix/house-service
dldmsql Oct 26, 2023
6770824
Merge pull request #302 from ODOICHON/dev
dldmsql Oct 26, 2023
05c76e8
refactor: #272 ๊ด€๋ฆฌ์žํŽ˜์ด์ง€-์‚ฌ์šฉ์žํŒŒํŠธ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
4b00283
refactor: #272 ๊ด€๋ฆฌ์žํŽ˜์ด์ง€-๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
58e83e9
refactor: #272 ๊ด€๋ฆฌ์žํŽ˜์ด์ง€-๊ฒŒ์‹œ๊ธ€ ๊ด€๋ฆฌ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ
dldmsql Oct 28, 2023
7f99559
refactor: #272 ๊ด€๋ฆฌ์žํŽ˜์ด์ง€-๋นˆ์ง‘ ๊ด€๋ฆฌ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ
dldmsql Oct 28, 2023
14b8f2a
refactor: #272 ์˜คํƒˆ์ž ์ˆ˜์ •
dldmsql Oct 28, 2023
a847997
refactor: #272 ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ - ๊ฒŒ์‹œ๊ธ€ ๊ด€๋ฆฌ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
6fce36c
refactor: #272 ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ - ์‹ ๊ณ  ๊ด€๋ฆฌ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
85fb2fa
refactor: #272 ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ - ์œ ์ € ๊ด€๋ฆฌ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ
dldmsql Oct 28, 2023
38341f4
docs: #272 ๋นŒ๋“œ ํ…Œ์ŠคํŠธ
dldmsql Oct 28, 2023
f4e94f6
refactor: #272 ๊ฒŒ์‹œ๊ธ€ ๋„๋ฉ”์ธ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ
dldmsql Oct 28, 2023
071676e
refactor: #272 ๋Œ“๊ธ€ ๋„๋ฉ”์ธ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ์บ์‹ฑ ์ฝ”๋“œ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
fb70fe7
refactor: #272 ๋นˆ์ง‘ ๋„๋ฉ”์ธ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
4daf078
refactor: #272 ์ข‹์•„์š” ๋„๋ฉ”์ธ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
4987da7
refactor: #272 ์•Œ๋ฆผ ๋„๋ฉ”์ธ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
4f4c0cb
refactor: #272 ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€ ๋„๋ฉ”์ธ ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Oct 28, 2023
e412e3e
refactor: #272 ๋ถˆํ•„์š”ํ•œ import๋ฌธ ์ œ๊ฑฐ
dldmsql Oct 28, 2023
8ad682c
Merge pull request #303 from ODOICHON/refactor/code-style
dldmsql Oct 28, 2023
f535d64
Merge pull request #304 from ODOICHON/dev
dldmsql Oct 28, 2023
036e658
feat: #305 ๊ฒŒ์‹œ๊ธ€, ๋นˆ์ง‘, ์œ ์ € ๋„๋ฉ”์ธ์— ์ธ๋ฑ์Šค ์ƒ์„ฑ
dldmsql Nov 2, 2023
c7a502c
feat: #305 ์กฐํšŒ ์ฟผ๋ฆฌ ํŠœ๋‹
dldmsql Nov 2, 2023
e55287b
fix: #305 ehcache ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ง๋ ฌํ™” ์ถ”๊ฐ€
dldmsql Nov 2, 2023
07843e9
refactor: #305 ์ฃผ์„ ์ถ”๊ฐ€
dldmsql Nov 2, 2023
dc41a77
chore: #305 JDK17 ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ
dldmsql Nov 2, 2023
cc7b61e
Merge pull request #307 from ODOICHON/refactor/query
dldmsql Nov 2, 2023
d7c373d
Merge pull request #308 from ODOICHON/dev
dldmsql Nov 2, 2023
b0792ed
fix: #305 ์ธ๋ฑ์Šค์— ๋”ฐ๋ฅธ ์กฐํšŒ ์กฐ๊ฑด์ ˆ ์ˆœ์„œ ๋ณ€๊ฒฝ
dldmsql Nov 4, 2023
5f6c1f4
docs: index ๋ฌธ์„œ ์‚ญ์ œ
dldmsql Nov 4, 2023
14fd723
docs: index ๋ฌธ์„œ ์ƒˆ๋กœ import
dldmsql Nov 4, 2023
a8459ac
fix: ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ mock ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ
dldmsql Nov 4, 2023
35524ec
Merge pull request #309 from ODOICHON/refactor/query
dldmsql Nov 4, 2023
1733785
fix: #305 ์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง• ์กฐํšŒ ์ฟผ๋ฆฌ ํŠœ๋‹
dldmsql Nov 4, 2023
5911d50
Merge pull request #310 from ODOICHON/refactor/query
dldmsql Nov 4, 2023
10e0077
fix: ๋นˆ์ง‘ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์˜ค๋ฅ˜ ํ•ด๊ฒฐ
dldmsql Nov 5, 2023
0675ad4
Merge pull request #311 from ODOICHON/refactor/query
dldmsql Nov 5, 2023
d2254b3
Merge pull request #312 from ODOICHON/dev
dldmsql Nov 5, 2023
abcabb1
chore: CD์—์„œ ์บ์‹ฑ ์ œ๊ฑฐ
dldmsql Nov 5, 2023
3b2afd1
Merge pull request #313 from ODOICHON/dev
dldmsql Nov 5, 2023
f347186
chore: CD์—์„œ ์บ์‹ฑ ์ œ๊ฑฐ
dldmsql Nov 5, 2023
d27b1a7
Merge pull request #314 from ODOICHON/dev
dldmsql Nov 5, 2023
7bdabb7
chore: CD์—์„œ ์บ์‹ฑ ์ œ๊ฑฐ
dldmsql Nov 5, 2023
f6d7eed
Merge pull request #315 from ODOICHON/dev
dldmsql Nov 5, 2023
9679b83
chore: CD์—์„œ ์บ์‹ฑ ์ œ๊ฑฐ
dldmsql Nov 5, 2023
ffb900e
Merge pull request #316 from ODOICHON/dev
dldmsql Nov 5, 2023
ceff669
chore: dockerfile jdk ๋ฒ„์ „ ์—…
dldmsql Nov 5, 2023
f6dfd98
Merge pull request #317 from ODOICHON/dev
dldmsql Nov 5, 2023
2a082dd
chore: cd ํ”Œ๋กœ์šฐ ์ˆ˜์ •
dldmsql Nov 5, 2023
1140a10
Merge pull request #318 from ODOICHON/dev
dldmsql Nov 5, 2023
9f0d15e
chore: cd ํ”Œ๋กœ์šฐ ์ˆ˜์ •
dldmsql Nov 5, 2023
063f62a
Merge pull request #319 from ODOICHON/dev
dldmsql Nov 5, 2023
cd54085
chore: cd ํ”Œ๋กœ์šฐ ์ˆ˜์ •
dldmsql Nov 5, 2023
2dab400
Merge pull request #320 from ODOICHON/dev
dldmsql Nov 5, 2023
ba50b1f
fix: #305 ์ฟผ๋ฆฌํŠœ๋‹
dldmsql Nov 5, 2023
556a512
fix: #305 ์ฟผ๋ฆฌํŠœ๋‹
dldmsql Nov 5, 2023
97b1955
Merge pull request #321 from ODOICHON/dev
dldmsql Nov 5, 2023
a488dbf
fix: #305 ์ฟผ๋ฆฌํŠœ๋‹
dldmsql Nov 5, 2023
502419c
Merge pull request #322 from ODOICHON/dev
dldmsql Nov 5, 2023
13c43db
fix: #305 ์ฟผ๋ฆฌํŠœ๋‹
dldmsql Nov 5, 2023
78b2599
Merge pull request #323 from ODOICHON/dev
dldmsql Nov 5, 2023
cbfb980
chore: untracked files
dldmsql Nov 6, 2023
d18ba9c
Merge pull request #324 from ODOICHON/dev
dldmsql Nov 6, 2023
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
31 changes: 17 additions & 14 deletions .github/workflows/CD-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,18 @@ jobs:
runs-on: ubuntu-latest

steps:
#jdk ์„ธํŒ…
# 1) ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ์ „ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒดํฌ์•„์›ƒ ํ•„์š”
- uses: actions/checkout@v3
- name: Set up JDK 11

# 2) JDK 17 ๋ฒ„์ „ ์„ค์น˜
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
java-version: 17
distribution: 'zulu'

#gradle ์บ์‹ฑ
- name: Gradle Caching
# 3) Gradle Caching
- name: Gradle Cashing
uses: actions/cache@v3
with:
path: |
Expand All @@ -30,38 +32,39 @@ jobs:
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-


#๋ฐฐํฌ๋ฅผ ์œ„ํ•œ secret yml ์„ค์ •
# 4) Gradle ๊ถŒํ•œ ๋ถ€์—ฌ
- name: Grant execute permission for gradlew
run: chmod +x gradlew

# 5) Set for application-secret.yml
- name: Make application-secret.yml
run: |
cd ./src/main/resources
touch ./application-secret.yml
echo "${{ secrets.PROPERTIES_SECRET }}" > ./application-secret.yml
shell: bash

#๋กœ๊ทธ xml ํŒŒ์ผ ์„ค์ •
# 6) ๋กœ๊ทธ xml ํŒŒ์ผ ์„ค์ •
- name: Make logback-spring.xml
run: |
cd ./src/main/resources
touch ./logback-spring.xml
echo "${{ secrets.LOGBACK_SPRING }}" > ./logback-spring.xml
shell: bash



#test๋ฅผ ํฌํ•จํ•œ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
# 7) jar ํŒŒ์ผ ์ƒ์„ฑ
- name: Build With Gradle
run: ./gradlew bootJar

# Docker ๋นŒ๋“œ & ํ‘ธ์‰ฌ
# 8) Docker ๋นŒ๋“œ & ํ‘ธ์‰ฌ
- name: docker build and push
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY}} .
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY}}

# Deploy (DEV-Server)
# 9) Deploy (DEV-Server)
- name: Deploy (DEV)
uses: appleboy/ssh-action@master
with:
Expand Down
13 changes: 7 additions & 6 deletions .github/workflows/CD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@ jobs:

steps:
#jdk ์„ธํŒ…
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'temurin'
java-version: 17
distribution: 'zulu'

#gradle ์บ์‹ฑ
- name: Gradle Caching
Expand All @@ -35,7 +34,9 @@ jobs:
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-


- name: Grant Execute Permission For Gradlew
run: chmod +x gradlew

#๋ฐฐํฌ๋ฅผ ์œ„ํ•œ secret yml ์„ค์ •
- name: Make application-secret.yml
Expand Down
44 changes: 26 additions & 18 deletions .github/workflows/CI-Sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,42 @@ jobs:
name: Build and analyze
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 11
uses: actions/setup-java@v3

- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: 11
distribution: 'temurin' # Alternative distribution options are available
java-version: 17
distribution: 'zulu'

- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
# - name: Gradle Caching
# uses: actions/cache@v3
# with:
# path: |
# ~/.gradle/caches
# ~/.gradle/wrapper
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle-

- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

- name : Update gradlew access authorized
run: chmod +x gradlew
- name : Clean gradle
run : ./gradlew clean
- name : Stop gradle
run : ./gradlew --stop

# - name : Clean gradle
# run : ./gradlew clean
#
# - name : Stop gradle
# run : ./gradlew --stop

#test๋ฅผ ์œ„ํ•œ mysql์„ค์ •
- name: Start MySQL
Expand All @@ -73,8 +80,9 @@ jobs:
touch ./application-test.yml
echo "${{ secrets.PROPERTIES_TEST }}" > ./application-test.yml
shell: bash

- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew build sonarqube --info
9 changes: 4 additions & 5 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,11 @@ jobs:

steps:
#jdk ์„ธํŒ…
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'temurin'
java-version: 17
distribution: 'zulu'

#gradle ์บ์‹ฑ
- name: Gradle Caching
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:11-jdk
FROM openjdk:17-jdk
ARG JAR_FILE=./build/libs/jhouse_server-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul", "-jar", "/app.jar","--spring.profiles.active=dev"]
5 changes: 2 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.kapt3.base.Kapt.kapt

plugins {
id("org.springframework.boot") version "2.7.8"
Expand Down Expand Up @@ -30,7 +29,7 @@ sonarqube {

group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11
java.sourceCompatibility = JavaVersion.VERSION_17

repositories {
mavenCentral()
Expand Down Expand Up @@ -87,7 +86,7 @@ dependencies {
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
jvmTarget = "17"
}
}

Expand Down
33 changes: 0 additions & 33 deletions scripts/health_check.sh

This file was deleted.

25 changes: 0 additions & 25 deletions scripts/run_new_was.sh

This file was deleted.

28 changes: 0 additions & 28 deletions scripts/switch.sh

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,42 @@ import org.springframework.web.bind.annotation.RequestMapping
@Controller
@RequestMapping("/admin/analysis")
class AdminAnalysisController (
/**
* =============================================================================================
* DI for Service
* =============================================================================================
* */
val analysisService: AnalysisService
){

/**
* =============================================================================================
* ์‚ฌ์šฉ์ž(์ผ๋ฐ˜ ์‚ฌ์šฉ์ž, ๊ณต์ธ์ค‘๊ฐœ์‚ฌ ) ํšŒ์› ๊ฐ€์ž… ๊ฒฝ๋กœ ์กฐํšŒ
*
* @author YoonTaeminnnn
* @param model
* @return analysis/joinPath ํšŒ์› ๊ฐ€์ž… ๊ฒฝ๋กœ ํŽ˜์ด์ง€
* =============================================================================================
* */
@GetMapping("/join-path")
fun getAnalysisJoinPath(model : Model) : String {
val result = analysisService.getAnalysisJoinPathResult()
model.addAttribute("joinPathResults", result)
model.addAttribute("joinPathResults", result) // ๊ฐ€์ž… ๊ฒฝ๋กœ ๊ฒฐ๊ณผ
return "analysis/joinPath"

}

/**
* =============================================================================================
* ์‚ฌ์šฉ์ž ์—ฐ๋ น๋Œ€ ์กฐํšŒ
*
* @author YoonTaeminnnn
* @param model
* @return analysis/age ์—ฐ๋ น๋Œ€ ํŽ˜์ด์ง€
* =============================================================================================
* */
@GetMapping("/age")
fun getAnalysisAge(model : Model) : String {
val result = analysisService.getAnalysisAgeResult()
val label = Age.values().map { it.value }
val label = Age.values().map { it.value } // Age enum class value ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ
model.addAttribute("rate", result.map { it.rate })
model.addAttribute("count", result.map { it.count })
model.addAttribute("label", label)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
package com.example.jhouse_server.admin.anaylsis.dto

/**
* =============================================================================================
* AnalysisJoinPathResponse -- ํšŒ์› ๊ฐ€์ž… ๊ฒฝ๋กœ ์‘๋‹ต DTO
* joinPath -- ๊ฐ€์ž…๊ฒฝ๋กœ๋ช…
* rate -- ๋น„์œจ
* count -- ์‹ค์ œ ์ˆ˜
* =============================================================================================
*/
data class AnalysisJoinPathResponse(
val joinPath : String,
val rate : Double,
val count : Int,
)

/**
* =============================================================================================
* AnalysisAgeResponse -- ํšŒ์› ์—ฐ๋ น๋Œ€ ์‘๋‹ต DTO
* age -- ์—ฐ๋ น๋Œ€๋ช… ( Age enum class ์ฐธ๊ณ  )
* rate -- ๋น„์œจ
* count -- ์‹ค์ œ ์ˆ˜
* =============================================================================================
*/
data class AnalysisAgeResponse(
val age: String,
val rate : Double,
Expand Down
Loading