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
Odpowiedź bezpośrednia
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ą.
makeCrudRoute składa uwierzytelnianie, walidację, odczyty w zakresie, zapisy przez komendy, guardy, indeksowanie i enrichery dla typowych tras API.
oss-core
→withScopedPayload wstrzykuje i waliduje identyfikatory tenantu i organizacji zamiast polegać na niejawnym kontekście.
oss-core
→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
→DataEngine odpowiada za zapis łączący persystencję ORM, zadeklarowane zdarzenia i skutki dla indeksu, a QueryEngine obsługuje zdenormalizowaną ścieżkę odczytu.
oss-core
→CommandBus wykonuje zarejestrowane mutacje przez fazy przygotowania, wykonania, dziennika audytu, interceptorów, unieważnienia i efektów ubocznych.
oss-core
→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
→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.
Trasa sprawdza dostęp, waliduje dane i nakłada jawny zakres.
product-factoss-core
Mutation guards mogą zablokować operację przed wykonaniem.
product-factoss-core
CommandBus wykonuje zarejestrowaną mutację i zapisuje jej kontekst audytowy.
product-factoss-core
DataEngine utrwala rekord i planuje zadeklarowane zdarzenia lub pracę indeksu.
product-factoss-core
Kontrakty danych i ograniczenia operacyjne
| Mechanizm | Wniosek redakcyjny | Ograniczenie | Wł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łoDataEngine 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