HBAD241_문서 양식
(Hereby) 관리자 패널 > 문서 결재 > 문서 양식
| 메타 | 앱: 관리자 패널 (포트 4001)대상 사용자: 조건1 [문서 관리 권한 보유자]프로토타입: TBU관련 정책: [[POL_권한(RBAC)]] · [[POL_법정의무교육]]Status: reviewOwner: 카나 |
개요
문서 양식은 결재([[HBAD240_문서 결재]])에서 사용하는 제출 문서 유형·증명서 양식·자격증 유형의 마스터 관리 화면이다. 240(결재 인박스)이 "제출된 건의 결재"를 다루는 반면, 241은 그 결재 대상이 되는 양식 자체를 정의하는 상위 마스터 화면으로, 코드 계보상 240의 하위(문서 결재 그룹)에 둔다. 상단 2탭 구성: "문서 제출 유형"(document_templates, 우측 "+ 양식 추가") / "자격증·면허"(certification_type_configs, 우측 "+ 유형 추가"). 문서 제출 유형 양식은 bodyTemplate(본문)을 갖는 증명서 양식이며, 기본 양식 선택·변수 팔레트 16종·리치 에디터 본문으로 구성된다. 자격증·면허 유형은 자격유형 마스터로, 이름·설명·상태 + 커스텀 등록 필드 정의("자격유형" 기본 필드 + 필드 추가)를 가지며 직원 자격증 요구·등록([[HBAD296_자격증·면허 관리]])의 taxonomy 원천이 된다.
문서 히스토리
- 2026-07-06 최초 작성 - 카나/콸
- 2026-07-10 라이브 기능 검토 반영 (변수 팔레트 16종·커스텀 필드 빌더) - 카나/콸
- 2026-07-13 버튼 행동 명세 보강 - 카나/콸
- 2026-07-21 GC700 깊이 재작성 - 카나/콸
- 2026-07-21 가독성 패스 (GUIDE §7) - 카나/PM
- 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
Data I/O
Server → Client
변수
| 메타 | ${templates} |
| 메타 | ${cert_types} |
| 메타 | ${cert_variables} |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 양식 추가/수정 (문서) | 기본 양식 선택·양식명·변수 팔레트·본문 | document_templates upsert (추정) | 라벨 "문서 관리" (토큰 document:write 추정) |
| 유형 추가 (자격증) | 이름·설명·상태 + 등록 필드 정의 | certification_type_configs upsert (isSystem=false 사용자 정의) | 라벨 "문서 관리" |
| 커스텀 필드 추가 | 필드 정의 | certification_type_configs.fields(jsonb) 누적 | 라벨 "문서 관리" |
메인 화면 사양표 (문서 양식)
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 진입 조건 | - | • 조건1 [문서 관리 권한] 보유 시 문서 결재 그룹 > "문서 양식" 메뉴 노출. 미보유 시 hide | 권한 트리(문서) | |
| 01 | 초기 상태 | Output | • "문서 제출 유형" 탭 양식 목록 표시 | ||
| 10 | 탭 | Tab | • "문서 제출 유형" / "자격증·면허" 2탭 전환 • 선택 시: 해당 탭 뷰로 인라인 전환 + 우측 추가 버튼 라벨 전환 - CASE01 [문서 제출 유형]: 우측 "+ 양식 추가" - CASE02 [자격증·면허]: 우측 "+ 유형 추가" | document_templates · certification_type_configs | 탭 전환 |
| 20 | 양식/유형 추가 | Button | • 현재 탭 대상의 신규 폼을 여는 버튼 • 클릭 시: 탭별 폼 분기 - CASE01 [문서 탭]: "+ 양식 추가" → 증명서 양식 폼 - CASE02 [자격증 탭]: "+ 유형 추가" → 자격유형 폼 | 탭별 폼 분기 |
탭A: 문서 제출 유형 (증명서 양식) 목록·폼 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 30 | 양식 목록 | Grid | • 문서 제출 유형 양식을 나열하는 그리드 • 컬럼(추정): 이름 / 상태 / 관리 - CASE01 [양식 0건]: Empty state | document_templates | TBU: 컬럼·Empty 원문 |
| ㄴ31 | 기본 양식 선택 | Dropdown | • 기존 양식을 기반 템플릿으로 선택해 초기 본문을 프리셋하는 드롭다운. 옵션(라이브): 재직 / 경력 / 퇴직 • 선택 시: 본문에 해당 양식 프리셋 반영 | document_templates.bodyTemplate | 선택 사항 |
| ㄴ32 | 양식명 * | Input | • 양식 명칭 입력 (필수) • 입력 시: 값 반영 - CASE01 [미입력]: 저장 비활성 | document_templates.name | 필수 |
| ㄴ33 | 설명 | Input | • 양식 설명 입력 (선택) • 입력 시: 값 반영 | document_templates.description | |
| ㄴ34 | 변수 팔레트 | Palette | • 증명서 변수 16종을 본문에 삽입하는 팔레트 (성명/생년월일/주소/사번/직위/부서/입사일/기관명/법인명/기관 주소/기관 전화/사업자등록번호/대표자명/용도/발급일/증명서 번호) • 클릭 시: 본문 커서 위치에 변수 토큰 삽입 | document_templates.bodyTemplate | 16종 · 7/10 확인 |
| ㄴ35 | 본문 * | Editor | • 리치 에디터 양식 본문 (필수, HTML/텍스트) • 입력 시: 값 반영 | document_templates.bodyTemplate · cssTemplate | 필수 |
| ㄴ36 | 증명서 미리보기 | Button | • 하단 "증명서 미리보기" 버튼 • 클릭 시: 변수 치환 미리보기 렌더 | document_templates.bodyTemplate | TBU: 미리보기 UI |
| ㄴ37 | 저장/취소 | Button | • 하단 "취소" / "저장" 버튼 • 클릭 시: 저장 → upsert 후 목록 반영, 취소 → 폼 종료 - CASE01 [저장 성공]: document_templates upsert 반영 | document_templates | 실패 TBU |
탭B: 자격증·면허 유형 목록·폼 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 40 | 유형 목록 | Grid | • 자격증·면허 유형을 나열하는 그리드 • 컬럼: 이름 / 설명 / 상태 / 관리 - CASE01 [유형 0건]: Empty state | certification_type_configs | TBU: Empty 원문 |
| ㄴ41 | 직종 * | Dropdown | • 자격유형이 속한 직종 선택 (필수) • 선택 시: 값 반영 | 직종 마스터 (원천 TBU) | 필수 |
| ㄴ42 | 새 직종 추가 | Button/Input | • 직종 목록에 없는 직종을 신규 등록 • 입력 시: 직종 목록에 추가 | 직종 마스터 | |
| ㄴ43 | 직종 목록 | List | • 등록된 직종을 나열하는 목록 | 직종 마스터 | |
| ㄴ44 | 자격유형 * | Input | • 자격증/면허 유형명 입력 (필수). 직원 자격증 등록의 자격유형 선택지가 됨 • 입력 시: 값 반영 | certification_type_configs.name/code · [[HBAD296_자격증·면허 관리]] | 필수 |
| ㄴ45 | 커스텀 필드 빌더 | Builder | • "자격유형" 기본 필드 + "필드 추가"로 커스텀 등록 필드를 정의하는 빌더 • "필드 추가" 클릭 시: fields(jsonb)에 필드 누적- CASE01 [기본 필드]: 삭제 불가 - CASE02 [추가 필드]: 삭제 가능(추정) | certification_type_configs.fields(jsonb) | 7/10 확인 · TBU: fields 스키마 |
| ㄴ46 | 시스템 유형 | - | • 시스템 기본 유형 여부 표기 - CASE01 [isSystem=true]: 시스템 기본 (수정/삭제 제약 추정) - CASE02 [isSystem=false]: 사용자 정의 | certification_type_configs.isSystem | TBU: 제약 상세 |
| ㄴ47 | 저장/취소 | Button | • "취소" / "저장" 버튼 • 클릭 시: 저장 → upsert 후 목록 반영, 취소 → 폼 종료 - CASE01 [저장 성공]: certification_type_configs upsert 반영 | certification_type_configs | 실패 TBU |
ERD 근거
| 엔티티 | 핵심 컬럼 | 용도 |
|---|---|---|
document_templates | code(50) · name · bodyTemplate · cssTemplate · isActive · sortOrder · description | 문서 제출 유형 탭 — 양식명(name)·본문(bodyTemplate) 대응 |
certification_type_configs | code(64) · name · isActive · isSystem · sortOrder · fields(jsonb) | 자격증·면허 탭 — 자격유형(name). isSystem=시스템 기본 vs 사용자 정의. fields=jsonb 추가 필드 정의(추정) |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 화면 | 비고 |
|---|---|---|---|
CASE01 [문서 양식 추가] | 문서 탭 "+ 양식 추가" | 증명서 양식 폼 (변수 팔레트 16종) | 권한 "문서 관리" |
CASE02 [양식 저장] | 양식명*·본문* 입력 → 저장 | document_templates upsert | |
CASE03 [증명서 미리보기] | "증명서 미리보기" | 변수 치환 미리보기 | 미리보기 UI = TBU |
CASE04 [자격 유형 추가] | 자격증 탭 "+ 유형 추가" | 자격유형 폼 + 커스텀 필드 빌더 | isSystem=false 사용자 정의 |
CASE05 [커스텀 필드] | "필드 추가" | fields(jsonb) 누적 ("자격유형" 기본 삭제 불가) | 7/10 확인 |
Open Question
- 직종 마스터 엔티티 — census "직종*/새 직종 추가/직종 목록"이
certification_type_configs와 별개 테이블인지fields(jsonb) 내 정의인지. TBU. certification_type_configs.fields(jsonb) 스키마 — 자격증 유형별 커스텀 필드 정의 구조. TBU.- "문서 제출 유형"이 결재 대상 문서 양식인지 증명서 발급 양식(
certificate_issuances.templateId)인지, 둘 다인지. TBU. - 양식 활성/비활성(isActive) 토글 UI 및 sortOrder 편집 동선. TBU.
- 문서 제출 유형 목록 컬럼·Empty 원문·저장 실패 동작. TBU.
- 증명서 미리보기 렌더 UI·isSystem 유형 수정/삭제 제약. TBU.