SimpleHR project

모바일 앱 스펙

概念編集: Cairni · 방금 · AI 生成v7

개요

Simple HR 프로젝트의 모바일 앱에 대한 수정 및 개선 요청사항을 정리한 페이지입니다. 2026년 06월 10일자 수정 요청사항(fix-task-0610.md), 2026년 07월 02일자 우선 수정사항(fix-taskNew-0702), 및 2026년 07월 06일자 우선 수정사항(fix-taskNew-0706), 2026년 07월 20일자 수정완료 사항(fix0720.md), 2026년 07월 23일자 수정사항(0723 수정사항), 2026년 07월 29일자 RN 앱 ↔ 웹모바일뷰 기능 격차 감사(RN 앱 ↔ 웹모바일뷰 기능 격차 감사 (0729))을 기준으로 작성되었습니다.

기본 원칙: 기업 사용자(직원)는 모바일 중점, 기업 관리자는 PC 중점으로 개발합니다. fix-taskNew-0702 (26년 07월 02일 우선수정사항)

근로계약서 안내 배너

근로계약서 스펙의 활성화 토글 로직에 따라 모바일 앱에 다음과 같이 안내 배너를 표시해야 합니다.

MobileDashboard (대시보드)

  • 조건: SOFT 게이트 (계약시작일 < 입사일)
  • 표시: 황색(노란색) 배너 표시
  • 참고: 근로계약서 활성화 토글 재수정

MobileProfile (프로필)

  • HARD 게이트: 빨강(Err) 배너 표시 (계약시작일 >= 입사일)
  • hard_pending 상태: 파란색 배너 표시
  • 현재는 모바일에서 아무런 안내가 없어 PC와 일관성이 없음

휴일 근로 신청 연동

휴가 관리 스펙에서 APPROVED 상태의 OT_HOLIDAY(휴일근로) 신청이 존재할 경우 모바일 출근 화면 로직을 다음과 같이 개선해야 합니다.

출근하기 버튼 제어

  • 휴일/연차일 경우: 기본적으로 출근하기 버튼 비활성화
  • APPROVED OT_HOLIDAY 존재 시: 버튼 활성화 (휴일이어도 출근 허용)
  • check_in 프로세스에서 OT_HOLIDAY 승인 여부를 확인하고 차단/허용 분기 처리

출근 상태 표시

  • 기존: "오늘 출근 전이에요"
  • 개선: 휴일/연차 시 "오늘은 [휴일명/휴가명]이에요" 표시
  • APPROVED OT_HOLIDAY 상태도 함께 반영

대시보드 및 UI 개선

기본 구조

일정 캘린더 개선

  • 휴가 관리에서 연속일정이 끊겨서 나오는 현상 수정
  • 예: 여름휴가 같은 멀티데이 휴가가 중단 없이 표시되도록 수정
  • 카테고리 필터 추가: 개인/회의/출장/업무 선택 시 해당 일정만 표시

근무 탭 레이아웃

  • 일자별 전체 내용이 한 페이지에 표시되도록 줄 간격 축소
  • 근태 관리 스펙과 연계

임시휴일(선거) 표시

  • 관리자가 전사로 등록한 임시휴일이 직원 모드에서 휴무로 표시
  • 출근하기 버튼 비활성화
  • 연차와 동일한 방식 적용

수정 현황

항목상태참고
근로계약서 안내 배너 (MobileDashboard SOFT)✅ 완료
근로계약서 안내 배너 (MobileProfile HARD/hard_pending)✅ 완료
휴일 근로 신청 시 출근 버튼 활성화✅ 완료
출근 상태 메시지 개선 ("오늘은 [휴일명]이에요")✅ 완료
일정 캘린더 연속일정 끊김 수정✅ 완료
일정 카테고리 필터 (개인/회의/출장/업무)✅ 완료
임시휴일 휴무 표시 및 출근 비활성화✅ 완료
근로정책 인정시간 — 기존(당시) 정책 반영✅ 완료과거 데이터는 변경 전 정책 기준 유지 fix0720.md
근로정책 변경 후 미체크일 '정책시간 자동인정' 처리 시 당시 정책 반영✅ 완료변경 전 근로정책 기준으로 인정 처리 fix0720.md
인정근로시간 수정 시 표시 및 연동✅ 완료관리자가 출·퇴근 시각 수정 시 인정근로시간 자동 변경; 당일 근로 정책 시간 vs 실제 인정근로시간 구분 표기 fix0720.md
PC 출퇴근 불가 (위치 권한)✅ 완료위치 권한 미허용 시 안내 문구 및 [위치 권한 요청]·[허용 방법 보기] 버튼 표시; 차단 시 단계별 허용 안내창 추가 fix0720.md
근로정책 변경 시 사용자·모바일 모드 기존 정책 유지🔄 구현 중관리자 모드(기존 정책 유지+변경일 기준)처럼 사용자·모바일도 동일 적용 예정 fix0720.md
근로시간 직접 입력 방법 개선 (미체크 시 인정출근/연차대체/결근 확인 클릭)🔄 검토 중직접 입력 구현 완료; 확인 클릭 마무리 방식은 검토 후 구현 예정 fix0720.md
모바일 결재 근태/서류 탭 KPI 카드 → 필터 칩 전환✅ 완료MobileApprovalList.tsx: 대기/승인/반려 KPI 카운터 카드를 전체 탭과 동일한 필터 칩(전체/대기/완료/반려)으로 교체; STATUS_FILTERS 상수 + StatusFilterChips 컴포넌트 추출 0723 수정사항 (fix-task 2026-07-23)
모바일 결재 근로유형 영어 노출 → 한글화✅ 완료OT_EXTEND/OT_NIGHT/OT_HOLIDAY enum 원문이 노출되던 문제 수정; OT_TYPE_LABELOT_EXTEND 키 추가 + 두 상세 시트 valueLabelsovertime_type 매핑 → 연장근로/야간근로/휴일근로로 렌더 0723 수정사항 (fix-task 2026-07-23)

07월 06일 우선 수정사항 (모바일 관련)


07월 23일 수정사항 (모바일 관련)

0723 수정사항 (fix-task 2026-07-23)

결재 목록 (MobileApprovalList)

항목상태비고
근태/서류 결재 탭 KPI 카드 → 필터 칩 전환✅ 완료대기/승인/반려 KPI 카운터 카드를 전체 탭과 동일한 필터 칩(전체/대기/완료/반려)으로 교체; 세 탭 공용 STATUS_FILTERS 상수 + StatusFilterChips 컴포넌트 추출. 순수 프론트, DB/API 무관.
근로유형 영어 enum 노출 → 한글화✅ 완료상세 시트의 '근로 유형'이 OT_EXTEND/OT_NIGHT/OT_HOLIDAY 원문으로 표시되던 버그 수정; OT_TYPE_LABELOT_EXTEND 키 추가 + valueLabelsovertime_type 매핑 → 연장근로/야간근로/휴일근로로 렌더.

07월 20일 수정완료 사항

fix0720.md

근로정책 인정시간

항목상태비고
근로정책 인정시간 — 기존(당시) 정책 반영✅ 완료과거 데이터는 변경 전 근로정책 기준 유지
미체크일 '정책시간 자동인정' 처리 시 당시 정책 기준 적용✅ 완료변경 전 근로정책 기준으로 인정 처리
인정근로시간 수정 연동✅ 완료관리자가 출·퇴근 시각 직접 수정 시 인정근로시간 자동 변경; 근태 화면에서 당일 근로 정책 시간 / 인정근로시간(실제) 구분 표기
근로정책 변경 시 사용자·모바일 모드 기존 정책 유지🔄 구현 중관리자 모드(기존 정책 유지+변경일 기준)와 동일하게 사용자·모바일도 적용 예정
근로시간 직접 입력 개선 (확인 클릭 방식)🔄 검토 중직접 입력 구현 완료; 미체크 시 인정출근/연차대체/결근 확인 클릭 마무리 방식은 검토 후 구현 예정
⚠️ 출퇴근관리 > 직원 상세에서 연장시간이 당일 근로정책에 맞춰 계산되어 올바르지 않게 보일 수 있습니다. 현재 수정 중입니다. fix0720.md

PC 출퇴근 (위치 권한)

GPS 출퇴근 스펙 참고

  • 위치 권한이 허용되지 않았을 때 안내 문구와 [위치 권한 요청] · [허용 방법 보기] 버튼 항상 표시
  • 권한이 차단된 경우 허용 방법을 단계별로 알려주는 안내창 추가
  • 브라우저 특성상 한 번 차단한 위치 권한은 자동으로 되돌릴 수 없어 사용자가 직접 허용하도록 안내

fix-taskNew-0706 (26년 07월 06일 우선수정사항)

신청서 / 기안서

항목상태비고
모바일 신청서 첨부파일 제출 구현✅ 완료MobileFormSubmitSheet에 UPLOAD 타입 파일 선택 UI 및 업로드 로직 추가
신청서/기안서 신규 작성 시 문서 종류 선택 단계 제거✅ 완료불필요한 선택 단계 제거
근태 결재 신청 페이지에 결재선 선택 UI 추가✅ 완료결재선 드롭다운, 선택 시 결재 흐름 프리뷰, 미선택 시 자동 결재선 프리뷰, submit 시 approval_line_id 전달
근태결재 신청 제목 형식 통일✅ 완료[출장], [휴가], [특별휴가] 등 대괄호 형식으로 통일
사용자 결재 페이지 위임하기 버튼 제거✅ 완료우측 상단 "위임 설정" 버튼 제거

출퇴근 드로어

항목상태비고
출퇴근 요청 드로어 본문 통일✅ 완료근태 신청(출장/외출/조퇴) 기안서도 테이블 형식으로 통일, 요청 시각·근무지·요청 위치(gps_address) 표시 추가

휴가

항목상태비고
경조사 휴가 신청 시 사유 선택란 추가✅ 완료PC·모바일 모두 경조사(FAMILY_EVENT) 선택 시 sub_reasons 드롭다운 표시

미완료 (GPS·출장)

항목상태비고
출장 잦은 직원 GPS 출근 위치 저장⬜ 미완료GPS로 출근 가능하되 출근하기 버튼 클릭 시 현재 위치 저장 — gps-attendance-spec

07월 02일 우선 수정사항 (모바일 관련)

fix-taskNew-0702 (26년 07월 02일 우선수정사항)

사용자 모바일 — 신청서/기안서

항목상태비고
신청서 - 제출방식: 첨부파일 첨부 기능 구현✅ 완료MobileFormSubmitSheet에 UPLOAD 타입 파일 선택 UI 및 업로드 로직 추가 fix-taskNew-0706 (26년 07월 06일 우선수정사항)
신규 신청서/기안서 작성 시 문서 종류 선택 UI 제거✅ 완료불필요한 선택 단계 제거 fix-taskNew-0706 (26년 07월 06일 우선수정사항)
신청 결재 > 서류 작성 탭 이름 → 기안서 신청 으로 수정✅ 완료

출퇴근 (GPS)

항목상태비고
브라우저 위치 허용 팝업 띄우기 (GPS 출퇴근 사용 시)✅ 완료중요 — gps-attendance-spec
출장 중 GPS 출근: 출근하기 누르면 현재 위치 저장되도록⬜ 미완료GPS로 출근 가능하되, 출근하기 버튼 클릭 시 현재 위치 저장 구현 필요 — business-trip-management-spec

근태 결재

항목상태비고
근태결재 관리 배지 오작동 수정 (알림 존재하나 리스트에 서류 미표시 등)✅ 완료신청 알림은 존재하나 대응 서류가 목록에 미표시되는 문제 해결 fix-taskNew-0706 (26년 07월 06일 우선수정사항)approval-management-spec
관리자 출퇴근 요청 승인 시 해당 직원 근로 정책 시간을 기본값으로 표시✅ 완료fix-taskNew-0706 (26년 07월 06일 우선수정사항)work-policy-spec

관련 페이지


RN 앱 ↔ 웹모바일뷰 기능 격차 감사 (2026-07-29)

RN 앱 ↔ 웹모바일뷰 기능 격차 감사 (0729) RN 앱 ↔ 웹모바일뷰 기능 격차 감사 (0729)

기업 모바일은 RN 앱(mobile/src) + 웹 모바일뷰(frontend/src/components/user/mobile/MobileXXX.tsx) 이중 구조로 운영됩니다. 현장 피드백에서 웹모바일은 정상 동작하나 RN 앱에서 안 되는 기능이 많다는 문제가 제기되어, 12개 도메인을 웹모바일 기준으로 RN과 1:1 코드 대조 감사를 실시했습니다.

총평: RN 이식이 웹모바일보다 후속으로 진행되며 최근/핵심 기능이 미반영. 특히 출퇴근 인증방식(QR·IP)휴가 촉진 응답이 RN에 통째로 빠져 실사용을 직접 차단.

종합 현황

도메인판정누락부분최고 심각도
급여(payroll)✅ OK00
대시보드(홈)⚠️ GAPS44🔴
출퇴근(attendance)⚠️ GAPS43🔴
휴가(vacation)⚠️ GAPS40🔴
조직도(directory)⚠️ GAPS21🔴
프로필/내정보(profile)⚠️ GAPS31🔴
신청서/서류(applications)⚠️ GAPS13🟠
결재(approval)⚠️ GAPS23🟠
메시지(messages)⚠️ GAPS12🟡
공지(notices)⚠️ GAPS01🟡
연장근로(overtime)⚠️ GAPS01🟡
근무표/일정(schedule)⚠️ GAPS10🟡

🔴 실사용 차단 (HIGH) — 우선 처리

1. 출퇴근 QR·IP 방식이 RN에 전무

RN CheckInSheet.tsx:161check_in_method:'GPS'만 하드코딩되어 있어 QR 스캔·사내망 IP 출퇴근 경로가 전혀 없음. 웹모바일은 GPS/QR/IP 방식 선택을 모두 지원. → QR 전용·IP 전용 근무지 직원은 앱으로 출퇴근 불가. GPS 출퇴근 스펙 참고.

2. 휴가 연차촉진 응답이 RN에 전무

웹모바일 MobileVacation.tsx에는 근기법 61조 촉진 응답(배너·1차 응답·2차 응답)이 완비되어 있으나 RN vacation에는 전무. 연차촉진 스펙 참고.

3. 조직도 부서 칩 필터 누락

MobileDirectory.tsx의 distinct 부서 칩 필터가 RN DirectoryScreen.tsx에 없음(서버 페이지네이션 이유로 의도적 제거). → 부서 기준 직원 탐색 수단 소실.

4. 프로필 필수서류 제출·조회 누락

MobileProfile.tsx:376-505의 필수서류 아코디언(UPLOAD/PASTE/SIGN 처리, 재제출/취소, 상태 배지)이 RN에 전무. RN ProfileScreen.tsx는 PC 안내만 표시.

🟠 MEDIUM — 보조/완결성

  • 휴가 촉진 응답 이력 섹션 — RN에 신청 이력만 있고 촉진 응답 이력 없음
  • 결재 '전체' 통합 탭(근태+서류 날짜순 합본) — RN은 근태/서류 2탭만
  • 결재 서류 본문 리치 렌더 — RN은 하드코딩 ~15개 라벨 key-value 표로 대체, 커스텀 폼은 raw key 노출
  • 조직도 임직원 상세 '메시지 보내기' — RN 미구현
  • 대시보드 허용시간 밖(EARLY/LATE) → 출퇴근요청 폴백 분기 — RN은 권한거부/반경밖만 폴백
  • 대시보드 계약 미서명(ATT_CONTRACT_UNSIGNED) '날인하러가기' 액션 — RN 토스트에 액션 버튼 미지원
  • 출퇴근 인증방식 선택 드롭다운 + 마지막 방식 기억 — RN 단일 GPS
  • 출퇴근 폴백 요청 시 GPS 주소(역지오코딩) 첨부 — RN은 좌표만, 결재자에게 주소 미노출
  • 신청서 서명/도장 입력 — RN은 'PC에서 작성' 안내만
  • 신청서 리치 붙여넣기(PASTE) — RN은 plain 텍스트만, 서식·표 유실
  • 프로필 서류함(계약서/보관함/제증명서) + 계약서 보기·PDF·서명 — RN 전무
  • 프로필 자격증·면허 목록 + 만료/임박 배지 — RN 전무
  • 프로필 계약 게이트 배너 상태별 구분(hard/hard_pending) — RN은 단일 카드로 축소

🟡 LOW — 소소한 격차

  • 공지 본문 하이퍼링크 — RN logic.ts:127이 인라인 태그 제거해 href 소실
  • 연장근로 사유 입력 maxLength=500(RN) vs 웹 무제한 — 긴 사유 RN 잘림
  • 근무표 개인화 헤드라인('{이름}님의 이번 주 근무') — 웹만, RN은 고정 타이틀
  • 출퇴근 개인화 헤더 H1, GPS 지속추적/수동 재조회 — RN은 1회 측정
  • 대시보드 위치권한 사전경고 배너, 위치 수동 재조회, 최근 공지 딥링크 — RN 축소
  • 메시지 새 대화 picker 부서 계층 트리(웹) vs 평면 칩(RN), 프로필 사진(웹) vs 이니셜(RN)
  • 결재 상세 '~님 결재중' 대기 결재자 표시 — RN 상세 시트 미표시

착수 권장 순서

  1. 1.출퇴근 QR·IP (RN) — 실사용 직접 차단. RN CheckInSheet에 인증방식 선택 + QR 스캔·IP 경로 추가. 최우선.
  2. 2.휴가 촉진 응답 (RN)vacation/api.ts에 promotion 래퍼 2개 + 배너 + 응답 시트(1차/2차) + 내역.
  3. 3.프로필 필수서류·서류함·자격증 (RN) — UPLOAD·PASTE 제출, 계약서/서류/제증명서 조회, 자격증 목록.
  4. 4.신청서 서명·붙여넣기·본문 리치 렌더 (RN) — TemplatePreview 엔진 이관 규모 검토.
  5. 5.결재 통합탭 / 조직도 필터·메시지 / 대시보드 폴백·계약 액션 — 완결성.