docs: add comprehensive documentation files
Added documentation for API, architecture, configuration, database, development guide, testing, and navigation. Includes helper scripts, diagrams, and guides for NFO files and migration.
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
|
||||
88
Docs/diagrams/system-architecture.mmd
Normal file
88
Docs/diagrams/system-architecture.mmd
Normal file
@@ -0,0 +1,88 @@
|
||||
%%{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"]
|
||||
SeriesCache["SeriesCache<br/>(In-Memory)"]
|
||||
SerieScanner["SerieScanner"]
|
||||
SerieList["SerieList"]
|
||||
end
|
||||
|
||||
subgraph Data["Data Layer"]
|
||||
SQLite[("SQLite<br/>aniworld.db")]
|
||||
ConfigJSON[(config.json)]
|
||||
FileSystem[(File System<br/>Anime Episodes)]
|
||||
LegacyFiles[("Legacy Files<br/>key/data<br/>(Deprecated)")]
|
||||
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 --> SeriesCache
|
||||
SeriesCache -.->|Cached Series| SQLite
|
||||
SeriesApp --> SerieScanner
|
||||
SeriesApp --> SerieList
|
||||
SerieScanner -->|Scan Episodes| FileSystem
|
||||
SerieScanner -->|Detect Series| SQLite
|
||||
SerieScanner -->|Migrate Legacy| LegacyFiles
|
||||
SerieScanner --> Provider
|
||||
|
||||
%% Event flow
|
||||
ProgressService -.->|Events| WebSocketService
|
||||
DownloadService -.->|Progress| ProgressService
|
||||
WebSocketService -.->|Broadcast| Browser
|
||||
Reference in New Issue
Block a user