generated from john/python-template
54 lines
3.2 KiB
Markdown
54 lines
3.2 KiB
Markdown
# Settings Page Contract
|
|
|
|
## Purpose
|
|
|
|
Settings manages installation-local registries, safe runtime .env settings, and editable text assets from one route.
|
|
|
|
## Route
|
|
|
|
| Route | Purpose |
|
|
| --- | --- |
|
|
| `/settings` | Manage Runtime Settings, Document Types, Person Roles, Tags, Prompts, Home Page Text, and Maintenance runs. |
|
|
|
|
## Behavior
|
|
|
|
- The page title is **Settings**.
|
|
- Configuration surfaces are grouped as tabs:
|
|
- **Document Types**
|
|
- **Person Roles**
|
|
- **Tags**
|
|
- **Prompts**
|
|
- **Home Page Text**
|
|
- **Maintenance**
|
|
- **Runtime Settings**
|
|
- Runtime Settings exposes an allowlisted set of non-secret fields synchronized with `Settings` model fields except excluded secret/unsafe fields.
|
|
- Runtime Settings is rendered as a compact two-column editor (**Setting**, **Value**) in a centered, narrower responsive container.
|
|
- Runtime Settings persists changes to the resolved runtime env file, validates by constructing a `Settings` instance, and reports validation failures through the shared UI error presenter.
|
|
- The write target resolution order is: explicit function override (tests/tools), `RUNTIME_SETTINGS_ENV_FILE` environment variable (deployment override), then `Settings.model_config.env_file` (default `.env`).
|
|
- Runtime Settings changes require application restart to take effect.
|
|
- Runtime Settings renders a host-side restart command (`docker compose -f docker-compose.production.yml up -d --force-recreate app worker`) so operators can apply saved values without granting Docker control to the app container.
|
|
- Runtime Settings includes an explicit "Other settings not shown here" markdown table listing:
|
|
- secrets (`OPENROUTER_API_KEY`, `DATABASE__PASSWORD`)
|
|
- high-risk database connection settings (`DATABASE__DRIVER`, `DATABASE__PATH`, `DATABASE__HOST`, `DATABASE__PORT`, `DATABASE__DATABASE`, `DATABASE__USER`)
|
|
and deployment/helper keys (`POSTGRES_*`, `CLOUDFLARE_TUNNEL_TOKEN`, `BACKUP_DIR`, `APP_DATA_BACKUP_DIR`, `UPLOADS_BACKUP_DIR`, `BACKUP_RETENTION_DAYS`, `SYNOLOGY_BACKUP_DIR`, `RUNTIME_SETTINGS_ENV_FILE`, `ENV_FILE`, `COMPOSE_FILE`), and directs edits for those keys to the resolved runtime env file path.
|
|
- Document Types, Person Roles, and Tags support Add/Edit/Delete with existing guardrails.
|
|
- Prompts exposes only `transcribe_document.md` for editing and restore-from-backup.
|
|
- Home Page Text edits the same Markdown content rendered on `/homepage`.
|
|
- Maintenance provides queue-backed **Run Backup** and **Run Storage Reconciliation** actions.
|
|
- Maintenance run history shows job type, status, started/finished timestamps, duration, summary, and log view/download actions.
|
|
- Maintenance actions enqueue work and signal the worker; the page itself does not execute shell commands directly.
|
|
|
|
## Acceptance Checklist
|
|
|
|
- `/ui/settings` renders all seven tabs.
|
|
- Registry and prompt workflows keep existing validation and error handling.
|
|
- Runtime Settings excludes secret fields and rejects invalid values.
|
|
- Saving Home Page Text persists content for the homepage view.
|
|
|
|
## Implementation Anchors
|
|
|
|
- `src/transcription/ui/pages/settings_page.py`
|
|
- `src/transcription/ui/runtime_settings_store.py`
|
|
- `src/transcription/ui/homepage_store.py`
|
|
- `tests/ui/test_pages_registration.py`
|