Rodzina pojęć 02 · kontrakty odczytu i zapisu

Architektura danych, zapytań i komend Open Mercato

Odczyty i zapisy korzystają z różnych kontraktów. QueryEngine obsługuje zdenormalizowany model odczytowy w zakresie, a zwalidowane i autoryzowane mutacje przechodzą przez guardy, zarejestrowane komendy, DataEngine, kontekst audytu, zdarzenia i utrzymanie indeksu. Jawny zakres tenantu i organizacji jest potrzebny w całym przebiegu, a szyfrowanie wprowadza osobną granicę wyszukiwania.

Jawny zakres jest mechanizmem izolacji, a nie dowodem bezpieczeństwa każdego własnego zapytania.

Migawka źródeł:

ae856df1ecfc · sekcje ARCHITECTURE.md: 5, 7, 8, 9, 10, 14, 15, 16, 21

Pozycja w systemie

Ta rodzina znajduje się między wejściami aplikacji i API a trwałymi danymi. Wyjaśnia rdzeń odczytu i zapisu platformy oraz prowadzi do decyzji o bezpieczeństwie i wielodostępności konkretnego wdrożenia.

Odczyt w zakresie a zapis przez komendę

Ścieżka odczytu rozwiązuje QueryEngine; ścieżka zapisu waliduje, autoryzuje, uruchamia guardy i komendy, utrwala, emituje oraz utrzymuje stronę odczytową.

Odczyt w zakresie a zapis przez komendęŚcieżka odczytu rozwiązuje QueryEngine; ścieżka zapisu waliduje, autoryzuje, uruchamia guardy i komendy, utrwala, emituje oraz utrzymuje stronę odczytową.
01

makeCrudRoute składa uwierzytelnianie, walidację, odczyty w zakresie, zapisy przez komendy, guardy, indeksowanie i enrichery dla typowych tras API.

oss-core

02

withScopedPayload wstrzykuje i waliduje identyfikatory tenantu i organizacji zamiast polegać na niejawnym kontekście.

oss-core

03

Autoryzacja opiera się na funkcjach i uwzględnia wildcardy, a skuteczne uprawnienia są wyliczane dla bieżącego użytkownika i kontekstu ról.

oss-core

04

DataEngine odpowiada za zapis łączący persystencję ORM, zadeklarowane zdarzenia i skutki dla indeksu, a QueryEngine obsługuje zdenormalizowaną ścieżkę odczytu.

oss-core

05

CommandBus wykonuje zarejestrowane mutacje przez fazy przygotowania, wykonania, dziennika audytu, interceptorów, unieważnienia i efektów ubocznych.

oss-core

06

Szyfrowanie pól tenantu używa materiału per tenant, ale niedeterministycznego szyfrogramu nie można wyszukiwać wartością jawną; lookup wymaga wspieranego hasha albo innego identyfikatora.

oss-core

07

Pola własne korzystają z dynamicznej nakładki, a relacje między modułami są deklarowane jako extension links oparte na jawnych identyfikatorach zamiast relacji ORM.

oss-core

Jedna mutacja od żądania do modelu odczytowego

Przebieg ujawnia miejsca, w których mogą zawieść zakres, polityka, audytowalność i asynchroniczny stan indeksu.

  1. Trasa sprawdza dostęp, waliduje dane i nakłada jawny zakres.

    product-factoss-core

  2. Mutation guards mogą zablokować operację przed wykonaniem.

    product-factoss-core

  3. CommandBus wykonuje zarejestrowaną mutację i zapisuje jej kontekst audytowy.

    product-factoss-core

  4. DataEngine utrwala rekord i planuje zadeklarowane zdarzenia lub pracę indeksu.

    product-factoss-core

Kontrakty danych i ograniczenia operacyjne

Kontrakty danych i ograniczenia operacyjne
MechanizmWniosek redakcyjnyOgraniczenieWłaściciel decyzji
DataEngine odpowiada za zapis łączący persystencję ORM, zadeklarowane zdarzenia i skutki dla indeksu, a QueryEngine obsługuje zdenormalizowaną ścieżkę odczytu.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.Właściciel aplikacji i danych
makeCrudRoute składa uwierzytelnianie, walidację, odczyty w zakresie, zapisy przez komendy, guardy, indeksowanie i enrichery dla typowych tras API.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.Właściciel aplikacji i danych
Dane zewnętrzne powinny przejść walidację Zod przed uruchomieniem zachowania domenowego.Traktuj jako kontrakt w zakresie „documented-convention” i osobno potwierdź dopasowanie do projektu.To zatwierdzona konwencja inżynieryjna. Własna aplikacja może ją naruszyć i wymaga osobnego przeglądu.Właściciel aplikacji i danych
CommandBus wykonuje zarejestrowane mutacje przez fazy przygotowania, wykonania, dziennika audytu, interceptorów, unieważnienia i efektów ubocznych.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.Właściciel aplikacji i danych
Udokumentowana ścieżka zapisu back-office korzysta ze wspólnych formularzy, tabel, wywołań API i guarded mutations zamiast doraźnych zapisów w przeglądarce.Traktuj jako kontrakt w zakresie „ui-shared” i osobno potwierdź dopasowanie do projektu.To zatwierdzona konwencja inżynieryjna. Własna aplikacja może ją naruszyć i wymaga osobnego przeglądu.Właściciel aplikacji i danych
Autoryzacja opiera się na funkcjach i uwzględnia wildcardy, a skuteczne uprawnienia są wyliczane dla bieżącego użytkownika i kontekstu ról.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.Właściciel aplikacji i danych
withScopedPayload wstrzykuje i waliduje identyfikatory tenantu i organizacji zamiast polegać na niejawnym kontekście.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.Właściciel aplikacji i danych
Szyfrowanie pól tenantu używa materiału per tenant, ale niedeterministycznego szyfrogramu nie można wyszukiwać wartością jawną; lookup wymaga wspieranego hasha albo innego identyfikatora.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.Właściciel aplikacji i danych
Pola własne korzystają z dynamicznej nakładki, a relacje między modułami są deklarowane jako extension links oparte na jawnych identyfikatorach zamiast relacji ORM.Traktuj jako kontrakt w zakresie „oss-core” i osobno potwierdź dopasowanie do projektu.To zatwierdzona konwencja inżynieryjna. Własna aplikacja może ją naruszyć i wymaga osobnego przeglądu.Właściciel aplikacji i danych

Footguns i tryby awarii

Szyfrowanie pól tenantu używa materiału per tenant, ale niedeterministycznego szyfrogramu nie można wyszukiwać wartością jawną; lookup wymaga wspieranego hasha albo innego identyfikatora.

Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.

Sprawdź przypięte źródło

DataEngine odpowiada za zapis łączący persystencję ORM, zadeklarowane zdarzenia i skutki dla indeksu, a QueryEngine obsługuje zdenormalizowaną ścieżkę odczytu.

Sam mechanizm nie dowodzi wydajności, bezpieczeństwa, dostępności, zgodności ani gotowości produkcyjnej konkretnego wdrożenia.

Sprawdź przypięte źródło
Źródła i metoda · 13 rekordów dowodowych

Każdy fakt, węzeł, połączenie i krok przebiegu ma stabilny identyfikator, klasę twierdzenia, lokalizator źródła, zakres, ograniczenie oraz przypiętą wersję. Lokalny skrypt sprawdza istnienie każdego pliku i lokalizatora oraz pokrycie sekcji 1–33 dokładnie raz.

  • DataEngine odpowiada za zapis łączący persystencję ORM, zadeklarowane zdarzenia i skutki dla indeksu, a QueryEngine obsługuje zdenormalizowaną ścieżkę odczytu.

    ID
    section-05-data-paths
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/data/engine.ts · export class DefaultDataEngine
  • makeCrudRoute składa uwierzytelnianie, walidację, odczyty w zakresie, zapisy przez komendy, guardy, indeksowanie i enrichery dla typowych tras API.

    ID
    section-07-crud-factory
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/crud/factory.ts · export function makeCrudRoute
  • Dane zewnętrzne powinny przejść walidację Zod przed uruchomieniem zachowania domenowego.

    ID
    section-08-validation
    Klasa
    documented-convention
    Zakres
    documented-convention
    Źródło
    ARCHITECTURE.md · ## 8. Validation
  • CommandBus wykonuje zarejestrowane mutacje przez fazy przygotowania, wykonania, dziennika audytu, interceptorów, unieważnienia i efektów ubocznych.

    ID
    section-09-command-pipeline
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/commands/command-bus.ts · export class CommandBus
  • Udokumentowana ścieżka zapisu back-office korzysta ze wspólnych formularzy, tabel, wywołań API i guarded mutations zamiast doraźnych zapisów w przeglądarce.

    ID
    section-10-ui-write-path
    Klasa
    documented-convention
    Zakres
    ui-shared
    Źródło
    ARCHITECTURE.md · ## 10. Backend UI: CrudForm, DataTable and the Write Path
  • Autoryzacja opiera się na funkcjach i uwzględnia wildcardy, a skuteczne uprawnienia są wyliczane dla bieżącego użytkownika i kontekstu ról.

    ID
    section-14-rbac
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/core/src/modules/auth/services/rbacService.ts · export class RbacService
  • withScopedPayload wstrzykuje i waliduje identyfikatory tenantu i organizacji zamiast polegać na niejawnym kontekście.

    ID
    section-15-explicit-scope
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/api/scoped.ts · export function withScopedPayload
  • Szyfrowanie pól tenantu używa materiału per tenant, ale niedeterministycznego szyfrogramu nie można wyszukiwać wartością jawną; lookup wymaga wspieranego hasha albo innego identyfikatora.

    ID
    section-16-encryption
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/encryption/tenantDataEncryptionService.ts · export class TenantDataEncryptionService
  • Pola własne korzystają z dynamicznej nakładki, a relacje między modułami są deklarowane jako extension links oparte na jawnych identyfikatorach zamiast relacji ORM.

    ID
    section-21-custom-fields-links
    Klasa
    documented-convention
    Zakres
    oss-core
    Źródło
    ARCHITECTURE.md · ## 21. Custom Fields and Entity Extensions
  • Trasa sprawdza dostęp, waliduje dane i nakłada jawny zakres.

    ID
    flow-write-validate
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/crud/factory.ts · export function makeCrudRoute
  • Mutation guards mogą zablokować operację przed wykonaniem.

    ID
    flow-write-guard
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/crud/factory.ts · runMutationGuards
  • CommandBus wykonuje zarejestrowaną mutację i zapisuje jej kontekst audytowy.

    ID
    flow-write-command
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/commands/command-bus.ts · export class CommandBus
  • DataEngine utrwala rekord i planuje zadeklarowane zdarzenia lub pracę indeksu.

    ID
    flow-write-effects
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/data/engine.ts · async emitOrmEntityEvent