附录 F: 边界条件目录
定义各功能的边界条件和处理规范
钱包管理
钱包数量
| 条件 | 限制 | 处理方式 |
|---|---|---|
| 最少钱包数 | 0 | 引导创建/导入 |
| 最大钱包数 | 100 | 提示达到上限 |
| 删除最后一个 | 允许 | 返回引导页 |
钱包名称
| 条件 | 限制 | 处理方式 |
|---|---|---|
| 最小长度 | 1 | 不允许空名称 |
| 最大长度 | 32 | 截断 + 提示 |
| 重复名称 | 允许 | 自动添加编号 |
| 特殊字符 | 允许 | emoji 等 |
助记词
| 条件 | 处理方式 |
|---|---|
| 12 词 | 支持 |
| 15 词 | 支持 |
| 18 词 | 支持 |
| 24 词 | 支持 |
| 其他词数 | 拒绝 + 提示 |
| 无效单词 | 提示具体位置 |
| 校验和错误 | 提示重新检查 |
转账
金额
| 条件 | 限制 | 处理方式 |
|---|---|---|
| 金额 = 0 | 不允许 | 提示必须大于 0 |
| 金额 < 最小单位 | 不允许 | 提示最小金额 |
| 金额 > 余额 | 不允许 | 提示余额不足 |
| 金额 = 余额 | 允许 | 提示将清空余额 |
| 金额精度 | 链决定 | 自动截断 + 提示 |
| 极大数值 | 验证 | 防止溢出 |
地址
| 条件 | 处理方式 |
|---|---|
| 空地址 | 禁用发送按钮 |
| 格式错误 | 实时提示 |
| 自己的地址 | 警告但允许 |
| 合约地址 | 警告 + 确认 |
| ENS 域名 | 解析后验证 |
| 跨链地址 | 拒绝 + 提示链不匹配 |
Gas/Fee
| 条件 | 处理方式 |
|---|---|
| Gas 估算失败 | 使用默认值 + 警告 |
| Gas 余额不足 | 提示充值 Gas |
| Gas 价格波动 | 交易前重新估算 |
| Gas 过低 | 警告可能失败 |
网络
请求超时
| 操作 | 超时时间 | 超时处理 |
|---|---|---|
| 余额查询 | 10s | 显示缓存 + 重试 |
| 交易广播 | 30s | 自动重试 |
| 交易确认 | 300s | 显示 pending |
| 链配置同步 | 15s | 使用本地配置 |
请求失败
| 失败类型 | 重试次数 | 重试间隔 |
|---|---|---|
| 网络错误 | 3 | 指数退避 |
| 服务器错误 (5xx) | 3 | 指数退避 |
| 客户端错误 (4xx) | 0 | 不重试 |
| 超时 | 2 | 固定间隔 |
节点切换
| 条件 | 处理方式 |
|---|---|
| 主节点不可用 | 切换备用节点 |
| 所有节点不可用 | 显示错误 + 离线模式 |
| 节点数据不一致 | 使用多数派 |
认证
图案锁
| 条件 | 限制 | 处理方式 |
|---|---|---|
| 最小长度 | 8 | 禁用确认按钮 |
| 最大长度 | 20 | 限制输入 |
| 连续错误 | 5 次 | 延迟 30s |
| 连续错误 | 10 次 | 锁定 24h |
生物识别
| 条件 | 处理方式 |
|---|---|
| 设备不支持 | 隐藏选项 |
| 用户未注册 | 引导设置 |
| 连续失败 3 次 | 强制图案锁 |
| 系统级锁定 | 提示设置中解锁 |
显示
金额显示
| 条件 | 显示方式 |
|---|---|
| 金额 = 0 | "0" |
| 金额 < 0.0001 | "< 0.0001" |
| 金额 >= 1B | 缩写 (1.23B) |
| 精度过长 | 截断 + 悬停显示完整 |
地址显示
| 场景 | 显示方式 |
|---|---|
| 列表项 | 0x1234...5678 |
| 详情页 | 完整地址 |
| 复制 | 完整地址 |
| 二维码 | 完整地址 |
时间显示
| 条件 | 显示方式 |
|---|---|
| < 1 分钟 | "刚刚" |
| < 1 小时 | "X 分钟前" |
| < 24 小时 | "X 小时前" |
| < 7 天 | "X 天前" |
| >= 7 天 | 具体日期 |
存储
缓存
| 数据类型 | 缓存大小限制 | 过期策略 |
|---|---|---|
| 余额 | 无限制 | 30s |
| 交易历史 | 100 条/地址 | 1h |
| 代币元数据 | 500 条 | 24h |
| 图片缓存 | 50MB | LRU |
本地存储
| 条件 | 处理方式 |
|---|---|
| 存储已满 | 清理缓存 + 提示 |
| 存储被清除 | 检测并提示恢复 |
| 数据损坏 | 尝试修复或重置 |
并发
多请求
| 场景 | 限制 | 处理方式 |
|---|---|---|
| 多链余额查询 | 并发 5 | 队列处理 |
| 批量交易 | 串行 | 等待上一笔确认 |
| 重复点击 | 防抖 | 忽略重复 |
多窗口
| 场景 | 处理方式 |
|---|---|
| 多标签页打开 | 共享存储 + 同步 |
| 数据冲突 | 最后写入胜出 |
| 锁定状态 | 全局同步 |
设备
屏幕
| 条件 | 处理方式 |
|---|---|
| 小屏 (< 320px) | 最小支持宽度 |
| 超大屏 (> 768px) | 最大内容宽度 |
| 横屏 | 支持但优化竖屏 |
| 缺口屏 | safe-area 适配 |
系统
| 条件 | 处理方式 |
|---|---|
| 低电量 | 减少后台活动 |
| 低内存 | 释放缓存 |
| 后台运行 | 暂停非必要任务 |
国际化
语言
| 条件 | 处理方式 |
|---|---|
| 不支持的语言 | 回退英语 |
| 翻译缺失 | 显示 key 或英语 |
| 长文本 | 允许换行/截断 |
数字格式
| 条件 | 处理方式 |
|---|---|
| 不同千分位 | 跟随语言设置 |
| 不同小数点 | 跟随语言设置 |
| 输入格式 | 统一使用 . 作为小数点 |
本章小结
- 所有功能都有明确的边界条件定义
- 每个边界条件都有对应的处理方式
- 边界条件覆盖输入、显示、存储、网络等方面
- 为测试和实现提供明确参考