File size: 1,062 Bytes
990895d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""Authenticated settings status without exposing secrets.

Reports coach configuration state and durable data readiness.
"""

from fastapi import APIRouter, Depends, Request

from app.config import APP_VERSION
from app.deps import require_login
from app.models import ApiEnvelope, SettingsStatusData, ok

router = APIRouter(
    prefix="/api/settings",
    tags=["settings"],
    dependencies=[Depends(require_login)],
)


@router.get("/status", response_model=ApiEnvelope)
def settings_status(request: Request) -> dict[str, object]:
    """Return non-secret application and coach status."""

    settings = request.app.state.settings
    paths = request.app.state.paths
    data_ok = paths.root.is_dir() and paths.entries.exists() and paths.daily.exists()
    return ok(
        SettingsStatusData(
            app_name=settings.app_name,
            app_version=APP_VERSION,
            coach_configured=bool(settings.openrouter_api_key),
            model=settings.openrouter_model,
            data_ok=data_ok,
            env=settings.env,
        )
    )