Update 'architecture-diagram.md'

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

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

Loading…
Cancel
Save