Update 'architecture-diagram.md'

master
Artem-Darius Weber 5 months ago
parent ed5eecbd38
commit 92c6945f55

@ -3,35 +3,48 @@
```mermaid ```mermaid
graph TB graph TB
%% External Layer %% External Layer
User[👤 User] --> GradioUI[🖥️ Gradio Web Interface] EndUser[👤 User] --> GradioUI[🖥️ Gradio Web Interface]
%% Presentation Layer %% Presentation Layer
subgraph "Presentation Layer" subgraph "Presentation Layer"
GradioUI --> |Web Requests| GradioApp[gradio_app.py] GradioUI --> |HTTP/Web Requests| GradioApp[gradio_app.py]
end end
%% Application Layer %% Application Layer
subgraph "Application Layer" subgraph "Application Layer"
GradioApp --> RegisterUC[📝 RegisterFaceUseCase] GradioApp --> RegisterUC[📝 RegisterFaceUseCase]
GradioApp --> VerifyUC[🔍 VerifyFaceUseCase] GradioApp --> VerifyUC[🔍 VerifyFaceUseCase]
GradioApp --> IdentifyUC[🔎 IdentifyFaceUseCase] GradioApp --> IdentifyUC[🔎 IdentifyFaceUseCase]
%% Асинхронная публикация задач
RegisterUC --> TaskPublisher[📨 TaskPublisher]
VerifyUC --> TaskPublisher
IdentifyUC --> TaskPublisher
RegisterUC --> FaceService[⚙️ FaceRecognitionService] %% Хранилище статусов задач (поллинг/вебсокет)
VerifyUC --> FaceService GradioApp --> TaskStatusRepo[📊 TaskStatusRepository]
IdentifyUC --> FaceService end
%% Scalability / Async Layer
subgraph "Scalability Layer (Async, flipped-buffer)"
TaskPublisher --> RabbitMQ[(🐇 RabbitMQ)]
FaceWorkerPool[👷‍♂️ FaceWorker Pool - N instances] --> RabbitMQ
FaceWorkerPool --> TaskStatusRepo
end end
%% Domain Layer %% Domain Layer
subgraph "Domain Layer" subgraph "Domain Layer"
FaceService --> Face[👤 Face Entity] FaceService[⚙️ FaceRecognitionService] --> Face[👤 Face Entity]
FaceService --> User[👨‍💼 User Entity] FaceService --> User[👨‍💼 User Entity]
FaceService --> VResult[✅ VerificationResult] FaceService --> VResult[✅ VerificationResult]
FaceService --> IResult[🎯 IdentificationResult] FaceService --> IResult[🎯 IdentificationResult]
FaceRepo[📊 FaceRepository Interface] FaceRepo[📊 FaceRepository Interface]
VectorStore[🗂️ VectorStore Interface] VectorStore[🗂️ VectorStore Interface]
UserRepoIface[👨‍💼 UserRepository Interface]
ObjectStorageIface[📁 ObjectStorage Interface]
end end
%% Infrastructure Layer %% Infrastructure Layer
subgraph "Infrastructure Layer" subgraph "Infrastructure Layer"
%% ML Components %% ML Components
@ -42,9 +55,10 @@ graph TB
%% Storage Components %% Storage Components
subgraph "Storage Components" subgraph "Storage Components"
MongoDB[🗄️ MongoDBFaceRepository] MongoDBRepo[🗄️ MongoDBFaceRepository]
ChromaDB[🔗 ChromaDBVectorStore] MongoUserRepo[👨‍💼 MongoDBUserRepository]
FileSystem[📁 FileSystemStorage] ChromaDBStore[🔗 ChromaDBVectorStore]
S3Storage[🪣 S3ObjectStorage]
end end
%% Configuration & Logging %% Configuration & Logging
@ -53,60 +67,73 @@ graph TB
Logger[📋 Logging System] Logger[📋 Logging System]
end end
end end
%% External Systems %% External Systems
subgraph "External Systems" subgraph "External Systems"
MongoDBServer[(🗄️ MongoDB Database)] MongoDBServer[(🗄️ MongoDB Database)]
ChromaDBServer[(🔗 ChromaDB Vector DB)] ChromaDBServer[(🔗 ChromaDB Vector DB)]
FileStorage[(📁 File System)] S3Bucket[(🪣 S3 Bucket)]
ONNXModel[🧠 SFace ONNX Model] ONNXModel[🧠 SFace ONNX Model]
RedisOrMongo[(📊 Redis/Mongo for Task Status)]
end end
%% Service Dependencies %% Service Dependencies (исполняются внутри воркеров)
FaceWorkerPool --> FaceService
FaceService --> RetinaFace FaceService --> RetinaFace
FaceService --> SFaceRec FaceService --> SFaceRec
FaceService --> FaceRepo FaceService --> FaceRepo
FaceService --> VectorStore FaceService --> VectorStore
FaceService --> FileSystem FaceService --> ObjectStorageIface
%% Repository Implementations %% Repository Implementations
FaceRepo -.->|implements| MongoDB FaceRepo -.->|implements| MongoDBRepo
VectorStore -.->|implements| ChromaDB VectorStore -.->|implements| ChromaDBStore
UserRepoIface -.->|implements| MongoUserRepo
ObjectStorageIface -.->|implements| S3Storage
%% External Connections %% External Connections
MongoDB --> MongoDBServer MongoDBRepo --> MongoDBServer
ChromaDB --> ChromaDBServer MongoUserRepo --> MongoDBServer
FileSystem --> FileStorage ChromaDBStore --> ChromaDBServer
S3Storage --> S3Bucket
SFaceRec --> ONNXModel SFaceRec --> ONNXModel
TaskStatusRepo --> RedisOrMongo
%% Use Case Dependencies
RegisterUC --> UserRepo[👨‍💼 MongoDBUserRepository] %% Use Case Dependencies (чтение пользователей/статусов)
VerifyUC --> UserRepo RegisterUC --> MongoUserRepo
IdentifyUC --> UserRepo VerifyUC --> MongoUserRepo
UserRepo --> MongoDBServer IdentifyUC --> MongoUserRepo
%% Logging Dependencies %% Logging Dependencies
RetinaFace -.-> Logger RetinaFace -.-> Logger
SFaceRec -.-> Logger SFaceRec -.-> Logger
FaceService -.-> Logger FaceService -.-> Logger
FaceWorkerPool -.-> Logger
TaskPublisher -.-> Logger
%% Configuration Dependencies %% Configuration Dependencies
FaceService -.-> Config FaceService -.-> Config
MongoDB -.-> Config MongoDBRepo -.-> Config
ChromaDB -.-> Config MongoUserRepo -.-> Config
ChromaDBStore -.-> Config
S3Storage -.-> Config
RabbitMQ -.-> Config
TaskStatusRepo -.-> Config
%% Styling %% Styling
classDef presentation fill:#e1f5fe classDef presentation fill:#e1f5fe
classDef application fill:#f3e5f5 classDef application fill:#f3e5f5
classDef domain fill:#e8f5e8 classDef domain fill:#e8f5e8
classDef infrastructure fill:#fff3e0 classDef infrastructure fill:#fff3e0
classDef external fill:#ffebee classDef external fill:#ffebee
classDef scalability fill:#ede7f6
class GradioUI,GradioApp presentation class GradioUI,GradioApp presentation
class RegisterUC,VerifyUC,IdentifyUC,FaceService application class RegisterUC,VerifyUC,IdentifyUC,TaskPublisher,TaskStatusRepo application
class Face,User,VResult,IResult,FaceRepo,VectorStore domain class Face,User,VResult,IResult,FaceRepo,VectorStore,UserRepoIface,ObjectStorageIface,FaceService domain
class RetinaFace,SFaceRec,MongoDB,ChromaDB,FileSystem,Config,Logger,UserRepo infrastructure class RetinaFace,SFaceRec,MongoDBRepo,ChromaDBStore,S3Storage,Config,Logger,MongoUserRepo infrastructure
class MongoDBServer,ChromaDBServer,FileStorage,ONNXModel external class MongoDBServer,ChromaDBServer,S3Bucket,ONNXModel,RedisOrMongo external
class RabbitMQ,FaceWorkerPool scalability
``` ```
## Architecture Overview ## Architecture Overview

Loading…
Cancel
Save