Skip to content

FMS 자산(유닛) — 빌링 SSOT 공유 + 운영상태 (BE 참고)

독자: BE 개발자/AI. FMS(시설관리·facility) 자산 유닛이 빌링과 동일 유닛 master(SSOT) 를 공유하고, 그 위에 운영상태(점유/청소/정비)를 얹는 모델. "확장 모듈 2번째 실증"(CRM 민원에 이은 FMS) — 멀티모듈이 단일 SSOT를 참조함을 증명. 정본 코드: src/composables/useAssetUnits.js. FE: [[facility-asset-board.md]]. CRM 선례: [[complaint-board.md]].

1. 단일 SSOT — 유닛 master

  • FMS 유닛 master = 빌링 캐논(useAllocations().units = demoSeed buildSeed().units) 를 그대로 소비. 별도 mock 폐기.
  • 불변식: useAssetUnits().units의 unitCode 집합 == 빌링 units unitCode 집합(테스트 useAssetUnits.spec). 빌링 수납/청구 리스트와 같은 호실(101·102·201·202 + 코호트 1003~) 노출 → drift 0.
  • 파생 표시 필드(빌링 데이터에서 도출): floor=⌊unitCode/100⌋·floorLabel·area=exclusiveArea·shareRatio=area/Σarea·site·building. 회계/빌링 무편집.

2. 점유(occupancy) — 빌링 실제 점유 파생

  • base 점유 = 빌링 실제 점유(unitOccupants(unitCode).length > 0 ? '사용중' : '공실') — SSOT 교차. 예: 202호(c-end prior-only, 당기 라인 없음) → 공실, 나머지 점유세대 → 사용중.
  • 운영 override가 있으면 그게 우선(점검 등). base ↔ override 분리.

3. 운영상태 레이어 — FMS 전용(인메모리)

  • occOverride·cleaningState·maintenanceState(reactive) — 점유 override·청소(done/required/inProgress)·정비(normal/inspection/repair).
  • 상태변경 seam: setOccupancy/setCleaning/setMaintenance(unitCode, status) → 보드·상세 즉시 반영(reactive). complaint setStatus 선례.
  • 데모 시드: 모듈로드 1회 결정적 mix(idx%5→점검+정비점검 · idx%4→청소필요 · idx%7→수리). FMS 전용 — 빌링 테스트 미오염(useAssetUnits는 useAllocations만 읽고, 빌링 테스트는 useAssetUnits를 import하지 않음).
  • resetAssetUnits() 테스트용 override 초기화.

4. 경계·확장

  • 회계 무관: 자산/점유는 증빙·분개 없음. 장기수선충당금(9112) 연동(수선비용 추적)은 별도 슬라이스(미착수).
  • 실 데이터 전환: useAssetUnits의 demoSeed 소비를 디렉터리 fetch로 교체(units master는 동일 계약).
  • 설비(equipment)·직원(employee)·거래처(business-partner) 자산축은 아직 정적 mock — 동일 SSOT 패턴으로 후속 가능.
  • 테스트: src/composables/__tests__/useAssetUnits.spec.js(SSOT 일치·점유 파생·상태변경·reset).