feat(ui): SoC Refactoring & Config Validation

- Theme Context ausgelagert (ThemeContext.tsx + useDarkMode.ts)
- Config Validation mit TMDB-API-Key Pflicht (config_validation.py)
- Cache Key Centralization (cache/keys.py)
- CD-Ripping mit abcde implementiert (Worker)
- Docker Compose mit Healthchecks & LOG_LEVEL
- ROADMAP.md & SAVEPOINT.md aktualisiert
This commit is contained in:
Hitonabi
2026-07-22 16:38:19 +02:00
parent e710151c91
commit 95c1f9b105
18 changed files with 406 additions and 104 deletions
+9 -2
View File
@@ -14,6 +14,7 @@ import time
from fastapi.security import OAuth2PasswordBearer
from config import settings
from config_validation import validate_config, ConfigValidationError
from cache import init_cache, set
from auth import create_access_token, create_refresh_token, decode_token, is_blacklisted
from ratelimit import check_rate_limit, get_rate_limit_remaining, validate_api_key
@@ -36,8 +37,13 @@ sse_connections: List = []
@app.on_event("startup")
async def startup_event():
"""Initialisiere Cache beim Start."""
"""Initialisiere Cache beim Start und validiere Konfiguration."""
init_cache()
try:
validate_config()
except ConfigValidationError as e:
print(f"⚠️ Konfigurations-Warnung: {e}")
# Middleware für Rate-Limiting
@@ -189,8 +195,9 @@ async def lookup_metadata(request: MetadataLookupRequest):
@app.post("/metadata/confirm")
async def confirm_metadata(title: str, year: Optional[int] = None, metadata: Dict = None):
"""Bestätige Metadaten."""
from cache.keys import generate_confirmed_key
# In Cache speichern
cache_key = f"confirmed:{title}:{year}"
cache_key = generate_confirmed_key(title, year)
set(cache_key, {"title": title, "year": year, "metadata": metadata or {}})
return {"status": "confirmed", "key": cache_key}