feat: Fix vector indexing stability, add Gitea linking, enhance admin dashboard

This commit is contained in:
2025-12-07 18:42:38 +01:00
parent 7b300d1ba1
commit 9f2e599846
58 changed files with 12197 additions and 503 deletions

View File

@@ -77,11 +77,14 @@ async def home_index(req: Request, lang: str = None):
)
@router.get("/about", response_class=HTMLResponse)
async def home_about(req: Request):
async def home_about(req: Request, lang: str = None):
"""
About / Mission page.
"""
lang = req.session.get("lang", "de")
if lang is None:
lang = req.session.get("lang", "de")
req.session["lang"] = lang
translations = load_translations(lang)
return req.app.state.render(
@@ -93,29 +96,45 @@ async def home_about(req: Request):
)
@router.get("/crew", response_class=HTMLResponse)
async def home_crew(req: Request):
async def home_crew(req: Request, lang: str = None):
"""
Crew / Characters page.
"""
lang = req.session.get("lang", "de")
if lang is None:
lang = req.session.get("lang", "de")
req.session["lang"] = lang
translations = load_translations(lang)
characters = load_characters(lang)
# Load roles from central config (15 roles)
from services.config_loader import ConfigLoader
from services.localization import merge_role_localization
config = ConfigLoader.load_config()
# Merge localized content using service
characters = merge_role_localization(config.get('roles', {}), lang)
user = req.session.get("user")
return req.app.state.render(
req,
"home/crew.html",
deployment=deployment_config,
characters=characters,
roles=characters,
t=translations,
lang=lang
lang=lang,
user=user
)
@router.get("/hardware", response_class=HTMLResponse)
async def home_hardware(req: Request):
async def home_hardware(req: Request, lang: str = None):
"""
Hardware information page.
"""
lang = req.session.get("lang", "de")
if lang is None:
lang = req.session.get("lang", "de")
req.session["lang"] = lang
translations = load_translations(lang)
return req.app.state.render(
@@ -127,11 +146,14 @@ async def home_hardware(req: Request):
)
@router.get("/software", response_class=HTMLResponse)
async def home_software(req: Request):
async def home_software(req: Request, lang: str = None):
"""
Software information page.
"""
lang = req.session.get("lang", "de")
if lang is None:
lang = req.session.get("lang", "de")
req.session["lang"] = lang
translations = load_translations(lang)
return req.app.state.render(
@@ -143,11 +165,14 @@ async def home_software(req: Request):
)
@router.get("/impressum", response_class=HTMLResponse)
async def home_impressum(req: Request):
async def home_impressum(req: Request, lang: str = None):
"""
Impressum / Legal notice page.
"""
lang = req.session.get("lang", "de")
if lang is None:
lang = req.session.get("lang", "de")
req.session["lang"] = lang
translations = load_translations(lang)
return req.app.state.render(
@@ -159,11 +184,14 @@ async def home_impressum(req: Request):
)
@router.get("/datenschutz", response_class=HTMLResponse)
async def home_datenschutz(req: Request):
async def home_datenschutz(req: Request, lang: str = None):
"""
Privacy policy / Datenschutz page.
"""
lang = req.session.get("lang", "de")
if lang is None:
lang = req.session.get("lang", "de")
req.session["lang"] = lang
translations = load_translations(lang)
return req.app.state.render(