PowerGridБаримт бичиг
Платформ

Архитектур

13 мин уншихdocs/architecture.mn.mdGitHub дээр засах

Хувилбар 0.3 · 2026-10-14 · Төлөв: санал (ADR-ээр батлагдах хүртэл)

Эх сурвалж: олон улсын судалгаа v1.6 (цаашид «GS §N»), нээлттэй эх ба мэдлэг v1.2 («OS §N»), Nexus цөмийн docs/ARCHITECTURE.md, docs/MODULES.md, docs/DISTRIBUTION.md (backend/v1.35.0). Хэрэгжүүлэх дараалал: implementation-plan.mn.md.


011. Зорилго ба хамрах хүрээ

PowerGrid бол Монгол Улсын 1,000,000 цахилгааны тоолуурыг (захиалагчийн төлөвлөлтийн таамаглал, албан статистик биш) хамрах зорилготой үндэсний хэмжилтийн өгөгдлийн платформ. Гол үнэ цэнэ нь бодит тоолуурын заалтаас тайлбарлаж болох төлбөр, баталгаатай команд хүртэлх урсгалын зөв байдал (OS §13).

Зорилтын эрэмбэ (GS §18.1):

  1. Эн тэргүүний зорилт:
    • Эрчим хүчний урсгалыг дэд станцаас хэрэглэгч хүртэл бүрэн хянах.
    • Гар утсаар төлбөр төлөх.
  2. Ойрын ирээдүйн зорилт: postpaid-аас prepaid руу шилжих.

«Удирдах» гэдэг нь тоолуурын түвшний удирдлагыг хэлнэ: реле болон ачааллын хязгаар. Сүлжээний сэлгэлтийг SCADA хариуцна.

БагтанаБагтахгүй
Тоолуур, хэмжилтийн цэг, топологийн бүртгэл (FN-01, FN-02); фидер ба трансформаторын системийн тоолуурSCADA, хамгаалалтын реле, ADMS-ийн шуурхай шийдвэр (GS §8); SCADA-аас зөвхөн уншина
Заалт цуглуулах HES адаптер, raw архив (FN-03, FN-12)Тоолуурын hardware, холбооны сүлжээ
VEE, хувилбартай MDM (FN-04)Хэрэглэгч бүрт SIM байна гэсэн таамаглал
Дэд станц → фидер → трансформатор → хэрэглэгчийн баланс (FN-05), дохиолол/осол (FN-06)Төлбөрийн үйлчилгээ үзүүлэгчийн өөрийн систем (зөвхөн адаптераар)
Тариф, shadow billing, ledger, гар утсаар төлөх, prepaid (FN-07, GS §18.3–18.4)
Баталгаатай алсын команд (FN-08)
Эрх, зөвшөөрөл, бүлэглэл, аналитик (FN-09, FN-13–15)
Хэрэглэгчийн портал, ажиллагааны төв (FN-10, FN-11)

Бүтээгдэхүүний зарчмууд (судалгаанаас):

  1. Түүхий заалтыг дарж засахгүй — засвар бүр шинэ хувилбар (GS §3, §9).
  2. DB-ийн төлөв өөрчлөгдсөн нь төхөөрөмж дээр биелсэн гэсэн үг биш (GS §10, FN-08).
  3. Simulator/туршилтын өгөгдлийг quality төлөвөөр бус, эх үүсвэр ба орчноор тусгаарлана (GS §9).
  4. Эрхийг засаг захиргаагаар бус, үүрэг + хэмжилтийн цэгтэй холбоо хамаарлаар олгоно (GS §17.4).
  5. «Exactly once»-д найдахгүй; хүлээн авагч бүр idempotent (GS §14, OS §5.2).
  6. Шинэ технологийг хэмжсэн нотолгоогоор нэмнэ; эхлээд PostgreSQL (GS §14).

022. Системийн контекст

text
                    ┌───────────── Хэрэглэгчид ─────────────┐ Иргэн/ААН (eID)   Түгээх компани   ЭХЗХ   Аймаг/дүүрэг   Гуравдагч тал   Аудитор      │                 │             │          │              │            │      ▼                 ▼             ▼          ▼              ▼            ▼ /api/v1/me/*      /api/v1/*  (Nexus workspace урсгал)      API + зөвшөөрөл      └────────────────┴──────┬──────┴──────────┴──────────────┴────────────┘                              ▼               ┌───────── powergrid-api (Nexus host.Run) ─────────┐               │  powergrid модуль(ууд) + Nexus цөм (auth, RBAC,  │               │  workspace, audit, eID, каталог)                 │               └───────┬───────────────────────────┬──────────────┘                       │ PostgreSQL                │ outbox → JetStream                       ▼                           ▼               ┌──────────────┐         ┌──────────────────────┐               │ PostgreSQL   │◀────────│ powergrid-worker     │  ingest, VEE,               │ powergrid.*  │         │ (Go, тусдаа процесс) │  command, backfill               └──────────────┘         └──────────┬───────────┘                                                   │ версионтой мессежийн гэрээ                                        ┌──────────▼───────────┐                                        │ HES адаптер(ууд)     │  бүсчилсэн pool                                        │ түгээх компанийн     │                                        │ импорт/команд (үндсэн)│                                        │ DLMS (цоорхойд)       │                                        └──────────┬───────────┘                                                   ▼                          Түгээх компаниудын HES/MDM · SCADA (зөвхөн унших) · тоолуур (цоорхойд)

033. Nexus дээр буулгах нь

PowerGrid нь Nexus-ийн Go dependency хэлбэрийн distribution (core.lock, backend/v1.35.0). Цөмийг засахгүй; шаардлагатай өөрчлөлтийг эхлээд цөмд оруулна (DISTRIBUTION §«Шинэ distribution» 10).

PowerGrid ойлголтNexus дахь хэлбэр
Байгууллага (түгээх компани, ЭХЗХ, аймаг, банк)Workspace (tenant) — registry + workspace.memberships
Байгууллагын ажилтан (инженер, оператор, шинжээч)Workspace гишүүн + Nexus RBAC эрх
Final customer (иргэн, ААН)Хүний урсгал /api/v1/me/*, surfaces: ["person"]; таних нь nexus.EID
Платформын оператор (Gerege)Операторын консол — PowerGrid-ийн өгөгдлийн эрх биш
PowerGrid функцnexus.Register-тэй модуль, catalog/manifests/<slug>.json
Модулийн хүснэгтnexus.Migrations(id, fs) → powergrid schema, goose_db_version_<slug>
Аудитnexus.Audit + PowerGrid-ийн хандалтын аудит (§7.5)
Нууц (төхөөрөмжийн түлхүүр биш)nexus.Secrets
Тайланnexus.RegisterReport

3.1 Модулийн хуваалт

Эхэнд нэг модуль io.gerege.powergrid (Core) — registry, ingest, MDM/VEE, баланс, команд, эрх нэг schema-д, хоорондоо FK-тэй. Модуль хооронд FK тавих, migration-ий дараалал зохицуулах өртгийг суулгалтын хил шаардлагатай болох хүртэл авахгүй. Хоёр модулийг тусад нь салгана, учир нь хэрэглэгч, өгөгдлийн хил нь өөр:

МодульFNSurfaceЯагаад тусдаа
io.gerege.powergrid — PowerGrid Hub01–09, 11, 12workspaceТүгээх компани, ЭХЗХ-ны үндсэн ажил
io.gerege.powergrid.app — PowerGrid App10, 13personИргэн өөрийн цэг, «Download/Share My Data». Hub-тэй нэг Go багц, нэг schema (holder_* RLS); route нь цөмийн person gate-ийн ард /api/v1/me/powergrid/*
io.gerege.powergrid.analytics14, 15workspaceНутгийн захиргаа Core-ийн түүхий хүснэгтэд хүрэх замгүй байх ёстой (GS §17.4)

Дотооддоо Core нь Go багцуудаар хуваагдана (registry, ingest, mdm, balance, billing, command, authz, incident). Тусдаа модуль болгох шалгуур: өөр байгууллага өөр цагт суулгах шаардлага гарах.

3.2 Процессууд

ПроцессҮүрэгТэлэлт
powergrid-apiNexus host.Run + модулиуд; UI/APIХэвтээ, stateless
powergrid-workerIngest consumer, VEE, баланс, command dispatcher, backfill schedulerQueue consumer group-ээр
hes-adapterПротоколын session (DLMS, TEAMI pull)Бүсээр pool; төхөөрөмж бүрд нэг session эзэн
migrateЦөм + модулийн migrationDeploy бүрд нэг удаа

UI хүсэлт төхөөрөмжтэй шууд харилцахгүй; бүх төхөөрөмжийн ажил queue-ээр (GS §8).

044. Домэйн загвар (Core)

IEC CIM-тэй зураглах боломжтой нэршил (GS §17.3). ID-уудыг хэзээ ч нэгтгэхгүй (GS §3, §10).

text
organisation (= workspace) ─┬─ grid_area ── topology_node (substation → feeder → transformer)                            │                       │  хүчинтэй хугацаатай (normal topology)                            ▼                       ▼                      metering_point (CIM UsagePoint) — тогтвортой ID, тоолуур солигдсон ч хэвээр                         │        │     meter_mounting ─────┘        └──── supply_contract ── customer     (meter ↔ point, valid_from/until; давхцахгүй — EXCLUDE constraint)                │              meter (CIM EndDevice) ── device_model ── capability_profile (firmware, OBIS, команд)

Lifecycle төлөв тоолуур бүрт тусдаа (GS §5): registered → installed → commissioned → communicating → billing_ready. KPI тус бүрээр.

4.1 Заалт

GS §9-ийн заавал талбарууд:

БүлэгТалбар
Танихowner_org_id, scope_cell_id, metering_point_id, meter_id, source_system, source_record_id
Утгаchannel/OBIS, value (numeric), unit, scaler, direction (import/export)
Хугацааinterval_start, interval_end (timestamptz, UTC), source_timezone, received_at, clock_quality; цэгийн local_zone (Asia/Hovd / Asia/Ulaanbaatar, GS §18.5) — тариф, өдрийн хаалт, таслахгүй цагийг үүгээр
Чанар ба хувилбарquality (A/E/S/F/invalid), version, supersedes_id, rule_version
Мөрдөлтraw_receipt_id, checksum, ingest_job_id, corrected_by, correction_reason
Тохиргооmounting, CT/VT коэффициентийн хувилбар, topology хувилбар
  • Интервал тогтмол биш (5/15/30/60 мин); 30 минутыг хуваасан утгыг 5 минутын бодит гэж тэмдэглэхгүй.
  • meter_reading — сараар partition, (metering_point_id, channel, interval_start, version) unique.
  • Одоогийн хувилбарыг is_current эсвэл тусдаа «current» view-ээр; түүх устахгүй.
  • kWh индекс, интервалын kWh, агшин зуурын kW нь өөр хэмжигдэхүүн — UI-д холихгүй.

4.2 Raw receipt

Адаптерын batch бүр raw_receipt (source ID, checksum, received_at, payload-ийн байршил)-д commit хийгдсэний дараа л эх системд ACK буцаана (GS §11). Payload нь эхэндээ PostgreSQL-д, хэмжээ нотлогдвол object storage руу (GS §14).

055. Өгөгдлийн урсгал

5.1 Заалтын урсгал

text
тоолуур / TEAMI ─▶ HES адаптер ─▶ JetStream (readings.raw.<region>)   ─▶ ingest consumer: idempotency_key = (source_system, source_record_id, checksum)        ├─ raw_receipt INSERT (давхардвал no-op)        └─ canonical meter_reading (quality=A, version=1)   ─▶ VEE ─┬─ тэнцсэн → баталгаажсан архив → баланс, billing, портал           └─ унасан  → quarantine (billing-д автоматаар орохгүй)   ─▶ хожуу бодит заалт → шинэ version → нөлөөлсөн баланс/billing-ийн дахин тооцох жагсаалт

VEE шалгалтууд (GS §9): давхардал, интервалын давхцал/цоорхой, хүрээнээс гарсан утга, индекс буурсан, rollover, тоолуур солилт, цагийн зөрүү, нэгж/коэффициент өөрчлөлт. Экспорт дэмждэг төхөөрөмжийн сөрөг утга алдаа биш. Дүрэм нь capability_profile ба хэмжилтийн төрлөөс хамаарна; дүрэм бүр хувилбартай.

5.2 Командын урсгал (FN-08)

text
REQUESTED ─▶ APPROVED ─▶ QUEUED ─▶ SENT ─▶ ACKNOWLEDGED ─▶ VERIFIED     │           │          │        │           │     └───────────┴──────────┴────────┴───────────┴──▶ FAILED | UNKNOWN | EXPIRED | CANCELLED
  • approved_by <> requested_by — CHECK constraint (хоёр түлхүүр, GS §17.7).
  • Worker илгээхийн өмнө эрх, хугацаа, хамгаалагдсан хэрэглэгч, маргаантай нэхэмжлэлийг дахин шалгана.
  • ACK ≠ VERIFIED; read-back-аар батална. Timeout → UNKNOWN + төлөв шалгах ажил; сохор retry хийхгүй.
  • Төхөөрөмж бүрд нэг идэвхтэй команд (partial unique index); bulk командад тоо, хурд, бүсийн хязгаар.
  • Командын эрх (command.request, command.approve) нь reading.read-ээс тусдаа.
  • Туршилтын ба бодит командын түлхүүр, дараалал тусдаа.

5.3 Төлбөр (FN-07)

  • Тариф: хүчинтэй хугацаа, ангилал, шатлал, татвар, дугуйруулах дүрэм; хувилбартай.
  • Нэхэмжлэх нь хэрэглэсэн хэмжилтийн ба тарифын хувилбарыг заана; мөнгө numeric/мөнгөний хамгийн жижиг нэгж.
  • Ledger append-only: давтан callback → нэг бичилт (idempotency key), буцаалт эсрэг бичилтээр.
  • Хаагдсан нэхэмжлэлийг чимээгүй өөрчлөхгүй — засварын баримт.
  • Хуучин системтэй зөрүү шийдэгдэх хүртэл автомат таслалт идэвхгүй (GS §7).
  • Гар утсаар төлөх (GS §18.3):
    • PowerGrid бол биллер. payment_provider адаптер нь invoice/QR үүсгэх, статус асуух, callback, буцаалт, settlement файлыг хариуцна.
    • Нээлттэй billing API (ADR-010): нэхэмжлэл бүх төлбөрийн апп, банк, QR үйлчилгээ, e-Mongolia руу нэг стандарт API-аар очно; иргэн дуртай аппаараа төлнө. PowerGrid App-ыг төлбөрийн суваг болгон онцлохгүй.
    • Callback-д дангаар итгэхгүй, үйлчилгээ үзүүлэгчээс статусыг асууж баталгаажуулна.
    • Өдөр бүр ledger ↔ settlement ↔ billing-ийг тулгана.
    • PowerGrid-ийн billing бэлэн болох хүртэл нэхэмжлэлийг одоогийн billing-ээс импортолж, төлбөрийг outbox-оор буцааж илгээнэ.
  • Prepaid (GS §18.4):
    • Дансны горим нь POSTPAID | PREPAID.
    • Үлдэгдлийг ledger тооцож, өдрийн register snapshot-оор хасна.
    • Таслалт, залгалт нь §5.2-ын командын урсгал болон хамгаалалтын бодлогын хөдөлгүүрээр (таслахгүй цаг, хүйтний хориг, хамгаалагдсан хэрэглэгч) явна.
    • Emergency credit болон өрийн суутгалыг тохиргоогоор тогтооно.

5.4 Баланс (FN-05)

зөрүү = оролт − гаралт − зөвшөөрөгдсөн тоолуургүй хэрэглээ; оролт тэг/баталгаагүй бол хувь тооцохгүй. Dashboard зөрүүтэй хамт бүрэн байдал, estimated хувь, хамрагдсан цэгийн тоо, topology хувилбарыг харуулна. Бүрэн бус бүлэг алдагдлын чансаанд орохгүй (GS §9).

066. Технологийн сонголт

ДавхаргаЭхний сонголтСолих нөхцөл (нотолгоо)
BackendGo 1.26, Nexus SDK—
FrontendNexus Next.js shell + @gerege-systems/ui—
OLTP + хэмжилтPostgreSQL 16, сараар partition, batch insert, өдөр/сарын aggregateQuery/retention өртөг хэмжигдэж өссөн → ClickHouse (зөвхөн аналитик, ledger биш)
QueueNATS JetStream (PoC-д Kafka-тай ижил нөхцөлөөр харьцуулна)Урт replay, олон consumer → Kafka
DLMSGurux Python адаптер (лаб); gxdlms-go-г ижил тестээр харьцуулнаGPL/арилжааны лицензийн шийдвэр ADR-д
ЭрхPostgreSQL authz схем + RLS + pgTAPОлон систем нэг эрх хуваалцах → OpenFGA/SpiceDB PDP
Нууц/түлхүүрnexus.Secrets (апп); DLMS түлхүүрт OpenBao туршихHSM шаардлага ADR-д
АжиглалтNexus /metrics + Prometheus/Grafana; label нь бүс/адаптер/загвар (serial биш)—
BackupОдоогийн pg_dump (rollout) → pgBackRest + PITRLedger RPO 0 → synchronous replica
GISЭхэндээ координат баганаГазарзүйн query → PostGIS

TimescaleDB-ийн continuous aggregate/columnstore/retention нь TSL — ашиглахын өмнө хуулийн шалгалт (GS §17.11). ThingsBoard 4.4+ (BUSL), GXF (retired) суурь болохгүй.

077. Өгөгдөлд хандах эрх (FN-09)

7.1 Хоёр давхаргын тусгаарлалт

Nexus-ийн dbguard холболт бүрийг gerege_nexus_tenant role, app.current_tenant, app.current_user-аар уядаг. Энэ нь «өөрийн байгууллагын мөр» гэсэн нэг хэмжээс. PowerGrid-д хэмжээс илүү: ЭХЗХ бүх grid area-г, гуравдагч тал зөвшөөрлөөр нэг цэгийг, инженер өөрийн топологийн бүсийг харна. Тиймээс powergrid хүснэгтүүдийн бодлого:

sql
CREATE POLICY reading_select ON powergrid.meter_readingFOR SELECT TO gerege_nexus_tenantUSING (  (SELECT authz.has_all('reading.read'))  OR scope_cell_id = ANY ((SELECT authz.allowed_cells('reading.read'))));

authz.allowed_cells нь app.current_tenant, app.current_user-аас (dbguard тавьсан) тухайн хэрэглэгчийн бүх grant-ыг нэгтгэнэ: эзэмшигч байгууллагын өөрийн cell-үүд нь OPERATIONAL grant, ЭХЗХ-ны хандалт REGULATORY grant, гуравдагч тал CUSTOMER_CONSENT grant. Ингэснээр байгууллага дамнасан хандалт тусгай policy шаардахгүй. (SELECT …) нь InitPlan болж transaction-д нэг удаа тооцогдох ёстой — EXPLAIN-аар батална (GS §17.5). Анхаар: зөвхөн cell-ээр шүүх нь METERING_POINT (гуравдагч тал нэг цэг) ба data_from/data_until (аудитор, эзэмшил шилжүүлэх) grant-ыг илэрхийлж чадахгүй. Cell + цэг + хугацааны authz.effective_scope EXISTS хувилбарыг GS §17.5-аас үз. Энэ policy-ийн эцсийн хэлбэр ADR-001-ийн сэдэв (§11).

7.2 Grant

text
access_grant  grantee_org_id / grantee_user_id  basis        REGULATORY | OPERATIONAL | CONTRACT | CUSTOMER_CONSENT | AUDIT  role         DSO_OPERATOR | ENGINEER | REGULATOR_VIEWER | SECAUD | …  action       reading.read | summary.read | pii.read | export | tariff.change               | command.request | command.approve  scope_kind   ALL | GRID_AREA | TOPOLOGY | GROUP | METERING_POINT  scope_ids    ALL-аас бусад үед хоосон байж болохгүй (CHECK)  data_from / data_until, valid_from / valid_until  purpose, legal_ref, group_snapshot_version, status

Бодит эрх = байгууллагын grant-уудын нэгдэл ∩ үүргийн эрх ∩ хэрэглэгчийн хамрах хүрээний нэгдэл. Нэг grant доторх нөхцөл AND; grant хооронд cross-product үүсгэхгүй.

7.3 Scope cell

(owner_org_id, grid_area_id, topology_node_id[навч]) хослол бүрт scope_cell_id. Заалт, команд, төлбөр бүр хэмжилтийн үеийн харьяаллаар cell-тэй хадгалагдана; команд одоогийн харьяаллаар шалгагдана (GS §17.6). Cell-ийн тоо ≈ трансформаторын тоо. Засаг захиргаа Core-д атрибут, эрхийн хэмжээс биш.

7.4 Service role

RoleЭрх
powergrid_ingestЗөвхөн INSERT, өөрийн HES-д бүртгэлтэй owner_org_id-оор WITH CHECK; SELECT-гүй
powergrid_commandКомандын төлөв шилжүүлэх; заалт бичихгүй
powergrid_analytics_publishAnalytics dataset бичих; Core-ийг зөвхөн нэгтгэлийн view-ээр унших

Background job хэрэглэгчийн эрх өвлөхгүй. Аппын role-д BYPASSRLS болон хүснэгтийн эзэмшил өгөхгүй; хүснэгт FORCE ROW LEVEL SECURITY.

Итгэлийн хязгаар: аппын DB хэрэглэгч SET LOCAL app.*-ийг өөрөө тавьж чадна — RLS нь аппын алдаанаас хамгаална, эвдэрсэн аппаас бүрэн биш (GS §17.5). Үүнийг threat model-д ингэж бичнэ.

7.5 Зөвшөөрөл (FN-13) ба аналитик (FN-15)

  • 2023/1162-ийн 6 процедур = хүлээн авах тестийн сценари. Цуцлалт дараагийн хүсэлтээс хүчинтэй, бүх талд мэдэгдэл.
  • «Download My Data» ба «Share My Data» тусдаа функц, эрх, аудит. Экспорт CIM/Green Button-тэй зураглах JSON/CSV.
  • Баталгаажсан түүхэн өгөгдөл ба баталгаажаагүй шуурхай өгөгдөл өөр суваг, өөр шошго.
  • Аналитик: k ≥ 10 (нутгийн захиргаа, нээлттэй, өдөр+), k ≥ 5 (DSO төлөвлөлт, 15–30 мин); k-ээс бага нүд «<k». Зөвхөн урьдчилан тодорхойлсон бүлэг нийтэлнэ (ялгавар халдлага). k нь санал — ЭХЗХ/хуулиар батална.
  • ЭХЗХ, аудиторын дэлгэрэнгүй хандалт бүр: хэн, юу, хэзээ, ямар grant-аар.

7.6 Бүлэглэл (FN-14)

Засаг захиргааны мод bitemporal; дурын бүлэг (CIM UsagePointGroup). Гишүүнчлэлийн snapshot хувилбар, огноотой; Core аль хувилбарыг хэрэглэснээ аудитад хадгална. Шинэ бүлэглэл Core-ийн schema, RLS-ийг өөрчлөхгүй.

088. Аюулгүй байдал

ЧиглэлХэрэгжүүлэлт
НэвтрэлтNexus (password, eID, OIDC); оператор/командын эрхтэнд MFA
Сүлжээний заагOT (адаптер ↔ төхөөрөмж), ingestion, хэрэглэгчийн API тусдаа сегмент; порталаас төхөөрөмжид зам байхгүй
Төхөөрөмжийн түлхүүрUI, Git, log, payload-д байхгүй; key version, rotation; зөвхөн адаптер авна
Аудитactor, before/after, reason, request ID; энгийн CRUD-аар устгагдахгүй
Хувийн мэдээлэлLog, тайлан, алдааны хариунд PII/түлхүүр гарахгүй; Хүний хувийн мэдээлэл хамгаалах тухай хууль — DPIA
Supply chaindistribution-security.yml долоо хоног бүр; SBOM, license inventory

Threat model (OS §10.3): meter key алдагдах, хуурамч команд, tenant хооронд задрал, replay, supply-chain өөрчлөлт, backup устах.

099. Багтаамж

ТоолуурБичлэг/өдөр (1 суваг)Бичлэг/жилДундаж/сек15 мин оргил (60 сек)
10,000960,000350 сая11167/сек
100,0009.6 сая3.5 тэрбум1111,667/сек
1,000,00096 сая35 тэрбум1,11116,667/сек (4 суваг: 66,667)

Түүхий хэмжээ 1 сая × 1 суваг: 3.5–8.8 TB/жил (100–250 B), нийт ×3. 24 цагийн тасалдлыг 6 цагт нөхөх нь 4 сувагт ~22,000 бичлэг/сек (OS §9.1). Эдгээр нь тооцоо — туршилтаар батлагдаагүй. Ачааллын заавал турших хувилбарууд: GS §14.

1010. Ажиллагаа

  • Хэмжүүр (Prometheus): read success, D+1 completeness, queue lag, backfill age, command UNKNOWN, DB write latency, backup age.
  • On-call ялгах ангилал: тоолуур offline / холбоо / queue хоцрол / DB / billing зөрүү.
  • Нэг фидерийн олон дохиолол → нэг incident; холбоо тасрах ≠ цахилгаан тасрах (GS §5).
  • RPO/RTO санал: MDM RPO ≤ 15 мин, RTO ≤ 4 цаг; ledger RPO 0 зорилт.
  • Deploy: deployment.mn.md (одоо нэг сервер, compose).

1111. Шийдвэрийн бүртгэл (ADR)

docs/decisions/NNN-*.md-д бичнэ. Нээлттэй:

#АсуултСаналХэн шийдэх
ADR-001Nexus tenant RLS + PowerGrid scope cell-ийг нэг policy-д хэрхэн нийлүүлэх; байгууллага дамнасан grant§7.1 загвар; pgTAP + EXPLAIN-аар батлахАрхитектор, DBA
ADR-002Hub эсвэл тархсан (DSO бүр өөрийн MDM)Hub: түгээх компаниуд өөрийн HES/MDM-ээ хадгалж, өгөгдлөө гэрээгээр илгээнэ; команд тэдний HES-ээр (GS §18.2)Захиалагч, ЭХЗХ
ADR-015Өгөгдөл солилцооны гэрээCIM-тэй зураглагдах JSON/CSV, D+1, засвар = шинэ versionАрхитектор, түгээх компаниуд
ADR-003Зөвшөөрлийн бүртгэлийн эзэн, хариуцлага—Захиалагч, хуулийн зөвлөх
ADR-004Хэрэглэгчийн зөвшөөрлийг eID-ээр баталгаажуулахТийм (nexus.EID)Захиалагч
ADR-005k босго, нарийвчлал, нээлттэй өгөгдлийн хүрээk=10/5ЭХЗХ
ADR-006Эрхийн эх сурвалж: authz схем эсвэл OpenFGA/SpiceDBauthz схемээр эхлэхАрхитектор
ADR-007DLMS сан ба лиценз (Gurux GPL/арилжааны, gxdlms-go)Лабд Python, Go-г харьцуулахТехникийн удирдагч
ADR-008Queue: JetStream эсвэл KafkaJetStreamPoC-ийн benchmark
ADR-009teami-gerege-uz кодыг шилжүүлэх эсвэл лавлагаа болгохЛавлагаа; TEAMI pull логикийг адаптер болгон шилжүүлэхТехникийн удирдагч
ADR-010Төлбөрийн архитектурБатлагдсан: PowerGrid биллер, нээлттэй billing API — аль ч төлбөрийн апп; payment_provider адаптер, payment hub-аар эхлэхЗахиалагч, техникийн удирдагч
ADR-011SCADA интеграцЗөвхөн унших; CIM экспорт эсвэл IEC 104 gatewayЗахиалагч, диспетчерийн төв
ADR-012Цагийн бүсUTC хадгалалт; цэг бүрт local_zoneАрхитектор
ADR-013Prepaid загварСерверийн үлдэгдэлтэй ухаалаг prepaid; STS нөөцЗахиалагч
ADR-014Хамгаалалтын бодлогын анхны утгаGS §18.4 хүснэгтЭХЗХ
Энэ хуудас тус болсон уу?Таны хариу баримтыг сайжруулахад тусална.