Skip to content

HBAD240_문서 결재 ​

(Hereby) 관리자 패널 > 문서 결재 > 문서 결재

메타앱: 관리자 패널 (포트 4001) — 본문 Team Manager 임베드 (포트 4004)대상 사용자: 조건1 [문서 관리/조회 권한 보유자]프로토타입: TBU관련 정책: [[POL_권한(RBAC)]]Status: reviewOwner: 카나

개요 ​

문서 결재는 직원이 제출한 문서·증명서 요청을 관리자가 검토·승인/반려하는 결재 인박스 화면이다. 사이드바 "문서 결재" 그룹의 "문서 결재" 메뉴 진입점이다. 본문은 Team Manager 앱 임베드(/team-manager/document-management?embedded=1)로 로드된다. 화면은 "문서 결재" / "자격증·면허" 2탭으로 구성된다. 결재 대상은 직원 업로드 문서(documents)와 증명서 발급 요청(certificate_issuances)이며, 검토자·검토일시(reviewedBy/reviewedAt·approvedBy/approvedAt) 기록으로 처리 이력이 부착된다. 양식 마스터(제출 유형·자격증)는 [[HBAD241_문서 양식]]에서 정의하며, 여기서는 그 양식으로 제출된 건의 결재만 다룬다. 목록 컬럼은 사번 / 이름 / 구분 / 유형 / 신청일 / 상태 / 관리이며, 행 "보기" 버튼으로 상세를 연다.

문서 히스토리 ​

  • 2026-07-06 최초 작성 - 카나/콸
  • 2026-07-10 라이브 기능 검토 반영 (TM 임베드·필터·2탭 확인) - 카나/콸
  • 2026-07-21 GC700 깊이 재작성 - 카나/콸
  • 2026-07-21 가독성 패스 (GUIDE §7) - 카나/PM
  • 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
  • 2026-07-28 코드 변경 반영(8299588) - 카나/PM
  • 2026-09-30 PR #883·#900 반영: 인사처리 결재 — 사직서·휴직신청서·복직신청서·인사발령품의서·근무형태 변경 신청 승인 시 인사정보 자동 반영(시행일 도래 전이면 매시 잡이 시행일에 반영), 목록 「인사처리」/「인사 반영」 배지, 미리보기 인사 정보 블록(퇴직/휴직/복직/발령/근무 변경 정보)+승인 전후 안내, 승인 토스트, 일괄 승인 확인창, 인사발령품의서 승인 권한 제한 · 자격증/면허 미리보기 대장 등록 안내(MED-780) — 커밋·소스 원문 근거, 라이브 실사 이월(TBU) - 카나/PM

Data I/O ​

Server → Client

변수

메타${approval_inbox}
메타${doc.status}
메타${doc.category}

Client → Server

액션전달 값tRPC procedure권한 토큰
승인documentId검토자·검토일시 기록 (documents.reviewedBy/reviewedAt · 증명서 certificate_issuances.approvedBy/approvedAt)라벨 "문서 관리" (토큰 document:write 추정)
반려documentId · 사유certificate_issuances.rejectedReason 기록 (문서 반려 사유 컬럼 = TBU)라벨 "문서 관리"
필터/검색조직/구분/상태/검색어/기간목록 재조회 (TM 임베드)라벨 "문서 조회"

외부 통합

외부 시스템데이터방향비고
Team Manager (포트 4004)/team-manager/document-management?embedded=1 본문 임베드Admin → TM iframe타 앱 embed

메인 화면 사양표 (문서 결재) ​

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00진입 조건-• 조건1 [문서 관리/조회 권한] 보유 시 노출. 사이드바 "문서 결재" 그룹 > "문서 결재" 메뉴 진입. 미보유 시 hide권한 트리(문서)[[POL_권한(RBAC)]]
01초기 상태Output• "문서 결재" 탭 결재 인박스 표시 (필터 미적용)
05본문 임베드Embed• 본문 영역을 TM 앱 iframe으로 채우는 임베드. 소스 /team-manager/document-management?embedded=1
• 로드 시: TM 결재 인박스(사번/이름/구분/유형/신청일/상태/관리 그리드) 렌더
Team Manager타 앱 embed
08화면 탭Tab• "문서 결재" / "자격증·면허" 2탭
• 클릭 시: 해당 목록으로 전환
2탭
10결재 인박스Grid• 결재 대기 문서·증명서 요청을 나열하는 그리드documents · certificate_issuances
10-E인박스 EmptyState• 결재 대기 0건 시 빈 상태. 라이브 원문 프로브 미확인TBU: Empty 문구
ㄴ11목록 컬럼Cell• 컬럼 구성: 사번 / 이름 / 구분 / 유형 / 신청일 / 상태 / 관리documents.documentType·category7컬럼
ㄴ11-1인사처리 배지Badge• 유형 칸 옆 배지 — 승인이 곧 인사정보 변경인 서류(사직서·휴직신청서·복직신청서·인사발령품의서·근무형태 변경 신청)에만 표시
 - CASE01 [미반영]: 「인사처리」(툴팁 "승인 시 인사처리")
 - CASE02 [반영 완료]: 「인사 반영」(초록, 툴팁 "인사처리 반영됨")
Document.metadata.hrAction (kind·effectiveDate·appliedAt) · 카탈로그 HR_ACTION_CATALOG신설 (코드 반영: #900 647e1eca) · TBU: 라이브 실사
ㄴ12상태 배지Badge• 결재 상태 배지 (documents_status_enum·certificate_issuances_status_enum): CASE01 [대기] / CASE02 [승인] / CASE03 [반려] / CASE04 [취소]상태 enumTBU: enum 값 목록
15필터Filter• 인박스를 거르는 필터 세트: 조직 선택 / 구분(전체/신청/제출/자격증·면허) / 상태(전체/대기/승인/반려/취소) / 검색 "이름 / 사번 / 이메일" / 기간(이번 주/지난 1주/이번 달/지난 1개월/지난 3개월/전체)
• 선택 시: 목록 재조회
목록 재조회기간 6종 · 7/10 확인
18보기 (행 클릭 미리보기)Button/Row• 행별 결재 상세 진입 버튼. 원문 "보기"
• 클릭 시: 결재 상세 노출
• (10/21 머지, #1257 6e47d97e — 10/22 실측) 행 자체 클릭으로도 「미리보기」 다이얼로그 진입(문서 iframe 렌더) — 다이얼로그에 「전체 화면」·「인쇄하기」 버튼 실측(전체 화면 = 미리보기 확대 토글), 「닫기」/ESC 로 종료
documents행 클릭 미리보기 신설(#1257) · 10/22 실측(스샷 live-1022-ad-doc-preview.png)
ㄴ18-1인사 정보 블록 (미리보기)Section• 인사처리 결재 건의 미리보기에 제출 칸과 승인 안내를 표시. 제목·칸은 종류별 카탈로그 원문
 - 사직서 「퇴직 정보」: 퇴직 예정일 · 사직 사유
 - 휴직신청서 「휴직 정보」: 휴직 사유 · 휴직 시작일 · 복직 예정일 · 메모
 - 복직신청서 「복직 정보」: 복직일 · 메모
 - 인사발령품의서 「발령 정보」: 발령 종류별 행(전보(팀 이동) · 겸직 추가 · 소속 종료 · 역할 변경 — 「현재 팀 → 새 팀」·역할) · 시행일 · 발령 사유
 - 근무형태 변경 신청 「근무 변경 정보」: 희망 근무형태(「그룹 · 근무」) · 시행일 · 사유
Document.metadata.hrAction (옛 metadata.resignation 읽기 폴백) · [[HBAD202_휴직·퇴직 처리 모달]]신설 (코드 반영: #883 9a49f156 · #900 647e1eca) · TBU: 라이브 실사
ㄴ18-2인사처리 안내 (미리보기)Notice• 블록 하단 안내 — 승인 전(정보)·반영 뒤(성공) 문구가 바뀜. 사직서 예시(원문)
 - CASE01 [대기 · 시행일 ≤ 오늘]: "승인하면 이 직원은 즉시 퇴직 처리돼요 — 퇴직 기록이 만들어지고 재직 상태가 「퇴사」로 바뀌어요."
 - CASE02 [대기 · 시행일 미래]: "승인하면 퇴직 기록이 만들어지고, 퇴직 예정일({date})에 재직 상태가 「퇴사」로 자동으로 바뀌어요."
 - CASE03 [승인 · 시행일 전]: "퇴직 예정일({date})에 재직 상태가 「퇴사」로 자동으로 바뀌어요."
 - CASE04 [반영 완료]: "퇴직 인사처리가 끝났어요 ({at}). 직원 상태가 「퇴사」로 바뀌었어요."
 - 휴직·복직·발령·근무 변경도 같은 4단 구조(종류별 문구는 카탈로그 원문)
hrActionApprovalHint · HR_ACTION_CATALOG.hints신설 (코드 반영: #883 · #900)
ㄴ18-3자격증/면허 대장 안내 (미리보기)Notice• 자격증/면허 제출 건 미리보기 안내 — 승인일이 대장 등록일을 확정
 - CASE01 [승인 전]: "승인하면 자격증/면허 대장에 등록돼요(등록일 = 승인일). 반려하면 대장에 올라가지 않아요."
 - CASE02 [승인 뒤]: "자격증/면허 대장에 등록됐어요 (등록일 {승인일})."
documents.reviewedAt (목록 응답 추가) · [[HBAD296_자격증·면허 관리]]신설 (코드 반영: #900, MED-780)
20결재 처리Button• 상세에서 승인/반려를 실행하는 결재 액션
• 클릭 시: 상세에서 승인/반려 실행
 - CASE01 [승인]: 검토자·검토일시 기록 (reviewedBy/reviewedAt·approvedBy/approvedAt)
 - CASE02 [반려]: 사유 입력 → rejectedReason 기록
reviewedBy/reviewedAt · approvedBy/approvedAt · rejectedReason처리 이력 부착 · TBU: 결재선(다단계)·반려 UI·실패 동작
ㄴ21인사처리 결재 승인Rule• 인사처리 결재 승인(미리보기 단건·목록 일괄·관리자 검토 3경로 공통) → 인사정보 자동 반영
 - STEP1 원장 기록 생성(퇴직 기록·휴직 기록 / 복직은 휴직 기록 종료)
 - STEP2 시행일 ≤ 오늘: 즉시 반영 — 사직서 「퇴사」(세션 토큰 폐기·팀장 해제·팀 대화방 나가기) · 휴직 「휴직」(세션 유지) · 복직 「재직」 · 발령 소속·역할 변경(병동·근무 배정 추종) · 근무 변경 주 소속 근무 배정
 - STEP3 시행일 > 오늘: 기록만 만들고 매시 잡이 시행일에 반영
 - CASE01 [인사처리 실패]: 승인은 유지, 잡이 재처리
 - CASE02 [같은 날짜 퇴직 기록 존재]: 재사용(중복 생성 없음)
hr-action-processing.service · hr-action-due.job(매시) · [[HBAD202_휴직·퇴직 처리 모달]] 수동 처리와 같은 결과신설 (코드 반영: #883 · #900)
ㄴ22승인 토스트Toast• 단건 승인 성공 토스트 — 인사처리 결과에 맞춰 문구 변경(원문)
 - CASE01 [즉시 반영]: "승인했습니다. {종류} 인사처리가 반영됐어요."
 - CASE02 [시행일 대기]: "승인했습니다. {시행일}에 인사처리가 반영돼요."
 - CASE03 [일반 서류]: "승인했습니다"
신설 (코드 반영: #883 · #900)
ㄴ23일괄 승인 확인창Dialog• 목록 일괄 승인 선택에 인사처리 결재가 섞여 있으면 1회 확인
• 클릭 시: 컨펌 "인사처리 결재가 포함돼 있어요 ({종류} n건, …). 승인하면 원장 기록이 만들어지고 시행일에 재직 상태·소속·근무가 바뀌어요. 계속할까요?" → 「승인」 시 실행
신설 (코드 반영: #883 · #900)
ㄴ24인사발령품의서 승인 권한Rule• 인사발령품의서는 시스템 관리자 또는 employee:manage 보유자만 승인 가능 — 그 외(직원 관리 권한 없는 팀장 등) 승인 시도는 거부assertCanApproveHrAction · 품의 상신 = 직원 관리 행 「인사발령 품의」([[HBAD200_직원 관리]])신설 (코드 반영: #900, MED-779) · TBU: 거부 시 UI 문구
30처리 이력Output• 검토자·검토일시·반려사유 등 처리 내역 노출 (업무별 이력, 전역 감사로그 아님)documents/certificate_issuances 검토 컬럼도메인 이력
40자격증·면허 탭Tab• 자격증 발급/등록 결재 탭(admin 네이티브 — settings에서 이관, 당국 면허·자격 신고 대장). 원문 "자격증·면허". 필터 줄의 자주 쓰는 기간 프리셋을 공용 SubTab(sm·line·radius 4)으로 통일(기존 손으로 만든 radius 16 칩 → 근태 현황 4개 화면과 동일 규약)
• 클릭 시: 자격증·면허 결재 목록 전환
certification_type_configs · [[HBAD296_자격증·면허 관리]]프리셋 SubTab 통일 (코드 반영: 8299588) · TBU: 목록 컬럼·동선 상세

ERD 근거 (documents / certificate_issuances) ​

엔티티핵심 컬럼결재 관련 용도
documentsemployeeId · filename/originalFilename · category(enum) · documentType · status(enum) · reviewedBy · reviewedAt · notes직원 업로드 문서. status=processing 기본값 → 검토(reviewedBy/reviewedAt) 처리
certificate_issuancesemployeeId · templateId · purpose · status(enum, 기본 pending) · approvedBy · approvedAt · rejectedReason · certificateHtml증명서 발급 요청. status=pending → 승인(approvedBy/approvedAt)/반려(rejectedReason)
document_templatescode · name · bodyTemplate · isActive제출 문서·증명서 양식 마스터 ([[HBAD241_문서 양식]]에서 관리)

권한·상태 분기 요약 ​

시나리오트리거결과 화면비고
CASE01 [인박스 조회]화면 진입TM 임베드 결재 인박스권한 "문서 조회"
CASE02 [필터]구분/상태/기간/검색목록 재조회기간 6종
CASE03 [상세 보기]행 "보기"결재 상세
CASE04 [승인]상세 승인검토자·검토일시 기록권한 "문서 관리"
CASE05 [반려]상세 반려 → 사유rejectedReason 기록반려 UI = TBU
CASE06 [인사처리 결재 승인]사직서·휴직·복직·발령·근무 변경 승인원장 기록 + 시행일에 재직 상태·소속·근무 자동 반영#883 · #900

Open Question ​

구분미확인 항목
결재선결재선(다단계 승인) 존재 여부 — 단일 승인/반려인지 결재 라인인지
반려반려 사유 입력 UI 및 재제출 동선
자격증·면허 탭"자격증·면허" 탭 목록 컬럼·동선 상세
인박스 Empty인박스 Empty 라이브 원문
결재 처리결재 처리 실패 동작
상태 enumdocuments_status_enum·certificate_issuances_status_enum 값 목록·문서 반려 사유 컬럼