Add service-level mermaid diagrams for all business applications under docs/apps folder, illustrating dependencies, namespaces, and inter-service connections

This commit is contained in:
emelinda 2026-05-08 17:20:45 +03:00
parent 57e2867d15
commit 1318889944
36 changed files with 1134 additions and 63 deletions

102
README.md
View File

@ -86,63 +86,43 @@ flowchart LR
Operate["Camunda Operate<br/>UI :8081"]:::app Operate["Camunda Operate<br/>UI :8081"]:::app
end end
%% ===== Бизнес-сервисы ===== %% ===== Бизнес-сервисы (каждый в своём namespace) =====
subgraph APPS["💼 Бизнес-сервисы"] subgraph APPS["💼 Бизнес-сервисы — namespaces"]
direction TB direction LR
CI["ns: control-interface"]:::app
subgraph CORE["🧩 Платформа / Core"] Django["ns: django"]:::app
direction LR EAV["ns: eav"]:::app
Django["django<br/>:8000 + srx-admin"]:::app Workspaces["ns: workspaces"]:::app
EAV["eav<br/>атрибуты сущностей"]:::app Projects["ns: projects"]:::app
CI["control-interface<br/>UI :80"]:::app PM["ns: pm"]:::app
Workspaces["workspaces"]:::app Contracts["ns: contracts"]:::app
Projects["projects"]:::app Resources["ns: resources"]:::app
Subs["subscriptions"]:::app Subs["ns: subscriptions"]:::app
SysLog["system-log"]:::app SysLog["ns: system-log"]:::app
MsgHub["message-hub"]:::app MsgHub["ns: message-hub"]:::app
FaaS["faas<br/>functions runtime"]:::app FaaS["ns: faas"]:::app
Flows["flows<br/>оркестрация"]:::app Flows["ns: flows"]:::app
end Docs["ns: documentations"]:::app
DocLink["ns: document-link"]:::app
subgraph DOCS["📂 Документы / CDE"] Attach["ns: attachments"]:::app
direction LR Transmittal["ns: transmittal"]:::app
Docs["documentations<br/>filestream + pdm"]:::app CDE["ns: cde"]:::app
DocLink["document-link"]:::app Drawings["ns: drawings"]:::app
Attach["attachments<br/>HelmRelease"]:::app BIM["ns: bim"]:::app
Transmittal["transmittal"]:::app Stamp["ns: stamp-verification"]:::app
CDE["cde<br/>common data env"]:::app Inspect["ns: inspections"]:::app
Drawings["drawings"]:::app Checklists["ns: checklists"]:::app
BIM["bim<br/>3D-модели"]:::app Remarks["ns: remarks"]:::app
Stamp["stamp-verification"]:::app Issues["ns: issues"]:::app
end RFI["ns: rfi"]:::app
Reviews["ns: reviews"]:::app
subgraph QUALITY["✅ Контроль качества"] Prescr["ns: prescriptions"]:::app
direction LR Compare["ns: comparisons"]:::app
Inspect["inspections"]:::app Measure["ns: measurements"]:::app
Checklists["checklists"]:::app Mapper["ns: mapper"]:::app
Remarks["remarks"]:::app XSection["ns: cross-section"]:::app
Issues["issues"]:::app Process["ns: processing"]:::app
RFI["rfi<br/>request for info"]:::app Notes["ns: notes"]:::app
Reviews["reviews"]:::app
Prescr["prescriptions"]:::app
Compare["comparisons<br/>diff чертежей"]:::app
end
subgraph FIELD["📐 Полевые данные"]
direction LR
Measure["measurements"]:::app
Mapper["mapper"]:::app
XSection["cross-section"]:::app
Process["processing"]:::app
end
subgraph PMG["🏗 Управление проектом"]
direction LR
PM["pm<br/>project mgmt"]:::app
Contracts["contracts"]:::app
Resources["resources"]:::app
Notes["notes"]:::app
end
end end
%% ===== GitOps потоки ===== %% ===== GitOps потоки =====
@ -333,12 +313,6 @@ flowchart LR
BIM -. "envoy" .-> Pilot BIM -. "envoy" .-> Pilot
Flows -. "envoy" .-> Pilot Flows -. "envoy" .-> Pilot
%% ===== Стили подгрупп бизнес-сервисов =====
style CORE fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
style DOCS fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
style QUALITY fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
style FIELD fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
style PMG fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
%% ===== Стили ===== %% ===== Стили =====
classDef ext fill:#1f2937,stroke:#9ca3af,stroke-width:2px,color:#f9fafb classDef ext fill:#1f2937,stroke:#9ca3af,stroke-width:2px,color:#f9fafb
@ -360,6 +334,8 @@ flowchart LR
style APPS fill:#fce7f3,stroke:#ec4899,stroke-width:2px style APPS fill:#fce7f3,stroke:#ec4899,stroke-width:2px
``` ```
📂 **Подробные диаграммы по каждому бизнес-сервису:** [`docs/apps/`](./docs/apps/README.md)
**Легенда:** **Легенда:**
- 🟪 **Edge / Mesh** — терминация TLS, маршрутизация и mTLS между сервисами (Istio + cert-manager) - 🟪 **Edge / Mesh** — терминация TLS, маршрутизация и mTLS между сервисами (Istio + cert-manager)
- 🟦 **Платформа** — служебные компоненты (storage, secrets, S3 proxy, dashboard) - 🟦 **Платформа** — служебные компоненты (storage, secrets, S3 proxy, dashboard)

58
docs/apps/README.md Normal file
View File

@ -0,0 +1,58 @@
# Диаграммы бизнес-приложений
В этой папке для каждого бизнес-сервиса (namespace) есть отдельная mermaid-диаграмма с его зависимостями и межсервисными маршрутами.
## Индекс
### Платформа / Core
- [control-interface](./control-interface.md) — единая точка входа UI, API gateway
- [django](./django.md) — основной backend-монолит
- [eav](./eav.md) — Entity-Attribute-Value сервис атрибутов
- [workspaces](./workspaces.md) — рабочие пространства
- [projects](./projects.md) — проекты
- [subscriptions](./subscriptions.md) — подписки и доставка уведомлений
- [system-log](./system-log.md) — аудит-журнал
- [message-hub](./message-hub.md) — хаб уведомлений
- [faas](./faas.md) — runtime функций
- [flows](./flows.md) — оркестрация бизнес-потоков
### Управление проектом
- [pm](./pm.md) — project management
- [contracts](./contracts.md) — контракты
- [resources](./resources.md) — ресурсы
- [notes](./notes.md) — заметки
### Документы / CDE
- [documentations](./documentations.md) — хранилище документов
- [document-link](./document-link.md) — связи между документами
- [attachments](./attachments.md) — вложения
- [transmittal](./transmittal.md) — комплекты передачи
- [cde](./cde.md) — Common Data Environment
- [drawings](./drawings.md) — чертежи
- [bim](./bim.md) — BIM/3D-модели
- [stamp-verification](./stamp-verification.md) — верификация штампов
### Контроль качества
- [inspections](./inspections.md) — инспекции
- [checklists](./checklists.md) — чек-листы
- [remarks](./remarks.md) — замечания
- [issues](./issues.md) — проблемы
- [rfi](./rfi.md) — Request For Information
- [reviews](./reviews.md) — ревью
- [prescriptions](./prescriptions.md) — предписания
- [comparisons](./comparisons.md) — сравнение чертежей
### Полевые данные
- [measurements](./measurements.md) — замеры
- [mapper](./mapper.md) — картография
- [cross-section](./cross-section.md) — сечения
- [processing](./processing.md) — обработка
## Легенда диаграмм
- 🟪 розовый — сам сервис (текущая страница)
- 🩷 светло-розовый — соседние бизнес-сервисы
- 🟩 зелёный — БД и хранилища (PostgreSQL, Redis, MinIO)
- 🟥 красный — шины сообщений (Kafka, RabbitMQ)
- 🟦 голубой — платформенные компоненты (Vault, S3 Proxy, Istio)
- 🟧 оранжевый — Identity-провайдеры (Keycloak, Zitadel)

25
docs/apps/attachments.md Normal file
View File

@ -0,0 +1,25 @@
# attachments
Сервис вложений (управляется HelmRelease). Namespace: `attachments`.
```mermaid
flowchart LR
Helm[helm-controller]:::infra
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
subgraph NS["ns: attachments"]
HR{{HelmRelease<br/>chart-managed}}:::cfg
App[deployment: attachments<br/>API + workers]:::comp
HR -.-> App
end
Helm -.->|reconcile| HR
App -->|PUT/GET| S3 --> MinIO
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

35
docs/apps/bim.md Normal file
View File

@ -0,0 +1,35 @@
# bim
BIM / 3D-модели. Namespace: `bim`.
```mermaid
flowchart LR
GW[Istio Gateway]:::infra
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
Kafka[[Kafka]]:::msg
KC[Keycloak]:::idp
CDE[cde]:::peer
Process[processing]:::peer
subgraph NS["ns: bim"]
Backend[deployment: backend<br/>Service]:::comp
end
GW -->|/bim| Backend
CDE -->|REST| Backend
Backend --> PG
Backend -->|IFC/RVT| S3 --> MinIO
Backend -->|REST| Process
Backend -->|produce bim.processed| Kafka
Backend -. JWT .-> KC
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
classDef idp fill:#f59e0b,stroke:#92400e,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

64
docs/apps/cde.md Normal file
View File

@ -0,0 +1,64 @@
# cde
Common Data Environment с набором воркеров. Namespace: `cde`.
```mermaid
flowchart LR
GW[Istio Gateway]:::infra
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
KC[Keycloak]:::idp
RMQ[[RabbitMQ]]:::msg
subgraph NS["ns: cde"]
API[deployment: cde<br/>API + backend]:::comp
Split[worker: split-pdf]:::comp
Copy[worker: copy]:::comp
Versions[worker: create-versions]:::comp
Markings[worker: markings]:::comp
Sign[worker: sign]:::comp
Bundles[worker: update-bundles]:::comp
FlowsCB[worker: flows-callback]:::comp
API -. dispatch .-> Split
API -. dispatch .-> Copy
API -. dispatch .-> Versions
API -. dispatch .-> Markings
API -. dispatch .-> Sign
API -. dispatch .-> Bundles
API -. dispatch .-> FlowsCB
end
Docs[documentations]:::peer
Drawings[drawings]:::peer
BIM[bim]:::peer
DocLink[document-link]:::peer
Transmittal[transmittal]:::peer
Flows[flows]:::peer
GW -->|/cde| API
DocLink -->|REST| API
Transmittal -->|REST| API
API -->|REST| Docs
API -->|REST| Drawings
API -->|REST| BIM
API --> PG
Split -->|files| S3
Copy -->|files| S3
Versions -->|files| S3
Markings -->|files| S3
Sign -->|files| S3
Bundles -->|files| S3
S3 --> MinIO
Split & Copy & Versions & Markings & Sign & Bundles -.->|consume jobs| RMQ
FlowsCB -.->|callback| Flows
API -. JWT .-> KC
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef idp fill:#f59e0b,stroke:#92400e,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

21
docs/apps/checklists.md Normal file
View File

@ -0,0 +1,21 @@
# checklists
Чек-листы. Namespace: `checklists`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Inspect[inspections]:::peer
subgraph NS["ns: checklists"]
Backend[deployment: backend<br/>Service]:::comp
end
Inspect -->|REST| Backend
Backend --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

34
docs/apps/comparisons.md Normal file
View File

@ -0,0 +1,34 @@
# comparisons
Сравнение чертежей. Namespace: `comparisons`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
Kafka[[Kafka]]:::msg
Drawings[drawings]:::peer
subgraph NS["ns: comparisons"]
Frontend[deployment: frontend<br/>nginx]:::comp
Backend[deployment: backend<br/>API]:::comp
Cfg{{configmaps:<br/>nginx, tasks-execution}}:::cfg
Frontend --> Backend
Cfg -.-> Backend
Cfg -.-> Frontend
end
Drawings -->|REST| Backend
Kafka -->|consume drawings.uploaded| Backend
Backend --> PG
Backend -->|rendered diff| S3 --> MinIO
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

23
docs/apps/contracts.md Normal file
View File

@ -0,0 +1,23 @@
# contracts
Контракты. Namespace: `contracts`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
PM[pm]:::peer
Resources[resources]:::peer
subgraph NS["ns: contracts"]
App[deployment: contracts<br/>Service]:::comp
end
PM -->|REST| App
App -->|REST| Resources
App --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,36 @@
# control-interface
Единый UI и API-gateway. Namespace: `control-interface`.
```mermaid
flowchart LR
User([👤 User]):::ext
GW[Istio Gateway]:::infra
Redis[(Redis)]:::data
KC[Keycloak]:::idp
subgraph NS["ns: control-interface"]
UI[deployment: ui<br/>Service :80]:::comp
end
Django[django]:::peer
PM[pm]:::peer
Projects[projects]:::peer
Workspaces[workspaces]:::peer
User -->|HTTPS| GW --> UI
UI -->|API| Django
UI -->|API| PM
UI -->|API| Projects
UI -->|API| Workspaces
UI -->|session| Redis
UI -. OIDC .-> KC
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef idp fill:#f59e0b,stroke:#92400e,color:#fff
classDef ext fill:#1f2937,stroke:#9ca3af,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,30 @@
# cross-section
Поперечные сечения. Namespace: `cross-section`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
RMQ[[RabbitMQ]]:::msg
Mapper[mapper]:::peer
Process[processing]:::peer
subgraph NS["ns: cross-section"]
App[deployment: cross-section<br/>Service]:::comp
end
Mapper -->|REST| App
RMQ -->|consume xs.jobs| App
App --> PG
App -->|профили| S3 --> MinIO
App -->|REST| Process
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

45
docs/apps/django.md Normal file
View File

@ -0,0 +1,45 @@
# django
Основной Django-монолит. Namespace: `django`.
```mermaid
flowchart LR
GW[Istio Gateway]:::infra
PG[(PostgreSQL)]:::data
Redis[(Redis)]:::data
Vault[Vault]:::infra
KC[Keycloak]:::idp
subgraph NS["ns: django"]
Frontend[deployment: frontend<br/>nginx :80]:::comp
Backend[deployment: backend<br/>uwsgi :8000]:::comp
Celery[deployment: celery<br/>worker]:::comp
SRX[deployment: srx-admin<br/>:8000]:::comp
Cfg{{configmaps:<br/>django, nginx, uwsgi}}:::cfg
Frontend --> Backend
Backend -. tasks via Redis .-> Celery
Cfg -.-> Backend
Cfg -.-> Frontend
end
CI[control-interface]:::peer
EAV[eav]:::peer
GW -->|/api| Frontend
CI -->|REST| Backend
EAV -->|schemas| Backend
Backend -->|JDBC/ORM| PG
Backend -->|cache| Redis
Celery -->|broker| Redis
Backend -. kv .-> Vault
Backend -. OIDC .-> KC
SRX --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef idp fill:#f59e0b,stroke:#92400e,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,27 @@
# document-link
Связи между документами. Namespace: `document-link`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Docs[documentations]:::peer
CDE[cde]:::peer
RFI[rfi]:::peer
Notes[notes]:::peer
subgraph NS["ns: document-link"]
App[deployment: document-link<br/>Service]:::comp
end
RFI -->|REST| App
Notes -->|REST| App
App -->|REST| Docs
App -->|REST| CDE
App --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,42 @@
# documentations
Хранилище документов. Namespace: `documentations`.
```mermaid
flowchart LR
GW[Istio Gateway]:::infra
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
KC[Keycloak]:::idp
subgraph NS["ns: documentations"]
Frontend[deployment: frontend]:::comp
API[deployment: api]:::comp
Filestream[deployment: filestream<br/>upload/download]:::comp
PDM[deployment: pdm<br/>product data mgmt]:::comp
Frontend --> API
API --> Filestream
API --> PDM
end
DocLink[document-link]:::peer
CDE[cde]:::peer
Transmittal[transmittal]:::peer
GW -->|/docs| Frontend
DocLink -->|REST| API
CDE -->|REST| API
Transmittal -->|REST| API
API --> PG
PDM --> PG
Filestream -->|files| S3 --> MinIO
API -. JWT .-> KC
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef idp fill:#f59e0b,stroke:#92400e,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

32
docs/apps/drawings.md Normal file
View File

@ -0,0 +1,32 @@
# drawings
Чертежи. Namespace: `drawings`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
Kafka[[Kafka]]:::msg
CDE[cde]:::peer
Compare[comparisons]:::peer
Stamp[stamp-verification]:::peer
subgraph NS["ns: drawings"]
App[deployment: drawings<br/>Service]:::comp
end
CDE -->|REST| App
App --> PG
App -->|DWG/PDF| S3 --> MinIO
App -->|produce drawings.uploaded| Kafka
App -->|REST| Compare
App -->|REST| Stamp
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

24
docs/apps/eav.md Normal file
View File

@ -0,0 +1,24 @@
# eav
Entity-Attribute-Value сервис. Namespace: `eav`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Django[django]:::peer
subgraph NS["ns: eav"]
Backend[deployment: backend<br/>Service]:::comp
Cfg{{configmap: django}}:::cfg
Cfg -.-> Backend
end
Backend --> PG
Backend -->|schemas REST| Django
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

31
docs/apps/faas.md Normal file
View File

@ -0,0 +1,31 @@
# faas
Function-as-a-Service runtime. Namespace: `faas`.
```mermaid
flowchart LR
Redis[(Redis)]:::data
RMQ[[RabbitMQ]]:::msg
Vault[Vault]:::infra
Flows[flows]:::peer
Reviews[reviews]:::peer
subgraph NS["ns: faas"]
Backend[deployment: backend<br/>API]:::comp
ExportReviews[deployment: export-reviews<br/>function]:::comp
end
Flows -->|trigger| Backend
Backend -->|spawn| ExportReviews
ExportReviews -->|REST| Reviews
Backend -->|queue| Redis
RMQ -->|consume tasks.*| Backend
Backend -. approle .-> Vault
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

37
docs/apps/flows.md Normal file
View File

@ -0,0 +1,37 @@
# flows
Оркестрация бизнес-потоков. Namespace: `flows`.
```mermaid
flowchart LR
Redis[(Redis)]:::data
Kafka[[Kafka]]:::msg
RMQ[[RabbitMQ]]:::msg
Vault[Vault]:::infra
FaaS[faas]:::peer
Camunda[Camunda BPM]:::peer
subgraph NS["ns: flows"]
Frontend[deployment: frontend]:::comp
Backend[deployment: backend<br/>API]:::comp
Celery[deployment: celery<br/>worker]:::comp
Frontend --> Backend
Backend -. tasks .-> Celery
end
Backend -->|state| Redis
Celery -->|broker| Redis
Backend <-->|flows.*| Kafka
Backend -->|publish tasks.*| RMQ
Backend -->|trigger| FaaS
Backend -->|start workflow| Camunda
Camunda -->|callback| Backend
Backend -. approle .-> Vault
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

26
docs/apps/inspections.md Normal file
View File

@ -0,0 +1,26 @@
# inspections
Инспекции. Namespace: `inspections`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Kafka[[Kafka]]:::msg
Checklists[checklists]:::peer
Issues[issues]:::peer
subgraph NS["ns: inspections"]
Backend[deployment: backend<br/>Service]:::comp
end
Backend --> PG
Backend -->|REST| Checklists
Backend -->|REST| Issues
Backend -->|produce inspect.events| Kafka
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

33
docs/apps/issues.md Normal file
View File

@ -0,0 +1,33 @@
# issues
Проблемы. Namespace: `issues`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Kafka[[Kafka]]:::msg
Inspect[inspections]:::peer
Remarks[remarks]:::peer
subgraph NS["ns: issues"]
Frontend[deployment: frontend]:::comp
Backend[deployment: backend<br/>API]:::comp
Celery[deployment: celery<br/>worker]:::comp
Cfg{{configmap: production}}:::cfg
Frontend --> Backend
Backend -. tasks .-> Celery
Cfg -.-> Backend
end
Inspect -->|REST| Backend
Kafka -->|consume inspect.events| Backend
Backend -->|REST| Remarks
Backend --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

30
docs/apps/mapper.md Normal file
View File

@ -0,0 +1,30 @@
# mapper
Картография / тайлы. Namespace: `mapper`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
RMQ[[RabbitMQ]]:::msg
Measure[measurements]:::peer
XSection[cross-section]:::peer
subgraph NS["ns: mapper"]
App[deployment: mapper<br/>Service]:::comp
end
Measure -->|REST| App
RMQ -->|consume tile.jobs| App
App --> PG
App -->|tiles| S3 --> MinIO
App -->|REST| XSection
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

25
docs/apps/measurements.md Normal file
View File

@ -0,0 +1,25 @@
# measurements
Замеры. Namespace: `measurements`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
Mapper[mapper]:::peer
subgraph NS["ns: measurements"]
App[deployment: measurements<br/>Service]:::comp
end
App --> PG
App -->|snapshots| S3 --> MinIO
App -->|REST| Mapper
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

24
docs/apps/message-hub.md Normal file
View File

@ -0,0 +1,24 @@
# message-hub
Хаб уведомлений. Namespace: `message-hub`.
```mermaid
flowchart LR
Redis[(Redis)]:::data
Kafka[[Kafka]]:::msg
Subs[subscriptions]:::peer
subgraph NS["ns: message-hub"]
App[deployment: message-hub<br/>Service]:::comp
end
App <-->|pub/sub| Redis
App -->|produce notify.*| Kafka
App -->|deliver| Subs
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

26
docs/apps/notes.md Normal file
View File

@ -0,0 +1,26 @@
# notes
Заметки. Namespace: `notes`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
DocLink[document-link]:::peer
subgraph NS["ns: notes"]
Frontend[deployment: frontend<br/>nginx]:::comp
Backend[deployment: backend<br/>API]:::comp
Cfg{{configmap: nginx}}:::cfg
Frontend --> Backend
Cfg -.-> Frontend
end
Backend --> PG
Backend -->|REST| DocLink
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

42
docs/apps/pm.md Normal file
View File

@ -0,0 +1,42 @@
# pm
Project management. Namespace: `pm`.
```mermaid
flowchart LR
GW[Istio Gateway]:::infra
PG[(PostgreSQL)]:::data
Redis[(Redis)]:::data
KC[Keycloak]:::idp
subgraph NS["ns: pm"]
Backend[deployment: backend<br/>Service]:::comp
Celery[deployment: celery<br/>worker]:::comp
Cfg{{configmap: backend}}:::cfg
Cfg -.-> Backend
Backend -. tasks .-> Celery
end
CI[control-interface]:::peer
Projects[projects]:::peer
Contracts[contracts]:::peer
Resources[resources]:::peer
GW -->|/pm| Backend
CI -->|REST| Backend
Backend -->|REST| Projects
Backend -->|REST| Contracts
Backend -->|REST| Resources
Backend --> PG
Celery -->|broker| Redis
Backend -->|cache| Redis
Backend -. JWT .-> KC
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef idp fill:#f59e0b,stroke:#92400e,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,21 @@
# prescriptions
Предписания. Namespace: `prescriptions`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Reviews[reviews]:::peer
subgraph NS["ns: prescriptions"]
App[deployment: prescriptions<br/>Service]:::comp
end
Reviews -->|REST| App
App --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

39
docs/apps/processing.md Normal file
View File

@ -0,0 +1,39 @@
# processing
Обработка тяжёлых задач. Namespace: `processing`.
```mermaid
flowchart LR
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
Kafka[[Kafka]]:::msg
RMQ[[RabbitMQ]]:::msg
BIM[bim]:::peer
XSection[cross-section]:::peer
subgraph NS["ns: processing"]
Frontend[deployment: frontend]:::comp
API[deployment: api]:::comp
Engine[deployment: engine<br/>heavy compute]:::comp
EngineLow[deployment: engine-low<br/>low priority]:::comp
Frontend --> API
API --> Engine
API --> EngineLow
end
BIM -->|REST| API
XSection -->|REST| API
Kafka -->|consume processing.jobs| API
Engine -->|publish jobs| RMQ
EngineLow -->|publish jobs| RMQ
Engine -->|raw + результаты| S3
EngineLow -->|raw + результаты| S3
S3 --> MinIO
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

25
docs/apps/projects.md Normal file
View File

@ -0,0 +1,25 @@
# projects
Проекты. Namespace: `projects`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
CI[control-interface]:::peer
PM[pm]:::peer
Workspaces[workspaces]:::peer
subgraph NS["ns: projects"]
App[deployment: projects<br/>Service]:::comp
end
CI -->|REST| App
PM -->|REST| App
App -->|REST| Workspaces
App --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

26
docs/apps/remarks.md Normal file
View File

@ -0,0 +1,26 @@
# remarks
Замечания. Namespace: `remarks`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Kafka[[Kafka]]:::msg
Issues[issues]:::peer
Reviews[reviews]:::peer
subgraph NS["ns: remarks"]
App[deployment: remarks<br/>Service]:::comp
end
Issues -->|REST| App
App --> PG
App -->|produce remarks.events| Kafka
Kafka -->|consume| Reviews
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

26
docs/apps/resources.md Normal file
View File

@ -0,0 +1,26 @@
# resources
Ресурсы. Namespace: `resources`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
PM[pm]:::peer
Contracts[contracts]:::peer
subgraph NS["ns: resources"]
Backend[deployment: backend<br/>uwsgi Service]:::comp
Cfg{{configmaps:<br/>django, uwsgi}}:::cfg
Cfg -.-> Backend
end
PM -->|REST| Backend
Contracts -->|REST| Backend
Backend --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef cfg fill:#fef3c7,stroke:#92400e,color:#000
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

26
docs/apps/reviews.md Normal file
View File

@ -0,0 +1,26 @@
# reviews
Ревью. Namespace: `reviews`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Kafka[[Kafka]]:::msg
RFI[rfi]:::peer
Prescr[prescriptions]:::peer
subgraph NS["ns: reviews"]
App[deployment: reviews<br/>Service]:::comp
end
Kafka -->|consume remarks.events| App
App -->|REST| RFI
App -->|REST| Prescr
App --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

27
docs/apps/rfi.md Normal file
View File

@ -0,0 +1,27 @@
# rfi
Request For Information. Namespace: `rfi`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
DocLink[document-link]:::peer
Reviews[reviews]:::peer
subgraph NS["ns: rfi"]
Frontend[deployment: frontend]:::comp
Backend[deployment: backend<br/>API]:::comp
Celery[deployment: celery<br/>worker]:::comp
Frontend --> Backend
Backend -. tasks .-> Celery
end
Reviews -->|REST| Backend
Backend -->|REST| DocLink
Backend --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,28 @@
# stamp-verification
Верификация штампов. Namespace: `stamp-verification`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
RMQ[[RabbitMQ]]:::msg
Drawings[drawings]:::peer
subgraph NS["ns: stamp-verification"]
App[deployment: stamp-verification<br/>Service]:::comp
end
Drawings -->|REST| App
RMQ -->|consume sign.jobs| App
App --> PG
App -->|signed PDF| S3 --> MinIO
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

View File

@ -0,0 +1,26 @@
# subscriptions
Подписки и доставка уведомлений. Namespace: `subscriptions`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Redis[(Redis)]:::data
Kafka[[Kafka]]:::msg
MsgHub[message-hub]:::peer
subgraph NS["ns: subscriptions"]
Backend[deployment: backend<br/>Service]:::comp
end
MsgHub -->|deliver| Backend
Kafka -->|consume notify.*| Backend
Backend <-->|pub/sub| Redis
Backend --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

23
docs/apps/system-log.md Normal file
View File

@ -0,0 +1,23 @@
# system-log
Аудит-журнал. Namespace: `system-log`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Kafka[[Kafka]]:::msg
subgraph NS["ns: system-log"]
Backend[deployment: backend<br/>API]:::comp
Worker[deployment: worker<br/>kafka consumer]:::comp
Worker -->|insert| Backend
end
Kafka -->|consume audit.*| Worker
Backend --> PG
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef msg fill:#ef4444,stroke:#991b1b,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

31
docs/apps/transmittal.md Normal file
View File

@ -0,0 +1,31 @@
# transmittal
Комплекты передачи. Namespace: `transmittal`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
S3[S3 Proxy]:::infra
MinIO[(MinIO)]:::data
CDE[cde]:::peer
Docs[documentations]:::peer
subgraph NS["ns: transmittal"]
Frontend[deployment: frontend]:::comp
Backend[deployment: backend<br/>API]:::comp
Worker[deployment: worker<br/>bundle assembly]:::comp
Frontend --> Backend
Backend -. async .-> Worker
end
Backend --> PG
Worker -->|bundles| S3 --> MinIO
Backend -->|REST| CDE
Backend -->|REST| Docs
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
classDef infra fill:#0ea5e9,stroke:#075985,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```

27
docs/apps/workspaces.md Normal file
View File

@ -0,0 +1,27 @@
# workspaces
Рабочие пространства. Namespace: `workspaces`.
```mermaid
flowchart LR
PG[(PostgreSQL)]:::data
Redis[(Redis)]:::data
CI[control-interface]:::peer
Projects[projects]:::peer
subgraph NS["ns: workspaces"]
Frontend[deployment: frontend]:::comp
Backend[deployment: backend]:::comp
Frontend --> Backend
end
CI -->|REST| Frontend
Projects -->|REST| Backend
Backend --> PG
Backend -->|cache| Redis
classDef comp fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
classDef peer fill:#fce7f3,stroke:#9d174d,color:#000
classDef data fill:#10b981,stroke:#065f46,color:#fff
style NS fill:#fdf2f8,stroke:#ec4899,stroke-width:2px
```