Giter VIP home page Giter VIP logo

company-recruitment-service's Introduction

Wanted Pre-onboarding Backend Course Pre-assignment

About

원티드 프리온보딩 백엔드 코스 사전과제

Required technical requirements

  • REST API 로 구현.
  • ORM 사용하여 구현.
  • RDBMS 사용 (SQLite, PostgreSQL 등).

Assignment requirements

  1. 채용공고를 등록합니다.

    ➡ 회사는 아래 데이터와 같이 채용공고를 등록합니다.

    Example)
    # 데이터 예시이며, 필드명은 임의로 설정가능합니다.
    {
      "회사_id":회사_id,
      "채용포지션":"백엔드 주니어 개발자",
      "채용보상금":1000000,
      "채용내용":"원티드랩에서 백엔드 주니어 개발자를 채용합니다. 자격요건은..",
      "사용기술":"Python"
    }
    
  2. 채용공고를 수정합니다.

    ➡ 회사는 아래 데이터와 같이 채용공고를 수정합니다. (회사 id 이외 모두 수정 가능합니다.)

    Example)
    # 데이터 예시이며, 필드명은 임의로 설정가능합니다.
    {
      "채용포지션":"백엔드 주니어 개발자",
      "채용보상금":1500000, # 변경됨
      "채용내용":"원티드랩에서 백엔드 주니어 개발자를 '적극' 채용합니다. 자격요건은..", # 변경됨
      "사용기술":"Python"
    }
    
    or
    
    {
      "채용포지션":"백엔드 주니어 개발자",
      "채용보상금":1000000,
      "채용내용":"원티드랩에서 백엔드 주니어 개발자를 채용합니다. 자격요건은..",
      "사용기술":"Django" # 변경됨
    }
    
    
  3. 채용공고를 수정합니다.

    ➡ DB에서 삭제됩니다.

  4. 채용공고 목록을 가져옵니다.

    ➡ 4-1. 사용자는 채용공고 목록을 아래와 같이 확인할 수 있습니다.

    
        Example)
        [
        	{
        		"채용공고_id": 채용공고_id,
        	  "회사명":"원티드랩",
        	  "국가":"한국",
        	  "지역":"서울",
        	  "채용포지션":"백엔드 주니어 개발자",
        	  "채용보상금":1500000,
        	  "사용기술":"Python"
        	},
        	{
        		"채용공고_id": 채용공고_id,
        	  "회사명":"네이버",
        	  "국가":"한국",
        	  "지역":"판교",
        	  "채용포지션":"Django 백엔드 개발자",
        	  "채용보상금":1000000,
        	  "사용기술":"Django"
        	},
          ...
        ]
    
    

    ➡ 4-2. 채용공고 검색 기능 구현 (선택사항 및 가산점요소).

    
       Example - 1) some/url?search=원티드
    [
       {
       	"채용공고_id": 채용공고_id,
         "회사명":"원티드랩",
         "국가":"한국",
         "지역":"서울",
         "채용포지션":"백엔드 주니어 개발자",
         "채용보상금":1500000,
         "사용기술":"Python"
       },
       {
       	"채용공고_id": 채용공고_id,
         "회사명":"원티드코리아",
         "국가":"한국",
         "지역":"부산",
         "채용포지션":"프론트엔드 개발자",
         "채용보상금":500000,
         "사용기술":"javascript"
       }
    ]
    
    Example - 2) some/url?search=Django
    [
       {
       	"채용공고_id": 채용공고_id,
         "회사명":"네이버",
         "국가":"한국",
         "지역":"판교",
         "채용포지션":"Django 백엔드 개발자",
         "채용보상금":1000000,
         "사용기술":"Django"
       },
       {
       	"채용공고_id": 채용공고_id,
         "회사명":"카카오",
         "국가":"한국",
         "지역":"판교",
         "채용포지션":"Django 백엔드 개발자",
         "채용보상금":500000,
         "사용기술":"Python"
       }
     ...
    ]
    
  5. 채용 상세 페이지를 가져옵니다.

    ➡️ 사용자는 채용상세 페이지를 아래와 같이 확인할 수 있습니다.

    • “채용내용”이 추가적으로 담겨있음.
    • 해당 회사가 올린 다른 채용공고 가 추가적으로 포함됩니다. (선택사항 및 가산점요소).
    Example)
    {
    	"채용공고_id": 채용공고_id,
      "회사명":"원티드랩",
      "국가":"한국",
      "지역":"서울",
      "채용포지션":"백엔드 주니어 개발자",
      "채용보상금":1500000,
      "사용기술":"Python",
    	"채용내용": "원티드랩에서 백엔드 주니어 개발자를 채용합니다. 자격요건은..",
    	"회사가올린다른채용공고":[채용공고_id, 채용공고_id, ..] # id List (선택사항 및 가산점요소).
    }
    
  6. 사용자는 채용공고에 지원합니다. (선택사항 및 가산점요소).

    ➡️ 사용자는 채용공고에 아래와 같이 지원합니다. (가점 요소이며, 필수 구현 요소가 아님)

    • 사용자는 1회만 지원 가능합니다.
    Example)
    {
    	"채용공고_id": 채용공고_id,
      "사용자_id": 사용자_id
    }
    

Assignment progres

Modeling

ERD

API Reference

API 명세서 링크

Requirements Analysis

  • 채용공고를 기준으로 해당 자원에 관한 전반적인 CRUD를 요구하고 있다고 판단했으며, 이를 위해 회사, 사용자, 채용공고, 지원의 4가지 테이블로 모델링

  • 해당 서비스를 이용하는 회사와 사용자의 입장에서의 서비스 이용 흐름을 따라 Apply 정보에 대한 모델 추가 정의

  • 서버의 유연성 위해 Azure database for postgresql flexible server 이용하여 구현 및 배포 바로가기

  • 현재는 비용 및 보안 상의 이유로 배포 중단

    • 배포 화면

image

Feature Implementation

  • Company
    • 회사는 회사명, 국가 , 지역을 등록하고 수정하고 삭제할 수 있습니다.
    • 자동으로 생성되는 회사_id는 수정 할 수 없습니다.
    • 데이터의 유지ㆍ관리를 위하여 등록, 수정시간이 자동 입력됩니다.

  • User
    • 사용자는 사용자이름, 이메일 , 비밀번호를 등록하고 수정하고 삭제할 수 있습니다.
    • 자동으로 생성되는 사용자_id는 수정 할 수 없습니다.
    • 데이터의 유지ㆍ관리를 위하여 등록, 수정시간이 자동 입력됩니다.

  • Jobposting
    • 회사는 채용포지션, 채용보상금 , 채용내용 ,사용기술 를 등록하고 수정하고 삭제할 수 있습니다.
    • 채용공고 등록시 입력한 회사_id를 바탕으로 회사명, 국가 , 지역이 자동 입력됩니다.
    • 채용공고 상세정보에서 채용내용, 회사가 올린 다른 채용공고를 볼 수 있습니다
    • 자동으로 생성되는 채용공고_id는 수정 할 수 없습니다.
    • 데이터의 유지ㆍ관리를 위하여 등록, 수정시간이 자동 입력됩니다.
    • Q객체를 통해 search 검색 키워드를 이용한 채용공고 검색이 가능합니다.

  • Apply
    • 사용자_id채용공고_id는 Unique한 집합으로, 사용자는 채용공고에 1회만 지원할 수 있습니다.
    • 지원내역을 삭제할 수는 있으나 수정할 수는 없습니다.
    • 데이터의 유지ㆍ관리를 위하여 등록, 수정시간이 자동 입력됩니다.

UML Diagram

my_project_want_model

company-recruitment-service's People

Contributors

song-hee-1 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.