Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
95bb366
Merge pull request #115 from JobDri-Developer/main
shinae1023 Jul 4, 2026
bde20f9
[Fix] analysis service compile 오류 수정 및 bootJar 빌드 복구
shinae1023 Jul 4, 2026
e5309fa
[Feat] analysis async를 MQ worker 구조로 전환하고 worker 상태 메타데이터를 확장 (#110)
shinae1023 Jul 4, 2026
3b8789b
[Fix] MQ 발행 확인 보강 및 analysis 크레딧 예약 시점 조정 (#110)
shinae1023 Jul 4, 2026
b7385b3
[Fix] 채용공고 비동기 task 조회를 사용자 소유 기반으로 제한 (#110)
shinae1023 Jul 4, 2026
18b5eb9
[Fix] 채용공고 비동기 retry/timeout 정책 및 MQ 통합 테스트 추가 (#110)
shinae1023 Jul 4, 2026
ba9788f
[Fix] analysis async 상태 전이와 worker 메타데이터 처리 보강 (#110)
shinae1023 Jul 4, 2026
a36909d
Merge pull request #116 from JobDri-Developer/feat/#110-MQ
shinae1023 Jul 4, 2026
e01fa80
[Feat] 자기소개서 분석 누락 역량 키워드 저장 및 응답 추가
whc9999 Jul 6, 2026
0a07057
Merge origin/dev into feat/refine-scoring
whc9999 Jul 6, 2026
ffef57e
Merge pull request #117 from JobDri-Developer/feat/refine-scoring
whc9999 Jul 6, 2026
04c7549
[Fix] 분석 프롬프트 퍼센트 리터럴 escape 처리
whc9999 Jul 6, 2026
528cb31
[Fix] RabbitMQ 브로커 부재 시 통합 테스트 skip 처리
whc9999 Jul 6, 2026
945905f
Merge pull request #119 from JobDri-Developer/fix/skip-rabbitmq-integ…
whc9999 Jul 6, 2026
3784b04
[Refactor] 결제 UNKNOWN 상태 도입 및 analysis 크레딧 메서드명 정리 (#62)
shinae1023 Jul 7, 2026
abb0a4b
Fix: 채용공고 async retry 상태머신 및 worker 메타데이터 보강 (#110)
shinae1023 Jul 7, 2026
4977edd
[Feat] async task SSE 상태 스트림 추가 (#109)
shinae1023 Jul 7, 2026
f387d0e
[Feat] SSE 하트비트 이벤트 추가 (#109)
shinae1023 Jul 7, 2026
0faa17a
[Fix] async stuck task sweep 및 timeout 복구 로직 추가 (#109)
shinae1023 Jul 7, 2026
fa683ba
[Fix] async SSE 발행 시점 및 sweep 안정성 보강 (#109)
shinae1023 Jul 7, 2026
06df346
[Fix] analysis async sweep 순환 의존성 제거 (#110)
shinae1023 Jul 7, 2026
b5d7ba5
[Feat] SSE 기반 알림 및 읽음 처리 기능 추가 (#120)
shinae1023 Jul 7, 2026
8cc51f0
Merge pull request #120 from JobDri-Developer/feat/#109-polling-to-sse
shinae1023 Jul 7, 2026
b541a1a
[Docs] readme 작성
shinae1023 Jul 7, 2026
ee4af88
[Fix] isolate async notifications and sanitize failure messages (#121)
shinae1023 Jul 7, 2026
2597d22
Merge pull request #122 from JobDri-Developer/feat/#121-alarm
shinae1023 Jul 7, 2026
140f070
[Docs] Update README to clarify worker implementation details
shinae1023 Jul 7, 2026
1830e66
[Feat] 직무 중분류 평가 기준 매칭 및 프롬프트 반영 보강
whc9999 Jul 7, 2026
7ace114
[Fix] 디자인 평가 기준 관련 키워드 분리 오류 수정
whc9999 Jul 7, 2026
7268238
Merge pull request #123 from JobDri-Developer/feat/job-category-evalu…
whc9999 Jul 7, 2026
2225865
[Feat] 평가용 자기소개서 AI 분석 runner 추가 및 실행 안전성 보강
whc9999 Jul 13, 2026
ef8ec97
[Fix] 평가 runner CSV 검증 및 실패 처리 보강
whc9999 Jul 13, 2026
9fdea07
Merge pull request #124 from JobDri-Developer/feat/analysis-evaluatio…
whc9999 Jul 13, 2026
4d579c9
[Chore] worker 관련 컴포즈 파일 설정
shinae1023 Jul 14, 2026
612be47
[Chore] production analysis model fallback을 gpt-4o-mini로 변경
shinae1023 Jul 14, 2026
341926d
Merge pull request #125 from JobDri-Developer/feat/#121-alarm
shinae1023 Jul 14, 2026
4e6d4a9
[Fix] 코드 리뷰 반영
shinae1023 Jul 14, 2026
d6a18e0
Merge pull request #127 from JobDri-Developer/feat/#121-alarm
shinae1023 Jul 14, 2026
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
8 changes: 7 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,17 @@ TOSS_SECRET_KEY=change-me
TOSS_BASE_URL=https://api.tosspayments.com

JOB_POSTING_CLASSIFICATION_CONFIDENCE_THRESHOLD=0.65
APP_WORKER_EXCHANGE=jobdri.worker.exchange
APP_WORKER_INTERNAL_API_KEY=change-me-internal-worker-key
APP_WORKER_JOB_POSTING_EXCHANGE=jobdri.worker.exchange
APP_WORKER_JOB_POSTING_EXCHANGE=${APP_WORKER_EXCHANGE}
APP_WORKER_JOB_POSTING_QUEUE=jobdri.job-posting.ingest
APP_WORKER_JOB_POSTING_ROUTING_KEY=job-posting.ingest
APP_WORKER_JOB_POSTING_DLQ=jobdri.job-posting.ingest.dlq
APP_WORKER_ANALYSIS_EXCHANGE=${APP_WORKER_EXCHANGE}
APP_WORKER_ANALYSIS_QUEUE=jobdri.analysis.execute
APP_WORKER_ANALYSIS_ROUTING_KEY=analysis.execute
APP_WORKER_ANALYSIS_DLQ=jobdri.analysis.execute.dlq
APP_WORKER_ANALYSIS_MAX_RETRY_COUNT=3
JOB_POSTING_ASYNC_CORE_POOL_SIZE=2
JOB_POSTING_ASYNC_MAX_POOL_SIZE=4
JOB_POSTING_ASYNC_QUEUE_CAPACITY=20
Expand Down
28 changes: 26 additions & 2 deletions .env.production.example
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
APP_PORT=8080
SPRING_PROFILES_ACTIVE=prod
IMAGE_NAME=ghcr.io/jobdri-developer/backend
IMAGE_TAG=latest
WORKER_IMAGE_NAME=ghcr.io/jobdri-developer/analysis-worker
WORKER_IMAGE_TAG=latest

DB_URL=jdbc:postgresql://your-db-host:5432/jobdri
DB_USERNAME=jobdri
DB_PASSWORD=change-me
DB_DRIVER=org.postgresql.Driver
JPA_DDL_AUTO=update
SPRING_JPA_DEFER_DATASOURCE_INITIALIZATION=true

REDIS_HOST=your-upstash-host
REDIS_PORT=6379
REDIS_PASSWORD=change-me
REDIS_SSL_ENABLED=true
RABBITMQ_HOST=your-rabbitmq-host
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=jobdri
RABBITMQ_PASSWORD=change-me
RABBITMQ_VHOST=/
RABBITMQ_MANAGEMENT_PORT=15672

JWT_SECRET_KEY=base64-encoded-secret
JWT_ACCESS_TOKEN_EXPIRATION=3600000
Expand All @@ -36,17 +41,36 @@ GOOGLE_CLIENT_ID=change-me.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=change-me
APP_OAUTH2_REDIRECT_URI=https://your-frontend-domain/oauth2/redirect
OPENAI_API_KEY=change-me
COHERE_API_KEY=

TOSS_CLIENT_KEY=change-me
TOSS_SECRET_KEY=change-me
TOSS_BASE_URL=https://api.tosspayments.com

AWS_REGION=ap-northeast-2
S3_BUCKET=your-s3-bucket
AWS_ACCESS_KEY_ID=change-me
AWS_SECRET_ACCESS_KEY=change-me
S3_PRESIGN_GET_EXPIRATION_MINUTES=10
S3_PRESIGN_PUT_EXPIRATION_MINUTES=5
JOB_POSTING_IMAGE_UPLOAD_MAX_SIZE_BYTES=5242880

JOB_POSTING_CLASSIFICATION_CONFIDENCE_THRESHOLD=0.65
APP_WORKER_EXCHANGE=jobdri.worker.exchange
APP_WORKER_INTERNAL_API_KEY=change-me-internal-worker-key
APP_WORKER_JOB_POSTING_EXCHANGE=jobdri.worker.exchange
APP_WORKER_JOB_POSTING_EXCHANGE=${APP_WORKER_EXCHANGE}
APP_WORKER_JOB_POSTING_QUEUE=jobdri.job-posting.ingest
APP_WORKER_JOB_POSTING_ROUTING_KEY=job-posting.ingest
APP_WORKER_JOB_POSTING_DLQ=jobdri.job-posting.ingest.dlq
APP_WORKER_ANALYSIS_EXCHANGE=${APP_WORKER_EXCHANGE}
APP_WORKER_ANALYSIS_QUEUE=jobdri.analysis.execute
APP_WORKER_ANALYSIS_ROUTING_KEY=analysis.execute
APP_WORKER_ANALYSIS_DLQ=jobdri.analysis.execute.dlq
APP_WORKER_ANALYSIS_MAX_RETRY_COUNT=3
APP_WORKER_ANALYSIS_QUEUE_TIMEOUT_MILLIS=300000
WORKER_PREFETCH_COUNT=1
OPENAI_JOB_POSTING_MODEL=gpt-4o-mini
OPENAI_ANALYSIS_MODEL=gpt-4o-mini
JOB_POSTING_ASYNC_CORE_POOL_SIZE=2
JOB_POSTING_ASYNC_MAX_POOL_SIZE=4
JOB_POSTING_ASYNC_QUEUE_CAPACITY=20
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ on:
pull_request:
branches:
- main
- develop
- dev
push:
branches:
- main
- develop
- dev

permissions:
contents: read
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- dev
workflow_dispatch:

permissions:
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,8 @@ out/

# application secrets
application-local.yml
.venv

# Local evaluation datasets/results
evaluation_cases*.csv
evaluation_ai_results*.csv
Loading
Loading