Skip to content

Commit 9205ec1

Browse files
committed
docs: add Invoice Hub UI roadmap designs
1 parent 1aaf5e8 commit 9205ec1

3 files changed

Lines changed: 1129 additions & 0 deletions
Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
# Invoice Hub 0.1.5 设置中心与邮箱闭环设计
2+
3+
## 目标
4+
5+
把当前分散且尺寸偏小的设置对话框升级为桌面工作型设置中心,使办公人员能够在一个稳定入口中查看、添加、编辑、启停、测试和删除多个邮箱账户,同时不破坏既有账户身份、扫描范围和授权码隐私语义。
6+
7+
0.1.5 只完成设置中心框架与邮箱接入闭环。AI 配置保留当前可用入口,但完整信息架构和体验升级归入 0.1.6。
8+
9+
## 设计原则
10+
11+
1. 延续 0.1.4 的白底、浅灰边框、蓝色主操作和紧凑桌面密度。
12+
2. `email_accounts` 是邮箱配置主数据源;legacy `email``imap``search` 只是兼容投影。
13+
3. `mailbox_key` 是已保存账户的稳定身份,不随 provider、邮箱地址或显示名称改变而重新生成。
14+
4. 已保存账户与新建草稿是两种状态:已保存账户不得被静默改写,未保存草稿才允许 provider 后缀辅助修正。
15+
5. 授权码只进入系统凭据存储,不回显、不写配置、不进入日志或错误摘要。
16+
6. Outlook、Hotmail、Live 和 Microsoft 365 继续明确提示需要 OAuth2/XOAUTH2;0.1.5 不伪装成普通 IMAP 可用。
17+
7. 删除邮箱配置不删除已经导入的发票、附件、报销组或历史记录。
18+
19+
## 方案选择
20+
21+
- 方案 A:邮箱、AI、系统设置分别使用独立弹窗。改动较小,但入口分散且组件重复。
22+
- 方案 B:统一设置中心,邮箱和 AI 使用独立页面与向导。信息边界清楚、组件可复用,采用此方案。
23+
- 方案 C:把设置全部放进主窗口导航。空间充足,但会打断审核主路径并扩大 0.1.5 范围。
24+
25+
## 版本边界
26+
27+
### 包含
28+
29+
- 统一设置中心工作对话框。
30+
- 邮箱账户列表、空状态、启用/禁用、编辑和删除。
31+
- 三步邮箱接入向导。
32+
- 账户级扫描范围、IMAP 参数、连接测试和保存门禁。
33+
- 保存账户与新建草稿的明确状态边界。
34+
- 授权码安全状态、错误分类和可恢复操作。
35+
- 0.1.4 通用组件在设置场景中的复用和扩展。
36+
37+
### 不包含
38+
39+
- Outlook OAuth2/XOAUTH2 实现。
40+
- 新邮件协议、云端账户系统或服务器端同步平台。
41+
- 定时任务调度器;“同步频率”仅在存在真实调度能力后加入。
42+
- 邮件识别规则编辑器。
43+
- AI 配置中心重构。
44+
- 删除已导入业务数据。
45+
46+
## 统一设置中心框架
47+
48+
### 尺寸
49+
50+
主设计基准仍为 1920×1080,设置中心使用 1120×720 工作型模态对话框:
51+
52+
| 区域 | 尺寸 |
53+
|---|---:|
54+
| 标题栏 | 56 px 高 |
55+
| 左侧设置导航 | 184 px 宽 |
56+
| 内容区 | 自适应,最小 760 px 宽 |
57+
| 固定底栏 | 64 px 高 |
58+
| 内容边距 | 20 px |
59+
| 列表行 | 64–72 px 高 |
60+
61+
设置中心不是传统小表单。左侧导航、右侧内容和固定底栏同时可见,内容区内部按页面独立滚动,整个对话框不得出现横向滚动。
62+
63+
### 导航
64+
65+
0.1.5 只显示真实可用入口:
66+
67+
```text
68+
邮箱账户
69+
AI 配置(保留当前能力,标记“将在 0.1.6 优化”)
70+
系统设置(保留现有字段)
71+
数据与备份(仅在现有能力可用时显示)
72+
关于
73+
```
74+
75+
不得为了视觉完整加入没有内容或没有保存闭环的页面。
76+
77+
### 固定底栏
78+
79+
- 左侧:当前页面安全提示或“恢复默认设置”,仅在当前页面有对应能力时显示。
80+
- 右侧:取消、保存并关闭。
81+
- 页面内部已即时保存的账户操作不重复依赖全局保存;存在未保存向导草稿时,关闭设置中心必须提示保存、放弃或取消。
82+
83+
## 邮箱账户页
84+
85+
### 页面结构
86+
87+
```text
88+
页面标题 + 说明 新增邮箱账户
89+
账户状态摘要:启用 N / 已配置 N / 需要处理 N
90+
邮箱账户列表
91+
安全与隐私说明
92+
```
93+
94+
账户状态摘要只显示数量,不使用营销式大卡片。
95+
96+
### 账户行
97+
98+
每个 `ConfigListRow` 显示:
99+
100+
- 账户显示名称与掩码邮箱地址。
101+
- provider 徽章。
102+
- 启用/禁用状态。
103+
- 扫描范围,例如“最近 3 个月”。
104+
- 凭据状态:已安全保存、未配置、需要重新验证。
105+
- 最近同步时间;没有真实时间时显示“尚未同步”,不伪造成功状态。
106+
- 主要动作:编辑。
107+
- 次要菜单:启用/禁用、删除。
108+
109+
列表默认按启用账户优先、最近编辑时间次序排列。账户数量较多时只滚动列表,不分页。
110+
111+
### 空状态
112+
113+
无账户时显示支持的 provider、授权码安全说明和“新增邮箱账户”。不显示空表格,也不自动创建占位账户。
114+
115+
### 启用与禁用
116+
117+
- 至少保留一个可扫描的启用账户;禁用最后一个启用账户必须阻止并说明原因。
118+
- Outlook-like 保存记录不计入“可扫描启用账户”。
119+
- 切换成功后立即更新 legacy 投影到第一个可扫描启用账户。
120+
- 失败时恢复开关原状态并显示具体原因。
121+
122+
### 删除
123+
124+
删除确认必须明确:删除账户配置、系统凭据和扫描状态,但保留已导入发票、附件和报销数据。删除后如果还有启用账户,重新选择第一个可扫描账户作为兼容投影。
125+
126+
## 三步邮箱接入向导
127+
128+
向导使用 760×560 `WizardDialog`。步骤头 52 px、主体自适应、底栏 64 px,三步高度保持稳定。
129+
130+
### 第一步:选择邮箱并填写账户信息
131+
132+
provider:QQ、163、126、Gmail、Outlook、自定义 IMAP。
133+
134+
字段:
135+
136+
- 账户显示名称。
137+
- 完整邮箱地址。
138+
- 扫描范围:最近 1、3、6、12 个月。
139+
- 自定义 IMAP 时显示 server、port、SSL。
140+
141+
交互规则:
142+
143+
- 新建草稿可以根据 provider 辅助改写已输入的已知邮箱后缀。
144+
- 一旦加载已保存账户,provider 切换不得静默改写邮箱地址。
145+
- 已保存账户始终按 `mailbox_key` 编辑,即使 provider 或地址被用户显式修改。
146+
- 已知 provider 与邮箱域不一致时禁止下一步,并建议修改地址或使用自定义 IMAP。
147+
- Outlook-like 选择后显示 OAuth2 能力边界,禁用下一步和普通 IMAP 测试。
148+
149+
### 第二步:授权码与连接测试
150+
151+
字段和状态:
152+
153+
- `SecureInput`:未配置、已安全保存、重新输入将覆盖。
154+
- 授权码帮助入口,说明“不是邮箱登录密码”。
155+
- 连接测试结果区。
156+
157+
连接测试顺序:
158+
159+
1. 校验 provider、邮箱域、自定义服务器和端口。
160+
2. 确认新授权码或可用的已保存凭据。
161+
3. 建立 IMAP 连接并验证身份。
162+
4. 验证目标文件夹可读取。
163+
5. 返回成功或可操作错误,不显示原始异常和敏感连接参数。
164+
165+
地址、provider、server、port 或 SSL 改变后进入 `dirty-sensitive`,之前的测试成功立即失效。只有重新测试成功后才允许保存这些敏感变更。
166+
167+
### 第三步:复核并保存
168+
169+
复核内容:账户名称、掩码地址、provider、IMAP 主机、扫描范围、凭据状态和测试时间。
170+
171+
动作:
172+
173+
- 上一步。
174+
- 取消。
175+
- 保存账户。
176+
- 保存后立即同步,仅在真实同步入口可调用时显示,并默认不勾选。
177+
178+
保存成功后清空授权码输入,回到账户列表并高亮该 `mailbox_key`
179+
180+
## 账户状态机
181+
182+
| 状态 | 含义 | 允许动作 |
183+
|---|---|---|
184+
| `new-draft` | 未绑定已保存账户 | provider 辅助、测试、取消 |
185+
| `saved-clean` | 已加载且未修改 | 测试、启停、删除 |
186+
| `saved-dirty-safe` | 只改名称或扫描范围 | 直接保存、取消 |
187+
| `saved-dirty-sensitive` | 地址、provider 或 IMAP 参数改变 | 重新输入凭据、重新测试、取消 |
188+
| `testing` | 正在连接 | 取消测试,不允许重复提交 |
189+
| `tested-ok` | 当前敏感字段测试成功 | 保存 |
190+
| `test-failed` | 测试失败 | 修改、重试、取消 |
191+
| `unsupported` | Outlook/OAuth2 边界 | 查看说明、返回 |
192+
193+
测试结果必须绑定字段指纹;字段变化后不得继续复用旧测试成功状态。
194+
195+
## 错误与反馈
196+
197+
| 类型 | 文案目标 | 恢复动作 |
198+
|---|---|---|
199+
| 域名不一致 | 指明邮箱类型与后缀不一致 | 修改地址 / 选自定义 IMAP |
200+
| 服务器缺失 | 指明缺少 server 或无效端口 | 聚焦对应字段 |
201+
| 网络不可达 | 说明无法连接主机 | 检查网络 / 重试 |
202+
| 认证失败 | 说明授权码或 IMAP 权限可能无效 | 重新输入授权码 / 查看帮助 |
203+
| OAuth2 必需 | 明确不是普通密码错误 | 返回 / 查看支持说明 |
204+
| 敏感变更未重测 | 说明哪些字段变化导致测试失效 | 重新测试 |
205+
| 保存失败 | 保留草稿和输入 | 重试 / 取消 |
206+
207+
Toast 只用于成功和无需决策的短反馈;认证、删除、未保存草稿和不可逆操作使用页面错误或确认对话框。
208+
209+
## 安全与隐私
210+
211+
- 已保存授权码永不回填;只显示枚举状态。
212+
- Secret 输入禁止复制和剪切,允许粘贴。
213+
- 配置保存必须剥离 `auth_code``password``token``api_key`
214+
- 错误、日志、测试摘要和剪贴板不得包含 secret。
215+
- 账户地址可以掩码展示,但编辑时显示完整地址;绝对路径和系统凭据标识不显示。
216+
217+
## 通用组件复用
218+
219+
复用 0.1.4:`DialogShell``ActionButton``StatusBadge``SectionCard``StatePanel``ToastHost`
220+
221+
0.1.5 新增:
222+
223+
| 组件 | 稳定职责 |
224+
|---|---|
225+
| `SettingsLayout` | 设置导航、内容区和固定底栏 |
226+
| `ConfigListRow` | 配置主信息、状态、辅助信息和动作 |
227+
| `WizardDialog` | 稳定步骤头、主体和底栏 |
228+
| `SecureInput` | Secret 输入、安全状态和覆盖语义 |
229+
| `SafetyNotice` | 安全、隐私和不可逆操作说明 |
230+
231+
组件只接收 view state 和发出用户意图,不直接读写配置、凭据或数据库。
232+
233+
## 键盘与可访问性
234+
235+
- `Tab` 顺序:设置导航 → 页面标题动作 → 列表 → 页面底栏。
236+
- 向导中 `Enter` 只触发当前可用的下一步或测试,不越过校验;`Esc` 先处理未保存草稿。
237+
- 状态不能只靠颜色,必须有文字和图标。
238+
- 焦点边框清晰,Secret 的安全限制不能阻止键盘粘贴。
239+
- 125% 和 150% Windows 缩放下不得裁切字段、按钮或错误说明。
240+
241+
## 响应式规则
242+
243+
- 1920×1080:1120×720 完整展开。
244+
- 1440×900:对话框最大化到可用区域,左导航可压缩到 160 px。
245+
- 1366×768:对话框使用屏幕可用区域,导航折叠为图标加 tooltip,辅助说明可折叠;不得横向滚动。
246+
- 小尺寸只压缩间距和辅助说明,不隐藏保存、取消、测试、编辑和删除等关键动作。
247+
248+
## 验收标准
249+
250+
1. 多账户按 `mailbox_key` 精确编辑,provider 改变不会产生重复身份。
251+
2. 已保存账户不会被 provider 切换静默改写地址;只有新草稿允许后缀辅助。
252+
3. 敏感字段改变后必须重新输入可用凭据并测试成功。
253+
4. Outlook-like 账户在下一步、测试、保存和同步入口均保持一致阻断。
254+
5. 授权码不出现在配置、日志、错误、摘要或剪贴板中。
255+
6. 禁用最后一个可扫描账户被阻止;删除账户不影响已导入业务数据。
256+
7. 1920×1080、1440×900 和 1366×768 均能完成新增、编辑、测试、启停和删除。
257+
8. 设置中心无空壳页面、无横向滚动、无依赖颜色的唯一状态表达。

0 commit comments

Comments
 (0)