Appearance
Концептуальная модель данных
Этот документ описывает, какие сущности живут в 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.