[Feature] 设置页增加未保存修改提示
Author: ZhuLinsenCreated Jul 6, 2026Updated Aug 1, 2026
Labelsenhancement
功能描述 / Feature Description
希望 Web 设置页在存在未保存改动时提供更明显的保存提示,降低用户修改配置后忘记点击「保存配置」的概率。
当前设置页采用草稿编辑 + 显式保存模型,这对 LLM、通知、调度、密钥等系统配置是必要的,但用户在滚动页面、切换分类或离开设置页时,容易忽略顶部保存按钮,导致以为配置已经生效,实际仍使用旧 .env 配置。
使用场景 / Use Case
- 用户在
/settings修改自选股、LLM 模型、通知渠道、调度时间等配置后,切换到其他分类或离开页面。 - 设置项较多时,顶部「保存配置」按钮可能离当前视线较远,用户容易忘记保存。
- 用户下次运行分析或测试通知时发现配置没有生效,排查成本较高。
期望实现 / Proposed Solution
建议先做轻量但明确的「防忘保存」体验:
当存在未保存改动时,显示固定保存提示条,例如页面底部或顶部 sticky 区域。
- 展示
已修改 N 项。 - 提供「保存配置」和「放弃修改 / 重置」操作。
- 保存中、保存失败、保存成功状态沿用现有提示语义。
- 展示
当存在未保存改动时,用户刷新页面、关闭标签页或离开设置页前给出确认提示。
- 避免误触导致草稿丢失。
- 成功保存或重置后不再提示。
可选增强:在左侧设置分类导航展示未保存数量标记。
- 例如
AI 模型 · 2、系统 · 1。 - 帮助用户知道哪些分类还有未保存改动。
- 例如
保留现有显式保存语义,不把所有系统配置改成全局自动保存。
- LLM、通知、调度、密钥等配置经常需要成组修改,不适合把输入中间态写入
.env。 - 保存仍应经过现有校验、
config_version冲突检查和 runtime reload 逻辑。
- LLM、通知、调度、密钥等配置经常需要成组修改,不适合把输入中间态写入
备选方案 / Alternatives Considered
- 全局自动保存:体验上看似省心,但风险较高。设置保存会写
.env并可能触发运行时 reload;LLM、通知、调度、密钥等配置常常需要多字段一起修改,自动保存容易写入半成品配置。 - 仅增强顶部按钮:改动小,但用户滚动到页面中下部时仍可能看不到,防忘效果有限。
- 对低风险字段做局部自动保存:后续可以考虑,例如自选股或界面偏好;但本 issue 优先解决通用保存提示。
验收标准 / Acceptance Criteria
- 修改任意可编辑设置项后,页面能明显提示存在未保存改动。
- 点击保存成功后,未保存提示消失,原有成功/警告信息仍可见。
- 点击重置/放弃修改后,草稿恢复到已保存值,未保存提示消失。
- 存在未保存改动时刷新或离开设置页会提示用户确认。
- 不改变现有
.env写入、配置校验、敏感字段 mask、config_version冲突和 runtime reload 语义。 - 补充 Web 设置页相关测试,覆盖提示显示、保存后清除、重置后清除和离开确认逻辑。
相关信息 / Additional Context
- 是否愿意贡献代码实现 / Willing to implement: Yes, 可以后续提交 PR。
- 相关代码入口:
apps/dsa-web/src/hooks/useSystemConfig.ts、apps/dsa-web/src/pages/SettingsPage.tsx、apps/dsa-web/src/components/settings/SettingsCategoryNav.tsx。 - 该问题来自实际使用反馈:很多用户改完设置后会忘记保存。
Source: ZhuLinsen/daily_stock_analysis