HBTM240_문서 관리
(Hereby) 내부 결재 > 문서 관리
| 앱 | 내부 결재 (HBTM) |
| 대상 사용자 | 조건1 [TEAM_LEADER] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_결재워크플로우]] |
| Status | review |
| Owner | 카나 (PM) |
개요
- 문서 관리 탭(/team-manager/document-management)은 직원의 문서 신청·제출·자격증/면허를 통합 관리하는 큐다.
- 구분 필터 + 상태 필터 + 조직/기간 필터 + 검색 + 7컬럼 목록 + 미리보기 모달로 구성된다.
- Admin 문서 결재([[HBAD240_문서 결재]], 페이지 제목 "HBAD240_문서 결재") 임베드의 원본 화면이다.
- 4월 별도 메뉴였던 자격증/면허가 구분 필터로 흡수되었다 ("전체 구분 / 신청 / 제출 / 자격증·면허"). 문서 양식 원천은 [[HBAD241_문서 양식]].
- row "보기"로 미리보기 모달을 연다.
대기 문서의 승인/반려 action 위치는 TBU다.→ 해소(2026-10-17 실측): 목록 행에는 「보기」 버튼만 있고, 승인/반려 버튼은 「보기」로 여는 문서 미리보기 모달 하단에 [닫기] [반려] [승인]으로 배치된다(admin 임베드 경유 실측, 스샷 live-1017-admin-approval-detail.png).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 + 확정 스타일 |
| 2026-07-21 | 카나 | PM | TC 크로스체크 확정분 반영 (🟡) |
| 2026-07-28 | 카나 | PM | 코드 변경 반영(8299588) |
| 2026-09-23 | 카나 | PM | 미리보기가 「미리볼 파일이 없습니다」로 비던 두 종류 행(파일 없는 옛 [요청] 재직증명서 행 · certificateHtml 빈 승인 행)을 서버 렌더로 표시 반영(071bfea, PR #843, CS-OKBEST-260922-0001) — 커밋 근거, 라이브 실사 이월(TBU) |
| 2026-10-17 | 카나 | PM | 주간 정합 스윕 — 승인/반려 위치 TBU 해소: 행 액션 「보기」 단독, 승인/반려는 문서 미리보기 모달 하단 [닫기][반려][승인] (admin 문서 결재 임베드 경유 라이브 실측, 대기 7건 상태에서 확인 — 버튼 클릭은 안 함). 개요·Data I/O·OQ 갱신 |
| 2026-10-22 | 카나 | PM | (10/21 머지분, PR #1257 6e47d97e·30bd3dc) 미리보기 모달 확대 — 행 클릭 진입 + 「전체 화면」·「인쇄하기」 (admin 문서 결재 임베드 경유 10/22 라이브 실측: 행 자체 클릭 → 「미리보기」 다이얼로그(문서 iframe), 전체 화면/인쇄하기 버튼 확인) + same-origin 파일 미리보기 가드(30bd3dc). ㄴ42 갱신 — 「보기」 버튼과 행 클릭 병행 |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | DocumentRequest[] / CertificationRecord[] (추정, team scope) | 빈 목록 | 문서 목록 |
| $ | 구분 필터 선택 값 | "전체 구분" | 신청/제출/자격증·면허 |
| $ | 상태 필터 선택 값 | "전체 상태" | 대기/승인/반려/취소 |
| $ | 신청자·구분·유형·신청일·상태 | - | 미리보기 모달 필드 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 미리보기 | documentId | sdk.teamManager.document.preview() (추정, read-only) | document:read (추정) |
| 승인 | documentId | sdk.teamManager.document.approve() (추정) | document:approve (추정) |
| 반려 | documentId, reason? | sdk.teamManager.document.reject() (추정) | document:approve (추정) |
| 자격증·면허 큐 조회 | teamManager.listCertificates({status: PENDING}) (TC 확정: 02:2.12) | document:read (추정) | |
| 자격증·면허 승인 | ids[] | teamManager.approveCertificates(ids[]) (TC 확정: 02:2.12) → certificateNumber 발급 | document:approve (추정) |
| 증명서 미리보기 (서버 렌더) | { id, source } (기존 문자열 입력도 계속 허용) | previewCertificate (코드 반영: 071bfea, #843) | document:read (추정) |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 방향 | 비고 |
|---|---|---|---|
| 직원 앱 [[HBEA400_결재 허브]] | 문서 신청·제출 | EA → TM | 신청 원천 |
| Admin 문서 양식 [[HBAD241_문서 양식]] | 증명서·양식 | Admin → TM | 양식 원천 |
| Admin 문서 결재 [[HBAD240_문서 결재]] | 동일 목록 임베드 | TM ↔ Admin | 본 화면이 임베드 원본 |
화면 플로우
문서 관리 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 조건1 [TEAM_LEADER] 이상 인증 세션 · "문서 관리" 탭 클릭 시 /team-manager/document-management 진입 | 인증 세션 | token 내부 key TBU |
| 01 | 초기 상태 | - | 필터 전체값("전체 구분" / "전체 상태") 기준 7컬럼 목록 조회 | 40 목록 | |
| 10 | 구분 필터 | Dropdown | • 문서 구분으로 목록을 거르는 기능 원문 "전체 구분" / "신청" / "제출" / "자격증/면허" (4월 별도 메뉴였던 자격증/면허 통합) • 선택 시: 목록 필터 적용 | DocumentRequest.kind | 4월 별도 메뉴 흡수 |
| 20 | 상태 필터 | Dropdown | • 문서 상태로 목록을 거르는 기능 원문 "전체 상태" / "대기" / "승인" / "반려" / "취소" • 선택 시: 목록 필터 적용 | status | |
| 30 | 조직/기간 필터 | Dropdown/DatePicker | • 조직·기간으로 목록을 거르는 기능 원문 "조직 선택" + 기간. 기간 프리셋 6종(근무 관리 임베드와 동일 원천 화면 기준). 자주 쓰는 기간 프리셋 칩을 공용 SubTab(sm·line·radius 4)으로 통일(기존 손으로 만든 radius 16 칩 → admin 자격증/면허 탭과 동일 형태) • 선택 시: 목록 필터 적용 | team / date | 프리셋 SubTab 통일 (코드 반영: 8299588) |
| ㄴ31 | 검색 | Input | • 사번/이름 등으로 목록을 필터링하는 입력 필드 • 입력 시: 목록 필터링 | list filter | |
| 32 | 원천 화면 | - | Admin 문서 결재 임베드의 원본 화면. 페이지 제목 "HBAD240_문서 결재" | [[HBAD240_문서 결재]] | 임베드 원본 |
| 40 | 목록 | Table | • 문서 신청·제출·자격증/면허 통합 목록 7컬럼: 사번 / 이름 / 구분 / 유형 / 신청일 / 상태 / 관리 • row "보기"로 미리보기 진입 | DocumentRequest / CertificationRecord | |
| ㄴ41 | 유형 | Text | • 문서 유형 표기(census 원문 예): "재직증명서" / "자격증사본" / "건강검진결과" / "급여확인서" / "경력증명서" / "비자 신청용" / "제출용" / "금융기관 제출용" / "관공서 제출용" • 표시 전용 | - | census 원문 |
| ㄴ42 | 보기 (행 클릭 병행) | Button/Row | • 해당 문서의 미리보기 모달을 여는 기능 원문 "보기" • 클릭 시: "미리보기" 모달 오픈(문서 상세: 신청자·구분·유형·신청일·상태) • (10/21, #1257 6e47d97e — 10/22 실측) 행 자체 클릭으로도 미리보기 진입 + 모달에 「전체 화면」(미리보기 확대)·「인쇄하기」 버튼 신설 | 50 모달 | 행 클릭·전체 화면(#1257) 10/22 실측 |
| ㄴ42-1 | 미리보기 서버 렌더 (파일 없는 행) | Rule | • 미리볼 파일이 없어 미리보기가 「미리볼 파일이 없습니다」로 비던 두 종류 행을 서버에서 증명서로 렌더해 보여 준다 (CS-OKBEST-260922-0001) - CASE01 [옛 「서류 요청」 행]: 2026-09-11 이전 works 「서류 요청」이 서류 원장에 남긴 파일 없는 [요청] 재직증명서 행 — 목록에서 「신청」으로 분류하고 documentType 이름이 같은 증명서 양식으로 렌더- CASE02 [HTML 없는 승인 행]: 렌더 단일화 전에 승인돼 certificateHtml이 비어 있는 증명서 원장 행 — 승인 시점 기준으로 다시 렌더- 그 외 행: 기존 동작 유지(프런트 게이트 = needsServerCertificatePreview) | 50 미리보기 모달 · certificateHtml · [[HBAD241_문서 양식]] | 신설 (코드 반영: 071bfea, #843, CS-OKBEST-260922-0001) · TBU: 라이브 실사 이월 |
| 50 | 미리보기 모달 | Modal | • 문서 상세 미리보기 모달. 신청자·구분·유형·신청일·상태 + "닫기". 하단 보조표(문서 미리보기 Modal 사양표) 참조 • 대기 문서 승인/반려 UI 위치 TBU | document preview | 대기 승인/반려 UI TBU |
문서 미리보기 Modal 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 문서 row "보기" 클릭 시 미리보기 모달 오픈 | 40 목록 ㄴ42 | |
| 10 | 제목 | Text | • 모달 제목 표기 원문 "미리보기" • 표시 전용 | - | |
| 20 | 신청자 | Text | • 신청자 표기(이름 · 사번) 예 "박미랑 · FIRMA003" • 표시 전용 | document preview | |
| 30 | 구분 | Text | • 문서 구분 표기 예 "제출" • 표시 전용 | DocumentRequest.kind | |
| 40 | 유형 | Text | • 문서 유형 표기 예 "재직증명서" • 표시 전용 | - | |
| 50 | 신청일 | Text | • 신청일 표기 예 "2026-06-16" • 표시 전용 | - | |
| 60 | 상태 | Badge | • 문서 상태 표기 예 "승인" • 표시 전용. 대기 문서 승인/반려 UI TBU | status | 대기 승인/반려 UI TBU |
| 70 | 닫기 | Button | • 미리보기 모달을 닫는 기능 원문 "닫기" • 클릭 시: 모달 닫힘 | - |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [미리보기] | row "보기" | 미리보기 모달 (신청자·구분·유형·신청일·상태) | read-only |
CASE02 [승인/반려] | 대기 문서 action | 승인/반려 처리 | destructive · 위치 확정(2026-10-17): 미리보기 모달 하단 [반려][승인] |
조건1 [TEAM_LEADER] | 문서 관리 탭 진입 | 팀 scope 목록 노출 | token 내부 key TBU |
Open Question
대기 row의 승인/반려 버튼 위치 (목록 vs 미리보기 내부) = TBU→ 해소(2026-10-17 라이브 실측): 목록 행 액션은 「보기」 단독, 승인/반려는 미리보기 모달 하단 [닫기][반려][승인]. 목록 구성 실측: 구분(전체 구분/신청/제출/자격증·면허)·상태(전체 상태/대기/승인/반려/취소) select + 시작일~종료일 + 기간 탭(이번 주/지난 1주/이번 달/지난 1개월/지난 3개월/전체) + 이름/사번/이메일 검색 + 7컬럼(사번·이름·구분·유형·신청일·상태·관리)- 자격증/면허 승인 흐름 =
teamManager.listCertificates({status:PENDING})→teamManager.approveCertificates(ids[])(certificateNumber 발급) 확정. 만료일·첨부·credential 세부 = TBU. (TC 확정: 02:2.12) - 미리보기 모달 내 문서 본문/PDF 뷰어 존재 여부 (현재 메타만 확인) = TBU
- 권한 토큰(document:approve 등) 내부 key = TBU