Skip to content

Latest commit

 

History

History
227 lines (186 loc) · 13 KB

README.md

File metadata and controls

227 lines (186 loc) · 13 KB

logo

닥터캘을 누르면 배포된 사이트로 이동합니다

회원가입 요청 승인 외에는 사용을 자제해 주세요

서울대학교 병원 연세 세브란스 병원 고려대학교 안암병원
[email protected] [email protected] [email protected]
12345678 12345678 12345678

🎞️ 프로젝트 시연 영상

Video Label



🗓️ 프로젝트 소개

개요 : 대학병원 의사들을 위한 쉽고 빠른 당직, 연차 관리 서비스입니다.
기간 : 2023. 07. 24. ~ 2023. 08. 11.
기타 : 패스트캠퍼스 부트캠프의 프론트엔드&백엔드 미니프로젝트 협업으로 만들어진 서비스입니다.



👤 프로젝트 팀원

송태형 (팀장) 송정호 최해솔 김준희 (팀장) 김다슬 임승이
BE BE BE FE FE FE
송태형 송정호 최해솔 김준희 김다슬 임승이

🪧 역할 분담

송정호 송태형(팀장) 최해솔
DB 관리
AWS 배포
테이블 설계
User 관련 API 담당
- 회원가입
- 로그인, 로그아웃
- 개인정보 조회
- 개인정보 수정
- 비밀번호 변경
테이블 설계
Admin 관련 API 담당
- 사용자 관리
- 회원가입 승인, 요청 리스트 조회
- 유저 권한, 재직 상태 수정
- 당직, 연차 요청 리스트 조회
- 당직, 연차 승인/반려 처리
- 병원 리스트 조회
- 병원별 과(파트), 의사 조회
- 관리자 당직 추가/삭제
테이블 설계
Calendar 관련 API 담당
- 도메인 설계
- 메인 캘린더 조회
- 연차 등록
- 연차 수정
- 연차 삭제



🛠️️ 사용기술 및 개발환경

Back-End

Java SpringBoot Spring Security MySQL Gradle JPA IntelliJ IDEA

Front-End

Deployment

AWS Amazon Ec2

Cowork Tools

Slack Notion Zoom Figma GitHub



🖥️ 기능 소개

1. User

회원가입 로그인

마이페이지 비밀번호 변경



2. Schedule

메인캘린더 (당직, 휴가조회) 당직 변경

연차 신청 연차 신청 내역 수정/삭제



3. Admin

회원 권한 수정 재직 상태 수정 연차 승인/반려

당직 일정 교환 당직 등록/삭제



⚙️ 프로젝트 설정

1️⃣ ERD

image

2️⃣ 테이블 설계

CREATE TABLE user_tb (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  emp_no INT,
  name VARCHAR(20) NOT NULL,
  email VARCHAR(40) NOT NULL UNIQUE,
  password VARCHAR(120) NOT NULL,
  phone VARCHAR(11),
  hospital_id BIGINT NOT NULL,
  dept_id BIGINT NOT NULL,
  level ENUM('PK', 'INTERN', 'RESIDENT', 'FELLOW') NOT NULL,
  auth ENUM('USER', 'ADMIN') NOT NULL,
  status ENUM('NOTAPPROVED', 'APPROVED', 'RETIRED') NOT NULL,
  annual INT,
  duty INT,
  profile_image_url VARCHAR(255),
  hiredate TIMESTAMP,
  resigneddate TIMESTAMP,
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

CREATE TABLE schedule_tb (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  user_id BIGINT NOT NULL,
  hospital_id BIGINT NOT NULL,
  category ENUM('ANNUAL', 'DUTY') NOT NULL,
  start_date TIMESTAMP NOT NULL,
  end_date TIMESTAMP NOT NULL,
  is_validated ENUM('STANDBY', 'APPROVED', 'REJECTED') NOT NULL,
  reason VARCHAR(255),
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

CREATE TABLE hospital_tb (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20),
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

CREATE TABLE dept_tb (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  hospital_id BIGINT,
  name VARCHAR(20),
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

ALTER TABLE user_tb ADD FOREIGN KEY (hospital_id) REFERENCES hospital_tb(id);
ALTER TABLE user_tb ADD FOREIGN KEY (dept_id) REFERENCES dept_tb(id);
ALTER TABLE schedule_tb ADD FOREIGN KEY (user_id) REFERENCES user_tb(id);
ALTER TABLE schedule_tb ADD FOREIGN KEY (hospital_id) REFERENCES hospital_tb(id);
ALTER TABLE dept_tb ADD FOREIGN KEY (hospital_id) REFERENCES hospital_tb(id);

3️⃣ 패키지 구조

📦 src
└─ main
   └─ java
      └─ com
         └─ fc
            └─ miniserver
               ├─ _core
               │  ├─ handler
               │  │  └─ exception
               │  ├─ security
               │  └─ util
               ├─ domain
               │  ├─ User.java
               │  ├─ Schedule.java
               │  ├─ Hospital.java
               │  ├─ Dept.java
               │  ├─ History.java
               │  └─ etc Enum ...
               ├─ controller
               ├─ service
               ├─ repository
               ├─ dto
               └─ Mini3ServerApplication.java



📝 API 명세서

스크린샷 2023-08-10 오후 9 39 14 스크린샷 2023-08-10 오후 9 45 57