docker part 1
This commit is contained in:
23
docs/diagrams/README.md
Normal file
23
docs/diagrams/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Architecture Diagrams
|
||||
|
||||
This directory contains architecture diagram source files for the Aniworld documentation.
|
||||
|
||||
## Diagrams
|
||||
|
||||
### System Architecture (Mermaid)
|
||||
|
||||
See [system-architecture.mmd](system-architecture.mmd) for the system overview diagram.
|
||||
|
||||
### Rendering
|
||||
|
||||
Diagrams can be rendered using:
|
||||
|
||||
- Mermaid Live Editor: https://mermaid.live/
|
||||
- VS Code Mermaid extension
|
||||
- GitHub/GitLab native Mermaid support
|
||||
|
||||
## Formats
|
||||
|
||||
- `.mmd` - Mermaid diagram source files
|
||||
- `.svg` - Exported vector graphics (add when needed)
|
||||
- `.png` - Exported raster graphics (add when needed)
|
||||
44
docs/diagrams/download-flow.mmd
Normal file
44
docs/diagrams/download-flow.mmd
Normal file
@@ -0,0 +1,44 @@
|
||||
%%{init: {'theme': 'base'}}%%
|
||||
sequenceDiagram
|
||||
participant Client
|
||||
participant FastAPI
|
||||
participant AuthMiddleware
|
||||
participant DownloadService
|
||||
participant ProgressService
|
||||
participant WebSocketService
|
||||
participant SeriesApp
|
||||
participant Database
|
||||
|
||||
Note over Client,Database: Download Flow
|
||||
|
||||
%% Add to queue
|
||||
Client->>FastAPI: POST /api/queue/add
|
||||
FastAPI->>AuthMiddleware: Validate JWT
|
||||
AuthMiddleware-->>FastAPI: OK
|
||||
FastAPI->>DownloadService: add_to_queue()
|
||||
DownloadService->>Database: save_item()
|
||||
Database-->>DownloadService: item_id
|
||||
DownloadService-->>FastAPI: [item_ids]
|
||||
FastAPI-->>Client: 201 Created
|
||||
|
||||
%% Start queue
|
||||
Client->>FastAPI: POST /api/queue/start
|
||||
FastAPI->>AuthMiddleware: Validate JWT
|
||||
AuthMiddleware-->>FastAPI: OK
|
||||
FastAPI->>DownloadService: start_queue_processing()
|
||||
|
||||
loop For each pending item
|
||||
DownloadService->>SeriesApp: download_episode()
|
||||
|
||||
loop Progress updates
|
||||
SeriesApp->>ProgressService: emit("progress_updated")
|
||||
ProgressService->>WebSocketService: broadcast_to_room()
|
||||
WebSocketService-->>Client: WebSocket message
|
||||
end
|
||||
|
||||
SeriesApp-->>DownloadService: completed
|
||||
DownloadService->>Database: update_status()
|
||||
end
|
||||
|
||||
DownloadService-->>FastAPI: OK
|
||||
FastAPI-->>Client: 200 OK
|
||||
82
docs/diagrams/system-architecture.mmd
Normal file
82
docs/diagrams/system-architecture.mmd
Normal file
@@ -0,0 +1,82 @@
|
||||
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4a90d9'}}}%%
|
||||
flowchart TB
|
||||
subgraph Clients["Client Layer"]
|
||||
Browser["Web Browser<br/>(HTML/CSS/JS)"]
|
||||
CLI["CLI Client<br/>(Main.py)"]
|
||||
end
|
||||
|
||||
subgraph Server["Server Layer (FastAPI)"]
|
||||
direction TB
|
||||
Middleware["Middleware<br/>Auth, Rate Limit, Error Handler"]
|
||||
|
||||
subgraph API["API Routers"]
|
||||
AuthAPI["/api/auth"]
|
||||
AnimeAPI["/api/anime"]
|
||||
QueueAPI["/api/queue"]
|
||||
ConfigAPI["/api/config"]
|
||||
SchedulerAPI["/api/scheduler"]
|
||||
HealthAPI["/health"]
|
||||
WebSocketAPI["/ws"]
|
||||
end
|
||||
|
||||
subgraph Services["Services"]
|
||||
AuthService["AuthService"]
|
||||
AnimeService["AnimeService"]
|
||||
DownloadService["DownloadService"]
|
||||
ConfigService["ConfigService"]
|
||||
ProgressService["ProgressService"]
|
||||
WebSocketService["WebSocketService"]
|
||||
end
|
||||
end
|
||||
|
||||
subgraph Core["Core Layer"]
|
||||
SeriesApp["SeriesApp"]
|
||||
SerieScanner["SerieScanner"]
|
||||
SerieList["SerieList"]
|
||||
end
|
||||
|
||||
subgraph Data["Data Layer"]
|
||||
SQLite[(SQLite<br/>aniworld.db)]
|
||||
ConfigJSON[(config.json)]
|
||||
FileSystem[(File System<br/>Anime Directory)]
|
||||
end
|
||||
|
||||
subgraph External["External"]
|
||||
Provider["Anime Provider<br/>(aniworld.to)"]
|
||||
end
|
||||
|
||||
%% Client connections
|
||||
Browser -->|HTTP/WebSocket| Middleware
|
||||
CLI -->|Direct| SeriesApp
|
||||
|
||||
%% Middleware to API
|
||||
Middleware --> API
|
||||
|
||||
%% API to Services
|
||||
AuthAPI --> AuthService
|
||||
AnimeAPI --> AnimeService
|
||||
QueueAPI --> DownloadService
|
||||
ConfigAPI --> ConfigService
|
||||
SchedulerAPI --> AnimeService
|
||||
WebSocketAPI --> WebSocketService
|
||||
|
||||
%% Services to Core
|
||||
AnimeService --> SeriesApp
|
||||
DownloadService --> SeriesApp
|
||||
|
||||
%% Services to Data
|
||||
AuthService --> ConfigJSON
|
||||
ConfigService --> ConfigJSON
|
||||
DownloadService --> SQLite
|
||||
AnimeService --> SQLite
|
||||
|
||||
%% Core to Data
|
||||
SeriesApp --> SerieScanner
|
||||
SeriesApp --> SerieList
|
||||
SerieScanner --> FileSystem
|
||||
SerieScanner --> Provider
|
||||
|
||||
%% Event flow
|
||||
ProgressService -.->|Events| WebSocketService
|
||||
DownloadService -.->|Progress| ProgressService
|
||||
WebSocketService -.->|Broadcast| Browser
|
||||
Reference in New Issue
Block a user