/SimpleHR project
SimpleHR project

근로계약서 스펙

conceptedited by Cairni · 방금 · AIv9

개요

근로계약서 기능은 Simple HR 프로젝트 관리자 모드에서 제공되며, 직원별 계약서 작성·연장·날인·리스트 관리를 포함한다. 아래는 26년 06월 01일 기준으로 수집된 미해결(미완료) 수정 요청사항이다. fix-task-0601.md fix-task-0601.md


주요 기능 영역

1. 계약서 작성 및 직원 선택

  • 직원선택 비활성화 상태 오류 수정 필요 fix-task-0601.md
  • 직원 선택 후 기존 계약서 확인 가능해야 함
  • 회사 직인 날인 여부 / 근로자 서명 날인 여부 표시
  • 신규 계약서 작성 리스트에서 계약기간을 1차 / 2차 / N차 단위로 구분 표시 fix-task-0601.md

2. 계약 연장

  • 현재 근로계약서를 기본으로 계약기간만 변경하여 재날인 처리하는 방식
  • 계약기간은 1차 / 2차 / N차 순으로 표시되어야 하며, 현재는 위·아래로 나열됨 (N차 작성 중 상태) fix-task-0601.md
  • 계약연장과 수정의 차이 명확화 필요
  • 계약연장: 기존 직원별 근로계약서 내용 그대로 오픈 → 수정 후 계약서 전달 → 날인으로 진행 fix-task-0601.md
  • 리스트의 계약연장 방식을 아래 3가지로 구분 fix-task-0601.md
계약연장 방식 구분AI · 출처 클릭
계약연장1
명시적 기간 연장
fix-task-0601.md
자동연장1
조건 충족 시 자동 갱신
fix-task-0601.md
무기한1
종료일 없는 계약
fix-task-0601.md

3. 날짜 정합성 오류

두 건의 날짜 오류가 보고되었다. fix-task-0601.md

모순/충돌AI · 출처 클릭
계약서 날인 날짜 오류: 23일에 연장 계약서를 만들었으나 22일로 표시됨
시스템이 날인 날짜를 하루 앞당겨 저장하는 버그로 추정
fix-task-0601.md
정하린 계약서: 작성일(26.05.19)보다 서명일(26.05.14)이 먼저 기록됨 — 작성일보다 서명일이 앞설 수 없음
날짜 입력 또는 저장 로직의 유효성 검증 누락
fix-task-0601.md
정하린 계약서 상세 - 작성일: 26.05.19 / 작성자: 홍길동 팀장 - 수정일: 26.05.19 / 수정자: 홍길동 팀장 - 서명일: 26.05.14 / 서명자: 정하린 사원 → 작성일보다 서명일이 앞서는 것은 논리적으로 불가 → 유효성 검증 추가 필요 fix-task-0601.md

4. 계약 연장 UI — 날짜 선택 오류

  • 새 종료일 입력 시 월(Month) 클릭 → 상단으로, 년(Year) 클릭 → 하단으로 이동하는 버그 존재
  • 클릭 시 이동하지 않도록 수정 필요 fix-task-0601.md

5. 근로 시작일/종료일 자동 연동

  • 윤소민 계약서: 시작일/종료일과 계약서 내용상 근로개시일이 상이함
  • 시작일/종료일 확정 시 근로계약서의 근로일정과 동일하게 자동 생성되도록 수정 필요 fix-task-0601.md
  • 파견근로자 근로계약서 양식 별도 구성 필요 fix-task-0601.md

사용자 모드 — 근로계약서

항목요구사항
본인 날인본인이 직접 날인 후 제출
관리자 승인제출 후 관리자가 승인
다운로드승인 완료 후 회사 직인 날인 포함 파일 다운로드 가능해야 함

fix-task-0601.md


처리 상태 현황

AI · 출처 클릭
미완료(미해결) 항목
9건
fix-task-0601.md
날짜 정합성 오류
2건
fix-task-0601.md
파견근로자 양식 신규 구성
1건
fix-task-0601.md

주요 플로우


관련 페이지

계약 유형 코드 매핑 (레거시 보정)

CONTRACT_FULL_TIMECONTRACT_PERMANENT는 레거시 마이그레이션 값으로, 시스템 내 렌더링 시 정규직으로 매핑 처리한다. fix-task-0626 (26년 06월 26일 수정사항)

  • 백엔드(template_context.py) + 프론트엔드 5개 파일에 매핑 추가
  • 서명된 계약서의 context_snapshot에 raw enum이 남아있는 경우 렌더링 시점 보정 적용 (ContractOverrideEditor 2곳 + contracts 미리보기 1곳)

계약 시작일·종료일 수정

직원 상세 드로어에서 계약 시작일·만료일 모두 수정 가능하도록 변경되었다. fix-task-0626 (26년 06월 26일 수정사항)

  • 근로계약서 탭 라벨 변경: "시작일" → "계약 시작일", "종료일" → "계약 종료일"
  • 계약서 탭에서 end_date 수정 시 Employee.contract_end_date 캐시 동기화 추가
  • 통합 테스트(test_employee_contract_date_edit.py) 추가
  • 계약일이 Employee 테이블과 EmployeeContract 테이블에 이중 저장되어 불일치가 발생할 수 있으므로, 배포 전 데이터 보정 절차 필요 (→ 상세 절차는 별도 페이지 참조)

사직서 처리 연계

사직서 제출 → 관리자 승인 → 퇴사 처리 흐름에서 어떤 후속 처리를 해야 하는지 미정의 상태로, 추가 설계 필요. fix-task-0626 (26년 06월 26일 수정사항)

07월 03일 업데이트: 사직서 전체 프로세스(DB 모델, API, 관리자 UI, 결재선 연동, 퇴직 처리)가 완성되었다. 자세한 내용은 사직서 처리 워크플로 스펙 참조. fix-task-0703 (26년 07월 03일 수정사항)


근로계약서 미기입 항목 이슈 (07월 02일)

사용자의 근로계약서에 급여, 근무장소 등 일부 항목이 채워지지 않는 문제가 보고되었다. 변수와 DB 데이터의 매핑이 부분적으로만 적용되어 있어, 전체 변수-DB 매핑 일치 여부 확인이 필요하다. fix-taskNew-0702 (26년 07월 02일 우선수정사항)fix-taskNew-0702

완료 (07월 06일 기준): 사용자 근로계약서 미채워지는 항목(급여, 근무장소 등) 수정 완료. fix-taskNew-0706 (26년 07월 06일 우선수정사항)fix-taskNew-0706

계약서 서명·날인·대표 칸 레이아웃

계약서 내 날인, 서명, 대표 등의 칸은 테이블 형태로 구성하지 않고, 자연스러운 배치(비테이블 레이아웃)로 변경해야 한다. fix-taskNew-0702 (26년 07월 02일 우선수정사항)fix-taskNew-0702 → 07월 03일 완료 처리. fix-task-0703 (26년 07월 03일 수정사항) → 07월 06일 재확인 완료. fix-taskNew-0706 (26년 07월 06일 우선수정사항)



E2E 테스트 시나리오 — 직원 등록 → 계약서 서명 흐름

근로계약서 수정 불가 이슈 (07월 13일)

근로계약서 수정이 안되는 경우가 생길 수 있어 확인이 필요하다. fix-task-0713 (26년 07월 13일 수정사항)


auto_renew / renewal_method 불일치 수정 (07월 15일 완료)

auto_renew (boolean)과 renewal_method 값이 불일치하는 경우 계약서 목록에서 "자동연장" 표시가 잘못 노출되는 버그가 수정되었다. fix-task-0715 수정사항

  • 원인: 유형 옆 "자동연장" 텍스트가 auto_renew (boolean)을 보고 표시되어, renewal_method=MANUAL_RENEW인데 auto_renew=true인 데이터에서 잘못 표시됨
  • 프론트 수정: c.auto_renewc.renewal_method === "AUTO_RENEW" 조건으로 변경 (frontend/src/app/admin/employees/contracts/page.tsx)
  • prod 데이터 보정: 불일치 1건(박준혁, 도급직 시드) renewal_methodAUTO_RENEW로 수정 완료

도급직 auto_renew 기본값 검토 (07월 13일 → 07월 15일 완료)

현재 도급직(CONTRACT_OUTSOURCE)만 auto_renew=true가 기본값이나 법적 근거가 없다. 모든 계약 유형을 MANUAL_RENEW 기본으로 통일하고 관리자가 직접 선택하게 하는 방안 검토 중이었다. fix-task-0713 (26년 07월 13일 수정사항)

  • 수정 완료: backend/app/services/contract_service.py:627-629 — 도급직 자동연장 기본값 로직 제거. 모든 계약 유형에서 auto_renew=False로 통일. fix-task-0715 수정사항

계약형태 변경 기능 (07월 13일 요청 → 07월 15일 완료)

계약직 ↔ 정규직 간 계약형태 변경이 가능해야 한다는 요청이 접수되었으며, 07월 15일 수정 완료되었다. fix-task-0713 (26년 07월 13일 수정사항) fix-task-0715 수정사항


E2E 테스트 시나리오 명세 Part 3에서 근로계약서와 직접 연관된 핵심 흐름을 정의한다. E2E 테스트 시나리오 - Part 3. 관리자↔사용자 연계 시나리오

계약서 상태 전이

단계액터동작결과 상태
1관리자근로계약서 작성 (직원선택, 고용유형, 시작일/종료일, 계약연장방식)DRAFT — 급여·근로정책 스냅샷 저장
2관리자계약서 발송PENDING_SIGN — 직원에게 "서명 요청" 알림 전송
3직원첫 로그인 시 require_contract_sign=True gate 표시 (hard — 다른 페이지 접근 차단)
4직원전자서명 완료PENDING_APPROVAL — 모든 관리자에게 "승인 요청" 알림 전송
5직원계약서 승인 전 출근 시도ATT_CONTRACT_PENDING_APPROVAL 에러로 출퇴근 차단
6관리자계약서 승인ACTIVE — require_contract_sign gate 해제
7직원승인 후 재로그인gate 없이 대시보드 정상 진입

E2E 테스트 시나리오 - Part 3. 관리자↔사용자 연계 시나리오

Made with CairniExplore public wikis →