크라우니엔터프라이즈 P1-2: 감사로그 SHA-256 해시체인 + 파일 영속화
개요
트랙 B 작업. 코어.한선의 _ERP_감사 메모리 배열 전용 감사로그를 SHA-256 해시체인 기반 JSONL 파일 영속화로 강화.
무엇을 했는지
코어.한선 v2.1 추가 사항
- 전역 변수:
_감사로그경로, _감사WAL한계(500000 바이트), _마지막해시(초기 64개 0), _감사순번, _감사초기화됨
_줄분할() — 내용을 \n 기준으로 배열 분할 (체계() 미사용)
_JSON값추출(줄, 키) — JSONL 줄에서 키 값 추출 (파싱 내장)
_감사초기화() — 시작 시 마지막 JSONL 줄 읽어 _마지막해시 + _감사순번 복원. 읽기() + 글자수 가드 (파일존재() 미사용)
_감사WAL회전() — 글자수×3 바이트 추정 > 한계 시 .bak.타임스탬프로 보관 후 신규
_감사영속기록(종류, 실행자, 회사코드, 내용) — 핵심. SHA256(이전해시+항목원문) → JSONL 덧쓰기. 세 엔티티 함수(생성/수정/상태변경)에서 호출
JSONL 스키마
json{"순번":1,"시간":1781510816,"종류":"생성","실행자":"관리자","회사코드":"TEST001","이전해시":"0000...","현재해시":"6221f0a8...","내용":"엔티티생성:제품A:1000"}
기존 코드 보존
감사로그전체() — 메모리 _ERP_감사 반환 (서버.한선 호환 유지)
감사기록(사용자, 요청방식, 경로) — 서버.한선이 오버라이드하므로 미정의 (서버 시그니처 변경 없음)
- 중복
테이블저장/테이블불러오기 제거 + 파일존재() → 읽기()+글자수 가드로 수정
검증 결과
- 컴파일 OK:
./hanseonc_high modules/코어.한선 > /tmp/코어테스트.toau
- 해시체인 연결: 1번현재해시 == 2번이전해시 == 3번이전해시 (성공)
- 재시작 복원: 순번=2, 마지막해시 64자 정확 복원
- JSONL 3줄 append 확인:
/tmp/테스트감사로그.jsonl
관련 파일
/Users/ef/crowny-enterprise/modules/코어.한선 — 수정 파일 (트랙 B 담당)
/Users/ef/crowny-enterprise/modules/코어_감사체인.rpn.한선 — RPN 정통본 (헌법 요구)
/tmp/테스트감사로그.jsonl — 테스트 산출물
/tmp/감사테스트.한선 — 테스트 소스
잔여 이슈
_감사로그경로가 상대경로 "data/감사로그.jsonl" — 서버가 다른 cwd에서 기동 시 경로 조정 필요 (서버.한선에서 _감사로그경로 = "data/감사로그.jsonl" 명시 설정 권장)
- 서버.한선의 HTTP 감사기록()은 여전히 메모리만 기록 — 별도 트랙에서 통합 가능