Skip to content

모듈 개요 — 백엔드 참고

범위

모듈 개요는 Workspace에서 상품을 선택한 뒤 상태를 파악하고 실제 업무 화면으로 이동하는 읽기 중심 진입점이다. 이번 변경은 새 저장 엔티티나 API를 추가하지 않는다. ✅구현

라우트와 권한

  • 상품의 overviewEntry가 첫 진입점이다.
  • 기존 consoleEntryoperationalEntry로 보존되어 실제 업무 화면을 가리킨다.
  • 개요 URL은 기존 상품 prefix 아래에 있으므로 requiredModuleForPath()의 entitlement 판정을 그대로 적용한다.
  • CRM 개요는 기존과 같이 개발 검수 권한을 요구한다.
  • 재무회계와 장기수선계획은 기존 전용 Overview를 유지한다.
  • 관리비·임대차·매출·매입 개요는 각 빌링 라인의 meta.billing.line을 가진다. API는 개요 요청도 해당 라인과 Workspace 범위로 판정하며, Workspace 전체 메뉴 진입으로 해석하지 않는다.

상품 계약이나 Workspace 배정이 없는 사용자는 URL로 개요에 직접 접근해도 Workspace 홈으로 돌아가며, 상품 미사용 안내를 받는다.

관리비 집계 계약

관리비 개요는 새로운 집계식을 만들지 않고 다음 기존 read model을 조합한다.

  • KPI: useBillingOverview().overviewKpis()
  • 정산회차: periodsOf(buildOfficePeriodLine('service-charge', officeId), 'actual')
  • 회차별 금액: useBillingPeriodListMetrics().metricsFor(period)
  • 첫 부과 준비상태: useFirstChargeReadiness()

금액 정의는 정기 관리비 목록과 동일하다.

  • 부과액: 해당 회차 공급대가 기준 부과총액
  • 수납액: 현금수납액과 해당 회차 선수금 충당액의 합
  • 미수잔액: 수납·충당·조정 후 남은 채권
  • 수납률: 같은 회차의 수납액 ÷ 부과액, 0분모는 미표시

마감 회차는 closedSummary만 읽고, 열린 회차는 현재 read model을 사용한다. 알 수 없는 과거 수납액과 수납률을 추정하지 않는다.

차트는 별도 집계 API가 아니다. 같은 회차별 read model의 최근 6개를 오름차순으로 정렬해 부과액=chargeAmount, 수납액=settledAmount, 미수잔액=receivableBalance로 그린다. 부과·수납은 막대, 미수잔액은 선이라는 표현 차이만 있으며 저장값이나 계산식은 바꾸지 않는다. 데이터가 한 회차뿐이면 한 회차만, 없으면 빈 상태를 표시하고 예시 값을 보간하지 않는다.

후속 집계 연결

다른 모듈에 현황을 추가할 때는 해당 모듈 소유의 읽기 모델을 먼저 정의한다. FE에서 예시 숫자나 다른 모듈의 데이터를 대신 표시하지 않는다. 최소 계약은 다음과 같다.

  1. Workspace 범위
  2. 집계 기준 기간
  3. 금액·건수의 분자와 분모
  4. 빈 상태와 부분 실패 상태
  5. 원본 업무 화면으로 이동할 필터 계약