Skip to content

HBEA440_서류관리

(Hereby) 직원 앱 > 결재 허브([[HBEA400_결재 허브]]) > 서류관리

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

개요

  • 서류관리는 결재 허브([[HBEA400_결재 허브]]) "서류관리" 서브탭으로, 증명서 제출/요청을 목록으로 관리하는 self scope 표면이다.
  • 목록 행은 {제출|요청} 구분 / 문서명 / 유형 / 일자 / 상태로 구성되며, 상태 배지는 "대기 중" / "승인" / "반려" / "취소" 4종이다.
  • 라이브(2026-07-10 관리자 계정)는 리스트 전용 표면이다 — 직원 측 신규 제출 진입점(FAB) UI 미관찰, 행 상세 진입 없음, "대기 중" 상태 건에만 행 내 "취소" 버튼이 노출된다. 단 직원 self write 경로는 API 레벨에 실재한다 — 직원 본인이 employee.requestCertificate(reason)으로 증명서 발급을 직접 신청할 수 있다(🔴 정정: 구 "요청은 관리자 발신 전용" 폐기 — TC 확정: 01:1.14 / 02:2.12). 승인은 팀장 teamManager.approveCertificates(ids[])(PENDING 큐) 또는 admin employee.approveCertificate(id)certificateNumber 발급.
  • 단, FIG 정책([[POL_서류제출요청]], document.md)에는 [+]버튼 → "서류 제출/요청" 바텀 팝업(제출/요청 탭)이 정의되어 있다. 정책상 예정 표면과 라이브 미노출의 차이는 비고·OQ에 정직 표기한다(정책은 참조만, 사양은 라이브 관찰 우선). 공통 서브탭 골격은 [[HBEA400_결재 허브]]을 참조한다(중복 정의 금지).

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영 (리스트 전용·FAB 없음 확정)
2026-07-13카나PM버튼 행동 명세 보강 ("대기 중" 건 행내 취소)
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PM🔴 정정: 직원 self write 실재(employee.requestCertificate)·승인 주체 확정 (TC 정본, 콸 승인)
2026-08-18카나라이브 재검증 정정①서류 목록 Empty 원문 확정 = "제출된 서류가 없어요"(0건 계정 실관찰, TBU 소진). ②[+] "서류 제출·요청" 진입점 라이브 반영 확인 — 결재 허브 FAB "새 신청" 액션시트에 "서류 제출·요청"(설명 "증명서 요청, 제출 서류 업로드") 항목 실존(정책→라이브 반영)

Data I/O

Server → Client

변수DB 엔티티.컬럼값 없을 때비고
$DocumentRequest[] / CertificateIssuance[] (self)Empty (문구 TBU — 라이브 캡처 다건 상태)본인 서류 목록 (제출/요청 혼합)
ㄴ방향DocumentRequest.direction (제출/요청)hide행 라벨 "제출" / "요청"
ㄴ문서명DocumentRequest.fileNamehide업로드 파일명 원문
ㄴ유형DocumentRequest.typeId → 유형명hide"건강검진결과" 등
ㄴ일자DocumentRequest.issuedAt (추정)hide제출/요청/발급 일자
ㄴ상태DocumentRequest.statushide대기 중/승인/반려/취소
$증명서 유형 taxonomy (Admin/HR 커스텀)hide제출/요청 팝업 유형 선택지 (정책상 예정)
$DocumentRequest.rejectReasonhide"반려" 건 반려사유(제출자도 확인, 정책)

Client → Server

액션전달 값tRPC procedure권한 토큰
제출 취소 ("대기 중" 건 한정)documentIdsdk.document.cancel() (추정)document:cancel.self
상태 필터 선택statusKey (추정)클라이언트 필터 (재조회 여부 TBU)document:read.self
증명서 발급 신청 (self)reasonemployee.requestCertificate(reason)직원 직접 신청 실재 (생성 status=PENDING → 팀장/admin 승인 → certificateNumber 발급)(TC 확정: 01:1.14 / 02:2.12)
신규 제출/요청 ([+] 팝업)typeId·file·memosdk.document.submit() / request() (추정)document:write.self
ㄴ 라이브 현황직원 측 [+] 진입점 UI 미관찰 (동선 TBU — API self write는 위 행처럼 실재)(정책상 예정, §비고)

외부 통합 (cross-app)

외부 시스템데이터동기/비동기비고
Admin 문서 양식 ([[HBAD241_문서 양식]])증명서 양식·유형 원천 (추정)비동기유형 taxonomy source
팀결재/HR ([[HBTM01_TeamManager_팀결재워크스페이스]])요청/제출 승인/반려비동기 (write-back)중간관리자 이상 결재
관리자 발신 요청증명서 발급 요청 → 직원 리스트 "대기 중" 유입비동기요청 방향 유입원

화면 플로우 (Mermaid 의무)

라이브(관리자 계정)는 리스트 전용 — [+] 신규 제출 진입점 미노출. "서류 제출/요청" 바텀 팝업은 FIG 정책([[POL_서류제출요청]])상 예정 표면(회색 노드)이며 라이브 미관찰


서류관리 서브탭 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00화면 진입 조건-조건1 [직원 인증] · 결재 허브 "서류관리" 서브탭 선택 시 노출. 조건2 [관리자 계정]도 동일 리스트 표면인증 세션 (self)2026-07-10 라이브(관리자 djcola814) 확정
ㄴ00-1미인증 분기-CASE01 [미인증] /employee-app/signin 리다이렉트인증 세션
01초기 상태Output서브탭 진입 시 본인 서류 목록(${documents}) 렌더. 제출/요청 혼합, 시간 역순(추정)$census 다건
10서류 목록List본인 서류 행 목록. 상태 필터 칩 공통([[HBEA400_결재 허브]]). self scope 고정(타인 조회 불가)DocumentRequest[] / CertificateIssuance[]TBU: 로드 실패 시 무반응 여부(버그 후보)
10-Eㄴ EmptyText목록 0건 시 Empty 문구 = "제출된 서류가 없어요"${documents} 부재✅ 2026-08-18 원문 확정(0건 계정 실관찰)
20신규 제출/요청 진입점-• 결재 허브 FAB "새 신청" 액션시트에 "서류 제출·요청"(설명 "증명서 요청, 제출 서류 업로드") 항목 실존 — 2026-08-18 라이브 확인
• 직원 self write API employee.requestCertificate(reason) 실재 (status=PENDING 생성)
employee.requestCertificate✅ 2026-08-18 진입점 라이브 반영 확인 (구 "docFab=false, 미관찰" 갱신)
ㄴ21정책 예정 표면-FIG 정책([[POL_서류제출요청]])상 [+]버튼 → "서류 제출/요청" 바텀 팝업(제출/요청 탭). 2026-08-18 라이브 반영 — FAB 액션시트 "서류 제출·요청"으로 진입점 노출됨[[POL_서류제출요청]]✅ 정책→라이브 정합

서류 목록 행 사양표 (별도 명세)

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
10목록 행Row• 1행 = {제출|요청 구분} / {문서명} / {유형} / {일자} / {상태}
• 클릭 → 무반응 (행 상세 진입 없음, 라이브 확정)
DocumentRequest (direction·fileName·typeId·issuedAt·status)census 행 구조
ㄴ11제출/요청 구분Badge"제출"(직원 서류 업로드) / "요청"(증명서 발급 요청) 라벨DocumentRequest.directioncensus 원문. 정책: 2026.05.26↑ 요청 라벨 없는 케이스([[POL_서류제출요청]])
ㄴ12문서명Text업로드/발급 파일명 원문. 예 "[NewYork]SERVICE CONTRACT-example 복사본.docx"DocumentRequest.fileNamecensus 원문. 값없음: 요청 건 미첨부 시 hide(추정)
ㄴ13유형Text유형 원문 나열: "건강검진결과" / "재직증명서" / "경력증명서" / "자격증사본" / "급여확인서" / "개인정보 처리방침"[[HBAD241_문서 양식]] taxonomy (추정)census 원문. TBU: taxonomy 종속 vs 앱 고정
ㄴ14일자Date제출/요청/발급 일자. 예 "4월 16일". census 행 "{유형} | {일자} {상태}"DocumentRequest.issuedAt (추정)census 원문
ㄴ15상태Badge• 상태 배지 원문 4종: "대기 중" / "승인" / "반려" / "취소"
 - CASE01 [대기 중]: 결재 전(ㄴ16 취소 노출)
 - CASE02 [승인]: 중간관리자↑
 - CASE03 [반려]: 반려사유 제출자 확인(정책)
 - CASE04 [취소]: 제출·요청자 취소
DocumentRequest.statuscensus 원문 4종 · [[POL_서류제출요청]]
ㄴ16취소 버튼Button"대기 중" 행에만 노출(타 상태 행 없음). 본인 self만 취소
• 클릭 → 즉시 실행, 성공: 상태 대기 중 → 취소, 행내 버튼 소멸
DocumentRequest.status (대기 중 → 취소)ea5.json "대기 중" 행 "취소" 인접 확정. TBU: 컨펌 다이얼로그·취소 실패 무반응 여부

서류 제출/요청 바텀 팝업 사양표 (정책상 예정 — 라이브 미노출)

라이브 미관찰: 이 표는 FIG 정책([[POL_서류제출요청]], document.md) 정의 기준이며, 2026-07-10 라이브(관리자 계정)에는 [+] 진입점 자체가 없어 팝업 미노출. 도입 시 사양 = 정책 참조. 확정값(업로드 포맷·10MB)은 정책 출처 표기.

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-[+]버튼 클릭 → 바텀 팝업 노출 (정책상 예정). 라이브 미노출 ([+] 없음, docFab=false)20 신규 진입점정책 예정 / 라이브 미관찰
10팝업 타이틀Text"서류 제출/요청" 원문. 제출/요청 2탭 구분[[POL_서류제출요청]] 원문
20제출/요청 탭Tab• 제출·요청 2탭 전환
• 클릭 → 탭 전환
 - CASE01 [제출]: 파일 필수
 - CASE02 [요청]: 파일 선택
40 파일정책 탭 구조
30유형 선택Select• 서류 유형 선택 (설정 또는 HR 커스텀, 개발 필요). 제출·요청 공통
• 입력 → 유형 선택 반영
${document_types} ([[HBAD241_문서 양식]])정책
40파일Input Box (File)• 파일 업로드. 제출 시 필수 / 요청 시 선택
• 입력 → 파일 첨부
DocumentRequest.file포맷 PDF·HWP·DOCX·DOC·XLS·XLSX·PNG·JPG·JPEG / 최대 10MB. 출처 [[POL_서류제출요청]] document.md
50메모Input Box• 메모 입력. 선택 사항, 제출·요청 공통
• 입력 → 메모 저장
DocumentRequest.memo정책 (선택)
60제출/요청 실행Button• 제출/요청 확정 실행
• 클릭 → 즉시 실행, 성공: DocumentRequest 생성(상태 대기 중) → 결재 큐 인입. 라이브 미검증 (진입점 없음)
sdk.document.submit()/request() (추정)정책 예정

연동 · 플로우

  • 증명서 발급 흐름(TC 확정: 01:1.14 / 02:2.12): 직원 employee.requestCertificate(reason) 직접 신청(PENDING) → 팀장 teamManager.listCertificates({status:PENDING}) 큐 조회 → approveCertificates(ids[]) 일괄 승인, 또는 admin employee.approveCertificate(id) 단건 승인 → certificateNumber 발급. 관리자 발신 요청 유입 경로도 병존(라이브 관찰). 직원 리스트 UI에서는 조회 + "대기 중" 건 행내 취소.
  • 상태 전이: 제출/요청(대기 중) → 승인(중간관리자↑) / 반려(사유 제출자 확인) / 취소(제출·요청자 self). "대기 중" 건만 self 취소 가능([[POL_서류제출요청]]).
  • 급여명세서 교부(HBHR 전자서명)가 서류관리로 유입되는지 vs 급여명세서 모달([[HBEA530_급여명세서]])로만 유입되는지 = 경계 미확정(OQ).
  • 정책 divergence: FIG 정책([[POL_서류제출요청]])상 [+] → "서류 제출/요청" 바텀 팝업(제출/요청 탭·유형·파일·메모)이 정의되나, 라이브(관리자 계정)에는 미노출. 정책 예정 vs 라이브 관찰 차이는 도입 시 재검증.

권한 · 상태 요약

시나리오트리거결과비고
CASE01 [미인증 진입]서류관리 서브탭 직접/employee-app/signin 리다이렉트
CASE02 [직원/관리자 진입]인증 세션 (self)본인 서류 리스트(제출/요청 혼합)리스트 전용 표면
CASE03 [대기 중 건 취소]"대기 중" 행 "취소" 클릭상태 대기 중 → 취소, 행내 버튼 소멸self 취소만
CASE04 [반려 건 확인]"반려" 행반려사유 제출/요청자 확인 가능정책
CASE05 [신규 제출 시도][+] 진입점 탐색UI 진입점 미관찰 — 단 API employee.requestCertificate(self)는 실재동선 TBU (TC 확정: 01:1.14)

Open Question

  • 증명서 유형 목록이 Admin 문서 양식([[HBAD241_문서 양식]]) taxonomy 종속인지, 앱 고정 리스트인지. TBU.
  • 서류 상태 enum(제출/요청 · 대기 중/승인/반려/취소) 매핑. TBU. 승인 주체확정: 팀장 teamManager.approveCertificates(ids[]) + admin employee.approveCertificate(id) 병존, 승인 시 certificateNumber 발급 (TC 확정: 01:1.14 / 02:2.12).
  • 증명서 신청(employee.requestCertificate)의 UI 진입 동선(숨김/타 표면/미구현 여부) = TBU.
  • 서류 목록 Empty 문구: 라이브 캡처가 다건이라 미관찰. 0건 계정 확보 후 원문 확정 필요. TBU.
  • "대기 중" 건 취소 시 컨펌 다이얼로그 유무(외근 HBEA420은 컨펌 없이 즉시 취소 — 서류는 미검증). TBU.
  • 정책 divergence: FIG 정책([[POL_서류제출요청]])상 [+] → "서류 제출/요청" 바텀 팝업(제출/요청 탭·유형·파일·메모)이 정의되나 라이브 미노출. 정책상 예정 표면 도입 시점·범위 = 미확정. 업로드 포맷(PDF/HWP/DOCX/DOC/XLS/XLSX/PNG/JPG/JPEG)·10MB는 정책 확정값(출처 표기).
  • 급여명세서 교부(HBHR 전자서명) → 서류관리 유입 vs 급여명세서 모달([[HBEA530_급여명세서]]) 유입 경계. TBU.
  • 리스트 표시 범위(당해/당월 등 기준) 미정 — 정책 "결정 필요 사항" 미해소([[POL_서류제출요청]]). TBU.