크라우니 ERP PM(설비보전) 갭 3종 구현 (PM-G1~G3)
개요
ERP서버B(:9983,
/Users/ef/crowny-erp/core/servers/ERP서버B.한선, 셀 대역 500만+)의
설비보전(PM) 모듈에 갭 3종을 추가 구현. 기존 12개 트랜잭션(설비등록~보전자재소요확인)에
이어 3개 신규 트랜잭션을 순수 한선씨로 작성, 4상균형3진 판정 + 셀코어 직결(거래기록/PM원장기록)
패턴을 그대로 계승.
구현 내용
PM-G1 보전달력점검(기준일, 조직) — doctype maint-calendar
보전계획 마스터(
PM_보전계획.psv) 전 행을 버퍼 스캔해
최종실행일+주기일수 <= 기준일인
계획을 찾고, 도래한 계획마다 기존
보전계획실행()을 호출해 보전오더 셀을 자동 생성(계획 셀의
설비 앵커에 선행 링크). 4상: 마스터 없음=타, 도래 0건=옴, N건(1~5)=티, 6건 초과=음(집중 도래 상신).
PM-G2 작업허가발급(보전오더셀id, 위험등급, 안전조치코드, 조직) — doctype work-permit
보전오더 셀 존재 확인(셀슬롯 S사상 센티넬 −999 패턴, 기존
보전완료()와 동일 관용구) 후
위험등급(1저/2중/3고)과 안전조치코드를 대사. 4상: 오더 없음=타, 위험3+조치0=타(발급 불가),
위험3+조치有=음(안전관리자 상신), 위험2+조치0=옴(보완 필요), 그 외=티.
PM-G3 보전원가정산(보전오더셀id, 인건비, 자재비, 원가센터, 조직) — doctype maint-settle
인건비+자재비=총원가를 원가센터로 정산하는 셀 기록(오더 선행 링크, S대상=원가센터).
4상: 오더 없음=타, 총원가 0=옴(미확정), 500만 이상=음(상신 필요), 그 외=티.
배선
erp_PM.한선: DT보전달력=8·DT작업허가=9·DT보전정산=10 + 한도 상수 4종 + 3개 함수 추가(파일 끝).
ERP서버B.한선: 액션PM()에 maint-calendar/work-permit/maint-settle 디스패치 3행 추가.
사상규칙.psv: R500~R523(4행×3) 거버넌스 균형 규칙 추가(4상 전부 커버).
pm.html(nexus-app): FORMS 3종 + DEFAULTS(기준일 20260722·위험등급 2·안전조치코드 1·인건비 50만·
자재비 30만·원가센터 1000) + DOC_LABEL(8/9/10) 추가. 보전오더셀id 전역 기본값을 1→0으로 조정.
/tmp/erp페이지스펙.json: PM 배열에 3항목 추가(총 15개, 전체 132항목).
검증
- 컴파일:
hanseonc_high STRICT 0 에러, ERP서버B.toau 재생성(백업 .toau.bak-pm 보존) → kill -9 →
LaunchAgent(org.crowny.erpb, KeepAlive) 자동 재기동 확인.
- 라이브 4상 실발현: G1(타/옴/티/음 전부), G2(타/타/음/옴/티), G3(타/옴/음/티) 전부 curl 확인.
- 스모크:
ERP페이지스모크.sh 132/132 PASS (PM 15/15 포함).
- 성능: 단발 트랜잭션(G2/G3) 0.3~0.4s. G1은 도래 계획 1건당 기존
보전계획실행()이 셀넷B.psv
전체 스캔(앵커+다음셀id)을 내부에서 수행하는 기존 구조라
도래 건수에 비례(3건≈1.2s,
10건≈4.0s) — 기존 함수 수정 금지 제약상 이 배치 경로는 손대지 않음. 전형적 사용(도래 소수)은
2s 이내, 관리 밀린 백로그(6건 이상, 음 분기 트리거 조건)는 2s를 넘을 수 있음(정직 보고).
- pm.html: 200, 폼 15개 렌더 확인.
관련 파일
/Users/ef/crowny-erp/core/libs/erp_PM.한선
/Users/ef/crowny-erp/core/servers/ERP서버B.한선
/Users/ef/crowny-erp/data/규칙/사상규칙.psv
/Users/ef/crowny-nexus-app/public/erp/pm.html
/tmp/erp페이지스펙.json
잔여 이슈
- G1(보전달력점검) 배치 성능: 셀넷B.psv가 계속 성장(현재 3000+행, 19+ 동시세션)하면서
보전계획실행() 내부의 O(n) 전체스캔(앵커/다음셀id) 비용이 도래건수만큼 누적. 근본 해법은
셀코어ERP.한선에 인덱스/증분 스캔을 추가하는 것이나 이번 작업 범위(기존 함수 수정 금지)
밖이라 보류.