HBTM000_내부 결재 (앱 개요)
(Hereby) 내부 결재 > 앱 개요
| 앱 | 내부 결재 (HBTM) |
| 대상 사용자 | 조건1 [TEAM_LEADER] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_결재워크플로우]] · [[POL_권한(RBAC)]] |
| Status | review |
| Owner | 카나 (PM) |
개요
- 내부 결재(Team Manager)는 직원 앱에서 생성된 휴가·근무·외근·문서 신청과 치료 인센티브·근무표를 팀장·관리자가 처리하는 **직원 신청의 승인 관문(approval gateway)**이다. 라이브 앱명은 "내부 결재".
- 상단 탭은 7개: "대시보드" / "스케쥴러" / "연차/휴가" / "근무 관리" / "인센티브" / "문서 관리" / "출퇴근현황". 진입 시 "출퇴근현황"으로 랜딩한다.
- 출퇴근현황·근무 관리·연차/휴가·문서 관리 큐는 Admin 근태/문서 결재 화면([[HBAD250_근태 현황 (근무)]] · [[HBAD251_연차 현황·결재]] · [[HBAD240_문서 결재]])을 임베드한 원본 화면이다.
- 핵심 흐름: HBEA 신청 → HBTM 승인·반려·취소 → record 반영. 승인된 연장·인센티브·근태는 HR 급여시트 입력으로 반영된다. 역방향으로 HBNS 근무표 확정 시 연차가 자동 승인 record로 생성되어 연차/휴가 큐에 나타난다.
- 핵심 경계: 결재의 본질은 자동 mutation이 아니라 승인·반려·취소 전 검토와 audit 가능한 사람 확정이다. 승인/반려/취소는 모두 destructive이며 사람이 클릭한다 ([[POL_결재워크플로우]] · [[POL_권한(RBAC)]]).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 + 확정 스타일 |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | 팀장/관리자 인증 세션 (team-scope / SUPER_ADMIN) | 없으면 signin 리다이렉트 | 권한 token 내부 key TBU |
| $ | 관리 가능 팀 목록 (Team[], 추정) | 없으면 "전체 팀"만 | 팀명 + 인원수 표시 |
| $ | notifications[] (추정) | badge 미표시 | 미읽음 카운트 badge |
| $ | 승인 큐 (휴가/연장/외근/문서/치료 인센티브) | 큐 empty | 각 상태 필터·카운트 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 휴가 승인/반려/취소 | requestId, reason? | sdk.teamManager.leave.approve/reject() · approval.cancel() (추정) | approval:leave (추정) |
| 연장/외근 승인/반려 | requestId, reportId? | sdk.teamManager.work.approve/reject() (추정) | approval:work (추정) |
| 문서 승인/반려 | documentId, reason? | sdk.teamManager.document.approve/reject() (추정) | approval:document (추정) |
| 치료 인센티브 등록 | month·type·date·employees·itemCounts·note | sdk.teamManager.treatment.create() (추정) | incentive:create (추정) |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 방향 | 비고 |
|---|---|---|---|
| 직원 앱 ([[HBEA400_결재 허브]]) | 휴가/근무/외근/문서 신청 | EA → TM | 신청 생성 원천 |
| Admin (HBAD) | 팀·소속·직원·권한·근무유형 | HBAD → TM | config 원천 |
| HR 급여시트 ([[HBHR220_연장근무 내역 시트]] · [[HBHR250_인센티브 세션 시트]]) | 승인된 연장·인센티브·근태 | TM → HR | 급여 입력 반영 |
| Nurse Scheduler ([[HBNS000_간호 스케줄러 (앱 개요)]]) | 근무표 embed · 확정 시 연차 자동생성 | NS ↔ TM | 역방향 연동 |
| Secom 근태 원천 | 출퇴근현황 실데이터 (14,358건) | Secom → TM | [[POL_근태원천]] |
화면 플로우
승인·반려·취소는 정본 반영 경계 — destructive. AI/검토는 preflight·brief까지만, 실행은 사람. HBNS 근무표 확정은 연차 자동생성으로 역연동된다.
앱 개요 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | 조건1 [TEAM_LEADER] 이상 인증 시 노출. 미인증 시 signin 리다이렉트 | 인증 세션 (team scope) | token 내부 key TBU |
| 01 | 초기 상태 | - | 진입 시 "출퇴근현황"으로 랜딩(Admin 근태 현황 근무 탭 임베드의 원본 화면). 대시보드는 출퇴근현황 + 승인 큐 preview 통합 뷰 | [[HBTM100_Shell·팀 필터]] · [[HBTM200_대시보드]] | 랜딩=출퇴근현황 |
| 10 | 정체성 | - | • 직원 앱 신청을 팀장·관리자가 검토·확정하는 approval gateway. 자동 mutation이 아니라 audit 가능한 사람 확정이 본질 | 라이브명 "내부 결재" | |
| 20 | 7탭 구조 | Tab | • 상단 7탭을 라우팅하는 네비게이션 • 클릭 시: 각 화면 전환(출퇴근현황 포함) - 순서: "대시보드" / "스케쥴러" / "연차/휴가" / "근무 관리" / "인센티브" / "문서 관리" / "출퇴근현황"(신설, 랜딩) - 4월 대비 scheduler embed·문서관리 통합·출퇴근현황 추가 | Shell 공통 ([[HBTM100_Shell·팀 필터]]) | |
| ㄴ21 | 대시보드 | Tab | • 출퇴근현황 + 외근/연장/휴가 큐 preview 통합 뷰 • 클릭 시: /team-manager/ 전환 | [[HBTM200_대시보드]] | |
| ㄴ22 | 연차/휴가 | Tab | • 휴가 승인 큐. 자동생성 row 포함 • 클릭 시: /team-manager/leave 전환 | [[HBTM210_연차·휴가 승인 큐]] | |
| ㄴ23 | 근무 관리 | Tab | • 연장·휴일 근무 / 외근 서브탭. 보고서 단계 상태 포함 • 클릭 시: /team-manager/work 전환 | [[HBTM220_근무 관리 (연장·휴일/외근)]] | |
| ㄴ24 | 인센티브 | Tab | • 치료 인센티브 등록 화면 • 클릭 시: /team-manager/treatment 전환 | [[HBTM230_인센티브 (치료 인센티브 등록)]] | 일반 인센티브 승인 큐 위치 = Open Question |
| ㄴ25 | 문서 관리 | Tab | • 신청/제출/자격증·면허 통합. 미리보기 모달 • 클릭 시: /team-manager/document-management 전환 | [[HBTM240_문서 관리]] | |
| ㄴ26 | 스케쥴러 | Tab | • HBNS 근무표 embed. AI 자동생성/확인은 HBNS destructive boundary 계승 • 클릭 시: /team-manager/scheduler 전환 | [[HBTM250_스케줄러 Embed]] | |
| ㄴ27 | 출퇴근현황 | Tab | • 신설 · 랜딩 화면. Admin 근태 현황 근무 탭 임베드(/team-manager/?att=1)의 원본 화면 • 클릭 시: /team-manager/?att=1 전환 - 구성: 사번/이름/소속/근무일/출근·퇴근 시간 목록 + 소속·기간 필터 + "더 보기 (8/n)" | [[HBTM100_Shell·팀 필터]] · [[HBAD250_근태 현황 (근무)]] | Secom 원천 |
| 30 | 승인 관문 흐름 | - | • HBEA 신청(대기) → HBTM 승인/반려/취소 → record 반영 - STEP1 승인된 연장·인센티브·근태 = HR 급여시트 입력 - STEP2 외근은 TM 승인 시 EA 상태 "승인" 반영 + 신청자에게 "외근 보고서 작성" 트리거 노출 | [[HBEA400_결재 허브]] · [[HBEA421_보고서 제출]] · HR 급여시트 | [[POL_결재워크플로우]] |
| ㄴ31 | 역방향 연동 | - | • HBNS 근무표 확정 시 연차가 자동 승인 record로 생성되어 연차/휴가 큐에 노출 (사유 "근무표 확정 자동 생성") | [[HBNS202_확인 (확정·게시)]] → [[HBTM210_연차·휴가 승인 큐]] | 역방향 핵심 |
| 40 | 화면 목록 (I.A.) | - | HBTM100 Shell·팀 필터(출퇴근현황 랜딩) / HBTM200 대시보드(4위젯) / HBTM210 연차·휴가 / HBTM220 근무 관리 / HBTM230 인센티브 / HBTM240 문서 관리 / HBTM250 스케줄러 Embed | 앱 하위 화면 | |
| 50 | cross-app 연결 | - | HBEA(신청 원천) · HBAD(팀·직원·유형 config) · HR 급여시트(연장·인센티브·근태 반영) · HBNS(근무표 embed·연차 자동생성) · Secom(출퇴근 원천) | Data I/O 외부 통합 참조 |
AI 접점 요약
내부 결재의 AI는 결재를 대신하는 자동 승인자가 아니라 결재 보조자다. read/suggest/preflight/brief/dry-run까지만 담당하고 승인·반려·취소는 사람 확정. 현재 라이브에 AI 표면은 없으므로 아래 7종은 greenfield 후보. AI 자동 승인/반려/취소 금지, 승인 전 preflight 결과는 audit에 남긴다.
| AI Skill | 트리거 위치 | 동작 | 안전 경계 | 우선도 |
|---|---|---|---|---|
| approvalRecommend | 각 승인 큐 row hover/상세 | "승인해도 되는지" 자동 brief (잔여연차·같은 날 결원·대체자·근무표 충돌·52시간) | Read/brief, 승인은 사람 | ★★★★★ |
| bulkTriage | 승인 큐 다중 선택 | 안전 승인 후보 vs 확인 필요 후보 분리. 일괄 승인 버튼은 사람 클릭 | Suggest, dry-run | ★★★★☆ |
| anomalyDetect | request 큐 | 중복 신청·연차초과·비정상 장시간 외근·문서 유형 불일치·치료 인센티브 중복 탐지 | Read/Preflight | ★★★★☆ |
| 52시간 사전예측 | 근무 관리 승인 전 | 연장·야간·토요일 승인 전 주 52시간·수당 리스크 예측 | Read/Preflight, docs 명문화·live 미노출 | ★★★★☆ |
| 교대희망 충돌 브리프 | 스케쥴러 / 근무 큐 | 교대 희망 ↔ 근무표·기존 휴가·병동 인력 충돌 설명 | Read, TM 미경유 가능성 | ★★★☆☆ |
| approvalSummaryNL | 대시보드 | "오늘 봐야 할 결재·위험 건" 자연어 요약 + preflight audit 기록 | Read/audit | ★★★★☆ |
| tm.handover.compose | 승인/반려 결과 | 팀 인계·공지·후속 작업 초안 작성 | Suggest, 신규 | ★★★☆☆ |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [미인증 진입] | /team-manager 직접 | signin 리다이렉트 | |
CASE02 [팀장/관리자 진입] | 인증 세션 | 대시보드 (팀 scope) | admin은 "전체 팀" 선택 가능 |
CASE03 [승인/반려/취소] | row action 클릭 → 확인 | record 상태 변경 · HR/근무표 반영 가능 | destructive, 사람 확정 |
조건1 [TEAM_LEADER] | 큐 진입 | 소속 팀 scope 큐 노출 | token 내부 key TBU |
조건2 [SUPER_ADMIN] | 큐 진입 | 전체 팀 scope 선택 가능 | token 내부 key TBU |
Open Question
- 다단계 결재(1차/2차), 위임/대결재 존재 여부 = TBU
- 승인/반려/취소 후 audit trail UI 존재 여부, 승인자·시각·사유 기록 = TBU
- 승인/반려 modal의 사유 입력 필드·첨부 지원 여부 = TBU
- Team Manager 권한 token 내부 key 및 self/team/full scope = TBU
- 일반 인센티브 승인 큐 위치 (현재 인센티브 탭 = 치료 인센티브 등록만 확인) = TBU