Refactor settings system and improve context initialization

Backend:
- Add type validation and coercion for settings API
- Implement SettingStorage and SettingType in registry
- Improve CRUD operations for settings

Frontend:
- Refactor Theme, Language, Sidebar, ViewMode contexts
- Simplify admin components (GeneralTab, SettingsTab, UsersTab)
- Add new settings endpoints to API client
- Improve App initialization flow

Infrastructure:
- Update Dockerfile and docker-compose.yml
- Add .dockerignore
- Update Makefile and README

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-15 18:14:47 +01:00
parent 04a0fe4b27
commit ba53e0eff0
31 changed files with 4277 additions and 374 deletions

View File

@@ -138,16 +138,17 @@ async def startup_event():
# Seed default settings from registry
from sqlalchemy.orm import Session
from app import crud
from app.core.settings_registry import get_database_defaults
from app.core.settings_registry import SettingScope, get_database_settings
with Session(engine) as db:
# Get all database settings with defaults from registry
default_settings = get_database_defaults()
# Seed only GLOBAL database settings with defaults from registry
for setting_def in get_database_settings():
if setting_def.scope != SettingScope.GLOBAL:
continue
for key, value in default_settings.items():
if crud.settings.get_setting(db, key) is None:
logger.info(f"Seeding default setting: {key}={value}")
crud.settings.update_setting(db, key, value)
if crud.settings.get_setting(db, setting_def.key) is None:
logger.info(f"Seeding default setting: {setting_def.key}={setting_def.default}")
crud.settings.update_setting(db, setting_def.key, setting_def.default)
# Shutdown event