|
|
|
|
@ -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
|
|
|
|
|
|