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

크라우니캔버스 — 화면:approval (결재함) 구현

개요

크라우니캔버스 앱 계약(07-앱-계약.md) §2 CC.화면.approval을 구현. docs/06 §1c ERP 결재함 스펙(2패널·판정카드·결재선·승인/반려 플로우)을 픽셀 레퍼런스(시안/조각/1c.html) 기준으로 순수 JS(공용.js 계약만 사용)로 작성.

무엇을 했는지

  • 앱/화면/approval.js: CC.화면.approval = { 렌더(본문el, ctx) } 등록.
  • 목록 패널(400px, --크림보조) + 필터칩(대기/참조/완료) + 상세 패널.
  • 상세: 문서번호 모노+상태칩, 명세카드+합계행, 판정카드(4상 — 티=골드 자동승인권고 / 그 외=중립 상신), 결재선(아바타+연결선, 완료=그린/대기=골드테두리, 현재차례=골드 링).
  • 승인 = 골드버튼 → CC.커맨드('nexus','erp.approve',{id}) → 성공 시 그린 완료 배너/카드 전환. 반려 = 적갈 고스트 → 사유 입력 다이얼로그(CC.컴포넌트.확인다이얼로그 재사용, textarea 삽입) → erp.reject.
  • 데모 투명성 준수: CC.api만 호출, 데모 분기 없음(계약 §데모 투명성).
  • 토큰: tokens.css var(--...) 만 사용, 하드코딩 색 없음.
  • 한선씨/화면_결재함.한선: JS 판정/필터/결재선/포맷 로직의 순수 함수 미러(플랫폼락 더블). 결재화면_판정표시, 결재화면_상태매칭, 결재화면_대기건수, 결재화면_결재선현재인덱스, 결재화면_천단위. CROWNY_SELFTEST=1 게이트 셀프테스트 포함.
  • 검증

    • node --check 앱/화면/approval.js → 통과.
    • hanseonc_high 한선씨/화면_결재함.한선 → STRICT 0경고 0에러(5241 큐브).
    • CROWNY_SELFTEST=1 crownyc run → "화면_결재함.한선 셀프테스트 전부 통과" 실측 출력.
    • 크라우니코드: lookup HIT 0건 / search 결과 유사패턴 확인(fn_전자결재_결재선설정 — 맵기반이라 직접재사용 안함, 참고만) / learn 추가 2건(결재화면_판정표시4상, 결재화면_결재선현재인덱스).

    관련 파일

    • /Users/ef/crowny-canvas/앱/화면/approval.js
    • /Users/ef/crowny-canvas/한선씨/화면_결재함.한선
    • /Users/ef/crowny-canvas/docs/06-화면-설계-구체화.md §1c
    • /Users/ef/crowny-canvas/docs/07-앱-계약.md §2,§3

    잔여 이슈

    • /api/결재함 서버(nexus 어댑터)는 다른 트랙(F6/F7 커넥터) 담당 — approval.js는 계약된 API 형태만 가정하고 대기.
    • 결재선 항목 필드명(이름/이니셜/상태)은 계약 §4에 세부 스키마가 없어 방어적으로 파싱 — 서버 확정 시 상태값("완료"/"현재"/"대기") 일치 여부 재확인 필요.
    • 목록/상세 2패널 폭을 1440px 원본 대신 860px 본문 컬럼 내로 압축 구현(400+나머지) — 태블릿/모바일 반응형은 트랙 D6 담당이라 별도 스타일 추가 없음(추후 D6 결선 시 조정 가능).