Skip to content

HBEA430_인센티브

(Hereby) 직원 앱 > 결재 허브([[HBEA400_결재 허브]]) > 인센티브

직원 앱 Hereby Works (포트 4002)
대상 사용자조건1 [직원 인증] (self scope)
프로토타입TBU
관련 정책[[POL_결재워크플로우]] · [[POL_인센티브산정]] (참조만)
Statusreview
Owner카나

개요

  • 인센티브는 결재 허브([[HBEA400_결재 허브]]) "인센티브" 서브탭으로, 본인 인센티브를 월별 조회하는 self scope 표면이다.
  • 월별 헤더("2026년 7월" 당월 + "합계 0건") + 상태 필터("전체 / 대기중 / 승인 / 반려 / 취소") + 내역 리스트(Empty "인센티브 내역이 없어요.")로 구성된다.
  • 인센티브 원천은 HR 인센티브 세션 시트([[HBHR250_인센티브 세션 시트]]) 확정 결과 및 치료일 인센티브(treatment)다. 본인 등록(write) 경로는 API 레벨에 실재한다 — 직원 본인이 fixedIncentive.create({splitRatio, unitCount, unitPrice, workDate, ...})로 self scope 등록 가능(권한 토큰 incentive:create.self, EMPLOYEE 롤 — TC 확정: 01:1.10). 단 UI 등록 진입점(등록 버튼·FAB)은 라이브에서 미관찰(2026-07-10 관리자 계정) — "조회 전용" 단정은 🔴 정정: UI 미노출 ≠ write 경로 부재. 공통 서브탭 골격은 [[HBEA400_결재 허브]]을 참조한다(중복 정의 금지).

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영 (FAB 없음·조회 전용 확정)
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PM🔴 정정: self-register API 실재(fixedIncentive.create) — "조회 전용" 폐기 (TC 정본, 콸 승인)

Data I/O

Server → Client

변수DB 엔티티.컬럼값 없을 때비고
$조회 월 (YYYY-MM)당월 기본값 ("2026년 7월")헤더 좌측 월 표기
$COUNT(IncentiveRecord, self·당월)"합계 0건"헤더 우측 총건수
$IncentiveRecord[] / treatment (self)Empty "인센티브 내역이 없어요."당월 본인 인센티브 행
$GROUP BY IncentiveRecord.status라벨만 (카운트 0 숫자 미표기, 추정)상태 필터 칩 카운트
ㄴ항목: 인센티브 이름IncentiveRecord.name (추정)hide행 라벨 (approval.md 정책)
ㄴ항목: 승인 상태IncentiveRecord.statushide행 배지 (approval.md 정책)
ㄴ항목: 날짜IncentiveRecord.date (추정)hide행 일자 (approval.md 정책)

Client → Server

액션전달 값tRPC procedure권한 토큰
월 변경 (당월 고정 여부 TBU)period (YYYY-MM)sdk.incentive.listSelf() (추정)incentive:read.self
상태 필터 선택statusKey (전체/대기중/승인/반려/취소)클라이언트 필터 (재조회 여부 TBU)incentive:read.self
본인 등록 (self-register)splitRatio, unitCount, unitPrice, workDate 등fixedIncentive.createself scope 등록 실재 (version 관리 포함). UI 진입점은 미관찰(동선 TBU)incentive:create.self (EMPLOYEE 롤 실토큰 — TC 확정: 01:1.10 / 02:2.10)

외부 통합 (cross-app)

외부 시스템데이터동기/비동기비고
HR 인센티브 세션 시트 ([[HBHR250_인센티브 세션 시트]])인센티브 원천·taxonomy·확정 결과비동기 (HR confirm 후 self 반영)산정·확정은 HR 소관
Medical treatment ([[HBMD_치료일 인센티브]])치료일 인센티브 source (fixed_incentive taxonomy)비동기treatment 원천

화면 플로우 (Mermaid 의무)

인센티브 산정·확정은 HR/treatment 원천 소관 — 직원앱은 self scope 표면. 본인 등록 write는 API 실재(fixedIncentive.create), UI 진입 동선만 TBU


인센티브 서브탭 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00화면 진입 조건-조건1 [직원 인증] · 결재 허브 "인센티브" 서브탭 선택 시 노출. 조건2 [관리자 계정]도 동일 조회 표면인증 세션 (self)2026-07-10 라이브(관리자 djcola814) 확정
ㄴ00-1미인증 분기-CASE01 [미인증] /employee-app/signin 리다이렉트인증 세션
01초기 상태Output서브탭 진입 시 당월(${period}) 기준 헤더 + 상태 필터 + 리스트 렌더${period} / $값없음: ${incentives} 부재 시 30-E
10월별 조회 헤더Output좌측 월 표기 + 우측 합계 표기. 당월(${period}) 기본${period} · $census "2026년 7월 합계 0건". TBU: 월 네비게이터 유무(당월 고정 vs 스피너 이동)
ㄴ11월 표기Text"2026년 7월" 원문. 당월 자동 표기$원문 카피
ㄴ12합계Output"합계 0건" 원문. 당월 총건수$census 원문. TBU: 산정 기준(건수 vs 금액)
20상태 필터 칩Filter• 리스트를 승인 상태별로 거르는 가로 칩 5종. 원문 "전체" / "대기중" / "승인" / "반려" / "취소"
• 클릭 → 리스트 상태 필터 적용
 - CASE01 [전체]: 전체 표시(기본)
 - CASE02 [대기중·승인·반려·취소]: 해당 상태 행만
 - CASE03 [필터 결과 0건]: 30-E Empty 문구 노출(추정)
IncentiveRecord.status (self)census 원문 5종. TBU: enum 원문값(pending 등)
30인센티브 내역 리스트List본인 당월 인센티브 행 목록. 상태 필터 결과에 종속IncentiveRecord[] / treatment (self)census = 0건
ㄴ31항목 행Row• 1행 = {인센티브 이름} / {승인 상태} / {날짜}
• 클릭 → TBU (라이브 0건이라 행 상세·취소 인터랙션 미관찰)
IncentiveRecord (name·status·date, 추정)[[POL_인센티브산정]] 항목 구성 (정책 출처)
30-Eㄴ EmptyText리스트 0건 시 "인센티브 내역이 없어요." 원문 노출${incentives} 부재census Empty 원문
40본인 등록 (self-register)-write 경로는 API 레벨에 실재fixedIncentive.create(self scope, splitRatio·unitCount·unitPrice·workDate, version 관리) 정상 동작 (TC 확정: 01:1.10)
 - CASE01 [UI]: 등록 버튼·FAB는 라이브 미관찰(2026-07-10 관리자 계정) — 진입 동선 TBU (숨김/타 표면/미구현 중 무엇인지)
 - CASE02 [권한]: incentive:create.self — self scope, cross-employee 등록은 차단 (TC 확정: 02:2.10)
fixedIncentive.create🔴 정정: 구 "조회 전용·write 미제공 확정" 폐기

연동·플로우

  • 인센티브 원천: HR 인센티브 세션 시트([[HBHR250_인센티브 세션 시트]]) 확정 결과 + 치료일 인센티브(treatment) → 직원 self 조회로 노출. 직원앱은 산정·확정에 관여하지 않는다.
  • 정본 경계: 인센티브 산정·확정은 HR/treatment 소관. 직원 본인 등록은 fixedIncentive.create(self)로 API 레벨 실재하며 생성 record는 status=pending → 팀장 fixedIncentive.approve(ids[]) 승인 게이트를 거친다 (TC 확정: 01:1.10 / 02:2.5).

권한 · 상태 요약

시나리오트리거결과비고
CASE01 [미인증 진입]인센티브 서브탭 직접/employee-app/signin 리다이렉트
CASE02 [직원/관리자 진입]인증 세션 (self)당월 인센티브 조회 표면 (헤더+필터+리스트)관리자 계정도 동일 조회 표면
CASE03 [내역 0건]당월 인센티브 없음Empty "인센티브 내역이 없어요."census 상태
CASE04 [등록 시도]UI 등록 진입점 탐색UI 진입점 미관찰 — 단 API fixedIncentive.create(self)는 실재동선 TBU (TC 확정: 01:1.10)

Open Question

  • self-register 없음API 실재 확정(fixedIncentive.create self, TC 01:1.10). 남는 OQ: UI 등록 진입 동선(숨김/타 표면/미구현 여부) = TBU.
  • 인센티브 상태 필터 enum 원문 값 및 "합계" 산정 기준(건수 vs 금액). TBU.
  • 월 이동 네비게이터 유무(당월 고정 vs 스피너 이동). TBU.
  • 인센티브 조회 원천 엔티티(IncentiveRecord vs treatment 별도 테이블) 및 self 필터 방식. TBU.
  • 인센티브 행 상세 진입·본인 취소 버튼 유무: 라이브 캡처가 0건이라 행 인터랙션 미관찰. 실데이터 확보 후 재검증 필요. TBU.