크라우니 ERP HR(인사) 모듈 구현
개요
셀코어ERP 공용 코어(core/libs/셀코어ERP.한선) 위에 HR 모듈 트랜잭션 5종을 한선씨로 구현.
무엇을 했는지
/Users/ef/crowny-erp/core/libs/erp_HR.한선 신규 작성
마스터 로더: 사원(HR_사원.psv, 사번|성명|부서|직급|입사일|연차잔여, 4행 시드) · 조직(HR_조직.psv, 코드|명|상위, 3행 시드), HR초기화() 없으면 자동 생성
트랜잭션 5종: 입사등록 · 근태기록 · 급여계산 · 휴가신청 · 평가등록
각 함수 (1)입력검증 (2)한도·규정 선차단(사번중복·부서없음·직급범위·재고성 연차초과·공제초과 등=사상타) (3)거래기록()으로 셀 기록(모듈=6, 문서유형 1~5) (4)HR.psv 장부 append (5)"사상|셀id|메시지" 반환
4상 규칙: 정상=티 / 정보부족·경계(결근·기본급미정·점수미정·일수미정)=옴 / 규정위반·한도초과(중복사번·부서없음·직급오류·연차초과·공제초과·점수범위오류)=타 / 임계초과 상신(임원급 인사·초과근무·고액급여·장기휴가·특별승진후보)=음
조회: 장부조회HR() · 현황요약HR()
신규 입사자는 트랜잭션 성공 시(타가 아닐 때) 사원마스터추가()로 HR_사원.psv에 실제 반영, 휴가승인 성공 시 사원연차증감()으로 잔여연차 차감
/Users/ef/crowny-erp/core/libs/_erp_HR_테스트.한선 — 5개 트랜잭션 20개 케이스 호출(정상 흐름 1체인 + 옴4 + 타6 + 음5), 티옴타음 4상 전 발현 + PLM추적 체인 검증. assert 20/20 통과.3중 검증 결과
- 컴파일: hanseonc_high 에러 0 (라이브러리·테스트 둘 다, exit 0)
- 4상: 출력 "4상: 티옴타음" — 20개 케이스 전부 기대 사상과 일치(정상 티 5 / 정보부족 옴 4 / 규정위반 타 6 / 상신 음 5), assert 20/20
- 셀코어: PLM추적(입사등록 셀id)이 입사등록→근태기록→급여계산→휴가신청→평가등록 5문서 체인을 실제로 반환(실측: 109→110→111→112→113), 평가등록 셀id에서 역방향 조회해도 동일 체인 반환(루트 역추적 확인) — 선행셀 인자로 실제 연결됨을 검증
관련 파일
- /Users/ef/crowny-erp/core/libs/erp_HR.한선
- /Users/ef/crowny-erp/core/libs/_erp_HR_테스트.한선
- /Users/ef/crowny-erp/core/libs/셀코어ERP.한선 (재사용, 무수정)
- /Users/ef/crowny-erp/docs/셀코어ERP-아키텍처.md (스키마 정본)
- /Users/ef/crowny-erp/data/master/HR_사원.psv, HR_조직.psv (자동 시드)
- /Users/ef/crowny-erp/data/ledger/HR.psv (장부)
잔여 이슈
- API 배선(POST /api/action/HR/{doctype} 등, W3 단계)은 미착수 — 현재는 라이브러리 함수 레벨만 완성
- 셀넷.psv는 전 모듈(FI/CO/MM/HR 등) 공유 파일이라 재실행 시 id가 누적됨(설계상 정상)
- HR_사원.psv도 트랜잭션이 실제 데이터를 쓰는 마스터라 재실행 시 6001/6002 사번이 이미 존재하게 되어 "중복 사번" 분기로 빠질 수 있음(멱등 테스트가 필요하면 재실행 전 HR_사원.psv·HR_조직.psv·HR.psv를 초기화) — 이는 버그가 아니라 중복방지 로직이 의도대로 작동한 것