Skip to content

HBEA200_근무 탭 (홈)

(Hereby) 직원 앱 > 근무 탭 (홈)

직원 앱 Hereby Works (포트 4002)
대상 사용자조건1 [EMPLOYEE] (직원 인증 후 전원)
프로토타입TBU
관련 정책[[POL_근태원천]]
Statusreview
Owner카나

개요

직원 앱 진입 후 최초 랜딩하는 근무 탭(홈). 당일 출퇴근 현황을 "현재 상태" 카드로 조회하고, 오늘 배정된 근무 유형("3교대 주간 07:00 - 15:00")을 표시한다. 출퇴근 punch UI는 config-gated — 테넌트 근태원천 config가 secom(지문기)이면 모바일 punch 버튼 미노출("지문 단말기로 출퇴근이 기록돼요." 안내만), app 모드면 check-in/out 버튼 노출. 기능 부재가 아니라 설정 분기다.

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영 (오늘 근무 유형 표시 신규)
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡) — SECOM 파이프라인

Data I/O

Server → Client

변수엔티티.컬럼값 없을 때비고
$Attendance.status"미출근" 표기당일 근태 상태. 당일 레코드 미존재 시 미출근
$Attendance.actualCheckInhide (당일 미출근 시 미표기)당일 출근 시각 (정책: 당일 출퇴근 시간만 노출)
$Attendance.actualCheckOuthide (미퇴근 시 미표기)당일 퇴근 시각
$Organization.attendanceSource (secom | app)기본값 = secom 가정 (TBU)config-gated punch 노출 결정
$WorkScheduleType (본인 근무시간 설정 연동)hide (근무유형 미설정 시 미표기)오늘 근무 유형. "3교대 주간 07:00 - 15:00" 형식. 원천 = 더보기 > 내 정보의 근무시간 선택
$conversation_members.unreadCount 합"0"하단 탭바 "메신저 0" 배지 (Shell 공통, [[HBEA110]])

Client → Server

액션전달값tRPC procedure권한 토큰
출근 punch (app 모드){ } (현재시각 서버 스탬프)sdk.attendance.checkIn() (추정)attendance:write.self (추정)
퇴근 punch (app 모드)sdk.attendance.checkOut() (추정)attendance:write.self (추정)
외근 등록 진입— (결재 탭 이동, 경계 OQ 참조)
홈 새로고침 / 당일 상태 조회sdk.attendance.getToday() (추정)attendance:read.self (추정)

외부 통합

외부 시스템데이터동기/비동기polling 주기
Secom 지문 단말기지문 punch 이벤트 → secomEvent.ingestEvents → secom_events → processPending → Attendance (attendanceId 매핑)비동기 (단말기 → 서버 push/배치)TBU · SECOM 파이프라인 표 참조

화면 플로우

출퇴근 원천은 Admin config에 종속 — Secom(지문기) 테넌트는 모바일 punch 미노출, app 모드 테넌트는 punch 버튼 노출 ([[POL_근태원천]]). okbest 테넌트는 현재 secom 모드.


근무 탭 (홈) 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00화면 진입 조건-조건1 [EMPLOYEE] 인증 완료 시 노출. 앱 진입 후 기본 랜딩 탭[[HBEA100]] 로그인
01초기 상태Output진입 시 당일 Attendance 조회 후 카드 렌더AttendanceTBU: 당일 레코드 없음/status 부재 시 "미출근" 폴백 표기
10현재 상태 카드Card당일 출퇴근 상태 + 오늘 근무 유형 표시 상단 카드Attendance.status정책: 당일 출퇴근 시간만
ㄴ11ㄴ 상태 라벨Text"현재 상태" + 상태값 표기Attendance.status
ㄴ11-1ㄴ 상태 분기TextCASE01 [미출근] "미출근" / CASE02 [출근] 출근시각 / CASE03 [퇴근] 퇴근시각 (당일만)Attendance.actualCheckIn/Out
ㄴ12ㄴ 오늘 근무 유형Text"3교대 주간 07:00 - 15:00" 형식 표기. 본인 근무시간 설정 연동[[HBEA510_내 정보·근무 설정]]원천 = 더보기 > 내 정보의 근무시간 선택
ㄴ12-Eㄴ 근무 유형 없음Text근무유형 미설정 시 해당 라인 hideWorkScheduleType
ㄴ13ㄴ 출퇴근 안내 (secom)InfoCASE01 [secom 모드]에서만 "지문 단말기로 출퇴근이 기록돼요." 노출. app 모드 시 미노출Secom 지문기config-gated
ㄴ14ㄴ 출근/퇴근 punch (app)Button• 모바일에서 현재시각을 서버 스탬프해 출퇴근을 기록하는 기능. CASE02 [app 모드]에서만 노출, secom 모드면 완전 미노출
• 클릭 → 현재시각 서버 스탬프, 성공: 출근/퇴근 상태 전이
Attendance.actualCheckIn/OutTBU: 실 UI(레이블·전이·위치)·에러 토스트
ㄴ14-Eㄴ 미출근 시Button당일 레코드 없으면 출근 버튼 활성Attendance
20외근 등록 진입Link• 외근 등록 동선으로 진입하는 링크(배치 위치 근무홈 vs 결재 탭 미확정, OQ 참조)
• 클릭 → TBU
[[HBEA400]] 결재 탭 (추정)TBU: 범위 경계 OQ
30하단 탭바Tab• 근무/메신저/결재/더보기 4탭 + "메신저 0" 배지를 전환하는 하단 네비게이션
• 클릭 → 해당 탭 전환
[[HBEA110_Shell·탭바·알림]]Shell 공통
-E당일 데이터 EmptyText당일 Attendance 전무 시 카드는 "미출근" 상태로 렌더 (전용 Empty 문구 없음)Attendance별도 Empty 카피 미관찰

근태원천 분기 보조표

모드punch UI안내 문구원천비고
CASE01 [secom] (지문기)punch 버튼 없음"지문 단말기로 출퇴근이 기록돼요."secom_events → Attendanceokbest 테넌트 현재 모드
CASE02 [app] (모바일 punch)출근/퇴근 버튼 노출 (실 UI TBU)안내 문구 미노출 (추정)Attendance.actualCheckIn/Out데모는 app 모드 테넌트 필요

SECOM 이벤트 파이프라인 (secom 모드 원천 처리)

secom 모드 테넌트는 지문 단말기 이벤트를 3단계 파이프라인으로 근태 정본에 반영한다. 이벤트 처리 화면 자체는 라이브 사양서 부재(누락). procedure·enum은 TC 라이브 확정. (TC 확정: 01:1.9 SECOM)

단계procedure입력/출력비고
수집secomEvent.ingestEvents([{ eventDatetime, terminalId, employeeNumber, rawEventType, authType }])단말기 raw 이벤트 배치 삽입rawEventType "1"=출근 / "2"=퇴근
조회secomEvent.listEvents({ status })status별 이벤트 목록status = pending / error
처리secomEvent.processPending()pending 이벤트 → Attendance 반영매핑 실패 시 error

enum·매핑 확정:

  • status: pending(미처리) / error(매핑 실패)
  • eventType: check_in / check_out (rawEventType "1"/"2" 매핑 결과)
  • 미지 사번(employeeNumber 미매칭): status=error, 사유 "not found"

권한·상태 분기 요약

시나리오트리거결과 화면비고
CASE01 [Secom 모드 진입]근무 탭 진입 (config=secom)"미출근" 카드 + 안내문, punch 버튼 없음config-gated
CASE02 [app 모드 진입]근무 탭 진입 (config=app)"미출근" 카드 + 출근/퇴근 punch 버튼[[POL_근태원천]]
CASE03 [출근 후](app) 출근 punch / (secom) 지문 인식카드에 당일 출근시각 표기당일만
CASE04 [퇴근 후](app) 퇴근 punch / (secom) 지문 인식카드에 당일 퇴근시각 표기당일만
조건1 [EMPLOYEE]전 직원 인증근무홈 전체 노출 (원천 모드에 따라 punch만 분기)역할 세분 미관찰

Open Question

  • app 모드 punch 버튼 실 UI (레이블·상태 전이·버튼 위치·에러 토스트) = TBU (app 모드 테넌트 데모 필요)
  • 근태원천 config 토글 키·enum 정확명 (secom / app 가정) 및 Organization 컬럼명 = TBU
  • 현재 상태 카드 상세 필드 중 출근시각·근무시간 요약의 정확한 표기 포맷 = TBU (오늘 근무 유형 표시 자체는 확인됨)
  • [범위 경계] 정책 home.md의 "외근 등록 / 외근 등록 리스트 추가"가 근무홈(HBEA200) 범위인지 결재 탭([[HBEA400]]) 범위인지 미확정 — 현행 라이브에서 외근 신청 폼은 결재 탭 관측(ea-diff B7). 근무홈 진입 링크 여부 검증 필요 = TBU/OQ
  • 정책상 삭제 대상("주간 근무시간 / 이번주 근무 스케줄 삭제")의 현행 라이브 잔존 여부 = TBU (본 캡처에는 두 항목 미관찰, 삭제 반영으로 추정)
  • 지문 단말기 → 서버 동기화 주기(실시간 push vs 배치) = TBU. 단 처리 파이프라인 procedure(secomEvent.ingestEvents/listEvents/processPending)·status(pending/error)·eventType(check_in/check_out)은 확정 (TC: 01:1.9). 이벤트 처리 UI 화면은 사양서 부재(누락)