Skip to content

HBAD253_외근 현황

(Hereby) 관리자 패널 > 근태 관리 > 근태 현황 > 외근 탭

메타앱: 관리자 패널 (HBAD)대상 사용자: 조건1 [근태 관리] / 조건2 [근태 승인] / 조건3 [근태 조회 (팀)]프로토타입: TBU관련 정책: [[POL_외근]]Status: reviewOwner: 카나

개요

외근 현황은 근태 현황([[HBAD250_근태 현황 (근무)]])의 외근 탭으로, 직원별 외근 기록을 조회·관리한다 (4월 미지원 신규 모듈).원천은 offsite_work_records이며, 외근 유형은 [HBAD261_유형 설정 (연장근무·외근·휴가)]를 참조한다.상단에 상태 필터 8종, 기간 필터 6종, "외근 유형" 진입점을 제공하고 건수 / 외근 시간 합계 통계를 표시한다.

문서 히스토리

  • 2026-07-06 최초 작성 - 카나/콸
  • 2026-07-10 라이브 기능 검토 반영 (컬럼·필터·통계 확인) - 카나/콸
  • 2026-07-13 버튼 행동 명세 보강 - 카나/콸
  • 2026-07-21 GC700 깊이 재작성 - 카나/콸
  • 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
  • 2026-07-28 코드 변경 반영(8299588) - 카나/PM

Data I/O

Server → Client

변수

메타$
메타$
메타$
메타$
메타$

Client → Server

액션전달 값tRPC procedure권한 토큰
상태 필터status(재조회)근태 조회 (팀)
기간 필터period(재조회)근태 조회 (팀)
외근 결재/관리offsiteRecordId, 승인/반려, rejectionReasonsdk.offsite.approve() (추정)근태 승인 / 근태 관리

외근 현황 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-조건1 [근태 조회/관리 권한] 인증 시 노출
 - CASE01 [미인증]: /admin/signin 리다이렉트
인증 세션 · RBAC
01초기 상태-• 근태 현황 진입 후 "외근" 탭 클릭. 상태 필터 "전체" 기본
05상태 필터Segmented• "전체 / 대기 / 승인 / 반려 / 취소 / 보고서 대기 / 보고서 승인 / 보고서 반려" 8종 (s3 txt 원문)
• 선택 시: status 기준 재조회
목록 재조회 (status 기준)8종 · s3 원문
08상단 통계Stat• "건수 {n}건 / 외근 시간 합계 {n}시간" (원문). 라이브 "건수 8건 / 외근 시간 합계 55.8시간"
 - CASE01 [값 없음]: "0건 / 0시간"
offsite_work_records 집계라이브 원문
10기간 필터Segmented• "이번 주 / 지난 1주 / 이번 달 / 지난 1개월 / 지난 3개월 / 전체" 6종 (s3 원문). 날 유틸 칩을 공용 SubTab(sm·line·radius 4)으로 통일 — 보조 필터 위계로 정리
• 선택 시: workDate 기준 재조회
목록 재조회 (workDate 기준)6종 · 프리셋 SubTab 통일 (코드 반영: 8299588)
12소속 선택Dropdown• "소속 선택" (s3 txt) 팀 필터
• 선택 시: teamId 기준 재조회
 - CASE01 [값 없음]: 전체
목록 재조회s3 원문
14검색Search• placeholder "사번 / 이름 / 이메일" (원문). 연차 현황과 동일 규약: 176×32px, 0.3초 debounce, 필터 줄 오른쪽 끝 고정. 서버 페이지네이션 목록이라 offsiteWork.list에 search 파라미터로 재조회
• 입력 시: 해당 직원 필터
 - CASE01 [결과 없음]: Empty
목록 재조회 (search 파라미터)신규 (코드 반영: 8299588) · TBU: 검색 결과 없음 문구
20외근 유형 진입Button• "외근 유형" (s3 btn 원문) 버튼
• 클릭 시: "유형·기준 관리" 모달 외근 유형 섹션
[[HBAD261_유형 설정 (연장근무·외근·휴가)]] · offsite_work_types
30외근 기록 그리드Grid• 직원별 외근 기록 그리드. 컬럼(s3 원문): 사번 / 이름 / 근무일 / 외근 시간 / 장소 / 유형 / 상태 / 관리 (8컬럼)
 - CASE01 [필터 결과 0건]: Empty state
offsite_work_records8컬럼 · TBU: Empty 원문
ㄴ31사번Cell• 직원 사번 (read-only). 예: "ADMIN003"employees.employeeNumber
ㄴ32이름Cell• 직원 성명. 예: "안세희"employees.name
ㄴ33근무일Cell• 외근 근무일 (YYYY. MM. DD.). 예: "2026. 07. 06."offsite_work_records.workDate
ㄴ34외근 시간Cell• 외근 시간 (h). 라이브 "1시간" / "16.9시간" / "0시간"offsite_work_records.workHours · startTime / endTime시간(h) 표기
ㄴ35장소Cell• 외근 장소. 라이브 값 "55555" / "테스트" / "삭제" 등 (개발 junk 데이터)offsite_work_records.location
ㄴ36유형Badge• 외근 유형. 라이브 값 "테스트" / "3" / "2" (숫자 라벨은 junk). 값 없으면 셀 미표기offsite_work_records.typeId → offsite_work_types.name
ㄴ37상태Badge• 결재 상태 (default pending). 라이브 값 "보고서 승인" / "취소" / "보고서 반려" / "승인" / "반려"offsite_work_records.status (status_enum)값: 상태 필터 8종 대응
ㄴ38관리Button• 행 "보기" (s3 btn 원문) 버튼
• 클릭 시: 외근 상세 (실화면 미오픈)
 - CASE01 [승인]: approvedBy·approvedAt 기록
 - CASE02 [반려]: rejectionReason 기록
offsite_work_records.approvedBy/At · auditLog근태 승인 · TBU: 실패 처리

페이지네이션 (라이브 관찰)

항목라이브 값비고
페이지 컨트롤"« ‹ 1 › »"s3 btn 원문
총 건수 표기"총 8건 중 1-8건"s3 txt 원문

외근 데이터 구조 (ERD 근거)

항목ERD 근거비고
사유offsite_work_records.reason (text, nullable)외근 사유
보고offsite_work_records.report (jsonb)외근 결과 보고 (보고서 대기/승인/반려 상태 대응, 추정)
감사 이력offsite_work_records.auditLog (jsonb, default [])업무별 이력
유형 마스터offsite_work_types (name·sortOrder·isActive)[[HBAD261_유형 설정 (연장근무·외근·휴가)]]

권한 · 상태 분기 요약

시나리오트리거결과 화면비고
CASE01 [조회]외근 탭 진입offsite_work_records 그리드 + 통계근태 조회 (팀)
CASE02 [상태 필터]8종 상태 선택status 기준 재조회보고서 상태 3종 포함
CASE03 [승인]"보기" → 승인approvedBy/At 기록근태 승인
CASE04 [반려]"보기" → 반려rejectionReason 기록
CASE05 [보고서 결재]보고서 대기 건보고서 승인/반려 (TM 결재 [[HBTM220]] 연동)상태 "보고서 승인"

Open Question

  • offsite_work_records_status_enum 전체 값 (상태 필터 8종 대응 매핑). TBU.
  • "외근 시간" 셀 표기 (시간 h vs 시각 범위). 라이브는 h 표기 관찰. 시각 범위 병행 여부 TBU.
  • report(jsonb) 외근 보고 UI 노출 (보고서 대기/승인/반려 상태와 [[HBTM220]] 결재 연계). TBU.
  • 외근 상세 모달 실화면 (승인/반려/수정 버튼 구성). TBU.