# T020 — Scout placeholder + Settings (datasource) > Status: `todo` > Milestone: `M9` > Est. change: `~120 lines` ## Goal Scout 占位無假成功;Settings 可切 `mock|live`(live 可提示未接)與顯示 mock 帳密說明。 ## Depends on - T006, T007 ## Inputs - Spec §4.7、§4.8 ## Outputs ### 程式變更 | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/pages/ScoutPage.tsx` | edit | EmptyState 文案 | | `apps/web/src/pages/SettingsPage.tsx` | edit | datasource toggle | | storage `harbor.datasource` | edit | | ### 行為變更 - Scout 無 submit 成功操作 - 切 live 不崩潰(可顯示「尚未接上 API」) ## Out of scope - 海巡功能 ## Acceptance - [ ] Scout 符合占位 - [ ] Settings 可切換並重整後仍在 - [ ] `npm run build` 通過 ```bash cd apps/web && npm run build ```