From 02566e8728f5406287eb7ea0c36054cff30e9759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 19 Mar 2026 17:24:10 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[esign]=20=EC=97=B0=EB=B4=89=EA=B3=84?= =?UTF-8?q?=EC=95=BD=EC=A2=85=EB=A3=8C=EC=97=B0=EB=8F=84=20=EC=A0=95?= =?UTF-8?q?=EA=B7=9C=EC=8B=9D=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=9D=B4=EB=A0=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INDEX.md | 1 + .../20260319_esign_salary_year_regex_fix.md | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 changes/20260319_esign_salary_year_regex_fix.md diff --git a/INDEX.md b/INDEX.md index 823a7c3..ecd0e11 100644 --- a/INDEX.md +++ b/INDEX.md @@ -283,6 +283,7 @@ DB 도메인별: | [20260319_account_code_migration_and_income_statement.md](changes/20260319_account_code_migration_and_income_statement.md) | 계정코드 3→5자리 마이그레이션 + 손익계산서 월별/토글 개선 | | [20260319_account_ledger_keyboard_navigation.md](changes/20260319_account_ledger_keyboard_navigation.md) | 계정별원장 계정과목 검색 키보드 방향키 네비게이션 추가 | | [20260319_condolence_dashboard_integration.md](changes/20260319_condolence_dashboard_integration.md) | 경조사비 대시보드 연동 (condolence_summary 필드 추가) | +| [20260319_esign_salary_year_regex_fix.md](changes/20260319_esign_salary_year_regex_fix.md) | 전자계약 근로계약서 연봉계약종료연도 정규식 버그 수정 (두음법칙 불일치) | --- diff --git a/changes/20260319_esign_salary_year_regex_fix.md b/changes/20260319_esign_salary_year_regex_fix.md new file mode 100644 index 0000000..e5e76f2 --- /dev/null +++ b/changes/20260319_esign_salary_year_regex_fix.md @@ -0,0 +1,59 @@ +# 전자계약 근로계약서 연봉계약종료연도 버그 수정 + +**날짜:** 2026-03-19 +**작업자:** Claude Code + +## 변경 개요 + +전자계약 → 새 계약 생성 → 근로계약서 작성 시 "사원 불러오기"로 사원 정보를 로드하면, **연봉계약종료연도**가 시작연도 + 1년으로 반영되지 않고 시작연도와 동일하게 표시되는 버그 수정. + +## 원인 분석 + +템플릿 필드 라벨과 JavaScript 정규식 패턴 간 **두음법칙 불일치**: + +| 구분 | 값 | 유니코드 | +|------|-----|---------| +| 템플릿 라벨 | "연봉계약종료**연**도" | 연 = U+C5F0 (ㅇ+ㅕ+ㄴ) | +| 정규식 패턴 | `연봉계약.*종료.*년도` | 년 = U+B144 (ㄴ+ㅕ+ㄴ) | + +"연도"와 "년도"는 한국어 두음법칙으로 동일한 뜻이나 유니코드가 달라 정규식 매칭 실패. 이로 인해 종료연도 필드가 폴백 패턴 `계약.*연도`에 매칭되어 **시작연도** 값이 할당됨. + +``` +정상: "연봉계약종료연도" → '연봉계약.*종료.*년도' 매칭 → salaryEndYear (2026) +실제: "연봉계약종료연도" → '연봉계약.*종료.*년도' 실패 → '계약.*연도' 매칭 → salaryStartYear (2025) +``` + +## 수정된 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `mng/resources/views/esign/create.blade.php` | labelMap의 "년도" 정규식을 `[년연]도`로 변경 (7곳) | + +## 상세 변경 사항 + +`handleEmployeeSelect()` 함수의 `labelMap` 객체에서 "년도"를 포함하는 모든 정규식 패턴을 `[년연]도`로 변경하여 양쪽 표기 모두 매칭되도록 수정: + +| 수정 전 | 수정 후 | +|---------|---------| +| `출생.*년도` | `출생.*[년연]도` | +| `연봉계약.*종료.*년도` | `연봉계약.*종료.*[년연]도` | +| `연봉계약.*시작.*년도` | `연봉계약.*시작.*[년연]도` | +| `근로계약.*종료.*년도` | `근로계약.*종료.*[년연]도` | +| `근로계약.*시작.*년도` | `근로계약.*시작.*[년연]도` | +| `계약.*종료.*년도` | `계약.*종료.*[년연]도` | +| `계약.*연도` | `계약.*[년연]도` | + +## 테스트 체크리스트 + +- [x] 연봉계약종료연도가 시작연도 + 1년으로 표시되는지 확인 +- [x] 연봉계약시작연도/월/일이 정상 반영되는지 확인 +- [ ] 근로계약 시작/종료 연도 정상 반영 확인 +- [ ] 출생년도 정상 반영 확인 + +## 관련 문서 + +- `mng/resources/views/esign/create.blade.php` — 전자계약 생성 화면 (React + JSX) + +--- + +**최종 업데이트**: 2026-03-19