/SimpleHR project
SimpleHR project

양식 편집기(폼 빌더) 스펙

conceptedited by Cairni · 방금 · AIv7

개요

양식 편집기(폼 빌더)는 Simple HR 내에서 근로계약서 등 각종 문서 양식을 작성·편집하는 편집기 컴포넌트이다. 근로계약서 스펙근로계약서 스펙(고용계약)과 연계되며, 편집된 양식은 직원 서명 및 관리자 승인 워크플로에 사용된다.


구현 완료 기능

1. PASTE_UPLOAD 제출방식 추가

항목내용
기능붙여넣기(PASTE)와 첨부파일 업로드를 동시에 허용하는 PASTE_UPLOAD 제출방식 추가
엑셀 붙여넣기엑셀 자료를 그대로 붙여넣을 수 있도록 수정
초기화 확인제출방식 전환 시 양식 내용 초기화 확인 팝업 추가
상태✅ 완료

fix-task-0624 (26년 06월 24일 수정사항)

2. PASTE 유형 양식에 대한 관리자 템플릿 지원

항목내용
기능관리자가 admin/settings/forms에서 PASTE 유형 양식에 HTML 템플릿 저장 가능
직원 인터페이스서류 신청(/user/applications) 또는 기안서 작성(/user/request) 모달 오픈 시 관리자 템플릿이 에디터에 미리 채워짐
변수 템플릿v2 JSON 형식 변수 템플릿도 PASTE 유형에서 지원
상태✅ 완료

fix-task-0612.md

3. 표 편집 및 변수 적용

항목내용
기능양식 편집기(WysiwygTemplateEditor)에서 표 변수 적용 지원
저장 형식HTML <table> 형식으로 저장하여 열 너비·구조 보존
변수 표기변수 칩은 {{key}} 형식으로 마크다운 변환
프리뷰 렌더링TemplatePreview.parseBlocks에서 HTML 표(<table) 파싱 지원
하위호환성GFM(`\) 및 HTML(<table`) 양쪽 형식 모두 파싱 가능
상태✅ 완료

fix-task-0612.md

4. 기안서·서류 신청 모달 크기 확장

항목내용
기능기안서(/user/request)와 서류 신청(/user/applications) 모달 UI 확대
효과더 큰 화면에서 양식 작성 및 편집 가능
상태✅ 완료

fix-task-0612.md

5. 기안서 양식 목록 필터링 및 라벨 개선

항목내용
REQUIRED 양식 노출 버그탄력근로제서면합의서(REQUIRED)가 기안서 목록에 노출되던 문제 수정. 기안서 페이지에 form_category: "OPTIONAL" 필터 적용, 서류신청 페이지에 form_category: "APPLICATION" 필터 적용
CONTRACT 라벨 한글화기안서 목록에서 CONTRACT 문서종류가 영문으로 노출되던 문제 수정. DOC_TYPE_CONFIG에 CONTRACT 라벨 매핑 추가 ("계약")
OPTIONAL 라벨 변경양식 분류 OPTIONAL 라벨을 "양식"에서 "기안서"로 변경. 신청서(APPLICATION)와 구분 명확화
상태✅ 완료

fix-task-0624 (26년 06월 24일 수정사항)

6. 근로계약서 contract_type 기반 양식 자동 매핑

항목내용
기능근로계약서 신규 생성 시 contract_type 기반 양식 자동 매핑 (_resolve_form_id_by_contract_type) 추가
버그 수정계약직으로 생성 시 정규직 근로계약서가 표시되던 버그 수정
관리자 미리보기관리자 미리보기에서도 contract_type에 맞는 양식으로 폴백 처리
서브쿼리 버그 수정per_employee 서브쿼리에 CONTRACT 카테고리 필터 적용 (REQUIRED 계약이 max를 점유해 CONTRACT 계약 누락되던 버그 수정)
상태✅ 완료

fix-task-0624 (26년 06월 24일 수정사항)

7. 필수서류(REQUIRED) 구조 변경 — EmployeeContract → Document 전환

항목내용
처리 방식 변경REQUIRED 양식 제출 시 Document 생성 → approval-management-spec
사이드이펙트승인 시 EmployeeDocument 자동 생성
관리자 발송 경로EmployeeContract 관리자 발송 경로에서 REQUIRED 카테고리 제외 (CONTRACT 포함 시 허용)
필수서류 목록Document 결재 상태 반영
서류 보관함doc_content/form_content 필드 추가 + 내용 보기 모달
기존 데이터 영향이미 EmployeeContract로 생성된 REQUIRED 건은 기존 방식으로 승인 처리 후, 이후 건부터 Document로 전환
상태✅ 완료

fix-task-0624 (26년 06월 24일 수정사항)

8. 모바일 결재 페이지 — 양식 렌더링 개선

9. 사직서(RESIGNATION) 양식 분류 추가

항목내용
분류 추가회사 양식 추가 시 사직서 분류(RESIGNATION) 선택 가능
기본 양식 생성테넌트 생성 시 기본 사직서 양식 자동 생성
분류 기반 연동기존 문자열 매칭 방식에서 form_category=RESIGNATION 기반으로 변경
상태✅ 완료

fix-task-0703 (26년 07월 03일 수정사항) 참고: 사직서 처리 워크플로 스펙

10. 양식 변수 데이터 미등록 표시 및 사용자 지정 변수 이름 편집

11. 기안서·서류 신청 탭 통합 — "서류 신청"으로 일원화

항목내용
통합 방식사이드바/모바일 메뉴의 "기안서" 탭과 "서류 신청" 탭을 "서류 신청" 단일 탭으로 통합
기안서 작성기안서 작성 모달에 양식 셀렉트 추가 — form_categories 기반 다중 분류 지원; 기안서 선택 시 결재선 선택 UI 노출
서류 신청기존 서류 신청 기능은 동일하게 통합 탭 내에서 지원
HTML 태그 처리신청내역/결재하기 화면의 HTML 태그 스트리핑 적용
명칭 변경신청결재 내 "기안서 작성" → "서류 작성"으로 변경; 서류 작성 리스트 선택 후 작성
상태✅ 완료

fix-task-0709 참고: 결재 관리 스펙

12. 모바일 신청 양식 미등록 fallback 렌더링

항목내용
대상신청 양식에 관련 정보가 없는 경우
처리 방식템플릿 미등록 시 fallback 렌더링에 fieldLabels 매핑 적용
미매핑 키매핑되지 않은 필드 키는 "미등록" 으로 표시
상태✅ 완료

fix-task-0709 참고: 모바일 앱 스펙

13. 모바일 결재 상세 영문 필드 한글화

항목내용
대상 필드출퇴근 필드(work_location_name, gps_address) 라벨 추가
값 번역CHECK_IN → 출근, FULL_DAY → 종일 등 영문 값 한글 번역
시각 포맷시각 표기 형식 정리
폰트font-sans 적용
상태✅ 완료

fix-task-0709 참고: 모바일 UI/UX 개선 작업 (기업 사용자)

항목내용
미등록 표시변수에 데이터가 등록되지 않은 경우 미등록 상태 표시
이름 편집새 변수 추가 시 이름 직접 입력, 기존 변수는 연필 아이콘으로 이름 수정 가능
에디터 동기화변수 이름 변경 시 에디터 칩과 동기화
상태✅ 완료

fix-taskNew-0706 (26년 07월 06일 우선수정사항)

항목내용
TemplatePreview 렌더링결재 상세 시트에서 v2 양식 JSON 대신 TemplatePreview 렌더링 지원 (전체 문서 fetch → form_id 기반 양식 스키마 로드 → TemplatePreview 렌더링)
빈 values 처리PASTE_UPLOAD 등 빈 values 양식은 "입력된 내용이 없습니다." 안내 표시
카드 미리보기JSON 대신 텍스트 값 추출 표시
배지 한글화REQUIRED/CONTRACT 배지 한글화 ("필수서류"/"계약")
JSON 깜빡임 수정상세 시트 로딩 시 JSON 깜빡임 수정 (templateLoading 초기값 개선)
상태✅ 완료

fix-task-0624 (26년 06월 24일 수정사항)


PASTE 유형 양식 처리 로직

구현 파일: applications/page.tsx, MobileFormSubmitSheet.tsx, user/request/page.tsx, admin/settings/forms/page.tsx fix-task-0612.md


주의사항

⚠️ HTML 표 저장 형식 변경

표는 이제 GFM(| 마크다운) 대신 <table> HTML 형식으로 저장된다. 이번 세션 이전 코드로 롤백 시 표가 텍스트로 깨져 표시될 수 있으나, parseBlocksmarkdownToHtml 모두 GFM 및 HTML 양쪽 파싱을 지원하므로 기존 GFM 데이터는 정상 표시된다. fix-task-0612.md


미완료 항목

  • ~~기안서·서류 신청 탭 통합~~ → 해결 완료: 사이드바/모바일 메뉴를 "서류 신청" 단일 탭으로 통합, 기안서 작성 모달에 양식 셀렉트 추가. fix-task-0709
  • 기안서·신청서 제출 후 조회 기능 — 기안서, 신청서 작성 후 결재/결재 완료 등 내용 조회 구현 확인 필요. fix-task-0612.md
  • 기업사용자 결재 UI 개선 — 신청 결재 > 결재하기(user/approval) UI 개선 필요. fix-task-0612.md
  • 페이징 처리 통일 — 양식 목록 및 관련 화면 전반에 걸쳐 통일된 페이징 방식 적용 필요. fix-task-0612.md- ~~문서 종류 선택 노출~~ → 해결 완료 (아래 항목으로 이동됨)- ~~문서 종류 선택 노출~~ → 해결 완료: 사용자가 신청서·기안서 신규 작성 시 문서 종류 선택 UI 제거. fix-task-0703 (26년 07월 03일 수정사항)
  • ~~양식 삭제 실패 — 회사 양식 삭제 시 실패하는 버그 미해결.~~ → 해결 완료: hard delete → soft delete(is_deleted, deleted_at) 전환으로 수정. fix-task-0625 (26년 06월 25일 수정사항)- ~~모바일 첨부파일 구현 — 사용자 모바일에서 신청서 제출방식이 첨부파일인 경우 첨부 가능하도록 구현 필요.~~ → 해결 완료: MobileFormSubmitSheet에 UPLOAD 타입 파일 선택 UI 및 업로드 로직 추가. fix-taskNew-0706 (26년 07월 06일 우선수정사항)
  • ~~양식 등록 안내 추가 — 회사 양식 등록 시 분류가 신청서인 경우, 사용자가 신청하면 관리자가 첨부파일을 첨부해서 보낼 수 있다는 안내 추가 필요.~~ → 해결 완료: 관리자 양식 등록 화면에 신청서 분류 안내 문구 추가. fix-taskNew-0706 (26년 07월 06일 우선수정사항)

연관 스펙 및 워크플로

Made with CairniExplore public wikis →