← 목록
기타 2026-07-17 4KB 읽기 3분

nexus 규칙표 편집 UI + 규칙검증 정본 + 코드 전체 체크

개요

비개발자가 웹에서 규칙표(승인·배분·일정)를 편집하는 UI를 nexus 감사 콘솔(:9802)에 추가. 검증 로직을 규칙검증.한선 정본으로 단일화. 넥서스 프로덕션 체인 코드 전체 체크.

무엇을 했는지

규칙 편집 UI (감사서버.js)

  • 셀 인라인 편집·행추가/삭제·순서이동(위→아래=평가순 first-match)·사상 드롭다운(티/옴/타/음)
  • 엔드포인트: GET /api/rules?name= (조회) · POST /api/rules/check (형식+충돌검사) · POST /api/rules/save (백업+저장)
  • 안전 3중: ①화이트리스트(승인규칙/배분규칙/일정규칙만, 경로주입 ../etc 404 차단) ②형식검증 fail-closed(위반 저장 차단) ③저장 전 .bak 백업 + 규칙검사.py 충돌검사
  • 저장 즉시 규칙엔진 반영(what-if 재평가로 확인)

규칙검증.한선 정본 (단일 SSOT)

  • libs/규칙검증.한선: 형식검증(우선=숫자·결정 비어있지않음·사상∈{티,옴,타,음}·조건형식 필드op값)
  • 감사서버.js 행검증()이 규칙검증.toau 위임(JS는 PSV | 안전만 — 구분자라 한선씨 도달불가)

코드 전체 체크

  • 넥서스 한선씨 정본 14/14 컴파일(규칙엔진·규칙검증·도메인판별·승인/배분/일정판정·위험판정/분류/등급·명령행동/해석·사상인지/해결·의미어라우터_계층)
  • 프로덕션 JS 10/10 구문(넥서스·승인규칙엔진·배분/일정/조회엔진·의사결정코어·명령실행기·실행핸들러·슬롯추출·감사서버)
  • 5도메인 스모크 6/6(승인옴·배분티·일정티·조회티·명령옴·파괴명령음→승인큐 이관)

정직한 스코프 (74 JS 무차별 재작성 안 함)

crowny-butler에 JS 74개 있으나 대부분 일회성 실험·측정·데모(밴드LL테스트·입력재측정·입출력통합v2~4 등). 넥서스 프로덕션 JS는 이미 한선씨 정본 위임 확인(규칙엔진·도메인판별·승인판정·위험분류·명령행동 등). 실제 미동반 로직은 이번에 JS로 쓴 규칙 행검증뿐 → 규칙검증.한선으로 해소. 무차별 재작성=저가치라 미실시.

관련 파일

  • /Users/ef/crowny-butler/감사서버.js (규칙 편집 UI + 엔드포인트)
  • /Users/ef/crowny-butler/libs/규칙검증.한선 (형식검증 정본)
  • /Users/ef/crowny-butler/규칙검사.py (충돌 정적검사)
  • /Users/ef/crowny-ai/public/hansuner/report/index.html (R37)

잔여 이슈

  • 규칙검사.py(충돌·미도달)는 아직 Python — 한선씨화 후보(implies 팩트공간 포함관계 로직).
  • 조회엔진/의사결정코어/슬롯추출 JS는 의미어조회.sh·명령실행기 위임(간접) — 직접 한선씨 정본화는 별도.

추가 (규칙검사 한선씨화 — 같은 날, R38)

규칙 무결성 정적검사(규칙검사.py)를 libs/규칙검사.한선으로 한선씨화.
  • 튜플·중첩맵 없는 한선씨에서 조건을 절(clause) 단위 직접 파싱(;AND, op = <= >=)으로 재구현.
  • 핵심: 조건동일(절집합 일치)·제약함의(op별 포함)·함의(팩트공간 a⊆b = b의 각 절이 a에 보장되면 참).
  • Python 원본과 전 케이스 동일출력 대조: 정상(승인규칙2·배분규칙)·모순·미도달(shadow)·catch-all(없음/마지막아님).
  • 감사서버.js 충돌검사()가 규칙검사.toau stdin 위임 → 감사서버 python3 호출 0(전량 한선씨 정본).
  • 규칙검사.py=참조·대조용 보존(상단 정본이관 표기).
→ 규칙 편집·검증·충돌검사 전 경로 한선씨 단일 정본(규칙엔진·규칙검증·규칙검사). 잔여이슈 해소.