docs: [esign] 근로계약서 최신 연봉정보 반영 문서화

- features/esign/README.md: 근로계약서 사원 연동 섹션 추가
- projects/e-sign/changelog.md: v1.1.1 변경 이력 추가
- rules/employee-api.md: 전자계약 연동 참조 추가
- dev/changes/20260311: esign 연봉정보 개선 내용 추가
This commit is contained in:
김보곤
2026-03-11 17:04:20 +09:00
parent 5cd97962b4
commit 5517b7f04d
4 changed files with 112 additions and 2 deletions

View File

@@ -54,7 +54,33 @@ async deleteHistory(originalIndex) {
- [x] 권한 없는 사용자 접근 차단 (기존 로직)
- [x] 개발/운영 서버 배포 완료
---
## 추가: 전자계약 근로계약서 최신 연봉정보 반영
### 변경 개요
근로계약서 사원불러오기에서 연봉 이력이 많을 때 최신 연봉정보를 정확히 반환하도록 개선했다.
매년 연봉 갱신 시 연봉계약 기간이 자동으로 최신 적용일 기준으로 계산된다.
### 수정된 파일
| 파일 | 변경 내용 |
|------|----------|
| `mng/app/Http/Controllers/ESign/EsignApiController.php` | `salary_effective_date` 추가 반환, 이력 fallback 로직 |
| `mng/resources/views/esign/create.blade.php` | 연봉계약/근로계약 날짜 분리 계산 |
### 상세
1. **백엔드**: `annual_salary`가 null이면 history에서 `effective_date` 기준 최신 탐색
2. **프론트엔드**: 연봉계약 시작/종료일 = 연봉 적용일 기준, 근로계약 = 입사일 기준
3. 일반 `계약.*` 패턴은 연봉 적용일 우선, 없으면 입사일 fallback
---
## 관련 문서
- [Employee API 규칙](../../rules/employee-api.md) — 연봉 정보 관리 섹션 추가
- [HR 데이터베이스](../../system/database/hr.md) — salary_info JSON 구조 추가
- [E-Sign 기능 문서](../../features/esign/README.md) — 근로계약서 사원 연동 섹션 추가
- [E-Sign Changelog](../../projects/e-sign/changelog.md) — v1.1.1 추가

View File

@@ -91,11 +91,63 @@ draft → pending → partially_signed → completed
---
## 5. 근로계약서 사원 연동
### 사원불러오기 API
근로계약서 작성 시 사원 정보를 검색하여 계약 변수를 자동 채운다.
| HTTP | URI | 설명 |
|------|-----|------|
| GET | `/esign/contracts/search-employees?q=검색어` | 사원 검색 (MNG 내부 API) |
**반환 데이터:**
| 필드 | 설명 | 매핑 대상 |
|------|------|----------|
| `name` | 사원명 | 근로자 이름/성명 |
| `phone`, `email` | 연락처 | 서명자 정보 자동 채움 |
| `department`, `position` | 부서/직위 | 부서, 직책 필드 |
| `address` | 주소 | 직원 주소 |
| `hire_date` | 입사일 | 근로계약 시작일 |
| `birth_year/month/day` | 생년월일 (주민번호 파싱) | 출생 년/월/일 |
| `annual_salary` | 최신 연봉 | 연봉 금액, 월급 자동 계산 |
| `salary_effective_date` | 연봉 적용일 | 연봉계약 시작/종료일 기준 |
### 최신 연봉 탐색 로직 (2026-03-11)
연봉 이력이 많을 때 최신 연봉을 정확히 반환하기 위한 fallback 로직:
1. `salary_info.annual_salary` 확인 (현재 연봉)
2. null이면 `salary_info.history`에서 `effective_date` 기준 최신 이력 탐색
3. `salary_effective_date`도 함께 반환
### 계약 기간 자동 계산
| 계약 유형 | 시작일 기준 | 종료일 |
|----------|-----------|--------|
| 연봉계약 | `salary_effective_date` (최신 연봉 적용일) | 시작일 + 1년 |
| 근로계약 | `hire_date` (입사일) | 입사일 + 1년 |
| 일반 계약 | 연봉 적용일 우선, 없으면 입사일 | 시작일 + 1년 |
> 매년 연봉을 갱신하면 연봉계약 기간이 자동으로 최신 적용일 기준으로 계산된다.
### 관련 파일
| 파일 | 역할 |
|------|------|
| `mng/app/Http/Controllers/ESign/EsignApiController.php` | `searchEmployees()` — 사원 검색 + 최신 연봉 반환 |
| `mng/resources/views/esign/create.blade.php` | `handleEmployeeSelect()` — 변수 자동 매핑 |
| `mng/app/Models/HR/Employee.php` | `getSalaryInfo()` — 연봉 데이터 조회 |
---
## 관련 문서
- [DB 스키마 — 문서/전자서명](../../system/database/documents.md)
- [Employee API 규칙 — 연봉 정보](../../rules/employee-api.md#연봉-정보-관리-mng-내부-api)
- Swagger: `/api-docs` → ESign 섹션
---
**최종 업데이트**: 2026-02-27
**최종 업데이트**: 2026-03-11

View File

@@ -19,12 +19,31 @@
| 버전 | 날짜 | 유형 | 요약 |
|------|------|------|------|
| 1.1.1 | 2026-03-11 | 기능 개선 | 근로계약서 최신 연봉정보 반영 |
| 1.0.0 | 2026-02-12 | 초기 릴리스 | 전자계약 서명 솔루션 전체 구현 |
---
## 2. 릴리스 상세
### [1.1.1] - 2026-03-11 (근로계약서 연봉정보 개선)
근로계약서 사원불러오기에서 최신 연봉정보를 정확히 반영하도록 개선했다. 매년 연봉 갱신 시 연봉계약 기간이 자동으로 최신 적용일 기준으로 계산된다.
#### Added (추가)
- `searchEmployees()` 응답에 `salary_effective_date` 필드 추가
- 연봉 이력 fallback 로직: 현재 연봉이 null이면 이력에서 `effective_date` 기준 최신 탐색
- 연봉계약 시작/종료일을 연봉 적용일 기준으로 계산 (기존: 입사일 기준)
- 근로계약/연봉계약 기간 분리: 근로계약은 입사일, 연봉계약은 연봉 적용일
#### Changed (변경)
- `EsignApiController::searchEmployees()` — 최신 연봉 탐색 로직 추가
- `create.blade.php::handleEmployeeSelect()` — 연봉계약/근로계약 날짜 매핑 분리
---
### [1.0.0] - 2026-02-12 (초기 릴리스)
E-Sign 전자계약 서명 솔루션의 첫 번째 릴리스입니다. 모두싸인과 유사한 간편 전자계약 서명 기능을 SAM 시스템에 구축했습니다.

View File

@@ -215,13 +215,26 @@ $profile->emergency_contact; // json_extra['emergency_contact']
- R3: 일반 API 응답(`toArray()`)에서 `salary_info`는 자동 제거된다 (민감 데이터 보호)
- R4: 연봉 정보는 MNG 사원관리 페이지의 조회/수정 화면에서만 표시된다
### 전자계약(E-Sign) 연동
근로계약서 사원불러오기에서 연봉 정보를 활용한다:
- `EsignApiController::searchEmployees()``getSalaryInfo()`로 최신 연봉 조회
- `annual_salary` + `salary_effective_date` 반환
- 현재 연봉이 null이면 이력에서 `effective_date` 기준 최신 탐색 (fallback)
- 연봉 적용일 기준으로 연봉계약 시작/종료일 자동 계산
> 상세: [E-Sign 기능 문서 — 근로계약서 사원 연동](../features/esign/README.md#5-근로계약서-사원-연동)
### 관련 파일
| 파일 | 역할 |
|------|------|
| `mng/app/Http/Controllers/Api/Admin/HR/EmployeeSalaryController.php` | API 컨트롤러 |
| `mng/app/Http/Controllers/Api/Admin/HR/EmployeeSalaryController.php` | 연봉 CRUD API 컨트롤러 |
| `mng/app/Http/Controllers/ESign/EsignApiController.php` | `searchEmployees()` — 전자계약 사원 검색 |
| `mng/app/Models/HR/Employee.php` | `getSalaryInfo()`, `setSalaryInfo()` 메서드 |
| `mng/resources/views/hr/employees/partials/salary-info.blade.php` | 연봉 정보 UI (Alpine.js) |
| `mng/resources/views/esign/create.blade.php` | 근로계약서 변수 자동 매핑 |
| `mng/routes/api.php` | 라우트 정의 (라인 1185-1188) |
---