Centrum architektury · przypięta wersja źródeł

Architektura Open Mercato: atlas systemu oparty na kodzie

Open Mercato jest modułowym, wielodostępnym fundamentem aplikacji biznesowych. Host Next.js składa włączone moduły wokół wspólnych mechanizmów uwierzytelniania, uprawnień, komend, danych, zapytań i zdarzeń, a następnie łączy je z wymienną infrastrukturą i systemami zewnętrznymi. Poniższy atlas śledzi te kontrakty bez uznawania mechanizmu za dowód jakości wdrożenia.

Mapa systemu, a nie certyfikat bezpieczeństwa, wydajności, dostępności ani wdrożenia.

Migawka źródeł:

ae856df1ecfc · sekcje ARCHITECTURE.md: 1, 2

Jak czytać cały system

Czytaj z góry od wywołującego przez aplikację, usługi przekrojowe, włączone moduły, infrastrukturę i magazyny. Czytaj w bok, aby znaleźć granice rozszerzeń i systemów zewnętrznych. Każda wyróżniona ścieżka wskazuje zakres do zachowania i właściciela odpowiedzialnego za operacje.

Wybierz jeden przepływ przez te same warstwy

Wybór zmienia wyróżnienie i adres URL. Wszystkie warstwy oraz uporządkowane przebiegi pozostają dostępne w dokumencie.

Statyczna mapa semantyczna; kolor wskazuje wybrany przebieg.
01

Przeglądarka i klient API

external system

02

Trasy aplikacji Next.js

application local

03

Auth, RBAC, CRUD, komendy, dane, zapytania i zdarzenia

oss core

04

Włączone moduły biznesowe

oss core

05

Cache, kolejka, wyszukiwanie, scheduler, szyfrowanie

infrastructure package

06

PostgreSQL, Redis i Meilisearch

external system

07

Pakiet providera lub system zewnętrzny

provider addon

Żądanie przenosi uwierzytelniony zakres tenantu i organizacji do usług.Generowane rejestry łączą włączone moduły z trasami aplikacji i usługami runtime.Zapisy przez komendy i DataEngine mogą emitować zdarzenia oraz utrzymywać indeksy odczytowe.Trwali subskrybenci i workery przenoszą ponawialną pracę przez granicę kolejki.Adaptery i webhooki przekraczają granicę odpowiedzialności providera albo systemu zewnętrznego.

Żądanie przenosi uwierzytelniony zakres tenantu i organizacji do usług.

Generowane rejestry łączą włączone moduły z trasami aplikacji i usługami runtime.

Zapisy przez komendy i DataEngine mogą emitować zdarzenia oraz utrzymywać indeksy odczytowe.

Trwali subskrybenci i workery przenoszą ponawialną pracę przez granicę kolejki.

Adaptery i webhooki przekraczają granicę odpowiedzialności providera albo systemu zewnętrznego.

Odczyt w zakresie

  1. Trasa aplikacji rozwiązuje stronę włączonego modułu.
  2. Uwierzytelnienie ustala kontekst tenantu i organizacji.
  3. QueryEngine odczytuje zdenormalizowany model w odpowiednim zakresie.
  4. Serwer renderuje semantyczną treść odpowiedzi.
Czytaj szczegółowy przewodnik po tym mechanizmie

Komenda i zapis

  1. Trasa sprawdza dostęp, waliduje dane i nakłada jawny zakres.
  2. Mutation guards mogą zablokować operację przed wykonaniem.
  3. CommandBus wykonuje zarejestrowaną mutację i zapisuje jej kontekst audytowy.
  4. DataEngine utrwala rekord i planuje zadeklarowane zdarzenia lub pracę indeksu.
Czytaj szczegółowy przewodnik po tym mechanizmie

Zdarzenie i praca w tle

  1. Moduł deklaruje typowany kontrakt zdarzenia.
  2. Event bus uruchamia pasujące handlery w pamięci.
  3. Trwali subskrybenci przekraczają granicę kolejki dla pracy ponawialnej.
  4. Worker musi być idempotentny i obserwowany w przypadku awarii oraz ponowień.
Czytaj szczegółowy przewodnik po tym mechanizmie

Rozszerzenie między modułami

  1. Moduł rozszerzający wybiera stabilną powierzchnię między modułami zamiast importować wnętrze modułu równorzędnego.
  2. Rozszerzenie przenosi widget, interceptor, enricher, guard, hook komendy, zdarzenie albo link encji.
  3. Generator zapisuje włączony kontrakt w rejestrze runtime.
  4. Implementacja nadal musi obsłużyć brak modułu równorzędnego albo opcjonalnej powierzchni.
Czytaj szczegółowy przewodnik po tym mechanizmie

Integracja zewnętrzna

  1. Wdrożenie definiuje, który system jest właścicielem każdego identyfikatora i przejścia stanu.
  2. Adapter providera albo trasa weryfikuje kontrakt zewnętrzny i dane dostępowe.
  3. Kolejki lub harmonogramy izolują pracę ponawialną i cykliczną.
  4. Potwierdzenie, deduplikacja, uzgodnienie i recovery po awarii pozostają obowiązkami wdrożenia.
Czytaj szczegółowy przewodnik po tym mechanizmie

Mechanizm, wniosek, ograniczenie, właściciel

Mechanizm, wniosek, ograniczenie, właściciel
MechanizmWniosek redakcyjnyOgraniczenieWłaściciel decyzji
Open Mercato jest modułowym, wielodostępnym fundamentem ERP i CRM, który zespół samodzielnie hostuje i rozszerza.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.Architekt aplikacji
Udokumentowany system rozdziela trasy aplikacji, usługi przekrojowe, moduły, wymienną infrastrukturę i magazyny danych.Traktuj jako kontrakt w zakresie „documented-convention” 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.Architekt aplikacji
Źródła i metoda · 34 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.

  • Open Mercato jest modułowym, wielodostępnym fundamentem ERP i CRM, który zespół samodzielnie hostuje i rozszerza.

    ID
    section-01-product-foundation
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    ARCHITECTURE.md · ## 1. What is Open Mercato
  • Udokumentowany system rozdziela trasy aplikacji, usługi przekrojowe, moduły, wymienną infrastrukturę i magazyny danych.

    ID
    section-02-system-layers
    Klasa
    product-fact
    Zakres
    documented-convention
    Źródło
    ARCHITECTURE.md · ## 2. High-Level Architecture
  • Przeglądarka i klient API

    ID
    node-browser
    Klasa
    editorial-interpretation
    Zakres
    external-system
    Źródło
    ARCHITECTURE.md · ### System overview
  • Trasy aplikacji Next.js

    ID
    node-application
    Klasa
    product-fact
    Zakres
    application-local
  • Auth, RBAC, CRUD, komendy, dane, zapytania i zdarzenia

    ID
    node-cross-cutting
    Klasa
    editorial-interpretation
    Zakres
    oss-core
    Źródło
    ARCHITECTURE.md · ### Layers, top to bottom
  • Włączone moduły biznesowe

    ID
    node-modules
    Klasa
    product-fact
    Zakres
    oss-core
  • Cache, kolejka, wyszukiwanie, scheduler, szyfrowanie

    ID
    node-infrastructure
    Klasa
    editorial-interpretation
    Zakres
    infrastructure-package
    Źródło
    ARCHITECTURE.md · subgraph "Infrastructure (pluggable via DI)"
  • PostgreSQL, Redis i Meilisearch

    ID
    node-data
    Klasa
    product-fact
    Zakres
    external-system
    Źródło
    ARCHITECTURE.md · subgraph "Data"
  • Pakiet providera lub system zewnętrzny

    ID
    node-provider
    Klasa
    editorial-interpretation
    Zakres
    provider-addon
    Źródło
    ARCHITECTURE.md · External integration provider
  • Żądanie przenosi uwierzytelniony zakres tenantu i organizacji do usług.

    ID
    edge-request-scope
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/api/scoped.ts · export function withScopedPayload
  • Generowane rejestry łączą włączone moduły z trasami aplikacji i usługami runtime.

    ID
    edge-module-contract
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/cli/src/lib/generators/module-registry.ts · modules.runtime.generated.ts
  • Zapisy przez komendy i DataEngine mogą emitować zdarzenia oraz utrzymywać indeksy odczytowe.

    ID
    edge-write-side-effects
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/data/engine.ts · async emitOrmEntityEvent
  • Trwali subskrybenci i workery przenoszą ponawialną pracę przez granicę kolejki.

    ID
    edge-background
    Klasa
    product-fact
    Zakres
    infrastructure-package
    Źródło
    packages/events/src/bus.ts · persistentSubscribers
  • Adaptery i webhooki przekraczają granicę odpowiedzialności providera albo systemu zewnętrznego.

    ID
    edge-external
    Klasa
    editorial-interpretation
    Zakres
    provider-addon
    Źródło
    packages/webhooks/src/modules/webhooks/lib/adapter-registry.ts · export interface WebhookEndpointAdapter
  • Trasa aplikacji rozwiązuje stronę włączonego modułu.

    ID
    flow-read-route
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    apps/docs/docs/architecture/system-overview.mdx · ## Request lifecycle
  • Uwierzytelnienie ustala kontekst tenantu i organizacji.

    ID
    flow-read-scope
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/lib/api/scoped.ts · export type ScopedContext
  • QueryEngine odczytuje zdenormalizowany model w odpowiednim zakresie.

    ID
    flow-read-query
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/core/src/modules/query_index/lib/engine.ts · export class HybridQueryEngine
  • Serwer renderuje semantyczną treść odpowiedzi.

    ID
    flow-read-render
    Klasa
    product-fact
    Zakres
    oss-core
  • 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
  • Moduł deklaruje typowany kontrakt zdarzenia.

    ID
    flow-event-declare
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/shared/src/modules/events/factory.ts · export function createModuleEvents
  • Event bus uruchamia pasujące handlery w pamięci.

    ID
    flow-event-emit
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/events/src/bus.ts · export function createEventBus
  • Trwali subskrybenci przekraczają granicę kolejki dla pracy ponawialnej.

    ID
    flow-event-persist
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/events/src/bus.ts · persistentSubscribers
  • Worker musi być idempotentny i obserwowany w przypadku awarii oraz ponowień.

    ID
    flow-event-operate
    Klasa
    documented-convention
    Zakres
    oss-core
    Źródło
    ARCHITECTURE.md · ## 19. Queue and Background Jobs
  • Moduł rozszerzający wybiera stabilną powierzchnię między modułami zamiast importować wnętrze modułu równorzędnego.

    ID
    flow-extension-boundary
    Klasa
    documented-convention
    Zakres
    oss-core
    Źródło
    ARCHITECTURE.md · ### Extensibility boundary: inject vs compose
  • Rozszerzenie przenosi widget, interceptor, enricher, guard, hook komendy, zdarzenie albo link encji.

    ID
    flow-extension-surface
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    apps/docs/docs/framework/extensibility/current-surfaces.mdx · ## API and mutation extension
  • Generator zapisuje włączony kontrakt w rejestrze runtime.

    ID
    flow-extension-registry
    Klasa
    product-fact
    Zakres
    oss-core
    Źródło
    packages/cli/src/lib/generators/module-registry.ts · bootstrap-registrations.generated.ts
  • Implementacja nadal musi obsłużyć brak modułu równorzędnego albo opcjonalnej powierzchni.

    ID
    flow-extension-absence
    Klasa
    documented-convention
    Zakres
    oss-core
    Źródło
    ARCHITECTURE.md · A module must work enabled or disabled.
  • Wdrożenie definiuje, który system jest właścicielem każdego identyfikatora i przejścia stanu.

    ID
    flow-integration-authority
    Klasa
    documented-convention
    Zakres
    provider-addon
    Źródło
    ARCHITECTURE.md · ### Webhooks
  • Adapter providera albo trasa weryfikuje kontrakt zewnętrzny i dane dostępowe.

    ID
    flow-integration-adapter
    Klasa
    product-fact
    Zakres
    provider-addon
    Źródło
    packages/webhooks/src/modules/webhooks/lib/adapter-registry.ts · export interface WebhookEndpointAdapter
  • Kolejki lub harmonogramy izolują pracę ponawialną i cykliczną.

    ID
    flow-integration-async
    Klasa
    product-fact
    Zakres
    provider-addon
  • Potwierdzenie, deduplikacja, uzgodnienie i recovery po awarii pozostają obowiązkami wdrożenia.

    ID
    flow-integration-reconcile
    Klasa
    documented-convention
    Zakres
    provider-addon
    Źródło
    ARCHITECTURE.md · Workers and subscribers MUST be idempotent.