연차 사용촉진
관리자는 근태 현황 → 연차 → 연차현황에서 직원별 안내와 전자서명을 요청하고 실패·기한 초과·2차 지정까지 추적합니다. 사용촉진의 완료는 휴가 신청 승인 또는 잔여 차감을 뜻하지 않습니다.
Sign 계약·메신저 발송·서명·잡 실행은 검증하지 않았습니다. 시작 조건은 대상·전제와 작업 목록, 발송 절차는 대상 선택과 첫 통지를 참고하세요.
대상·전제와 작업 목록
관리자에게 연차 조회와 촉진 처리 권한이 필요하고, 서버가 조직·직원 범위를 다시 검사합니다. 조직의 hereby Sign 연동 자격 정보와 사용할 Sign 서식, 메신저 공식 발신자 이름·이메일이 준비되어 있어야 합니다. 직원은 자기 안내 메시지의 서명 버튼으로 접근하며 다른 직원의 촉진 ID로 서명할 수 없습니다. 발송 대상은 재직 상태·잔여 연차·선택 기간과 권한 범위를 기준으로 서버가 결정합니다.
| 작업 | 화면/버튼 | 결과 |
|---|---|---|
| 대상 조회·개별 선택·현재 페이지/조건 전체 선택 | 연차현황 연도·검색·소속·체크박스 | 선택만 변경, 발송 없음 |
| 개별 통지·일괄 통지 | 촉진 액션 → 개별 통지, 상단 일괄 통지 | 직원별 촉진 건과 Sign 요청, 공식 메시지 |
| 동일 내용 재시도·기한 유지 재안내·새 요청 재발송 | 재시도 / 재안내 / 다시 발송 | 각 의미에 맞는 기존 또는 신규 서명 시도 |
| 작업 조회·갱신·중지·실패 재시도 | 발송 내역 | 배치 작업과 직원별 처리 결과 |
| 서명하기 | 직원 메신저 업무 안내의 서명 액션 | 짧은 수명의 서명 URL 발급, 서명 상태 반영 |
| 기한 초과 후 회사 지정 | 사용시기 지정 | 별도 사용계획·이력·안내 메시지 |
대상 선택과 첫 통지
- 연차현황에서 대상 연도, 소속, 직원 검색을 맞추고 잔여와 촉진 상태를 확인합니다. 개별 건은 행의 개별 통지를 누릅니다.
- 여러 직원은 행 체크박스를 선택합니다. 머리글 체크박스는 현재 페이지를 선택합니다. 여러 페이지가 있을 때 나타나는 현재 검색·소속 조건 전체 선택은 페이지 선택과 구분해서 사용합니다. 확인 이후 필터가 바뀌면 선택이 초기화되고 다시 선택하라는 안내가 표시됩니다.
- 일괄 통지를 누릅니다. 서식 조회가 실패하면 오류 다이얼로그를 표시하고 통지 창은 열리지 않습니다. Sign 미연동이면 **전자서명(hereby Sign) 연동이 설정되지 않은 조직이에요. 연동 설정 후 이용할 수 있어요.**를 표시합니다.
- 통지 창에서 필수 Sign 서식과 응답 기한을 확인합니다. 첫 서식이 기본 선택될 수 있으며, 기한은 기본 10일, 정수 1~365일입니다. 예: 2026년 대상 직원 3명, 조직 서식, 10일.
- 통지 시작을 누릅니다. 선택이 없거나 서식이 없으면 안내 후 유지합니다. 일괄 경로는
batchPreflight가 대상과 필터를 스냅샷으로 고정하고 발급한 토큰으로batchCreate를 실행합니다. 발송 가능 대상 0명은 작업을 만들지 않습니다. - 개별 성공은 창을 닫고 연차현황을 재조회합니다. 일괄 성공은 선택을 비우고 발송 내역을 엽니다. 화면을 닫는 것과 발송 중지는 다릅니다. 통지 제출 중에는 닫기·취소를 막습니다.
화면은 선택 연도의 1월 1일~12월 31일을 촉진 기간으로 보냅니다. 실제 발송 내용·서식 지문·응답 기한·공식 발신자 정보는 시도에 저장하므로, 이후 조직 설정을 바꾸어도 과거 메시지의 발신자가 바뀌지 않습니다. 설정 변경은 조직과 접근 권한, 전달 화면은 메신저를 참고합니다.
상태 확인·재시도·재안내
| 촉진 상태/처리 상태 | 화면 액션 | 사용자 절차와 의미 |
|---|---|---|
| 안내 전 | 개별 통지 | 첫 통지 절차를 실행합니다. |
| 서명 대기 | 재안내 | 현재 시도 ID가 있어야 합니다. 기한이 바뀌지 않는다는 확인창에서 진행하면 같은 요청을 다시 안내합니다. |
| 재시도 가능 실패 | 재시도 | 동일 내용 재발송 확인 후 실행합니다. 버튼은 재시도 중 비활성화됩니다. |
| 자동 재시도 불가 실패 | 검토 필요 | 버튼이 비활성입니다. 오류와 원격 요청 상태를 확인할 유지보수 작업이 필요합니다. 클릭으로 해결되는 기능이 아닙니다. |
| 요청 취소(기한 초과) | 다시 발송 | 서식·기한 창을 다시 열어 새 서명 시도를 만듭니다. 재안내처럼 이전 기한을 유지하는 동작이 아닙니다. |
| 제도 적용 | 완료 내역 | 현재 버튼은 이름과 달리 개별 통지 폼을 엽니다. 완료 상세 조회 기능으로 안내하지 않습니다. 다시 통지를 제출하면 서버가 **이미 완료된 안내는 다시 발송할 수 없어요.**로 거부합니다. |
| 2차 지정 완료 | 개별 통지 | 현재 행 액션은 통지 폼으로 연결됩니다. 지정 계획의 별도 상세 조회 화면은 확인되지 않았으며 일반 휴가 신청은 별도로 처리합니다. |
완료 내역 표시의 제한: 현재 annualLeavePromotionRowAction의 send 분기와 클릭 핸들러는 완료 조회 모달로 분기하지 않습니다. 상태 열을 확인하고 이 버튼에서 신규 발송을 반복하지 않습니다. 완료 서식·서명 증거의 상세 조회는 연결된 Sign 기록을 별도로 확인해야 합니다.
원격 이벤트는 webhook inbox에 먼저 저장한 뒤 중복·순서 역전을 처리합니다. 누락·중간 실패는 reconcile 작업이 원격 상태를 다시 확인합니다. 즉 서명 화면을 닫았다거나 메시지를 읽었다는 것만으로 제도 적용 완료를 판단하지 않습니다. 기한 동기화 전 준비 중 메시지는 직원에게 게시하지 않습니다.
일괄 발송 내역·중지
- 발송 내역을 열어 작업 선택 목록에서 실행 일시·상태를 고릅니다. 이 화면은 일괄 통지 작업 전용입니다. 개별 통지는 batch를 만들지 않아 여기 표시되지 않습니다.
- 전체·성공·실패·중지·제외 건수와 직원별 상태·오류를 확인합니다. 대상 생성 중에는 **대상 생성 중이에요.**가 표시됩니다. 새로고침 또는 창이 열린 동안의 주기 조회로 갱신합니다.
- 진행 중 작업에서 남은 발송 중지를 눌러 확인합니다. 아직 시작하지 않은 항목을 취소하며 이미 만들어진 Sign 계약과 메시지는 유지됩니다.
- 일부 처리 필요 / 발송 실패에서 실패 건 재시도를 실행합니다. 성공 건 전체를 새로 보내는 동작이 아닙니다. 재시도 후 직원별 결과를 다시 확인합니다.
- 닫기로 창을 닫으면 화면 폴링이 중단됩니다. 서버 작업은 계속되며 재진입하면 다시 조회됩니다. 내역 없음은 선택 연도에 batch가 없음을 의미하고 개별 통지 성공 여부는 연차현황에서 확인합니다.
직원별 작업은 독립된 결과를 갖습니다. 하나의 API 성공이나 배치 생성 성공으로 모든 직원의 메시지·서명이 완료됐다고 보고하지 않습니다. 처리 중 네트워크가 끊기면 새 발송부터 반복하지 말고 기존 작업을 조회합니다.
직원 서명과 2차 사용시기 지정
- 직원은 메신저의 공식 연차 촉진 안내를 열어 대상 기간·기한을 읽고 서명 액션을 누릅니다.
openSigner가 본인·조직·현재 시도를 검증한 후 짧은 수명의 URL을 발급합니다. - 열린 Sign 화면에서 서식이 요구하는 항목과 서명을 완료합니다. 만료된 링크는 저장해서 재사용하지 않고 메신저의 현재 안내에서 다시 엽니다. 서식 내용·외부 Sign 화면의 세부 항목은 조직 서식에 의존합니다.
- 관리자는 연차현황에서 결과가 반영될 때까지 확인합니다. 서명 완료/기한 초과의 상태 반영은 원격 이벤트 및 재조정 작업에 의존합니다.
- 기한 내 미완료로 2차 지정 대상이 된 직원에서 사용시기 지정을 엽니다. 사용일, 시간(분), 반일을 입력합니다. 기본 한 행은 480분·반일 해제입니다. 사용일 추가로 늘리고 삭제로 줄이되 최소 한 행을 유지합니다.
- 날짜와 양의 분 값이 있는 행을 최소 하나 입력하고 사용시기 지정을 누릅니다. 분 입력은 1~1440, 화면 조절 간격은 30분입니다. 서버 스키마는 최대 366행을 허용합니다. 빈/유효하지 않은 행은 클라이언트 제출 대상에서 빠질 수 있으므로 보내기 전 행을 확인합니다.
- 성공하면 창을 닫고 2차 지정 완료 상태를 조회합니다. UI가 보내는 사유는 제출 기한 내 서명·계획서 미완료로 고정되어 있으며 사유 입력 칸은 없습니다. 취소하면 지정 요청을 보내지 않습니다.
지정일은 AnnualLeavePromotionPlanItem에 저장하는 계획입니다. LeaveRequest 생성이나 사용 잔여 차감을 여기서 실행하지 않습니다. 실제 휴가 신청·승인·사용 원장은 출퇴근과 휴가를 따릅니다.
근거·유지보수·검증 경계
- 관리자 화면, 관리자 액션, 상태 라벨·액션 판정.
- SDK, API, 서비스, 공유 스키마.
- 워크플로 설명은 상태 모델과 내구성의 배경입니다. 후속 수정은 미연동 오류 노출과 일괄 전용 내역 안내를 기록합니다. 이들은 새 실서비스 테스트 결과가 아닙니다.
- 개별/일괄/재안내/재시도/재발송/2차 지정의 사용 차이와 저장 범위를 통합 문서화했습니다. 테스트 조직의 연동·서식·직원 계정으로 대상 선택, 외부 서명, webhook 지연, 중지/부분 실패/재시도 및 계획 저장 결과를 실행해야 합니다. 해당 화면·결과의 번호 주석 자료와 짧은 서명 이동 영상은 미확보입니다.
대상 선택과 연동 사전 확인 영상
관리자 가이드의 3단계 영상은 근태 현황 → 연차 → 연차현황에서 김관리 검색, 대상 한 명 체크, 일괄 통지, Sign 미연동 안내 확인까지 보여 줍니다. 예제 조직은 Sign에 연결되지 않았으며 안내를 닫았고 통지는 발송하지 않았습니다.
연동 완료 후의 서식·응답 기한·통지 시작·서명 수신·2차 지정은 아직 촬영하지 않았습니다. 이 영상은 발송 성공 증거가 아닌 실제 진입 조건 안내입니다. 연차 잔여 조회와 Sign 통지의 연결을 바꾸면 안내창뿐 아니라 후속 단계의 검증 범위도 갱신합니다.
통지용 서식이 없는 경우
관리자 연차 사용 촉진에서 서식 없음 안내, 서식 추가하기, 새로고침과 발송 전 확인을 설명합니다. PR #681의 annual-leave-promotion.ts와 통지 창에 근거합니다. 사용할 수 있는 서식이 없으면 통지 시작을 막고, 관리 화면 주소가 없으면 서식 추가 버튼을 숨깁니다. 실제 외부 서식 생성과 통지 발송은 이번 작업에서 실행하지 않았습니다.