/SimpleHR project
SimpleHR project

결재 관리 스펙

conceptedited by Cairni · 방금 · AIv15

개요

결재 관리는 Simple HR 프로젝트의 기업 관리자 영역 중 하나로, 경로 /admin/approvals에서 제공된다. 직원이 제출한 각종 신청서(근태, 휴가, 기안서 등)를 승인·반려하는 워크플로우를 담당한다. 근태 관리 스펙휴가 관리 스펙과 밀접하게 연결된다. fix-task-0604.md


2026-06-04 수정 사항

✅ 완료된 버그 수정

항목내용상태
JSON 노출대기 항목 클릭 시 본문에 JSON이 그대로 노출되는 문제 수정완료
토스트 알림 미표시신규 결재 작성 시 완료 토스트 알림이 보이지 않는 문제 수정완료
작성 모달 흐림근태관리 > 결재 관리에서 발급/승인 시 작성 모달이 흐릿하게 표시되는 문제 수정완료

fix-task-0604.md


2026-06-10 개선 요청

기업 사용자 신청결재 UI 개선

  • 경로: /user/approval
  • 개선 필요: 신청 결재 결재하기 사용자 인터페이스 개선 필요

fix-task-0610.md


2026-06-16 개선 및 계획

GPS 기반 출근 승인 기능

fix-task-0616.md에 따르면, GPS 범위 검사 기능(checkGpsRadius)이 순수 함수로 추출되고 FE/BE 단위 테스트가 완료되었다. 다음 단계로 GPS 실패 시 출근 요청 → 관리자 승인 기능이 계획되어 있으며, 현재 계획은 완료되었으나 구현은 대기 중이다.

fix-task-0616.md


2026-06-24 주요 개선 및 버그 수정

필수서류(REQUIRED) → Document 결재 시스템 전환

fix-task-0624 (26년 06월 24일 수정사항)에 따르면, 필수서류가 기존 EmployeeContract 방식에서 Document 결재 시스템으로 전환되었다:

  • REQUIRED 양식 제출 시 Document 생성 → 결재선 승인 → 결재 관리에서 처리
  • 승인 시 EmployeeDocument 자동 생성 side-effect 추가
  • 관리자 발송(EmployeeContract) 경로에서 REQUIRED 카테고리 제외 (CONTRACT 포함 시 허용)
  • 필수서류 목록에 Document 결재 상태 반영
  • 서류 보관함에 doc_content/form_content 필드 추가 및 내용 보기 모달 제공
  • 기존 데이터 영향: 이미 EmployeeContract로 생성된 REQUIRED 건은 기존 방식으로 승인 처리 후, 이후 건부터 Document로 전환

기안서 양식 목록 필터링 버그 수정

  • 탄력근로제서면합의서(REQUIRED)가 기안서 목록에 노출되던 문제: 기안서 페이지에서 form_category: "OPTIONAL" 필터 적용으로 REQUIRED/CONTRACT 양식 분리 완료
  • 서류신청 페이지도 form_category: "APPLICATION" 필터 적용

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

기안서 UI 개선

  • 기안서 목록에서 CONTRACT 문서종류가 영문으로 노출되던 문제: DOC_TYPE_CONFIG에 CONTRACT 라벨 매핑 추가 ("계약")
  • 양식 분류 OPTIONAL 라벨을 "양식"에서 "기안서"로 변경: 신청서(APPLICATION)와 구분 명확화

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

모바일 결재 페이지 개선

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

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

회사 양식 관리: 붙여넣기+첨부파일 동시 제출 방식 추가

  • PASTE_UPLOAD 제출방식 추가: 붙여넣기 시 엑셀 자료 그대로 붙여지도록 수정
  • 제출방식 전환 시 양식 내용 초기화 확인 팝업 추가

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


2026-06-22 주요 개선 및 버그 수정


2026-06-30 주요 개선 및 버그 수정

기안서 기준 재정립 (결재 유형 이원화)

fix-task-0630 (26년 06월 30일 수정사항)에 따라 결재 유형이 두 가지 기반으로 명확히 분리되었다:

유형기반 모델항목관리자 페이지사용자 탭
근태 결재RequestApprovalStep휴가, 연장근로, 출퇴근 요청(CHECKIN)근태결재관리근태 결재 탭
서류 결재Document기안서, 신청서, 필수서류서류결재서류 결재 탭
  • CHECKIN(출퇴근 요청): Document 기반이지만 사용자 근태 탭에 표시, 승인은 관리자 전용
  • 공용 컴포넌트 approval-shared.tsx로 분리; 서류 관련 kind(application/required/draft)는 근태결재관리에서 제거

fix-task-0630 (26년 06월 30일 수정사항)

사용자 결재 페이지 근태/서류 탭 분리

  • 근태 결재 탭: RequestApprovalStep 기반 휴가·연장근로 + CHECKIN Document 병합 표시
  • 서류 결재 탭: CHECKIN 제외한 기안서·신청서·필수서류 표시
  • 사용자용 근태 결재 API 신규 구현: GET /v2/approval-requests, PUT approve/reject (request_approval_service.py, 통합 테스트 3건)
  • 출퇴근 요청 결재는 관리자 페이지 전용 — 사용자 페이지에서는 "관리자 페이지에서 처리" 안내 표시
  • 탭 명칭 변경: 근태 → 근태 결재, 서류 → 서류 결재 (데스크톱 + 모바일(모바일 앱 스펙) 동일 적용)
  • 뱃지 UI: 인라인 스타일 → Badge 컴포넌트 통일 (관리자 결재관리 페이지와 동일 색상 체계)
  • 테이블 레이아웃: table-fixed + colgroup 비율 고정, 제목 외 컬럼 중앙 정렬

fix-task-0630 (26년 06월 30일 수정사항)

근태결재관리 출퇴근 요청 신청자 "-" 표시 버그 수정

  • 원인: emp.get("name") 키 오류 → emp.get("employee_name")으로 수정

fix-task-0630 (26년 06월 30일 수정사항)

결재 시스템 확장 계획 (추후)


2026-07-13 이슈 및 확인 사항

결재 승인 후 대기중 상태 잔존

  • 승인 처리 후에도 결재 상태가 "대기중"으로 남아있는 경우가 보고됨.
  • 재현 조건: 연장근로 신청 / 이상재 관리자의 사용자 페이지 / 유유정 직원의 신청 건.
  • 원인 및 수정 방법 확인 필요. fix-task-0713 (26년 07월 13일 수정사항)

최고관리자 결재선 변경 미적용

  • 최고관리자가 결재선을 변경했음에도 조직관리자에게 결재가 라우팅되는 문제. 변경이 저장되지 않거나 세션 캐시 미갱신 등 원인 조사 필요. fix-task-0713 (26년 07월 13일 수정사항)

E2E 시나리오: 관리자↔직원 결재 연계 흐름

E2E 테스트 시나리오 - Part 3. 관리자↔사용자 연계 시나리오에서 정의한 핵심 결재 연계 시나리오를 요약한다.

기안서/서류 결재 흐름 (시나리오 6)

#액터시나리오기대 결과비고
1직원서류 신청에서 양식을 선택하고 기안서를 작성한다Document가 DRAFT 상태로 생성된다
2직원기안서를 제출한다결재선이 자동 배정되고 PENDING 상태로 전환된다신청자 본인 단계 자동 승인
3관리자신청결재 > 결재하기에서 기안서를 확인한다기안서 내용, 첨부파일, 결재 상태가 표시된다
4관리자기안서를 승인한다마지막 결재 단계이면 APPROVED로 변경되고, 직원에게 "승인" 알림이 전송된다side effect 실행 (유형별)
5직원신청결재 > 신청 내역에서 확인한다해당 기안서가 "승인" 상태로 표시된다

기안서 반려 및 재제출

#액터시나리오기대 결과비고
1직원기안서를 제출한다PENDING 상태로 전환된다
2관리자기안서를 반려한다REJECTED로 변경되고, 직원에게 "반려" 알림이 전송된다
3직원반려된 기안서를 수정하여 재제출한다version이 증가하고, 결재선이 재생성되어 다시 PENDING 상태가 된다

기안서 회수

#액터시나리오기대 결과비고
1직원기안서를 제출한다PENDING 상태로 전환된다
2직원결재가 진행되기 전에 기안서를 회수한다RECALLED 상태로 변경된다결재 진행 후에는 회수 불가

보완 요청

#액터시나리오기대 결과비고
1직원기안서를 제출한다PENDING 상태로 전환된다
2관리자"보완 요청"을 클릭한다기안서가 DRAFT 상태로 복귀하고, 직원에게 반환된다
3직원보완 후 다시 제출한다다시 PENDING 상태로 전환된다

사직서 결재 흐름 (시나리오 8)

사직서 결재 흐름은 사직서 처리 워크플로 스펙에서 상세 명세되며, 아래는 결재 처리 관점의 요약이다.

경로처리 방식결과
직원 직접 제출서류 신청에서 RESIGNATION 양식 선택 → 결재선 승인Resignation COMPLETED, 퇴사일 이전이면 즉시 상태 변경
관리자 직접 처리직원관리 > 퇴직처리결재선 없이 즉시 COMPLETED 처리
사직서 반려관리자 반려REJECTED, 직원 로그인 정상 유지
  • 퇴사 처리 완료 시: Employee.employment_status = EMP_RETIRED, User.status = RESIGNED, 모든 세션 무효화
  • 미래 퇴사일의 경우 스케줄러가 처리

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

  • 인사발령/사직처리 결재선 추가 (미완료): Document(DocumentApprovalStep) 기반으로 구현 예정
  • 관리자: 등록 시 결재선 선택 가능 → 결재선 있으면 승인 후 반영, 없으면 즉시 처리
  • 사용자 사직서(사직서 처리 워크플로 스펙): 결재선 있으면 따르고, 없으면 자동 승인
  • 상세 설계: docs/fix_tasks/0630/approval-workflow-plan.md
  • 결재 시스템 통합 (장기): RequestApprovalStepDocumentApprovalStep 일원화
  • 현재 이원화 상태(근태/서류)에서 통합 시 변경 범위 큼 (attendance_service, request_approval_service, 프론트 전체)

fix-task-0630 (26년 06월 30일 수정사항)

출퇴근 결재 라인 자동 생성 및 삭제 보호

fix-task-0622.md에서 다음 사항이 확인되었다:

  • 기본 출퇴근 결재선 자동 생성: 서버 시작 시 checkin_approval_line_id가 NULL인 테넌트에 대해 기본 출퇴근 결재선이 자동으로 생성된다.
  • 삭제 차단: 기본 출퇴근 결재선 삭제 시도 시 "기본 출퇴근 결재선은 삭제할 수 없습니다" 토스트 알림이 표시된다.

GPS 출근 요청 시 즉시 처리

GPS 이슈를 사유로 작성하여 출근하기를 누른 후 처리 흐름이 개선되었다:

  • 이전 동작: 출퇴근 요청이 1차 결제자(팀장) 이상재에게 결재 라인으로 넘어갔다.
  • 개선 사항: 출퇴근 요청 시 즉시 출근/퇴근 처리로 변경
  • 대시보드가 "근무중"으로 즉시 전환
  • 관리자 반려 시 GPS_REQUEST 기록 자동 취소

fix-task-0622.md

퇴근 시 GPS 위치 확인

fix-task-0622.md에 따르면, 퇴근 버튼 클릭 시 다음과 같이 처리된다:

  • CheckInLocationSheet 다이얼로그 표시: 퇴근 시에도 GPS 확인
  • 반경 판정:
  • 반경 안이면 직접 퇴근 처리
  • 밖이면 출퇴근 요청 폴백
  • 동적 텍스트 표시: 다이얼로그 내부 "출근" 텍스트를 출근/퇴근 상황에 맞게 표시

fix-task-0622.md


플로우: 결재 처리 흐름

수정 전 문제점: 항목 클릭 시 본문에 JSON이 그대로 노출되었으며, 신규 작성 시 토스트 알림이 표시되지 않고, 발급/승인 시 작성 모달이 흐릿하게 표시되었다. fix-task-0604.md

플로우: GPS 기반 출퇴근 결재

fix-task-0622.md


연관 기능: 신청결재 (사용자 측)

기업 사용자 측 신청결재 기능에서도 연관 수정이 이루어졌다.

  • 기안서 신규 작성 시, 양식 선택 시 제목 자동 업데이트 적용
  • 단, 사용자가 직접 입력한 제목은 유지 (자동 업데이트로 덮어쓰지 않음)

fix-task-0604.md


연관 기능: 연장근로 현황

  • 경로: 기업 사용자 근무관리 > 연장근로 현황
  • 버그 수정: 연장근로 신청 후 신청 목록이 갱신되지 않는 문제 해결 (완료)

fix-task-0604.md


상태 요약

결재 관리 수정 현황AI · 출처 클릭
완료23
연장근로 신청 직위 '-' 표시 버그 수정 (OvertimeRequestInfo에 position_name 필드 추가)
fix-task-0715 수정사항
근로정책 work_days OFF 요일 출근 차단 구현 (0e9ac95)
fix-task-0715 수정사항
최고관리자 결재선 변경 미적용 원인 확인 및 드롭다운 안내 텍스트 추가
fix-task-0715 수정사항
근로계약서 auto_renew/renewal_method 불일치 수정 (프론트 조건 변경 + 운영 데이터 보정 1건)
fix-task-0715 수정사항
도급직 계약 생성 시 auto_renew 기본값 False로 통일 (contract_service.py:627-629)
fix-task-0715 수정사항
관리자 등급 변경 정상 동작 확인 (드로어 저장 후 목록 즉시 갱신)
fix-task-0715 수정사항
계약형태 변경 (계약직↔정규직 전환) 허용 구현
fix-task-0715 수정사항
대기 항목 클릭 시 JSON 노출 문제 수정
fix-task-0604.md
신규 작성 시 토스트 알림 미표시 수정
fix-task-0604.md
발급/승인 시 작성 모달 흐림 현상 수정
fix-task-0604.md
기안서 작성 시 양식 선택 → 제목 자동 업데이트 (직접 입력 유지)
fix-task-0604.md
연장근로 신청 후 목록 갱신 안 됨 수정
fix-task-0604.md
결재 플랜 구현
fix-task-0616.md
기본 출퇴근 결재선 자동 생성 및 삭제 보호
fix-task-0622.md
출퇴근 요청 시 즉시 처리 (결재 라인 우회)
fix-task-0622.md
퇴근 시 GPS 위치 확인 기능 추가
fix-task-0622.md
필수서류 Document 결재 시스템 전환 (REQUIRED → Document)
fix-task-0624 (26년 06월 24일 수정사항)
기안서 양식 목록 필터링 버그 수정 (REQUIRED/CONTRACT 분리)
fix-task-0624 (26년 06월 24일 수정사항)
기안서 UI: CONTRACT 라벨 한글화, OPTIONAL→기안서 라벨 변경
fix-task-0624 (26년 06월 24일 수정사항)
모바일 결재 상세 시트 TemplatePreview 렌더링 및 JSON 깜빡임 수정
fix-task-0624 (26년 06월 24일 수정사항)
모바일 결재 카드 미리보기 JSON → 텍스트 추출 표시
fix-task-0624 (26년 06월 24일 수정사항)
REQUIRED/CONTRACT 배지 한글화 (필수서류/계약)
fix-task-0624 (26년 06월 24일 수정사항)
회사 양식 PASTE_UPLOAD 제출방식 추가 (엑셀 붙여넣기)
fix-task-0624 (26년 06월 24일 수정사항)
진행 중1
/user/approval 결재하기 UI 개선
fix-task-0610.md
완료 (0630)8
기안서 기준 재정립: 근태결재(RequestApprovalStep) / 서류결재(Document) 이원화
fix-task-0630 (26년 06월 30일 수정사항)
사용자 결재 페이지 근태/서류 탭 분리 (탭 명칭 변경 포함)
fix-task-0630 (26년 06월 30일 수정사항)
사용자용 근태 결재 API 구현 (GET /v2/approval-requests, PUT approve/reject)
fix-task-0630 (26년 06월 30일 수정사항)
뱃지 UI 통일 (인라인 스타일 → Badge 컴포넌트)
fix-task-0630 (26년 06월 30일 수정사항)
테이블 레이아웃 개선 (table-fixed + colgroup 비율 고정)
fix-task-0630 (26년 06월 30일 수정사항)
근태결재관리 출퇴근 요청 신청자 '-' 표시 버그 수정 (employee_name 키 수정)
fix-task-0630 (26년 06월 30일 수정사항)
관리자 결재관리 공용 컴포넌트 분리 (approval-shared.tsx)
fix-task-0630 (26년 06월 30일 수정사항)
개발 DB 레거시 OVERTIME/CHECKIN Document 40건 삭제
fix-task-0630 (26년 06월 30일 수정사항)
완료 (0702)4
'기안서 작성' → '서류 작성' 명칭 전면 변경 (사이드바·상단바·모바일탭·페이지제목)
fix-task-0702 (26년 07월 02일 수정사항)
기업 사용자 신청결재 > 서류 작성 탭 이름 → '기안서 신청'으로 수정
fix-taskNew-0702 (26년 07월 02일 우선수정사항)
사직서 제출 프로세스 확정 (서류 작성 탭에서 양식 선택 후 작성)
fix-task-0702 (26년 07월 02일 수정사항)
결재선 수정 후 초기화 버그 수정 (저장 후 이전 값으로 되돌아가는 문제)
fix-task-0702 (26년 07월 02일 수정사항)
완료 (0706)15
근태 결재 신청 페이지에 결재선 선택 UI 추가 (드롭다운, 흐름 프리뷰, approval_line_id 전달)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
근태결재 관리 배지 오류 수정 (신청 알림 있으나 서류 목록 미표시 해결)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
출퇴근 요청별 드로어 본문 통일 (테이블 형식, 요청 시각·근무지·GPS 주소 추가)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
관리자 출퇴근 요청 승인 시 근로정책 시간 기본값 표시
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
모바일 신청서 첨부파일 제출 구현 (MobileFormSubmitSheet UPLOAD 타입 UI+로직)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
신청서/기안서 신규 작성 시 문서 종류 선택 단계 제거
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
경조사 휴가 신청 시 사유 선택란 추가 (PC·모바일, FAMILY_EVENT sub_reasons 드롭다운)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
근태결재 신청 제목 형식 통일 ([출장], [휴가], [특별휴가] 등 대괄호 형식)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
사용자 결재 페이지 위임하기 버튼 제거 (우측 상단 '위임 설정' 버튼)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
기안서·서류 신청 탭 → '서류 신청'으로 통합 (사이드바·모바일, form_categories 다중 분류, HTML 태그 스트리핑)
fix-task-0709
사직서 처리 Document 결재 기반 전환 (근태결재 탭에서 사직 제거, 서류결재 탭으로 통일, 통합 테스트 4건)
fix-task-0709
모바일 결재 상세 영문 변수명·값 한글화 (work_location_name, CHECK_IN→출근 등)
fix-task-0709
모바일 신청 양식 미등록 정보 fallback 렌더링 (fieldLabels 매핑, 미매핑→미등록)
fix-task-0709
EWP 단일 소스 전환 backfill 마이그레이션 (직원 289명 일괄 EWP 생성, overrides_dept=false)
fix-task-0709
회사 양식 등록 시 신청서 분류 안내 추가 (관리자 첨부파일 안내)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
계획 중8
GPS 실패 시 출근 요청 → 관리자 승인 기능
fix-task-0616.md
양식 삭제 시 실패 문제
fix-task-0624 (26년 06월 24일 수정사항)
사직서 제출 → 관리자 승인 → 퇴사처리 흐름 미정
fix-task-0624 (26년 06월 24일 수정사항)
관리자별 세부 권한 제한 범위 확정
fix-task-0702 (26년 07월 02일 수정사항)
인사발령/사직처리 결재선 추가 (DocumentApprovalStep 기반)
fix-task-0630 (26년 06월 30일 수정사항)
결재 시스템 통합 장기 과제 (RequestApprovalStep → DocumentApprovalStep 일원화)
fix-task-0630 (26년 06월 30일 수정사항)
근태결재 관리·서류결재 일괄 처리 버튼 구현
fix-task-0630 (26년 06월 30일 수정사항)
PC 출퇴근 체크 불가 문제 원인 조사 및 수정
fix-task-0702 (26년 07월 02일 수정사항)
계획 중28
GPS 실패 시 출근 요청 → 관리자 승인 기능
fix-task-0616.md
양식 삭제 시 실패 문제
fix-task-0624 (26년 06월 24일 수정사항)
사직서 제출 → 관리자 승인 → 퇴사처리 흐름 미정
fix-task-0624 (26년 06월 24일 수정사항)
관리자별 세부 권한 제한 범위 확정 (탭 숨김 외 세부 항목 제한, 예: 직원 상세 내 근로계약서 제거 등)
fix-task-0702 (26년 07월 02일 수정사항)
인사발령/사직처리 결재선 추가 (DocumentApprovalStep 기반)
fix-task-0630 (26년 06월 30일 수정사항)
결재 시스템 통합 장기 과제 (RequestApprovalStep → DocumentApprovalStep 일원화)
fix-task-0630 (26년 06월 30일 수정사항)
근태결재 관리·서류결재 일괄 처리 버튼 구현
fix-task-0630 (26년 06월 30일 수정사항)
PC 출퇴근 체크 불가 문제 원인 조사 및 수정
fix-task-0702 (26년 07월 02일 수정사항)
출장 잦은 직원 GPS 출근 시 현재 위치 저장 기능
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
PC 출퇴근 체크 불가 문제 원인 조사 및 수정
fix-task-0709
회사 이미지 등록 깨짐 현상 수정
fix-task-0709
근로정책 수정 시 적용시점 반영 및 입력 UI 복원
fix-task-0709
근로정책 적용시점 반영 및 이력 덮어쓰기 수정 (EWP INSERT 방식, 날짜 기반 활성 판정, 드로어 표시)
fix-task-0715 수정사항
계약형태 변경 (계약직↔정규직 전환 허용) 구현
fix-task-0709
조직관리자 권한 해당 부서만 보이도록 조정
fix-task-0709
관리자 등급 변경 미반영 버그 수정
fix-task-0709
최초 등록자 최고관리자 권한 고착 버그 수정
fix-task-0709
최고관리자 결재선 변경 미적용 버그 수정
fix-task-0709
결재 승인 후에도 대기중 상태 잔존 (연장근로 신청, 이상재 관리자/유유정 직원 케이스 확인 필요)
fix-task-0713 (26년 07월 13일 수정사항)
최고관리자가 결재선 변경해도 조직관리자에게 결재 라우팅되는 문제 (수정 안됨)
fix-task-0713 (26년 07월 13일 수정사항)
교대/변형근로 수동 배정 시 최소 연속 휴식 시간 검증 미구현 (policy_service.py + 프론트 bulkCreate)
fix-task-0715 수정사항
교대근로 순환 패턴(cycle_pattern) 기반 자동 배정 미구현
fix-task-0715 수정사항
연차촉진 threshold_days 변경 시 NOTIFIED 대상자 미정리 (sync_promotion_targets)
fix-task-0715 수정사항
연차촉진 설정값(알림 채널/자동 실행/촉진 시기/응답 기한) 미적용
fix-task-0715 수정사항
일정관리 반복 일정 확장 로직 미구현 (calendar_service.py list_events)
fix-task-0715 수정사항
일정관리 알림 발송 미구현 (reminder 값 저장만 되고 발송 로직 없음)
fix-task-0715 수정사항
급여기초 간이세액 비율(80/100/120%) 선택 UI 미구현 (/admin/payroll/base)
fix-task-0715 수정사항
관리자 설정 별도 권한(인사, 급여) 항목 제거
fix-task-0715 수정사항

관련 페이지

관리자(허빈)↔직원(김소민) 간 결재 연계 흐름의 E2E 시나리오는 E2E 테스트 시나리오 명세에서 확인할 수 있다. E2E 테스트 시나리오 - Part 3. 관리자↔사용자 연계 시나리오

2026-07-15 주요 수정 및 이슈

✅ 연장근로 신청 직위 '-' 표시 버그 수정

관리자 결재 목록(/admin/approvals)에서 연장근로 신청의 직위가 "-"로 표시되는 문제가 수정되었다. OvertimeRequestInfo 스키마에 position_name 필드가 누락된 것이 원인으로, 백엔드 서비스는 정상 반환하지만 Pydantic response_model 직렬화 시 스키마에 없는 필드가 제거되었다. LeaveRequestInfo에는 해당 필드가 있으나 OvertimeRequestInfo에만 누락되어 있었으며, 필드 추가로 수정 완료. fix-task-0715 수정사항

✅ 근로정책 work_days OFF 요일 출근 차단 미구현 수정

_resolve_scheduled_for_day()work_days OFF 체크 추가 및 get_user_dashboard()에 주휴일 판정 추가로 출근 버튼 비활성화. OT_HOLIDAY 승인 시 출근 허용 흐름은 동일하게 유지. (커밋 0e9ac95) fix-task-0715 수정사항

✅ 근로정책 적용시점 반영 및 이력 덮어쓰기 수정

근무 정책 스펙 변경 시 기존 EWP 레코드를 UPDATE(reuse)하여 과거 이력이 소실되고, is_primary 즉시 플립으로 미래 예약 후 동기화 불일치가 발생하던 문제를 수정하였다.

  • 이력 덮어쓰기 방지: 항상 신규 EWP INSERT, 기존 EWP는 effective_to 설정으로 종료
  • 날짜 기반 활성 판정: is_primary 플립 대신 effective_from/to 날짜 범위 + ORDER BY effective_from DESC로 활성 정책 결정
  • 미래 예약 시 기존 EWP 미수정: 적용일 도래 시 Read 쿼리가 자연 전환, 스케줄러(close_superseded_ewps)가 이전 EWP의 effective_to 자동 채움
  • 적용시점 표시: EmployeeDetail 응답에 work_policy_effective_from, scheduled_work_policy_name, scheduled_work_policy_date 추가, 드로어에 표시
  • 이력 모달: GET /employees/{id}/work-policy-history API + 프론트 변경이력 모달 (적용중/예약중/취소 배지)
  • 배포 체크리스트: docs/fix_tasks/0715/report/deploy-checklist.md

fix-task-0715 수정사항

✅ 최고관리자 결재선 변경 미적용 (확인 완료)

결재선 미선택 시 조직도 기반 자동 결재선(본사 조직장=조직관리자)이 적용됨이 원인으로 확인되었다. 결재선 템플릿 수정과 자동 결재선은 별개 시스템이다. 결재선 드롭다운에 amber 색상 안내 텍스트를 추가하여 미선택 시 자동 결재선이 적용됨을 명시하도록 수정. fix-task-0715 수정사항

✅ 근로계약서 auto_renew / renewal_method 불일치 수정

근로계약서 스펙 관련: 계약 유형 옆 "자동연장" 텍스트가 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). 운영 데이터 불일치 1건(박준혁, 도급직 시드)의 renewal_methodAUTO_RENEW로 보정 완료. fix-task-0715 수정사항

✅ 도급직 계약 생성 시 auto_renew 기본값 수정

모든 계약 유형에서 auto_renew=False 기본값으로 통일. 관리자가 명시적으로 선택한 경우에만 자동연장 적용. backend/app/services/contract_service.py:627-629 — 도급직 자동연장 기본값 로직 제거. fix-task-0715 수정사항

✅ 관리자 등급 변경 미반영 (정상 동작 확인)

관리자 상세 드로어에서 등급 변경 후 저장 시 DB에 반영되고 목록에도 즉시 갱신됨을 확인. fix-task-0715 수정사항

✅ 계약형태 변경 (계약직↔정규직 전환)

계약직에서 정규직으로, 정규직에서 계약직으로 계약형태 변경이 가능하도록 수정. fix-task-0715 수정사항

⬜ 교대/변형근로 수동 배정 시 최소 연속 휴식 시간 검증 미구현

교대(변형)근로 관리 스펙 관련: 정책에 min_consecutive_rest_hours 값 저장·로드는 정상이며, 변형근무 자동배정(auto_assign_variant_shifts)에서는 rest_hours 검증이 구현되어 있다. 그러나 수동 셀 클릭 배정(assign_shift_roster, bulkCreate) 시 전일 퇴근~당일 출근 간격 검증이 없다.

  • 예: 야간(18:00~06:00) 다음날 바로 주간(06:00~18:00) 수동 배정 시 휴식 0시간이지만 경고/차단 없음
  • 수정 대상: backend/app/services/policy_service.pyassign_shift_roster() + 프론트 셀 배정(bulkCreate) 시 전일 퇴근~당일 출근 간격 검증 추가

fix-task-0715 수정사항

⬜ 교대근로 순환 패턴(cycle_pattern) 기반 자동 배정 미구현

cycle_patternrotation_cycle_days 저장·로드는 정상이지만, 교대근무(SHIFT) 모드에서 패턴 기반 자동 순환 배정 로직이 없다. 현재 자동배정은 변형근무(VARIANT) 모드 전용이며, SHIFT 모드는 관리자가 수동으로 셀 배정해야 한다. 프론트에서 패턴 기반 법정한도 체크(주간시간 검증)는 구현됨. 백엔드 저장 시 패턴 유효성 재검증은 없음. fix-task-0715 수정사항

⬜ 연차촉진 threshold_days 변경 시 기존 대상자 미정리

연차촉진 스펙 관련: sync_promotion_targets()에서 threshold 미달 대상자 삭제 조건이 first_status == "PENDING" AND second_status == "PENDING"인 경우만 해당. 1차 알림 발송 완료(first_status = "NOTIFIED")된 대상자는 threshold를 올려도 목록에서 제거되지 않음.

  • 수정 대상: backend/app/services/policy_service.pysync_promotion_targets() 정리 조건에서 threshold 미달 시 알림 발송 여부와 무관하게 제거하거나, 최소한 목록 조회 시 현재 threshold 기준으로 필터링

fix-task-0715 수정사항

⬜ 연차촉진 설정값 미적용 (알림 채널/자동 실행/촉진 시기/응답 기한)

AnnualPromotionSettingfirst_notify_months_before, second_notify_months_before, first_notify_deadline_days, auto_schedule, use_email/use_push/use_kakao 값이 DB에 저장만 되고 실제 로직에 반영되지 않음. 현재 알림 발송은 인앱 알림(create_notification)만 생성하며, 채널 분기/자동 스케줄러/시기 판단/기한 초과 처리 없음. fix-task-0715 수정사항

⬜ 일정관리 반복 일정 미구현

recurrence_type(DAILY/WEEKLY/MONTHLY/YEARLY) 값은 DB에 저장되지만 반복 일정 확장(expand) 로직이 없어 부모 1건만 표시됨.

  • 수정 대상: backend/app/services/calendar_service.pylist_events()에 반복 확장 로직 추가, create_event()에서 자식 이벤트 생성, update_event()에 scope 파라미터 추가

fix-task-0715 수정사항

⬜ 일정관리 알림 발송 미구현

reminder(10MIN/30MIN/1HOUR/1DAY) 값은 DB에 저장되지만 실제 알림 발송 로직이 없음. 백그라운드 스케줄러로 일정 시작 전 알림 시간에 push/브라우저/이메일 알림 발송 구현 필요. fix-task-0715 수정사항

⬜ 급여기초 간이세액 비율 선택 UI 미구현

급여관리 스펙 관련: 백엔드에 tax_rate_pct 컬럼(기본값 100)과 소득세 계산 시 비율 적용 로직은 구현되어 있으나, 프론트엔드 급여기초 페이지(/admin/payroll/base)의 "간이세액 (부양가족)" 영역에 80/100/120% 선택 UI가 없어 항상 100%로만 동작.

  • 수정 대상: frontend/src/app/admin/payroll/base/page.tsx — 80/100/120% 선택 드롭다운 또는 라디오 추가, 저장 시 tax_rate_pct 값 전송

fix-task-0715 수정사항

⬜ 관리자 설정에서 별도 권한(인사, 급여) 항목 제거

관리자 등급 및 권한 관리 스펙 관련: 관리자 설정에서 별도 권한(인사, 급여) 항목 제거 예정. fix-task-0715 수정사항

시스템 확인: 회사 이미지 등록 깨짐 현상

이미지 업로드/저장 기능은 정상 구현됨. 깨짐 원인으로 서명 URL 만료(1시간) 가능성이 있음 — 페이지를 오래 띄워놓으면 이미지 URL이 만료되어 깨질 수 있음. 실제 재현 확인 필요. fix-task-0715 수정사항

Made with CairniExplore public wikis →