Skip to content

JobDri-Developer/BackEnd

Repository files navigation

JobDri SERVER

AI 기반 μ±„μš© 곡고 정리 Β· λͺ¨μ˜ μ§€μ›μ„œ 생성 Β· μžμ†Œμ„œ 뢄석 ν”Œλž«νΌ JobDri의 λ°±μ—”λ“œ μ„œλ²„μž…λ‹ˆλ‹€.

"μ±„μš© 곡고λ₯Ό μ •λ¦¬ν•˜κ³ , μ§€μ›μ„œλ₯Ό λ§Œλ“€κ³ , μžμ†Œμ„œκΉŒμ§€ λΆ„μ„λ°›μž."
μ‚¬μš©μžκ°€ μ—…λ‘œλ“œν•˜κ±°λ‚˜ μž…λ ₯ν•œ μ±„μš© 곡고λ₯Ό AIκ°€ κ΅¬μ‘°ν™”ν•˜κ³ ,
직무/νšŒμ‚¬ 기반의 λͺ¨μ˜ 곡고와 문항을 μƒμ„±ν•˜λ©°,
μž‘μ„±ν•œ μžμ†Œμ„œλ₯Ό AI 뢄석 + μ‹€μ‹œκ°„ μƒνƒœ μ•Œλ¦ΌμœΌλ‘œ μ œκ³΅ν•˜λŠ” AI μ·¨μ—… 지원 ν”Œλž«νΌμž…λ‹ˆλ‹€.

Server: https://api.jobdri.site

πŸ“– ν”„λ‘œμ νŠΈ μ†Œκ°œ

JobDriλŠ” μ±„μš© 곡고뢀터 λͺ¨μ˜ 지원, μžμ†Œμ„œ λΆ„μ„κΉŒμ§€ μ΄μ–΄μ§€λŠ” 지원 μ€€λΉ„ 흐름을 ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€ μ•ˆμ—μ„œ μ œκ³΅ν•˜λŠ” λ°±μ—”λ“œμž…λ‹ˆλ‹€.

이 μ„œλ²„λŠ” λ‹€μŒ 흐름을 μ€‘μ‹¬μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

  1. μ±„μš© 곡고 μž…λ ₯/정리 μ‚¬μš©μžκ°€ ν…μŠ€νŠΈ λ˜λŠ” 이미지 기반 곡고λ₯Ό μž…λ ₯ν•˜λ©΄ AIκ°€ νšŒμ‚¬λͺ…, 직무λͺ…, μ£Όμš” 업무, 자격 μš”κ±΄, μš°λŒ€ 사항을 κ΅¬μ‘°ν™”ν•©λ‹ˆλ‹€.
  2. 곡고 μ €μž₯ 및 λͺ¨μ˜ 지원 생성 μ €μž₯된 μ‹€μ œ 곡고 λ˜λŠ” AIκ°€ λ§Œλ“  λͺ¨μ˜ 곡고λ₯Ό 기반으둜 MockApplyλ₯Ό μƒμ„±ν•˜κ³ , μΆ”μ²œ λ¬Έν•­ λ˜λŠ” 직접 μΆ”κ°€ 문항을 선택해 μ§€μ›μ„œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
  3. μžμ†Œμ„œ 뢄석 μž‘μ„±ν•œ 닡변을 AIκ°€ λΉ„λ™κΈ°λ‘œ λΆ„μ„ν•˜κ³ , 점수/ν”Όλ“œλ°±/문항별 μ½”λ©˜νŠΈ/λˆ„λ½ ν‚€μ›Œλ“œλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  4. μ‹€μ‹œκ°„ μƒνƒœ 좔적 κΈ΄ μž‘μ—…μ€ RabbitMQ + μ™ΈλΆ€ FastAPI worker + internal callback API + SSE ꡬ쑰둜 μ²˜λ¦¬ν•˜λ©°, μ‚¬μš©μžλŠ” μ§„ν–‰ μƒνƒœμ™€ μ™„λ£Œ μ•Œλ¦Όμ„ μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ”„ Core Flow

1. μ±„μš© 곡고 처리

  • POST /api/job-postings/extract ν…μŠ€νŠΈ λ˜λŠ” S3 이미지 object keyλ₯Ό λ°›μ•„ AIκ°€ 곡고λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€.
  • POST /api/job-postings/ingest 곡고 μΆ”μΆœ β†’ λΆ„λ₯˜ 후보 탐색 β†’ 곡고 μ΄ˆμ•ˆ 생성 β†’ μ €μž₯κΉŒμ§€ 비동기 μž‘μ—…μœΌλ‘œ μ ‘μˆ˜ν•©λ‹ˆλ‹€.
  • GET /api/job-postings/ingest/async/{taskId} 비동기 μƒνƒœλ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.
  • GET /api/job-postings/ingest/async/{taskId}/stream SSE둜 μƒνƒœ λ³€ν™”λ₯Ό κ΅¬λ…ν•©λ‹ˆλ‹€.

2. λͺ¨μ˜ μ§€μ›μ„œ 생성

  • μ €μž₯된 μ‹€μ œ 곡고 기반 ACTUAL νƒ€μž… λͺ¨μ˜ 지원 생성
  • μ €μž₯된 곡고 기반 MOCK νƒ€μž… λͺ¨μ˜ 지원 생성
  • νšŒμ‚¬/직무 λΆ„λ₯˜ 기반 가상 곡고 생성과 μΆ”μ²œ 질문 생성
  • 같은 곡고 κΈ°μ€€ 회차(sequence) 관리 및 μž¬λ„μ „ 생성

3. μžμ†Œμ„œ μž‘μ„± 및 뢄석

  • λ¬Έν•­ 후보 쑰회, 직접 λ¬Έν•­ μΆ”κ°€, 선택 λ¬Έν•­ μ €μž₯
  • λ‹΅λ³€ μ €μž₯/μˆ˜μ •
  • POST /api/mock-applies/{mockApplyId}/analysis μžμ†Œμ„œ 뢄석 비동기 μž‘μ—… μ ‘μˆ˜
  • GET /api/mock-applies/{mockApplyId}/analysis μ €μž₯된 뢄석 κ²°κ³Ό 쑰회
  • GET /api/mock-applies/{mockApplyId}/analysis/async/{taskId}/stream SSE μƒνƒœ 슀트림 ꡬ독

πŸ› οΈ Tech Stack

Category Stack
Language Java 21
Framework Spring Boot 3.5.14
ORM / DB Spring Data JPA, PostgreSQL, H2(Test), pgvector
Cache / Messaging Redis, RabbitMQ
Auth / Security Spring Security, JWT, Google OAuth2
AI / Embedding OpenAI API (gpt-4o-mini default), Cohere Embedding (embed-v4.0)
Storage / Infra AWS S3, Docker, GHCR, EC2, Nginx
Payment Toss Payments
Mail / Realtime JavaMailSender(Gmail SMTP), SSE
Docs / Build SpringDoc Swagger, Gradle, GitHub Actions

✨ Key Features

1. 인증 및 μ‚¬μš©μž 관리

  • 이메일 인증번호 λ°œμ†‘/검증 기반 νšŒμ›κ°€μž…
  • JWT Access/Refresh Token 둜그인 및 μž¬λ°œκΈ‰
  • Redis 기반 λ‘œκ·Έμ•„μ›ƒ/토큰 λ¬΄νš¨ν™” 처리
  • Google OAuth2 둜그인 및 ν”„λ‘ νŠΈ λ¦¬λ‹€μ΄λ ‰νŠΈ 연동

2. μ±„μš© 곡고 AI 처리

  • 곡고 ν…μŠ€νŠΈ/μ΄λ―Έμ§€μ—μ„œ ꡬ쑰화 정보 μΆ”μΆœ
  • S3 presigned PUT URL 기반 이미지 직접 μ—…λ‘œλ“œ
  • 직무 μ†ŒλΆ„λ₯˜ μžλ™ λΆ„λ₯˜ 후보 μΆ”μ²œ
  • νšŒμ‚¬/직무 기반 μ‹€μ œ 곡고 μ΄ˆμ•ˆ 생성
  • νšŒμ‚¬/직무 기반 λͺ¨μ˜ 곡고 및 μΆ”μ²œ 질문 생성

3. λͺ¨μ˜ μ§€μ›μ„œ μž‘μ„± 흐름

  • μ‹€μ œ 곡고 기반 ACTUAL νƒ€μž… 지원 생성
  • 생성 곡고 기반 MOCK νƒ€μž… 지원 생성
  • 질문 후보 쑰회 및 직접 λ¬Έν•­ μΆ”κ°€
  • 선택 λ¬Έν•­ μ €μž₯ ν›„ λ‹΅λ³€ μž‘μ„± 단계 μ „ν™˜
  • 곡고별 회차 관리 및 μž¬λ„μ „ 지원

4. μžμ†Œμ„œ 뢄석

  • 비동기 뢄석 μž‘μ—… μ ‘μˆ˜ 및 μƒνƒœ 쑰회
  • 뢄석 μ™„λ£Œ μ‹œ μ’…ν•© 점수, ν•­λͺ©λ³„ 점수, 전체 ν”Όλ“œλ°± μ €μž₯
  • 문항별 뢄석 결과와 λˆ„λ½ ν‚€μ›Œλ“œ 제곡
  • 뢄석 μ‹€ν–‰ μ‹œ ν¬λ ˆλ”§ 1회 차감, μ‹€νŒ¨ μ‹œ ν™˜λΆˆ

5. 결제 및 ν¬λ ˆλ”§

  • ν¬λ ˆλ”§ ν”Œλžœ 쑰회
  • ν† μŠ€νŽ˜μ΄λ¨ΌμΈ  결제 μ€€λΉ„/승인
  • μ‚¬μš©μž ν¬λ ˆλ”§ μž”μ•‘/거래 λ‚΄μ—­ 쑰회
  • κΈ°λ³Έ ν”Œλžœ 1회ꢌ, 5회ꢌ, 10회ꢌ

6. μ‹€μ‹œκ°„ μ•Œλ¦Ό

  • SSE 기반 인앱 μ•Œλ¦Ό 슀트림
  • 미읽음 개수 쑰회
  • κ°œλ³„/전체 읽음 처리
  • ν˜„μž¬ κ΅¬ν˜„λœ μ£Όμš” μ•Œλ¦Ό νƒ€μž… JOB_POSTING_ASYNC_SUCCEEDED, JOB_POSTING_ASYNC_FAILED, ANALYSIS_ASYNC_SUCCEEDED, ANALYSIS_ASYNC_FAILED

7. κ΄€λ¦¬μž / 운영 κΈ°λŠ₯

  • corpus xlsx 적재 API
  • corpus embedding 동기화 API
  • 뢄석 retrieval preview 디버그 API
  • λΆ€νŠΈμŠ€νŠΈλž© κ΄€λ¦¬μž 이메일 승격
  • 비동기 task timeout sweep μŠ€μΌ€μ€„λŸ¬
  • 감사 둜그 AOP (@AuditLogEvent)

πŸ” 상세 κΈ°λŠ₯ λͺ…μ„Έ

🧩 인증 및 μœ μ €

  • POST /api/auth/email-verifications
  • POST /api/auth/email-verifications/confirmations
  • POST /api/auth/signup
  • POST /api/auth/login
  • POST /api/auth/reissue
  • POST /api/auth/logout
  • GET /oauth2/authorization/google
  • GET /login/oauth2/code/google

πŸ—‚οΈ 직무 λΆ„λ₯˜

  • GET /api/classifications
  • GET /api/classifications/{bigId}/middles
  • GET /api/classifications/middles/{middleId}/details

πŸ“ μ±„μš© 곡고

  • POST /api/job-postings
  • PATCH /api/job-postings/{jobPostingId}
  • GET /api/job-postings/me
  • GET /api/job-postings/me/{jobPostingId}
  • DELETE /api/job-postings/{jobPostingId}
  • POST /api/job-postings/generate
  • POST /api/job-postings/extract
  • POST /api/job-postings/ingest
  • GET /api/job-postings/ingest/async/{taskId}
  • GET /api/job-postings/ingest/async/{taskId}/stream
  • POST /api/job-postings/images/presign-upload
  • POST /api/job-postings/extension/ingest

🎯 λͺ¨μ˜ 곡고 / λͺ¨μ˜ 지원

  • POST /api/job-postings/mock/generate
  • GET /api/job-postings/mock/questions
  • POST /api/job-postings/mock/questions
  • GET /api/mock-applies/me
  • POST /api/mock-applies/actual
  • POST /api/mock-applies/mock/from-job-posting
  • POST /api/mock-applies/mock
  • POST /api/mock-applies/{mockApplyId}/retry
  • GET /api/mock-applies/{mockApplyId}/job-posting
  • GET /api/mock-applies/{mockApplyId}/sequence

✍️ λ¬Έν•­ / λ‹΅λ³€ / 뢄석

  • GET /api/mock-applies/{mockApplyId}/questions/candidates
  • POST /api/mock-applies/{mockApplyId}/questions/candidates
  • GET /api/mock-applies/{mockApplyId}/questions
  • PUT /api/mock-applies/{mockApplyId}/questions
  • PATCH /api/mock-applies/{mockApplyId}/questions/answers
  • POST /api/mock-applies/{mockApplyId}/analysis
  • GET /api/mock-applies/{mockApplyId}/analysis
  • GET /api/mock-applies/{mockApplyId}/analysis/async/{taskId}
  • GET /api/mock-applies/{mockApplyId}/analysis/async/{taskId}/stream
  • GET /api/job-postings/{jobPostingId}/analysis

πŸ’³ 결제 / ν¬λ ˆλ”§

  • GET /api/payments/plans
  • POST /api/payments/prepare
  • POST /api/payments/confirm
  • GET /api/payments/credits/me
  • GET /api/payments/credits/me/transactions

πŸ”” μ•Œλ¦Ό

  • GET /api/notifications
  • GET /api/notifications/unread-count
  • GET /api/notifications/stream
  • PATCH /api/notifications/{notificationId}/read
  • PATCH /api/notifications/read-all

πŸ› οΈ κ΄€λ¦¬μž / μ›Œμ»€ λ‚΄λΆ€ API

  • POST /api/admin/corpus/import
  • POST /api/admin/corpus/import/upload
  • POST /api/admin/corpus/embeddings/sync
  • POST /api/admin/analysis/retrieval-preview
  • POST /api/internal/worker/job-postings/...
  • POST /api/internal/worker/analysis/...

πŸ›οΈ System Architecture

1. 전체 μ„œλ²„ μ•„ν‚€ν…μ²˜

graph TD
    Client[Web Client] -->|JWT / OAuth2 / REST| Spring[Spring Boot API]
    Client -->|SSE| Spring
    Client -->|Presigned URL Upload| S3[(AWS S3)]

    Spring -->|JPA| Postgres[(PostgreSQL)]
    Spring -->|Cache / Token / Realtime state| Redis[(Redis)]
    Spring -->|AMQP Publish| Rabbit[(RabbitMQ)]
    Spring -->|OpenAI Responses API| OpenAI[OpenAI]
    Spring -->|Embedding Sync| Cohere[Cohere]
    Spring -->|Payment Confirm| Toss[Toss Payments]
    Spring -->|SMTP| Gmail[Gmail SMTP]

    Rabbit -->|Task Consume| Worker[FastAPI Worker<br/>external deployment]
    Worker -->|Internal callback API| Spring

    GitHub[GitHub Actions] -->|Build jar / Docker image| GHCR[GHCR]
    GHCR -->|Pull latest image| EC2[EC2 + Docker Compose]
    EC2 -->|Reverse Proxy| Nginx[Nginx]
    Nginx --> Spring
Loading

2. 비동기 μ›Œμ»€ 처리 흐름

sequenceDiagram
    participant U as User
    participant C as Client
    participant S as Spring Boot API
    participant MQ as RabbitMQ
    participant W as FastAPI Worker
    participant DB as PostgreSQL
    participant SSE as SSE Stream

    U->>C: μ±„μš© 곡고 뢄석 / μžμ†Œμ„œ 뢄석 μš”μ²­
    C->>S: 비동기 API 호좜
    S->>DB: async task 생성
    S->>MQ: μž‘μ—… λ©”μ‹œμ§€ publish
    S-->>C: taskId λ°˜ν™˜

    C->>SSE: taskId κΈ°μ€€ μƒνƒœ 슀트림 ꡬ독
    MQ->>W: μž‘μ—… 전달
    W->>S: context 쑰회 (internal API)
    W->>S: running / retry / failed / complete callback
    S->>DB: μƒνƒœ 및 κ²°κ³Ό μ €μž₯
    S-->>SSE: μƒνƒœ λ³€κ²½ 이벀트 전솑
    SSE-->>C: μ§„ν–‰ μƒνƒœ / μ™„λ£Œ / μ‹€νŒ¨ μˆ˜μ‹ 
Loading

πŸ” Async Worker Flow

이 μ„œλ²„μ˜ 핡심 비동기 μž‘μ—…μ€ μ±„μš© 곡고 ingest와 μžμ†Œμ„œ 뢄석 두 μ’…λ₯˜μž…λ‹ˆλ‹€.

  1. μ‚¬μš©μžκ°€ 비동기 APIλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.
  2. Spring μ„œλ²„κ°€ task rowλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  3. Spring μ„œλ²„κ°€ RabbitMQ exchange/queue둜 μž‘μ—… λ©”μ‹œμ§€λ₯Ό publish ν•©λ‹ˆλ‹€.
  4. μ™ΈλΆ€ FastAPI workerκ°€ λ©”μ‹œμ§€λ₯Ό consume ν•©λ‹ˆλ‹€.
  5. workerλŠ” ν•„μš” μ»¨ν…μŠ€νŠΈλ₯Ό internal API둜 μ‘°νšŒν•©λ‹ˆλ‹€.
  6. workerκ°€ AI 처리 κ²°κ³Όλ₯Ό internal callback API둜 μ™„λ£Œ/μ‹€νŒ¨ λ°˜μ˜ν•©λ‹ˆλ‹€.
  7. Spring μ„œλ²„κ°€ DB μ €μž₯, μ•Œλ¦Ό 생성, SSE μƒνƒœ μ „νŒŒλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

πŸ“‚ Project Structure

com.jobdri.jobdri_api
β”œβ”€β”€ domain
β”‚   β”œβ”€β”€ analysis        # μžμ†Œμ„œ 뢄석, 질문 선택, async task, worker bridge
β”‚   β”œβ”€β”€ auth            # νšŒμ›κ°€μž…, 둜그인, 이메일 인증, OAuth2
β”‚   β”œβ”€β”€ classification  # λŒ€/쀑/μ†ŒλΆ„λ₯˜ 직무 체계 쑰회
β”‚   β”œβ”€β”€ company         # νšŒμ‚¬ μ—”ν‹°ν‹°
β”‚   β”œβ”€β”€ corpus          # corpus 적재, μž„λ² λ”© 동기화, retrieval
β”‚   β”œβ”€β”€ jobposting      # 곡고 μ €μž₯/μˆ˜μ •/생성/μΆ”μΆœ/ingest/extension 연동
β”‚   β”œβ”€β”€ mockapply       # λͺ¨μ˜ 지원 생성, 회차, μž¬λ„μ „
β”‚   β”œβ”€β”€ notification    # SSE μ•Œλ¦Ό, 읽음 처리
β”‚   β”œβ”€β”€ payment         # ν¬λ ˆλ”§, 결제, 거래 λ‚΄μ—­
β”‚   β”œβ”€β”€ audit           # 감사 둜그 AOP
β”‚   β”œβ”€β”€ user            # μ‚¬μš©μž 도메인
β”‚   └── skill / experience
β”œβ”€β”€ global
β”‚   β”œβ”€β”€ apiPayload      # 곡톡 응닡/μ—λŸ¬ μ½”λ“œ
β”‚   β”œβ”€β”€ config          # Security, Swagger, RabbitMQ, AWS S3, Async μ„€μ •
β”‚   β”œβ”€β”€ jwt             # JWT ν•„ν„°/μœ ν‹Έ
β”‚   β”œβ”€β”€ mq              # RabbitMQ publish support
β”‚   β”œβ”€β”€ scheduling      # async timeout sweep scheduler
β”‚   β”œβ”€β”€ security        # UserDetails, internal API key validator
β”‚   └── sse             # SSE subscription registry
└── resources
    β”œβ”€β”€ application*.yaml
    └── schema.sql

πŸš€ Local Run

1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

cp .env.example .env
./gradlew bootRun

기본 포트:

  • API: http://localhost:8080
  • Swagger: http://localhost:8080/swagger-ui/index.html

2. ν…ŒμŠ€νŠΈ μ‹€ν–‰

./gradlew test

ν…ŒμŠ€νŠΈ ν™˜κ²½μ€ H2 (MODE=PostgreSQL)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

3. Docker Compose

cp .env.example .env
docker compose up --build

포함 μ˜λ„ μ„œλΉ„μŠ€:

  • Spring Boot API
  • PostgreSQL
  • Redis
  • RabbitMQ
  • external FastAPI worker μ—°κ²°μš© worker service μ •μ˜

βš™οΈ Environment

μ£Όμš” ν™˜κ²½ λ³€μˆ˜:

  • DB_URL, DB_USERNAME, DB_PASSWORD
  • REDIS_HOST, REDIS_PORT
  • RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_USERNAME, RABBITMQ_PASSWORD
  • JWT_SECRET_KEY, JWT_ACCESS_TOKEN_EXPIRATION, JWT_REFRESH_TOKEN_EXPIRATION
  • MAIL_HOST, MAIL_USERNAME, MAIL_PASSWORD
  • GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET
  • OPENAI_API_KEY
  • COHERE_API_KEY
  • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, S3_BUCKET
  • TOSS_CLIENT_KEY, TOSS_SECRET_KEY
  • APP_WORKER_INTERNAL_API_KEY

worker 연동 κ΄€λ ¨ κΈ°λ³Έ queue μ„€μ •:

  • APP_WORKER_JOB_POSTING_QUEUE=jobdri.job-posting.ingest
  • APP_WORKER_ANALYSIS_QUEUE=jobdri.analysis.execute

🧠 Corpus / Retrieval

이 ν”„λ‘œμ νŠΈλŠ” λ‹¨μˆœ LLM 호좜만 μ‚¬μš©ν•˜λŠ” ꡬ쑰가 μ•„λ‹ˆλΌ, corpus 기반 retrievalλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•©λ‹ˆλ‹€.

  • μ±„μš© 곡고 corpus 적재
  • 질문 corpus 적재
  • Cohere μž„λ² λ”© 생성
  • pgvector μ €μž₯
  • λͺ¨μ˜ 곡고 생성 및 μžμ†Œμ„œ 뢄석 μ‹œ retrieval context μ°Έκ³ 
  • κ΄€λ¦¬μž preview API둜 retrieval κ²°κ³Ό 사전 점검 κ°€λŠ₯

Python μŠ€ν¬λ¦½νŠΈλ„ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  • scripts/import_corpus.py
  • scripts/sync_corpus_embeddings.py

πŸš€ Deployment Pipeline

GitHub Actions κΈ°μ€€ 배포 흐름:

  1. main, dev 브랜치 push λ˜λŠ” PR λ°œμƒ
  2. CIμ—μ„œ JDK 21 기반 ./gradlew clean test μ‹€ν–‰
  3. Docker image build
  4. Deploy workflowμ—μ„œ GHCR에 이미지 push
  5. 배포 secret이 μ‘΄μž¬ν•˜λ©΄ 원격 μ„œλ²„μ— SSH 접속
  6. μ„œλ²„μ—μ„œ docker compose -f docker-compose.prod.yml pull api
  7. docker compose -f docker-compose.prod.yml up -d api

πŸ“ API Documentation

SpringDoc Swagger UI:

  • Local: http://localhost:8080/swagger-ui/index.html
  • Production: https://api.jobdri.site/swagger-ui/index.html

μΆ”κ°€ 곡개 경둜:

  • OpenAPI docs: /v3/api-docs
  • Health check: /actuator/health

πŸ“Œ ν˜„μž¬ κ΅¬ν˜„ λ²”μœ„

  • 이메일 인증 기반 둜컬 νšŒμ›κ°€μž…/둜그인
  • Google OAuth2 둜그인
  • JWT 인증/인가 및 λ‘œκ·Έμ•„μ›ƒ 처리
  • 직무 λŒ€/쀑/μ†ŒλΆ„λ₯˜ 쑰회
  • μ±„μš© 곡고 생성/μˆ˜μ •/쑰회/μ‚­μ œ
  • μ±„μš© 곡고 이미지 presigned upload
  • AI μ±„μš© 곡고 μΆ”μΆœ
  • AI μ±„μš© 곡고 μ΄ˆμ•ˆ 생성
  • AI λͺ¨μ˜ 곡고 생성
  • μΆ”μ²œ 질문 μΊμ‹œ 및 쑰회
  • μ‹€μ œ/λͺ¨μ˜ 곡고 기반 λͺ¨μ˜ 지원 생성
  • 질문 선택, 직접 λ¬Έν•­ μΆ”κ°€, λ‹΅λ³€ μ €μž₯
  • μžμ†Œμ„œ 뢄석 비동기 처리
  • ν¬λ ˆλ”§ 차감/ν™˜λΆˆ
  • ν† μŠ€ 결제 연동
  • SSE μ•Œλ¦Ό
  • κ΄€λ¦¬μž corpus import / embedding sync
  • RabbitMQ 기반 μ™ΈλΆ€ worker μ—°λ™μš© internal API
  • async timeout sweep scheduler
  • 감사 둜그 적재

About

Repository of JobDri BackEnd

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors