Skip to content

Comments

[Feature/#180] - 이력서 및 포트폴리오 평가 추가#182

Merged
alsgud8311 merged 16 commits intodevelopmentfrom
feature/#180
Oct 8, 2025
Merged

[Feature/#180] - 이력서 및 포트폴리오 평가 추가#182
alsgud8311 merged 16 commits intodevelopmentfrom
feature/#180

Conversation

@alsgud8311
Copy link
Contributor

📌 개요

이력서 및 포트폴리오 기반 직무, 조건 들과 함께 적합도를 분석해주는 기능을 추가했습니다.

✅ 작업 내용

  • 서버 : 이력서 및 포트폴리오 기반 직무, 조건 들과 함께 적합도를 분석해주는 기능 추가(AWS Bedrock)
  • 클라이언트 : 이력서 페이지 추가, 이력서 적합도 분석 페이지 및 폼 추가
  • Devops : dockerFile, Compose에 필요한 환경변수 추가 주입

🧪 테스트

  • 직접 테스트 완료

📝 참고 사항

  • 없음

📎 관련 이슈

Closes #180

@claude
Copy link

claude bot commented Oct 8, 2025

Claude encountered an error —— View job


I'll analyze this and get back to you.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @alsgud8311, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 AWS Bedrock을 활용하여 이력서 및 포트폴리오의 직무 적합도를 평가하는 새로운 기능을 추가합니다. 클라이언트에는 이력서 업로드 폼, 평가 결과 페이지, 3D/2D 서비스 선택 메뉴가 구현되었으며, 서버에는 Bedrock 연동 로직과 새로운 API 엔드포인트가 추가되었습니다. Dockerfile 및 Compose 파일에 필요한 환경 변수와 설정을 업데이트하여 전체 시스템에 기능을 통합했습니다.

Highlights

  • PR 목적: 이력서 및 포트폴리오를 기반으로 직무 적합도를 분석하고 평가하는 새로운 기능을 추가합니다. 이는 AWS Bedrock을 활용하여 이력서와 포트폴리오 내용을 분석하고, 지원 직무 및 조건에 대한 적합도 점수와 상세 피드백을 제공합니다.
  • 주요 변경 사항: ### 신규 기능
  • 이력서 및 포트폴리오 평가 기능: 사용자가 PDF 형식의 이력서와 포트폴리오를 업로드하고, 지원 직무, 직무 설명, 경력 연차를 입력하면 AI(AWS Bedrock)가 이를 분석하여 적합도 점수와 상세 피드백을 제공합니다.
  • 이력서 서비스 선택 메뉴: 3D 인터랙티브 뷰 또는 일반 2D 뷰로 이력서 평가 및 면접(예정) 서비스를 선택할 수 있는 페이지를 추가했습니다.

클라이언트 (apps/client)

  • 새로운 페이지 추가: /resume (이력서 서비스 선택) 및 /resume/eval (이력서 평가 폼 및 결과) 페이지를 추가했습니다.
  • UI 컴포넌트 개발: 이력서 업로드 폼 (resumeEvaluationForm.tsx), 평가 결과 표시 (resumeEvaluationResult.tsx), 3D/2D 서비스 선택 메뉴 (resumeSelectMenu3d.tsx, resumeSelectMenuNormal.tsx) 컴포넌트를 구현했습니다.
  • PDF 파싱 유틸리티: 클라이언트에서 PDF 파일 내용을 텍스트로 추출하는 parsePdf 유틸리티를 추가했습니다.
  • API 연동: 새로운 V3 API 엔드포인트 (/api/v3/resume/evaluation)와 연동하는 로직을 추가했습니다.
  • 의존성 추가: chart.js, react-chartjs-2 (차트 시각화), pdf-parse (CDN import), react-hook-form 등을 추가했습니다.
  • 환경 변수 및 설정: NEXT_PUBLIC_V3_API_BASE_URL, NEXT_PUBLIC_GRAPHQL_URL 환경 변수를 Dockerfile 및 env.d.ts에 추가하고, next.config.tsurlImports 설정을 추가했습니다.
  • 헤더 내비게이션: 메인 헤더에 '이력서' 메뉴를 추가했습니다.

서버 (apps/kokomen-server)

  • 새로운 모듈 및 컨트롤러: 이력서 평가 로직을 담당하는 ResumeModule, ResumeController 및 관련 DTO를 추가했습니다.
  • AWS Bedrock 통합: AWSBedrockFlowService를 통해 AWS Bedrock Agent Runtime과 연동하여 이력서 평가를 수행합니다.
  • API 엔드포인트: POST /resume/evaluation 엔드포인트를 추가하여 이력서 평가 요청을 처리합니다.
  • 인증 및 로깅: SessionAuthGuard를 사용하여 엔드포인트를 보호하고, 세션 로깅을 개선했습니다.
  • Swagger 문서화: /api/v3/docs 경로에 Swagger API 문서를 추가했습니다.
  • CORS 설정 확장: www.kokomen.kr, www.webview.kokomen.kr 등 새로운 도메인을 CORS 허용 목록에 추가했습니다.
  • 의존성 추가: @aws-sdk/client-bedrock-agent-runtime, @nestjs/swagger, @types/multer 등을 추가했습니다.

인프라/환경 설정

  • Docker Compose 업데이트: 개발 및 프로덕션 환경의 Docker Compose 파일에 새로운 클라이언트 및 서버 환경 변수 (AWS Bedrock 관련 설정 포함)를 추가했습니다.
  • 로컬 개발 환경 개선: compose.server.local.yaml에서 볼륨 마운트 방식을 최적화하여 Yarn PnP 관련 파일들을 명시적으로 마운트하도록 변경했습니다.
  • 특이 사항: - AI 기반 평가: AWS Bedrock을 활용한 AI 기반 이력서 및 포트폴리오 분석이 핵심입니다.
  • 인터랙티브 UI: 3D 모델을 활용한 이력서 서비스 선택 메뉴는 사용자 경험을 향상시킵니다.
  • PDF 직접 파싱: 클라이언트에서 PDF 파일을 직접 파싱하여 텍스트를 추출한 후 서버로 전송하는 방식을 사용합니다.
Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/deploy-nest-dev.yml
    • .github/workflows/deploy-nest-prod.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions
Copy link

github-actions bot commented Oct 8, 2025

🛠️ Build Summary

Status: ✅ SUCCESS
Duration: 61초
Exit Code: 0
Commit: 5c781b9

📋 Build Output (마지막 45줄)

 ✓ Generating static pages (4/4)
   Finalizing page optimization ...
   Collecting build traces ...

Route (pages)                                 Size  First Load JS
┌ ƒ /                                       8.4 kB         641 kB
├   /_app                                      0 B         310 kB
├ ○ /404 (1434 ms)                         1.78 kB         314 kB
├ ○ /500 (1432 ms)                           757 B         310 kB
├ ƒ /api/auth/logout                           0 B         310 kB
├ ƒ /dashboard                             7.53 kB         635 kB
├ ƒ /interviews                            7.45 kB         347 kB
├ ƒ /interviews/[interviewId]              11.6 kB         605 kB
├ ƒ /interviews/[interviewId]/result       5.35 kB         365 kB
├ ○ /layout (1432 ms)                        540 B         310 kB
├   └ css/2af4d3721e97fa9b.css               280 B
├ ƒ /login                                  2.6 kB         315 kB
├ ƒ /login/callback                           2 kB         335 kB
├ ƒ /login/google/callback                    2 kB         335 kB
├ ƒ /login/profile                         4.46 kB         367 kB
├ ƒ /members/[memberId]                    3.47 kB         340 kB
├ ƒ /members/interviews/[interviewId]      6.88 kB         340 kB
├ ƒ /purchase                              6.73 kB         629 kB
├ ƒ /purchase/confirm                      1.77 kB         335 kB
├ ○ /purchase/error (1431 ms)                799 B         313 kB
├ ƒ /resume                                  695 B         709 kB
├ ƒ /resume/eval                           2.92 kB         711 kB
├ ƒ /terms/privacy                         5.08 kB         338 kB
└ ƒ /terms/termsofuse                      4.49 kB         338 kB
+ First Load JS shared by all               325 kB
  ├ chunks/framework-c597d0180e500632.js   57.6 kB
  ├ chunks/main-d0c0aa7af366c4f7.js         176 kB
  ├ chunks/pages/_app-02e7e0815d6c8539.js  73.8 kB
  ├ css/0990c74ae63c64a3.css               15.2 kB
  └ other shared chunks (total)            1.94 kB

ƒ Middleware                               96.2 kB

○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand

   Memory usage report:
    - Total time spent in GC: 370.82ms
    - Peak heap usage: 69.11 MB
    - Peak RSS usage: 682.34 MB

🤖 Generated by GitHub Actions at Wed Oct 8 13:43:56 UTC 2025

gemini-code-assist[bot]

This comment was marked as resolved.

@claude
Copy link

claude bot commented Oct 8, 2025

Claude encountered an error —— View job


I'll analyze this and get back to you.

@github-actions
Copy link

github-actions bot commented Oct 8, 2025

🛠️ Build Summary

Status: ✅ SUCCESS
Duration: 62초
Exit Code: 0
Commit: 3f470c2

📋 Build Output (마지막 45줄)

 ✓ Generating static pages (4/4)
   Finalizing page optimization ...
   Collecting build traces ...

Route (pages)                                 Size  First Load JS
┌ ƒ /                                       8.4 kB         641 kB
├   /_app                                      0 B         310 kB
├ ○ /404 (1375 ms)                         1.78 kB         314 kB
├ ○ /500 (1373 ms)                           757 B         310 kB
├ ƒ /api/auth/logout                           0 B         310 kB
├ ƒ /dashboard                             7.53 kB         635 kB
├ ƒ /interviews                            7.45 kB         347 kB
├ ƒ /interviews/[interviewId]              11.6 kB         606 kB
├ ƒ /interviews/[interviewId]/result       5.35 kB         365 kB
├ ○ /layout (1373 ms)                        540 B         310 kB
├   └ css/2af4d3721e97fa9b.css               280 B
├ ƒ /login                                  2.6 kB         315 kB
├ ƒ /login/callback                           2 kB         335 kB
├ ƒ /login/google/callback                    2 kB         335 kB
├ ƒ /login/profile                         4.46 kB         367 kB
├ ƒ /members/[memberId]                    3.47 kB         340 kB
├ ƒ /members/interviews/[interviewId]      6.88 kB         340 kB
├ ƒ /purchase                              6.73 kB         629 kB
├ ƒ /purchase/confirm                      1.77 kB         335 kB
├ ○ /purchase/error (1373 ms)                799 B         313 kB
├ ƒ /resume                                  695 B         709 kB
├ ƒ /resume/eval                           2.92 kB         711 kB
├ ƒ /terms/privacy                         5.08 kB         338 kB
└ ƒ /terms/termsofuse                      4.49 kB         338 kB
+ First Load JS shared by all               325 kB
  ├ chunks/framework-c597d0180e500632.js   57.6 kB
  ├ chunks/main-84f5f4dd7313c5f6.js         176 kB
  ├ chunks/pages/_app-b8ab2b0a6b9458dc.js  73.8 kB
  ├ css/0990c74ae63c64a3.css               15.2 kB
  └ other shared chunks (total)            1.94 kB

ƒ Middleware                               96.2 kB

○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand

   Memory usage report:
    - Total time spent in GC: 394.00ms
    - Peak heap usage: 68.91 MB
    - Peak RSS usage: 682.68 MB

🤖 Generated by GitHub Actions at Wed Oct 8 14:09:06 UTC 2025

@alsgud8311 alsgud8311 merged commit 968d1bf into development Oct 8, 2025
3 of 5 checks passed
alsgud8311 added a commit that referenced this pull request Oct 8, 2025
* fix : 서버 cors 허용 도메인 추가

* feat : bedrock 환경변수 및 api Route url 환경변수 추가

* dependency : 의존성 추가

* client : 이력서 및 포트폴리오 분석 시각화를 위한 Chartjs 추가
* server : AWS 클라이언트 및 스웨거추가
* ui : 폼필드 컴포넌트 추가를 위한 react-hook-form 추가

* feat : 서버 이력서 및 포트폴리오 기반 평가 추가

* feat : 서버 cd AWS Bedrock 관련 환경변수 추가

* feat : 디자인 시스템에 FileField 컴포넌트 추가

* feat : 이력서 분석 입출력 타입 추가

* feat : cdn에서 라이브러리 Import해서 사용하는 ParsePdf 유틸 추가

* 기존 라이브러리보다 사이즈가 작고, Next 내의 importurl experiment 기능을 통해 사용 가능

* feat : sentry api 오류 캡처 유틸 고차함수 추가

* feat : 이력서 내 선택창 3d 인터페이스 추가

* feat : 이력서 평가 폼 페이지 및 폼 설계, 추가

* fix : 린트 오류 해결

* fix : 테스트 환경 수정

* fix : Docker compose 오타 수정 및 누락 환경변수 추가

* fix : 잠재적 오류 발생 요인 수정

* Key -> index로 매핑 수정
* resume 관련 덜 바꾼 클래스명들 수정
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 이력서 및 포트폴리오 평가

1 participant