Heildarmynd
Þrír aðilar — dk, DataCentral, Azure-stakkur — vinna saman á einum stað. Notandinn sér aðeins dk-framendann.
Lögin fjögur
Hvert lag hefur eitt hlutverk og skýrar mörk gegn næsta lagi. Þetta heldur arkitektúrnum endurnýtanlegum og auðveldar að skipta út hluta án þess að allt brotni.
dk+ REST API
Endapunktar sem dk veitir fyrir bókhaldsgögn. dk Insights er read-only neytandi — engar breytingar fara til baka.
- Aðgangur stýrður með API-leyklum eða OAuth scope.
- Lyklar geymdir í Azure Key Vault.
- Pagination og rate-limit tekið með í pipeline.
Azure Data Factory + Azure SQL
Metadata-driven pipeline keyrir á tímaáætlun, sækir öll svæði fyrir alla virka tilraunaviðskiptavini, skrifar í raw, breytir í staging, byggir gold.
control.entities·control.tenants·control.sync_runs.- Watermarks fyrir incremental hleðslu.
- Re-run er idempotent.
Power BI semantic (PBIP)
Eitt módel — dk Financial Overview — þjónar öllum tilraunaviðskiptavinum. Stjörnuskema með FactGL, FactAR, FactAP, FactCash og víddum: DimCompany, DimAccount, DimDate, DimCounterparty.
- Versionerað í Git (PBIP format).
- Dynamic RLS á
CompanyKey. - DAX measures eru sameiginleg eign.
DataCentral broker → dk-framendi
DataCentral er sá staður sem ákvarðar hver má sjá hvað. Server-to-server samtal við dk-bakenda; embed-token aldrei búinn til í vafra.
- Embed Session API · short-lived tokens.
- Aðgangsréttindi og RLS — bæði.
- Audit log á öllum sessions.
Gagnaflutningur
Pipeline er metadata-driven: ein kjarnapipeline les control.entities og keyrir per-entity copy. Bæta við endapunkti = bæta við einni línu í control-töflu.
| Skref | Hvað gerist | Ábyrgð |
|---|---|---|
| 1 · Trigger | ADF schedule trigger eða manual run | ADF |
| 2 · Read control | Sækir lista af virkum entities × tenants | ADF lookup |
| 3 · For-each | Per entity/tenant: ná í lykla úr Key Vault, kalla á dk+, raw write | ADF copy + REST |
| 4 · Staging transform | SQL stored procedures normalize, parse, type-cast | Azure SQL |
| 5 · Gold build | Stjörnuskema fact + dim töflur uppfærðar | Azure SQL |
| 6 · Model refresh | Power BI dataset refresh kallað gegnum REST | Power BI Service |
| 7 · Log | Skrá í control.sync_runs; villur til Azure Monitor | ADF + Log Analytics |
Vöruhús og módel
Þrjú lög í Azure SQL — raw, staging, gold — og eitt Power BI módel.
Eins og kemur
JSON-payload úr API skrifaður beint, með ingestion timestamp. Engin breytni.
Útflöttur og hreinsaður
Eitt-til-eitt töflur með typed columns, lykill á (TenantKey, EntityKey, NaturalKey).
Stjörnuskema
FactGL, FactAR, FactAP, FactCash + víddir. Þetta er það sem módelið les.
GL → staðlaðir flokkar
Reikningar viðskiptavinarins eru kortlagðir á staðlaðan dk-flokk (Tekjur, Kostnaður seldra vara, Rekstrarkostnaður, o.s.frv.). Ókortlagðir reikningar birtast í gagnagæðaskýrslu — viðskiptavinurinn (eða bókari) klárar kortlagninguna í gegnum DataCentral admin.
Afhending og embed
Tvær leiðir, einn broker. Hvort sem notandinn er staddur í Mínum síðum eða DataCentral portal, þá er sama embed-flæðið undir.
Mínar síður
- Notandi auðkenndur í dk portal.
- dk-framendi spyr dk-bakenda: "hvaða skýrslur?".
- dk-bakendi server-to-server til DataCentral.
- DataCentral býr til embed session með RLS claim.
- Token skilað til dk-framenda.
- Skýrslan birtist innfelld í iframe.
DataCentral portal
- Notandi auðkenndur með Microsoft Entra External ID.
- Portal sækir leyfi notanda.
- DataCentral býr til embed session með sömu RLS claim.
- Skýrsla birtist í portal-vefnum.
Öryggi og RLS
Tvöfalt aðhald: aðgangsréttindi ákvarða hvaða skýrslu notandi sér, RLS ákvarðar hvaða línur hún skilar. Hvorugt eitt og sér er nóg.
Hvaða skýrslu má opna
DataCentral metur leyfi notanda áður en embed session er búin til. Engin token = enginn iframe.
Hvaða gögn módelið skilar
Dynamic RLS á CompanyKey; userprincipalname → CompanyKey-listi gegnum bridge töflu. Power BI síar fact-töflur sjálfkrafa.
RLS test pack
Áður en módel er gefið út keyra prófar með ólíkum notendum og félagssamsetningum. Niðurstöður skjalfestar í CI.
Hver sá hvað hvenær
Allar embed sessions, RLS claims og skýrslusýnir skráðar í audit.session_log. Geymt í 12 mánuði.
Rekstur og eftirlit
Hvað gerist þegar pipeline brotnar klukkan 03:00? Sjálfkrafa endurkall, runbook, og skýr eign hver bregst við.
- Azure Monitor + Log Analytics safna ADF run logs, SQL audit, Power BI refresh logs.
- Azure Alerts á: bilaðar pipeline runs, refresh failures, SQL DTU spikes, abnormal embed token rate.
- Runbook fyrir hvert venjulegt bilunarmynstur: 401 frá API, time-out, schema drift, ókortlagðir reikningar, RLS test failure.
- GitHub Actions deilir IaC, ADF artifacts, SQL migrations og PBIP módelum til þróunar/prófunar/framleiðslu.
Lykilákvarðanir
Fjórar ákvarðanir sem skilgreina arkitektúrinn. Sjá nálgun fyrir heildarlistann (12 ákvarðanir).
Azure SQL fyrir MVP
Endurmeta þegar volume vex; hugsanlega Synapse eða Fabric í v2.
Sameiginlegt módel + dynamic RLS
Stærri viðskiptavinir geta kallað á dedicated workspace síðar.
DataCentral er broker
dk-framendi býr aldrei til BI tokens. Skýr ábyrgð.
Daglega í MVP
Margfaldur refresh á dag og nálægt-rauntíma metið eftir notendaendurgjöf.
Skýrslugjafarammi
Hvernig staðlað skýrslulag þjónar mörgum gerðum viðskiptavina — frá smáfyrirtæki upp í bókhaldsstofu.