From 00edd6bff8819ade2115db7b6c96ff4aea0ce884 Mon Sep 17 00:00:00 2001 From: hyungi Date: Sat, 23 May 2026 03:42:39 +0000 Subject: [PATCH] feat(ask): backend selector 4 options with device toggle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-3 of DS AI routing policy (2026-05-23, see plan ~/.claude/plans/document-server-ai-cheeky-reddy.md + memory project_document_server_ai_routing_policy). 기존 BackendSelector (PR-DocSrv-Web-Ask-Selector-1, 2 옵션 default qwen-macbook) 확장 — 4 옵션 + DeviceToggle inline. UI 변경 (frontend/src/routes/ask/+page.svelte): - BackendChoice = auto | mac-mini-default | qwen-macbook | claude-cloud (기존 default 는 legacy alias, auto 또는 mac-mini-default 로 자동 매핑). - select 4 옵션 (Auto router / Mac mini default / This device / Claude Cloud) + tooltip. - DeviceToggle (checkbox 'This is M5 Max') inline — localStorage ds_device_self_label = macbook-m5-max | null. mount 시 복원. - This device 옵션 disabled state = !isMacBookM5Max (토글 off 시 grey-out). 토글 off 시 qwen-macbook 선택돼 있었으면 auto 복귀. - Claude Cloud 옵션 disabled state = !CLOUD_DEV_ENABLED (build-time flag VITE_ENABLE_CLOUD_BACKEND_DEV, default false). 운영 토글 불가 — 후속 PR DS runtime feature flag API 로 migrate 예정. - friendlyErrorMessage(reason) — 503 error_reason 매핑 (macbook_unavailable / provider_not_configured / router_* / upstream_*). - retryWithDefault → retryWithMacMiniDefault 명명 정정. - parseBackend backward-compat: default / gemma-macmini → mac-mini-default. source IP 의존 0 (PR-0 round 2 발견: caddy 2-hop + X-Forwarded-For 미설정 → DS 가 보는 source IP = LAN gateway, 신뢰 불가). 사용자 명시 토글 + localStorage 방식 채택 (Q3=C). Closure (build + bundle string + lint): - frontend build PASS (SvelteKit/TS syntax + svelte compile 모두 OK). - 컴파일된 bundle 에 9 핵심 string 박혀있음 (mac-mini-default / qwen-macbook / claude-cloud / Auto router / This is M5 Max / ds_device_self_label / provider_not_configured / This device / Cloud backend not configured). - lint:tokens 본 PR 변경 위반 0 (기존 62 stale debt 는 별 chore PR-DocSrv-Frontend-Token-Cleanup-1). Backup: ~/.local/share/ds-routing-pr2-backups/20260523/ ask-page.svelte.pre-pr3. 선행: PR-1 (llm-router alias scaffold) + PR-2 (RouterBackend dispatcher, refactor commit bcf644f) closed. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/src/routes/ask/+page.svelte | 138 ++++++++++++++++++++++----- 1 file changed, 113 insertions(+), 25 deletions(-) diff --git a/frontend/src/routes/ask/+page.svelte b/frontend/src/routes/ask/+page.svelte index 17cb790..377e116 100644 --- a/frontend/src/routes/ask/+page.svelte +++ b/frontend/src/routes/ask/+page.svelte @@ -1,18 +1,24 @@