Skip to content

빌링 제품군 capability vocabulary — FE 메인테이너 참고

진입점

  • 순수 계약: src/composables/billingCapabilityVocabulary.js
  • 소비 adapter: src/composables/serviceChargeCollectionRepo.js, src/composables/leaseRentCollectionRepo.js
  • 계약 테스트: src/composables/__tests__/billingCapabilityVocabulary.spec.js

제공 API

  • BILLING_CAPABILITY_STAGE: 대상 snapshot, 계획, 부과, 미수, 수납 충당, 반전, 선택 전달 단계
  • BILLING_PRODUCT_CAPABILITY_MATRIX: 상품별 owner·지원 여부·고유 상태
  • resolveBillingReceivableStatus: 서버 상태 우선, 잔액·납기·as-of fallback
  • billingReceivableStatusMeta: 미수/연체/완납 label과 EDS badge class
  • classifyBillingCapabilityError: 공통 관측·재시도 category

모든 상수와 중첩 매트릭스는 deep-freeze되어 있다. 화면이나 adapter가 런타임에 owner/state 목록을 변형하지 않는다.

Billing Core는 내부 공통 계층이다. 독립 화면, route, Workspace 카드, 상품 선택 항목, entitlement를 추가하지 않는다.

사용 규칙

  1. 상품 repo가 snake_case 응답을 정규화한 뒤 공통 순수 함수를 호출한다.
  2. 서버가 current|overdue|paid를 반환하면 그 값을 우선한다. fallback은 상태 누락 시에만 쓴다.
  3. billingReceivableStatusMeta는 표시 중복을 줄이는 용도다. 상품별 수납 가능 여부나 명령 버튼 gate는 해당 상품 state·entitlement가 결정한다.
  4. matrix의 not_supported를 다른 상품의 store/RPC로 자동 우회하지 않는다. 임대 차임 수납도 이 규칙에 따라 별도 lease adapter와 원장으로 추가했다.
  5. 공통 error category는 상품별 상세 메시지를 대체하지 않는다.

금지 사항

  • 공통 모듈에 Vue ref, account context, Supabase client 또는 상품 repo import 추가
  • 공통 matrix owner를 실제 FK나 shared write table로 해석
  • 임대 보증금 receipt를 차임 수납으로 표시
  • FE error classifier를 권한 검사로 사용
  • 특정 상품 상태를 다른 상품 명령 payload로 전달

다음 확장

관리비관리 계약채권 목록·상세·세대/멤버 projection 상세와 임대차관리 차임 목록·상세의 상태 label/badge는 billingReceivableStatusMeta로 수렴했다. 각 page는 여전히 상품별 receivable을 직접 보유하고 공통 모듈은 표시 메타데이터만 제공한다. 새 채권 화면은 로컬 statusLabel/statusBadge 맵을 만들지 않고 이 함수를 소비한다. 통합 미수함은 도메인 write model을 합치지 않고 별도 projection contract로 설계한다.