Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
4bbea94
chore: new feature 이슈 템플릿 수정
yesjuhee Jul 13, 2024
c468219
chore: bug report 이슈 템플릿 수정
yesjuhee Jul 13, 2024
334d395
chore: pr 템플릿 수정
yesjuhee Jul 17, 2024
2f05ad1
feat: 도메인 설계, 엔티티 클래스 작성
yesjuhee Jul 17, 2024
4bd5e1e
[CHORE] gitignorer 수정, 깃허브 템플릿 수정 (#6)
yesjuhee Jul 18, 2024
c96d555
[CHORE] CI Workflow trigger fix (#16)
jcy0308 Jul 22, 2024
0f55de6
[FEAT] Global Exception, Test, Restdocs 설정 (#17)
yesjuhee Jul 23, 2024
5ece0b0
[FEAT] Custom Exception Code 기능 구현, 문서화 (#21)
yesjuhee Jul 25, 2024
a9b44c0
[FIX] 도메인 수정 (#26)
yesjuhee Jul 26, 2024
9db02d2
fix: prod url 수정
jcy0308 Jul 30, 2024
324087d
feat: oauth yml 추가 & test결과 추가
jcy0308 Jul 30, 2024
3b5ba6b
fix: write 권한 추가
jcy0308 Jul 30, 2024
451fb89
[FEAT] CI Workflow 수정 & 유닛테스트 퍼센티지 기능 추가 (#32)
jcy0308 Jul 31, 2024
8978137
Merge remote-tracking branch 'origin' into infra/1-config
jcy0308 Jul 31, 2024
d6b45c8
fix: auto test permission 수정
jcy0308 Jul 31, 2024
58481df
[FIX] CI Workflow Unit Test 권한 문제 수정 (#34)
jcy0308 Jul 31, 2024
2bca86f
fix: github token 에러 수정
jcy0308 Aug 2, 2024
def66db
[FIX] CI WORKFLOW test report 수정 (#37)
jcy0308 Aug 2, 2024
08b92e3
fix: github action junit tester 수정
jcy0308 Aug 2, 2024
6d8d2ac
chore: merfe from infra-config
jcy0308 Aug 2, 2024
42c8b0e
chore: junit test 경로 변경
jcy0308 Aug 2, 2024
9a5900e
chore: report_path 수정
jcy0308 Aug 2, 2024
5099560
chore: CI workflow token 추가
jcy0308 Aug 2, 2024
ea8f78e
[FEAT] kakao oauth module & auth module 구현 (#24)
jcy0308 Aug 3, 2024
5097fc0
[FEAT] Video 관련 API 개발 (#51)
2tle Aug 9, 2024
62bbb08
[FEAT] Notice/EventNotice 관련 API 개발 (#56)
shj1081 Aug 9, 2024
a53e1a0
[FEAT] EvnetPeriod 관련 API 구현 완료 (#58)
yesjuhee Aug 9, 2024
a2b3a46
[FEAT] Gallery 관련 API 구현 완료 (#10) (#64)
simta1 Aug 14, 2024
ba1dfcf
fix: restdocs html 문서 추가
yesjuhee Aug 16, 2024
5b4189c
chore: README에 API 문서 링크 추가
yesjuhee Aug 16, 2024
5535549
[FEAT] Application 관련 API 개발 완료 (#69)
yesjuhee Aug 17, 2024
d11c9b9
[FIX] 로그인 리다이렉션 & 쿠키 문제 해결 (#72)
jcy0308 Aug 21, 2024
59d01d2
[FEAT] Quiz, Video Favorite 관련 API 구현 (#74)
2tle Aug 23, 2024
d2010fe
hotfix: redirect uri 변경
jcy0308 Aug 24, 2024
ff250d9
[FEAT] File API 구현 완료 (#81)
yesjuhee Aug 28, 2024
b2c246e
[FIX] Notice / EventNotice 목록 조회 시 sort 미적용 해결
shj1081 Aug 29, 2024
50d824d
[FIX] event notice file update 시 미포함된 파일 삭제되도록 수정
shj1081 Sep 3, 2024
b2b310b
[FEAT] Project API 구현 완료 (#88)
yeobi01 Sep 4, 2024
83ec3df
fix: ProjectResponse에 yaer 추가 및 테스트코드에도 yaer 추가 (#94)
yeobi01 Sep 6, 2024
775741c
[FIX] 다중 파일 업로드가 가능하도록 uploadFile API 수정 (#96)
yesjuhee Sep 12, 2024
0fb6d60
[FEAT] Aihub / JobInfo api (Notion) 구현 완료 (#91)
shj1081 Sep 15, 2024
657b6a2
[Fix] getProjects 필터링 기능 추가 (#100)
yeobi01 Sep 20, 2024
48bd0e0
[CHORE] 레포 이름 변경으로 인한 restdocs 경로 변경 (#102)
yesjuhee Sep 30, 2024
823ef5b
[FIX] 퀴즈 생성 및 응답 형식을 Json에서 List로 변경 (#104)
2tle Oct 4, 2024
e464778
[CHORE] Rest Docs 최신화 (#105)
yesjuhee Oct 4, 2024
69761de
[FIX] Project 도메인 및 API 일부 수정 (#107)
yeobi01 Oct 14, 2024
c8729ea
[FEAT] 엑셀 다운로드 유틸 및 제출한 퀴즈 결과 엑셀로 받는 기능 구현 (#71) (#108)
2tle Oct 28, 2024
639d082
[FEAT] Inquiry API 구현 (issue #45)
shj1081 Oct 30, 2024
6ae301a
[FIX] Inquiry API replied flag 추가 (#113)
shj1081 Nov 14, 2024
0805f73
[FEAT] Project Excel API 구현 완료 (#115)
yesjuhee Nov 18, 2024
0842843
[FEAT] User 관련 API 구현 완료 (#111)
simta1 Nov 19, 2024
ef88bf0
[FIX] getFile API 오류 수정
yesjuhee Nov 23, 2024
64cc291
[FIX] JobInfo notion fetching 오류 수정
shj1081 Nov 24, 2024
c8e4b24
feat: develop 브랜치 trigger 추가 (#126)
jcy0308 Nov 24, 2024
fc389c5
feat: jwt payload 수정 (#125)
jcy0308 Nov 24, 2024
0729132
[FIX] Access Token이 Bearer null 인 경우 Optional이 작동하지 않음 (#128)
2tle Nov 25, 2024
a1660cc
[FEAT] 과제제안 API 구현 (#129)
yesjuhee Nov 28, 2024
02ae087
[FEAT] (이벤트)공지사항/프로젝트 문의 리스트 조회 기능 추가 (#131)
shj1081 Nov 28, 2024
4cdc8bc
[FIX] Member 테이블 중복 Row 삭제처리 (#132)
yeobi01 Dec 4, 2024
467eafe
feat: envChecker 추가 (#133)
jcy0308 Jan 9, 2025
3f4c45e
hot-fix: prod용 ddl-auto 무효화
jcy0308 Jan 12, 2025
9614662
fix: prod용 환경변수 이관 (#134)
jcy0308 Jan 14, 2025
e0afa16
fix: 검색 필터 조건 추가 (#136)
2tle Jan 20, 2025
8773def
feat: add DESC sort in gallery (#141)
2tle Feb 4, 2025
4ab252a
[FEAT] 대담영상/잡페어 인터뷰 영상 최신순 정렬
2tle Feb 5, 2025
aaaa19d
fix: remove save user when delete like and favorite project (#143)
2tle Feb 6, 2025
bccca7e
Update QuizService.java (#145)
2tle Feb 6, 2025
54e51ca
Update application-common.yml (#146)
2tle Feb 6, 2025
b03794e
[FIX] application-common.yml 의 redirectUri를 prod용 도메인으로 수정 (#147)
2tle Feb 6, 2025
7330825
Update CD-prod.yml
jcy0308 Feb 6, 2025
c4cf3a4
Update CD-prod.yml
jcy0308 Feb 6, 2025
a4cc0ca
fix: jwt userId추가
jcy0308 Feb 7, 2025
957f594
fix: jwt userId 클래스 에러 수정
jcy0308 Feb 7, 2025
960b15f
fix: jwt userId 클래스 에러 수정
jcy0308 Feb 7, 2025
bc7b353
fix: change max upload size (#149)
2tle Feb 7, 2025
e3fb88b
fix: duplicate key issue (#150)
2tle Feb 7, 2025
93da9a9
fix: proposal & 파일 연관관계 수정
jcy0308 Feb 7, 2025
9acc06b
Merge branch 'develop' of https://github.com/SystemConsultantGroup/s-…
jcy0308 Feb 7, 2025
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
22 changes: 12 additions & 10 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
name: ❗ SCG Project Bug report
description: Report bug to SCG Project
title: "[BUG] "
labels: ['bug', 'pending']
name: 🐞 Bug Report
description: Report bug to S-TOP backend
title: "🐞 [BUG] "
labels: ['🐞 Bug']
body:
- type: textarea
attributes:
label: Description 📖
label: 📖 Description
id: bug-description
description: |
발생한 버그에 대해 상세하게 설명해주세요
validations:
required: true
- type: textarea
attributes:
label: Reproduction 🏗️
label: 🏗 Reproduction
id: bug-reproduction
description: |
버그 reproduction 방법을 자세히 설명해주세요
Expand All @@ -26,23 +26,25 @@ body:
required: true
- type: textarea
attributes:
label: Logs 🪵
label: 🪵 Logs
id: bug-log
description: |
버그가 발생했을 때의 Log를 남겨주시면 더욱 더 해결하는 데 도움이 됩니다!🙇
render: shell
- type: textarea
attributes:
label: Environment 🖥
label: 🖥 Environment ️
id: bug-environment
description: |
버그가 발생한 환경에 대해 설명해주세요 (브라우저, OS, 하드웨어 등)
- type: checkboxes
id: bug-checkboxes
attributes:
label: CheckList ✔️
label: ✔️CheckList
description: |
Issue 올리기 전에 한 번 확인해주세요! 👍
options:
- label: 관련 Issue 가 이미 존재하는 지 확인해보셨나요?
required: true
required: true
- label: Assignees 설정
- label: Labels 설정
25 changes: 15 additions & 10 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
name: 🚀 SCG Project New Feature Request
description: Propose new feature to SCG Project
title: "🚀 "
labels: ['enhancement', 'pending']
name: 🚀 New Feature Request
description: Propose new feature to S-TOP backend
title: "🚀 [FEAT] "
labels: ['🚀 Feature']
body:
- type: textarea
attributes:
label: Describe Existing Problem
label: Describe Existing Problem
id: feature-problem
description: |
해결하려는 문제를 자세히 설명해주세요!
validations:
required: true
- type: textarea
attributes:
label: Describe Solution 💸
label: Describe Solution
id: feature-solution
description: |
위의 문제를 해결하기 위해 어떤 기능을 추가하고 싶은 지 설명해주세요!
value: |
- [ ] task 1
- [ ] task 2
validations:
required: true
- type: textarea
attributes:
label: Describe Alternatives 💼
id: feature-solution
label: 📍 More
id: feature-more
description: |
위의 문제를 해결하기 위해 고민한 다른 방법들에 대해서도 자유롭게 서술해주세요!
기타 참고할만한 사항들을 작성해주세요!
- type: checkboxes
id: feature-checkboxes
attributes:
Expand All @@ -33,4 +36,6 @@ body:
Issue 올리기 전에 한 번 확인해주세요! 👍
options:
- label: 관련 Issue 가 이미 존재하는 지 확인해보셨나요?
required: true
required: true
- label: Assignees 설정
- label: Labels 설정
6 changes: 3 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
작성자: @github_nickname

close/resolve/fix #{이슈 번호 기입}
#{이슈 번호 기입}

## 체크 리스트

- [ ] 적절한 제목으로 수정했나요?
- [ ] 상단에 이슈 번호를 기입했나요?
- [ ] Target Branch를 올바르게 설정했나요?
- [ ] Label을 알맞게 설정했나요?
- [ ] Reviewers/Assignees/Labels을 알맞게 설정했나요?

## 작업 내역

- 작업한 내용을 간략하게 작성해주세요.

## 비고

- 참고 사항을 적어주세요. 코드 리뷰하는 사람이 참고해야 하는 내용을 자유로운 형식으로 적을 수 있습니다.
- 참고 사항을 적어주세요. 코드 리뷰하는 사람이 참고해야 하는 내용을 자유로운 형식으로 적을 수 있습니다.
7 changes: 4 additions & 3 deletions .github/workflows/CD.yml → .github/workflows/CD-prod.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
name: CD
name: CD-PROD

on:
push:
branches: ["main"]
workflow_dispatch:
env:
dockerimage_tag: ${{ github.sha }}
dockerimage_name: jcy0308/stop
dockerimage_name: jcy0308/stop-be-prod

jobs:
build:
Expand Down Expand Up @@ -93,4 +94,4 @@ jobs:
git commit -am "Update image tag"
git push -u origin main
- name: --------------- Clean Up ---------------
run: echo "Clean Up"
run: echo "Clean Up"
96 changes: 96 additions & 0 deletions .github/workflows/CD-qa.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: CD

on:
push:
branches: ["develop"]
env:
dockerimage_tag: ${{ github.sha }}
dockerimage_name: jcy0308/stop-be-qa

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: --------------- Code Repo ---------------
run: echo "Code Repo"
- name: Code Repo 불러오기
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'corretto'

- name: Set up Gradle
uses: gradle/gradle-build-action@v2

- name: Gradle 권한 부여
run: chmod +x gradlew

- name: Gradle build
run: ./gradlew build --exclude-task test --exclude-task asciidoctor

- name: Docker 준비(1/4) - 메타데이터 생성
id: meta
uses: docker/metadata-action@v5.5.1
with:
images: |
${{ env.dockerimage_name }}
tags: |
${{ env.dockerimage_tag }}
latest
flavor: |
latest=true
- name: Docker 준비(2/4) - QEMU 설정
uses: docker/setup-qemu-action@v3
- name: Docker 준비(3/4) - buildx 설정
uses: docker/setup-buildx-action@v3
- name: Docker 준비(4/4) - 레지스트리 로그인
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCkER_PASSWORD }}
- name: Docker 이미지 빌드+푸시
id: build-and-push
uses: docker/build-push-action@v5.1.0
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
provenance: false

- name: --------------- Config Repo ---------------
run: echo "[Config Repo]"
- name: Config Repo 불러오기
uses: actions/checkout@v4
with:
repository: SystemConsultantGroup/S-TOP-config
ref: main
token: ${{ secrets.ACTION_TOKEN }}
path: S-TOP-config
- name: Kustomize 준비
uses: imranismail/setup-kustomize@v2.0.0
- name: Config Repo 이미지 값 업데이트 (Kustomize)
run: |
cd S-TOP-config/overlays/qa/be/
kustomize edit set image ${{ env.dockerimage_name }}:${{ env.dockerimage_tag }}
cat kustomization.yaml
- name: Config Repo 변경사항 푸시
run: |
cd S-TOP-config
git config --global user.email "jcy030896@naver.com"
git config --global user.name "chanyeong"
git commit -am "Update image tag"
git push -u origin main
- name: --------------- Clean Up ---------------
run: echo "Clean Up"
27 changes: 20 additions & 7 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ name: Java CI with Gradle

on:
pull_request:
branches: ["main"]
branches: ["main", "develop"]
workflow_dispatch:

permissions: write-all

jobs:
build:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -35,7 +37,18 @@ jobs:
# with:
# redis-version: "7.2.5"
# redis-port: 6379
- name: set Config
run: |
echo "${{ secrets.OAUTH_YML }}" | base64 --decode > src/main/resources/application-oauth.yml
echo "${{ secrets.MINIO_YML }}" | base64 --decode > src/main/resources/application-minio.yml
echo "${{ secrets.NOTION_YML }}" | base64 --decode > src/main/resources/application-notion.yml
echo "${{ secrets.EMAIL_YML }}" | base64 --decode > src/main/resources/application-email.yml
echo "${{ secrets.COMMON_YML }}" | base64 --decode > src/main/resources/application-common.yml
find src

- name: gradlew 권한 부여
run: chmod +x gradlew

- name: Build with Gradle Wrapper
run: ./gradlew build

Expand All @@ -49,9 +62,9 @@ jobs:
# min-coverage-overall: 50
# min-coverage-changed-files: 50
# update-comment: true

# - name: SonarQube test and analyze
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# run: ./gradlew test sonar --info --stacktrace
- name: Publish Test Results
uses: mikepenz/action-junit-report@v4.3.1
if: success() || failure()
with:
report_paths: '**/build/test-results/**/*.xml'
token: ${{secrets.JUNIT_TOKEN}}
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,11 @@ out/

### VS Code ###
.vscode/

/src/main/resources/application-oauth.yml
/src/main/resources/application-minio.yml
/src/main/resources/application-dev.yml
/src/main/resources/application-email.yml
/src/main/resources/application-notion.yml

.DS_Store
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# S-TOP-backend
# S-TOP backend

[S-TOP Rest Docs](https://systemconsultantgroup.github.io/S-top-backend/src/main/resources/static/docs/index.html)
33 changes: 32 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,13 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'io.hypersistence:hypersistence-utils-hibernate-60:3.8.1'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
developmentOnly 'org.springframework.boot:spring-boot-devtools'

//auth
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
Expand All @@ -54,9 +56,33 @@ dependencies {
//metrics
implementation 'io.micrometer:micrometer-registry-prometheus'

testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

//email
implementation 'org.springframework.boot:spring-boot-starter-mail'

//thymeleaf(for email service)
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// apache.poi for excel
implementation 'org.apache.poi:poi-ooxml:5.2.2'
implementation 'org.apache.poi:poi:5.2.2'

// minIO
implementation "io.minio:minio:8.5.11"

// queryDSL
implementation 'com.querydsl:querydsl-core'
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta") // querydsl JPAAnnotationProcessor 사용 지정
annotationProcessor("jakarta.persistence:jakarta.persistence-api") // java.lang.NoClassDefFoundError(javax.annotation.Entity) 발생 대응
annotationProcessor("jakarta.annotation:jakarta.annotation-api") // java.lang.NoClassDefFoundError (javax.annotation.Generated) 발생 대응
}



tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
Expand Down Expand Up @@ -87,8 +113,13 @@ tasks.named('asciidoctor') {
build {
dependsOn copyDocument
}

allprojects {
repositories {
maven { url 'https://jitpack.io'}
}
}
}


def querydslDir = "build/generated/querydsl"

Loading