# 레퍼런스 — 실제 HR 제품에서 가져올 기능 3가지 > 🎓 이 문서는 **교육용 가상 앱**(`인사총무ERP_교육용가상자료.html`) 개선을 위한 조사 자료입니다. > 아래 제품들의 **공식 문서만** 참고했으며, 화면을 그대로 베끼지 않고 **설계 아이디어만** 가져옵니다. - 조사일: 2026-09-14 - 조사 대상: **flex(플렉스)** · **Frappe HR** · **Odoo Time Off** - 조사 목적: 우리 앱의 핵심 교육 메시지 — *"신청 → 승인 → 숫자가 자동으로 바뀐다"* — 를 더 잘 전달할 방법 찾기 --- ## 요약: 고른 3가지 | # | 출처 | 가져올 것 | 우리 앱의 어떤 약점을 메우나 | |---|---|---|---| | **1** | flex | **휴가 보유 현황 + 휴가 히스토리** (부여·차감·소멸·잔여) | 잔여연차 숫자만 보이고 **"왜 그 숫자인지"**가 안 보임 | | **2** | Frappe HR | **신청서 안의 "신청 전 잔여" 표시** + 반차 체크박스 | 잔여 확인과 신청이 **다른 화면**에 흩어져 있음 | | **3** | Odoo | **"내가 처리할 것" 기본 필터 + 부서별 사이드 필터** | 신청이 늘어나면 담당자 목록이 **뒤엉킴** | --- ## 1️⃣ flex — 휴가 보유 현황 & 휴가 히스토리 ### 공식 문서가 말하는 것 flex의 **[휴가 보유 현황]** 화면에서 관리자는 현재 기준으로 구성원이 보유한 휴가 현황을 보고, 다음을 할 수 있습니다. - 오늘 기준 **잔여 휴가를 엑셀로 다운로드** - 연차 **추가 부여 및 차감** (수동 조정) - 연차 외 **맞춤 휴가**(병가·대체휴가 등) 부여 - **휴가 히스토리 조회 — 부여 / 차감 / 소멸 / 잔여 데이터 확인** - 맞춤 휴가 회수, 사용 기한 변경 또한 flex는 연차의 **부여 → 소멸 → 촉진**까지 전 과정을 자동 처리하며, 법정 필수 휴가(난임치료, 유산·사산휴가 등)를 기본 제공한다고 안내합니다. > ⚠️ 참고: 공식 가이드 본문에는 표의 **정확한 컬럼 구성이 글로 명시되어 있지 않고 화면 이미지로만** 제시됩니다. > 따라서 "부여 / 차감 / 소멸 / 잔여"라는 항목 이름은 문서가 명시한 **휴가 히스토리 항목**을 근거로 한 것입니다. ### 왜 우리 앱에 필요한가 우리 앱의 핵심 교육 메시지는 **"사용일수는 저장된 값이 아니라 승인된 신청에서 계산된다"** 입니다. 지금은 사원별 연차 현황표에 `부여 / 사용 / 잔여 / 대기중` **결과 숫자만** 나옵니다. 수강생 입장에서는 *"강도현 잔여가 왜 12일이지?"* 를 표에서 역추적할 수 없습니다. flex의 **휴가 히스토리**처럼, 사원 이름을 클릭하면 **"부여 15일 → L008 승인으로 −3일 → 현재 12일"** 같은 **줄줄이 내역**을 보여주면, 이 앱이 가르치려는 바로 그 지점이 화면으로 증명됩니다. ### 우리 앱에 적용한다면 - 사원별 연차 현황표의 **이름을 클릭 → 그 사람의 연차 계산 내역** 패널 열기 - 내역 형식: `부여 +15.0` / `L008 연차 승인 −3.0` / `(L015 대기 −2.0 예정)` / **`잔여 12.0`** - flex의 "수동 조정(추가 부여·차감)" 기능은 **넣지 않음** — 교육용 앱에서는 숫자가 계산으로만 움직여야 메시지가 흐려지지 않음 ### 출처 - [휴가 보유 현황 및 휴가 조정하기 — flex 사용 가이드](https://guide.flex.team/ko/articles/10288667-%ED%9C%B4%EA%B0%80-%EB%B3%B4%EC%9C%A0-%ED%98%84%ED%99%A9-%EB%B0%8F-%ED%9C%B4%EA%B0%80-%EC%A1%B0%EC%A0%95%ED%95%98%EA%B8%B0) - [flex 웹에서 휴가 등록 및 내 휴가 관리하기 — flex 사용 가이드](https://guide.flex.team/ko/articles/10229315-flex-%EC%9B%B9%EC%97%90%EC%84%9C-%ED%9C%B4%EA%B0%80-%EB%93%B1%EB%A1%9D-%EB%B0%8F-%EB%82%B4-%ED%9C%B4%EA%B0%80-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0) - [휴가 설정 (연차 정책 설정) — flex 사용 가이드](https://guide.flex.team/ko/articles/10288153-%ED%9C%B4%EA%B0%80-%EC%84%A4%EC%A0%95-%EC%97%B0%EC%B0%A8-%EC%A0%95%EC%B1%85-%EC%84%A4%EC%A0%95) - [flex 기능 모음 — flex 헬프센터](https://guide.flex.team/ko/collections/11068081-flex-%EA%B8%B0%EB%8A%A5) --- ## 2️⃣ Frappe HR — 신청서 안에서 바로 보이는 "신청 전 잔여" ### 공식 문서가 말하는 것 Frappe HR의 **Leave Application**(휴가신청서)은 직원이 휴가를 신청하는 공식 문서이며, 저장하는 순간 시스템이 **자동으로 계산해 신청서에 표시**합니다. - **Leave Balance Before Application** — *신청 전 잔여 휴가* - **Total Leave Days** — 신청 기간의 총 일수 - Leave Type별 배정(allocation) 대비 사용 가능 일수 신청서의 주요 필드는 다음과 같습니다. | 필드 | 설명 | |---|---| | Employee Name / Leave Type | 신청자 · 휴가 종류 | | From Date / To Date | 시작일 · 종료일 | | **Half Day (체크박스)** | 반차 처리 — 체크 시 일수 계산이 자동 조정됨 | | Reason for Leave | 사유 (필수) | | Leave Approver | 결재자 | 상태 흐름은 **Open → Approved / Rejected / Cancelled** 이며, 직원이 저장하면 상태가 `Open`이 되고 **결재자에게 메일이 발송**됩니다. 검증 규칙도 문서에 명시돼 있습니다. - 하나의 신청이 **여러 배정 기간에 걸칠 수 없음** - **최신 배정 기간 안에** 들어와야 함 - Leave Block List(휴가 금지일)에 걸린 날짜는 신청 불가 - 해당 기간 급여가 이미 처리됐으면 제출 불가 모바일 앱 대시보드는 **배정된 모든 휴가의 잔여를 한눈에** 보여주고, **최근 휴가 신청 내역을 옆에 두어** 수정과 승인 추적을 쉽게 합니다. ### 왜 우리 앱에 필요한가 우리 앱은 **잔여 초과 신청을 이미 막고 있습니다**(경고 + 신청 차단, 검증 S8 통과). 하지만 잔여 일수는 **홈 화면**에, 신청 폼은 **휴가 신청 화면**에 따로 있습니다. 수강생은 신청하다가 막히고 나서야 *"내 잔여가 몇 일이었지?"* 하고 홈으로 돌아가야 합니다. Frappe처럼 **신청서 자체에 "신청 전 잔여"를 박아두면**, 막히기 *전에* 이유를 알게 되어 학습 흐름이 끊기지 않습니다. 또 Frappe의 **Half Day 체크박스**는 우리의 "반차(0.5일)" 처리와 같은 개념인데, Frappe는 이를 **종류 선택이 아니라 체크박스**로 둡니다. 반차가 별개 휴가가 아니라 **연차의 절반**임을 UI가 직접 설명하는 방식이라, 교육용으로 더 명확합니다. ### 우리 앱에 적용한다면 - 휴가 신청 폼에 **실시간 미리보기 줄** 추가: `신청 전 잔여 12.0일 · 이번 신청 2.0일 → 신청 후 10.0일` - 날짜를 바꿀 때마다 즉시 다시 계산 (지금은 [신청하기]를 눌러야 결과를 앎) - 반차를 **종류 드롭다운에서 빼고 "반차로 신청" 체크박스**로 바꾸는 안 검토 (단, 병가는 연차 차감이 없으므로 종류 선택은 유지해야 함) ### 출처 - [Leave Application — Frappe HR 공식 문서](https://docs.frappe.io/hr/leave-application) - [Leaves — Frappe HR 공식 문서](https://docs.frappe.io/hr/leaves) - [Leave Allocation — Frappe HR 공식 문서](https://docs.frappe.io/hr/leave-allocation) - [Mobile App (직원 대시보드) — Frappe HR 제품 페이지](https://frappe.io/hr/mobile-app) - [Leave Management — Frappe HR 제품 페이지](https://frappe.io/hr/leave-management) --- ## 3️⃣ Odoo Time Off — "내가 처리할 것"이 기본값인 결재 화면 ### 공식 문서가 말하는 것 Odoo Time Off의 **Management** 섹션은 **승인 권한이 있는 사용자에게만 보입니다.** `Time Off app ‣ Management ‣ Time Off` 로 들어가면 All Time Off 페이지가 **칸반(카드) 형태**로 열립니다. 핵심은 **기본 필터가 "Waiting For Me"(내 승인이 필요한 건)** 라는 점입니다. 문서 표현 그대로, 이 필터는 *"내 팀 소속 직원 중 상태가 To Approve 또는 Second Approval인 신청"* 만 보여줍니다. - 왼쪽 사이드바 **상태 필터**: All / To Approve / Second Approval - 왼쪽 사이드바 **부서 필터**: 내가 관리하는 부서들 — 클릭하면 그 부서 것만 표시 - 각 **카드 하단에 [Approve/Validate] · [Refuse] 버튼이 그대로 노출** → 열지 않고 바로 처리 - 자세히 볼 땐 카드를 눌러 전체 양식을 열고, 수정 후 승인/거절 별도의 **Overview** 메뉴는 팀 전체 휴가를 **색으로 구분된 간트(Gantt) 일정**으로 보여주며, 직원별로 묶어 *누가 승인됐는지 · 누가 대기 중인지 · 오늘 누가 쉬는지* 를 파악하게 합니다. ### 왜 우리 앱에 필요한가 우리 담당자 화면은 이미 **「처리할 신청」을 맨 위, 「처리 완료」를 아래**로 나눠 놨습니다. 방향은 Odoo와 같습니다. 하지만 두 가지가 빠져 있습니다. 1. **부서 필터가 없다** — 지금은 신청 6건이라 괜찮지만, 수강생이 신청을 10건 20건 만들어 보면 목록이 뒤엉켜 "누구 걸 처리 중이었지?"가 됩니다. 부서 필터 하나면 해결됩니다. 2. **오늘 누가 쉬는지 볼 방법이 없다** — Odoo의 Overview가 주는 정보입니다. 총무·인사 담당자에게는 *"이번 주 우리 팀에 누가 없나"* 가 실무에서 가장 자주 보는 화면입니다. 또 Odoo가 **승인 권한자에게만 Management 메뉴를 보여준다**는 점은, 우리 앱의 역할 전환(직원 ↔ 담당자)이 **왜 메뉴까지 달라져야 하는지**를 뒷받침하는 근거입니다. ### 우리 앱에 적용한다면 - 담당자 휴가·비품 처리 화면 위에 **부서 필터 칩** 한 줄 (전체 / 경영지원 / 영업 / 물류 / 개발) → 이미 만들어 둔 "다시 계산해서 전체 다시 그리기" 방식에 그대로 얹으면 됨 - 홈에 **"이번 주 휴가자"** 작은 목록 추가 (Odoo Overview의 축소판, 간트까지는 과함) - Odoo의 **2단계 결재**(To Approve → Second Approval)는 **넣지 않음** → 기획서 §9에서 이미 제외하기로 한 항목. 상태가 늘면 교육 난이도가 두 배가 됨 ### 출처 - [Time Off — Management (Odoo 19.0 공식 문서)](https://www.odoo.com/documentation/19.0/applications/hr/time_off/management.html) - [Time Off — Management (Odoo 18.0 공식 문서)](https://www.odoo.com/documentation/18.0/applications/hr/time_off/management.html) - [Request time off (Odoo 18.0 공식 문서)](https://www.odoo.com/documentation/18.0/applications/hr/time_off/request_time_off.html) - [Time off 앱 전체 문서 (Odoo 19.0)](https://www.odoo.com/documentation/19.0/applications/hr/time_off.html) - [Odoo Time Off 제품 페이지](https://www.odoo.com/app/time-off) --- ## 참고: 일부러 가져오지 않은 것 조사 중 좋아 보였지만 **교육용 앱에는 독**이라 제외한 항목입니다. | 기능 | 출처 | 제외 이유 | |---|---|---| | 연차 사용 촉진 자동화 | flex | 법정 제도 설명이 길어져 수업의 초점이 흐려짐 | | 관리자의 수동 연차 가감 | flex | 숫자가 계산이 아닌 손으로 바뀌면 이 앱의 핵심 메시지가 무너짐 | | 결재 메일 발송 | Frappe HR | 단일 HTML 파일에서는 구현 불가(외부 연동 없음) | | 2단계 결재 (팀장 → 인사) | Odoo | 상태 경우의 수가 2배 — 기획서 §9에서 이미 제외 결정 | | 간트 차트 일정 뷰 | Odoo | 직접 만들기엔 비용이 큼. "이번 주 휴가자" 목록으로 충분 | --- ## 다음 단계 이 문서는 **조사 결과일 뿐, 아직 앱에 반영하지 않았습니다.** 적용은 항목별로 따로 결정합니다. 반영 시에는 `PRD.md`의 성공기준(S1~S13)에 새 기준을 추가한 뒤 작업합니다. 우선순위 추천: 1. **1번 (연차 히스토리)** — 이 앱의 교육 메시지를 가장 직접적으로 강화 2. **2번 (신청 전 잔여 표시)** — 작업량 대비 체감 효과가 큼 3. **3번 (부서 필터)** — 신청 건수가 늘어난 뒤에 필요해짐