다크모드
빌링 제품군 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 fallbackbillingReceivableStatusMeta:미수/연체/완납label과 EDS badge classclassifyBillingCapabilityError: 공통 관측·재시도 category
모든 상수와 중첩 매트릭스는 deep-freeze되어 있다. 화면이나 adapter가 런타임에 owner/state 목록을 변형하지 않는다.
Billing Core는 내부 공통 계층이다. 독립 화면, route, Workspace 카드, 상품 선택 항목, entitlement를 추가하지 않는다.
사용 규칙
- 상품 repo가 snake_case 응답을 정규화한 뒤 공통 순수 함수를 호출한다.
- 서버가
current|overdue|paid를 반환하면 그 값을 우선한다. fallback은 상태 누락 시에만 쓴다. billingReceivableStatusMeta는 표시 중복을 줄이는 용도다. 상품별 수납 가능 여부나 명령 버튼 gate는 해당 상품 state·entitlement가 결정한다.- matrix의
not_supported를 다른 상품의 store/RPC로 자동 우회하지 않는다. 임대 차임 수납도 이 규칙에 따라 별도 lease adapter와 원장으로 추가했다. - 공통 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로 설계한다.