# SAM E-Sign 변경 이력 (Changelog)

> 최종 수정: 2026-02-12
> 형식: [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/)

---

## 목차

1. [버전 이력](#1-버전-이력)
2. [릴리스 상세](#2-릴리스-상세)
3. [커밋 이력](#3-커밋-이력)
4. [파일 변경 요약](#4-파일-변경-요약)
5. [향후 계획](#5-향후-계획)

---

## 1. 버전 이력

| 버전 | 날짜 | 유형 | 요약 |
|------|------|------|------|
| 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 시스템에 구축했습니다.

#### Added (추가)

**데이터베이스**
- `esign_contracts` 테이블: 전자계약 관리 (7개 상태, 2개 서명 순서 유형)
- `esign_signers` 테이블: 서명자 관리 (작성자/상대방, OTP 인증, 토큰 기반 접근)
- `esign_sign_fields` 테이블: 서명 위치 필드 (signature, stamp, text, date, checkbox)
- `esign_audit_logs` 테이블: 감사 로그 (11개 액션 유형, 삭제 불가)

**API 백엔드**
- `EsignContract` 모델: 계약 관리, 상태 상수, 관계 정의, 스코프
- `EsignSigner` 모델: 서명자 관리, 인증 상태, 토큰 관리
- `EsignSignField` 모델: 서명 위치 필드
- `EsignAuditLog` 모델: 감사 로그 (삭제 불가)
- `EsignContractService`: 계약 CRUD, 발송, 취소, 리마인더, 통계
- `EsignSignService`: 토큰 조회, OTP 발송/검증, 서명 제출/거절
- `EsignPdfService`: SHA-256 해시 생성/검증
- `EsignAuditService`: 감사 로그 기록/조회
- `EsignContractController`: 계약 관리 API 10개 (인증 필요)
- `EsignSignController`: 서명 프로세스 API 6개 (토큰 기반)
- `ContractStoreRequest`: 계약 생성 유효성 검증
- `FieldConfigureRequest`: 서명 필드 설정 유효성 검증
- `SignSubmitRequest`: 서명 제출 유효성 검증
- `SignRejectRequest`: 서명 거절 유효성 검증
- `EsignRequestMail`: 서명 요청 이메일 (링크 포함)
- E-Sign 전용 i18n 메시지 키 28개 (12 성공 + 16 에러)

**MNG 프론트엔드**
- `EsignController`: 인증 필요 화면 5개 (대시보드, 생성, 상세, 필드설정, 발송)
- `EsignPublicController`: 공개 서명 화면 3개 (본인인증, 서명, 완료)
- `dashboard.blade.php`: 대시보드 (통계 카드 + 계약 목록 + 검색/필터)
- `create.blade.php`: 계약 생성 (PDF 업로드, 서명자 정보 입력)
- `detail.blade.php`: 계약 상세 (서명 현황, 감사 로그, 진행 타임라인)
- `fields.blade.php`: 서명 위치 지정 (PDF.js 기반 드래그&드롭)
- `send.blade.php`: 서명 요청 발송 확인
- `sign/auth.blade.php`: 본인인증 OTP 입력
- `sign/sign.blade.php`: 서명 수행 (signature_pad 라이브러리)
- `sign/done.blade.php`: 서명 완료 안내

**보안**
- 128자 랜덤 Access Token (서명자별 고유)
- OTP 2단계 인증 (6자리, 5분 유효, 최대 5회 시도)
- SHA-256 파일 무결성 검증
- Multi-Tenant 데이터 격리 (tenant_id 글로벌 스코프)
- IP 주소/User Agent 기록 (감사 추적)

**문서**
- 기술 설계 문서 (`technical-design.md`)
- 요구사항 정의서 (`requirements-specification.md`)
- 구현 가이드 (`implementation-guide.md`)
- 스토리보드 PPTX (`esign-storyboard.pptx`)
- 테스트 계획서 (`test-plan.md`, 159개 TC)
- 사용자 매뉴얼 (`user-manual.md`)
- 운영/배포 가이드 (`operations-guide.md`)
- API 명세서 (`api-specification.md`, 16개 엔드포인트)
- 변경 이력 (`changelog.md`)

---

## 3. 커밋 이력

### API 저장소 (`sam-api`)

| 커밋 | 날짜 | 메시지 | 변경 |
|------|------|--------|------|
| `6958be1` | 2026-02-12 07:02 | feat:E-Sign 전자계약 서명 솔루션 백엔드 구현 | +1,673줄 / 22파일 |
| `fa6d208` | 2026-02-12 07:15 | feat:E-Sign 전자계약 i18n 메시지 키 추가 | +36줄 / 2파일 |

### MNG 저장소 (`sam-mng`)

| 커밋 | 날짜 | 메시지 | 변경 |
|------|------|--------|------|
| `3281788` | 2026-02-12 07:02 | feat:E-Sign 전자계약 서명 솔루션 MNG 프론트엔드 구현 | +1,564줄 / 11파일 |

### 문서 저장소 (`sam-docs`)

| 커밋 | 날짜 | 메시지 | 변경 |
|------|------|--------|------|
| `0c8c9f6` | 2026-02-12 07:40 | docs:E-Sign 기술설계 문서 + 스토리보드 PPTX 추가 | 2파일 |
| `23170df` | 2026-02-12 08:10 | docs:E-Sign 요구사항 정의서 추가 | 1파일 |
| `8dc8fe0` | 2026-02-12 08:27 | docs:E-Sign 기술 설계 문서 보완 (실제 구현 반영) | 1파일 |
| `7c1fb72` | 2026-02-12 08:34 | docs:E-Sign 테스트 계획서 추가 (159개 TC) | 1파일 |
| `02d1893` | 2026-02-12 08:38 | docs:E-Sign 사용자 매뉴얼 추가 | 1파일 |
| `b469098` | 2026-02-12 08:49 | docs:E-Sign 운영/배포 가이드 추가 | 1파일 |
| `621bb91` | 2026-02-12 08:56 | docs:E-Sign API 명세서 추가 (16개 엔드포인트) | 1파일 |

---

## 4. 파일 변경 요약

### v1.0.0 전체 파일 목록

#### API 프로젝트 (24개 파일, +1,709줄)

```
database/migrations/
  2026_02_12_100000_create_esign_contracts_table.php      [NEW]
  2026_02_12_110000_create_esign_signers_table.php         [NEW]
  2026_02_12_120000_create_esign_sign_fields_table.php     [NEW]
  2026_02_12_130000_create_esign_audit_logs_table.php      [NEW]

app/Models/ESign/
  EsignContract.php                                        [NEW]
  EsignSigner.php                                          [NEW]
  EsignSignField.php                                       [NEW]
  EsignAuditLog.php                                        [NEW]

app/Services/ESign/
  EsignContractService.php                                 [NEW]
  EsignSignService.php                                     [NEW]
  EsignPdfService.php                                      [NEW]
  EsignAuditService.php                                    [NEW]

app/Http/Controllers/Api/V1/ESign/
  EsignContractController.php                              [NEW]
  EsignSignController.php                                  [NEW]

app/Http/Requests/ESign/
  ContractStoreRequest.php                                 [NEW]
  FieldConfigureRequest.php                                [NEW]
  SignSubmitRequest.php                                     [NEW]
  SignRejectRequest.php                                     [NEW]

app/Mail/
  EsignRequestMail.php                                     [NEW]

resources/views/emails/
  esign-request.blade.php                                  [NEW]

routes/api/v1/
  esign.php                                                [NEW]

routes/api.php                                             [MODIFIED]

lang/ko/esign.php                                          [NEW]
lang/en/esign.php                                          [NEW]
```

#### MNG 프로젝트 (11개 파일, +1,564줄)

```
app/Http/Controllers/ESign/
  EsignController.php                                      [NEW]
  EsignPublicController.php                                [NEW]

resources/views/esign/
  dashboard.blade.php                                      [NEW]
  create.blade.php                                         [NEW]
  detail.blade.php                                         [NEW]
  fields.blade.php                                         [NEW]
  send.blade.php                                           [NEW]
  sign/auth.blade.php                                      [NEW]
  sign/sign.blade.php                                      [NEW]
  sign/done.blade.php                                      [NEW]

routes/web.php                                             [MODIFIED]
```

#### 문서 프로젝트 (10개 파일)

```
projects/e-sign/
  technical-design.md                                      [NEW]
  requirements-specification.md                            [NEW]
  implementation-guide.md                                  [NEW]
  storyboard-config.json                                   [NEW]
  esign-storyboard.pptx                                    [NEW]
  test-plan.md                                             [NEW]
  user-manual.md                                           [NEW]
  operations-guide.md                                      [NEW]
  api-specification.md                                     [NEW]
  changelog.md                                             [NEW]
```

### 통계

| 저장소 | 파일 수 | 코드 라인 | 커밋 수 |
|--------|---------|----------|---------|
| API | 24 | +1,709 | 2 |
| MNG | 11 | +1,564 | 1 |
| 문서 | 10 | - | 8 |
| **합계** | **45** | **+3,273** | **11** |

---

## 5. 향후 계획

### v1.1.0 (예정)

- [x] PDF 서명 합성 - FPDI/TCPDF (MNG `PdfSignatureService`)
- [x] DOCX→PDF 변환 - LibreOffice headless (MNG `DocxToPdfConverter`)
- [ ] 감사 증적 페이지 추가 (`EsignPdfService::addAuditPage`)
- [ ] 만료 계약 자동 처리 (Laravel Scheduler)
- [ ] Queue Worker 설정 (이메일 비동기 발송)

### v1.2.0 (예정)

- [ ] SMS OTP 지원 (Kakao 알림톡 연동)
- [ ] 대량 계약 발송 기능
- [ ] 계약 템플릿 관리
- [ ] PDF 미리보기 개선 (pdf.js 최신 버전)

### v2.0.0 (예정)

- [ ] AWS S3 파일 스토리지 마이그레이션
- [ ] 전자서명 법적 효력 인증 (공인전자서명 연동)
- [ ] 모바일 반응형 서명 화면
- [ ] 다국어 지원 (영문 이메일 템플릿)
- [ ] API Rate Limiting

---

## 부록: 작성자 정보

| 항목 | 값 |
|------|-----|
| 개발 | 김보곤 (lightone2017@codebridge-x.com) |
| AI 지원 | Claude Opus 4.6 (noreply@anthropic.com) |
| 프로젝트 | SAM (Smart Automation Management) |
| 조직 | (주)코드브릿지엑스 IT 혁신팀 |

---

> **문서 끝** | SAM E-Sign Changelog v1.0.0
