Skip to content

9th-Ne-O-rdinary-Hackathon-Y/BE

Repository files navigation

BE

career-fit-infra

🧡 BE를 소개합니다


51taek

앨런


YoonchulChung

알렉스


gyeonseo

견서


  • Java 21

    • 최신 문법(패턴 매칭, 레코드, 가상 스레드 등)을 지원해 가독성과 유지보수성이 향상됩니다.
    • 성능 최적화가 크게 개선되어 대규모 애플리케이션에서도 안정적으로 동작합니다.
    • 장기 지원(LTS) 버전으로 안정적인 운영이 가능합니다.
  • Spring Boot 3.4.9

    • 스프링 생태계와 완벽하게 호환되며 최신 기능 및 보안 패치가 포함되어 있습니다.
    • 자동 설정(Auto Configuration) 기반으로 빠르게 애플리케이션을 구성할 수 있습니다.
    • REST API, 데이터 액세스, 시큐리티 등이 통합되어 있어 비즈니스 로직 개발에 집중할 수 있습니다.
  • Spring Data JPA

    • 반복적이고 보일러플레이트가 많은 데이터 액세스 코드를 간소화합니다.
    • 명확한 도메인 모델 중심 개발이 가능하며, QueryDSL 등과 조합해 강력한 쿼리 작성이 가능합니다.
  • PostgreSQL

    • ACID 트랜잭션을 충실히 준수하는 안정적인 오픈소스 RDBMS입니다.
    • JSONB 등 고급 기능을 제공해 유연한 구조 관리가 가능합니다.
    • 대규모 트래픽 환경에서도 성능과 확장성이 뛰어나며, Spring Data JPA와 매우 잘 어울립니다.

API Documentation (Swagger)

아래 주소에서 API 명세서를 확인할 수 있습니다.

http://localhost:8080/swagger-ui/index.html

게임 결과 기반 직무 조회
URL: /api/job/
Method: POST
ContentType: application/json
Input: clientX, clientY (사용자) vs answerX, answerY (정답)
Description: 게임의 결과를 바탕으로 사용자에게 적합한 직무를 반환합니다.


직무 상세 조회
URL: /api/job/detail
Method: GET
Parameter: jobId (Integer, Required)
Example: GET /api/job/detail?jobId=7


게임 데이터 조회
URL: /api/game
Method: GET
Description: 게임 진행에 필요한 초기 데이터를 반환합니다.


게임 알고리즘

게임 1번

게임 1번은 순발력 테스트입니다. 얼마큼 빠르고 정확하게 정답과 가깝게 결과를 만드는지를 평가합니다. 게임 1번은 아래 지표를 이용하여 계산합니다.

유클리디이안 거리를 이용하여 정확도를 구별합니다.

$$ Error = \sqrt{(x_{client} - x_{answer})^2 + (y_{client} - y_{answer})^2} $$

$$ Accuracy = \max(0, 100 - (Error \times k_1)) $$

속도는 아래와 같이 구합니다.

$$ Pace = \min(100, \max(0, 100 - \frac{Time_{ms}}{k_2})) $$

게임 2번

게임 2번은 밸런스 테스트입니다. 두 가지 선택지 중 하나를 선택하게 됩니다.

게임 2번은 아래 지표를 이용하여 계산합니다.

행동 패턴 (Behavior Pattern) Risk Taking Accuracy Reasoning Work Style Stress Pace
정해진 규정 내에서 일하기 0 20 5 10 5 5
새로운 시도 계속하기 35 0 5 10 15 0
오타 없게 꼼꼼하게 0 40 0 0 25 0
빠르게 넘기기 25 0 0 0 0 30
직감대로 선택 30 0 0 0 0 25
근거 찾아보기 0 25 40 0 5 0
혼자 몰입 0 0 15 0 0 15
함께 논의 0 0 15 70 15 0
급한 일 먼저 10 0 0 0 30 25
중요한 일 먼저 0 15 20 10 5 0
세로(Category) 합계 100 100 100 100 100 100

[해석] : 점수 해석 기준

각 항목은 0점 ~ 100점 사이의 가중치를 가집니다.

점수 의미 예시 (Risk Taking)
0 해당 성향이 낮음 위험 감수를 싫어함 (안정 지향)
100 해당 성향이 높음 위험 감수를 즐김 (도전 지향)

[예시] : 결과 산출

사용자가 아래 4가지 답변을 선택했을 경우의 최종 점수 계산 과정입니다.

User Selection:

  1. 정해진 규정 내에서 일하기
  2. 새로운 시도 계속하기
  3. 함께 논의
  4. 중요한 일 먼저

[ 점수 합산표 ]

선택한 답변 (Choices) Risk Acc Reason Work Stress Pace
정해진 규정 내에서... 0 20 5 10 5 5
새로운 시도 계속하기 35 0 5 10 15 0
함께 논의 0 0 15 70 15 0
중요한 일 먼저 0 15 20 10 5 0
최종 합계 (Total) 35 35 45 100 40 5

게임 3번

게임 3번은 아래 지표를 이용하여 계산합니다.

선택지 (Option) Risk Taking Accuracy Reasoning Work Style Stress Pace
1. 장기적 중요 요청 40 15 50 20 60 10
2. 고객 임팩트 요청 50 15 40 20 30 10
3. 잘하고 빠른 것 (효율) 10 70 10 60 10 80
세로 합계 100 100 100 100 100 100


최종 산출 공식

아래 지표를 이용하여 사용자의 행동 기반 직업 추천을 계산합니다.

직무 (Job Role) Pace Accuracy Risk Taking Reasoning Stress Work Style 합계
기획/PM 0.10 0.05 0.15 0.30 0.15 0.25 1.0
운영 (Operations) 0.15 0.35 0.05 0.10 0.25 0.10 1.0
마케팅 (Marketing) 0.25 0.05 0.30 0.10 0.10 0.20 1.0
개발 (Development) 0.15 0.25 0.10 0.30 0.10 0.10 1.0
데이터 (Data) 0.10 0.30 0.10 0.35 0.05 0.10 1.0
영업 (Sales) 0.25 0.05 0.15 0.05 0.35 0.15 1.0
인사 (HR) 0.05 0.25 0.05 0.10 0.20 0.35 1.0
디자인 (Design) 0.10 0.25 0.30 0.10 0.10 0.15 1.0

아래 공식을 이용하여 각 카테고리 별로 평균 수치를 구합니다.

$$ \text{Average Score} = \frac{\text{Result}_1 + \text{Result}_2 + \text{Result}_3}{3} $$

예를 들어 Risk는 아래와 같이 나타낼 수 있습니다.

$$ Avg_{Risk} = \frac{g1_{Risk} + g2_{Risk} + g3_{Risk}}{3} $$

게임 1의 Risk는 없기 때문에 0이 됩니다.

상위 1개가 사용자에게 추천된 직업이 됩니다.

About

커핏 BE (Spring 서버)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •