Skip to content

Концептуальная модель данных

Этот документ описывает, какие сущности живут в Nimbus Billing и как они связаны между собой на концептуальном уровне: от организаций и домов до лицевых счетов, начислений и журнала проводок (Ledger).

Ключевые сущности

  • Organization — юридическое лицо (УК, ТСЖ, РСО), в рамках которого ведутся дома и лицевые счета.
  • House — дом (МКД или группа строений), основной объект эксплуатации.
  • Room — помещение в доме: квартира, офис, машино-место и т.п.
  • Owner — собственник помещения или ответственный плательщик.
  • PersonalAccount — лицевой счёт, к которому привязаны услуги, начисления, платежи и проводки.
  • HouseService — услуга дома (ХВС, ГВС, отопление, электроэнергия и др.) с тарифом/нормативом.
  • BillingCycle — расчётный период (обычно месяц) для массовых начислений.
  • Charge — начисление по конкретной услуге за период.
  • PenaltyRate — ставка для расчёта пеней (по ключевой ставке ЦБ и правилам ПП 354).
  • LedgerEntry — запись в журнале проводок по ЛС (двойная запись, иммутабельный слой).
  • AccountBalance — агрегированный баланс по ЛС (кэш над Ledger).

ER‑диаграмма (концептуальная инфология)

Диаграмма ниже показывает связи между основными сущностями на уровне 1:N и M:N.

Как читать диаграмму

  • От Organization к House: одна организация управляет многими домами (||--o{).
  • От House к Room: дом содержит множество помещений.
  • От Room к PersonalAccount: помещение может иметь несколько ЛС (история, несколько УК и т.п.).
  • От PersonalAccount к Charge и LedgerEntry: все начисления и проводки агрегируются на уровне ЛС.
  • PenaltyRate не хранится в самих проводках, но участвует в расчёте пеней при создании Charge.