| 项目 | 内容 |
|---|---|
| 版本 | v1.1 |
| 状态 | 已评审(设计 token 为约束性规范,页面清单为开发依据) |
| 设计工具 | Figma(高保真原型,实现前必须完成) |
| 变更记录 | v1.0 首次定稿;v1.1 修订:消息页改为通知列表(去掉不存在的「邀请接受/拒绝」交互)、离线时编辑/删除入口置灰 |
1. 设计原则
- 记账要快:核心路径「金额 → 分类 → 完成」≤ 3 次点击、≤ 5 秒(PRD 体验红线)
- 多人感:让用户在每个关键页面感知「这是我们一起的账」—— 成员头像、记账人标记贯穿全流程
- 数字优先:金额永远是一行内视觉权重最高的元素;配色为数据让路
- 克制:无广告位、无运营位、无社交氛围组件;MVP 不做深色模式(P2)
2. 设计 Token(约束性规范)
2.1 色彩
| Token | 值 | 用途 |
|---|---|---|
color.primary | #4C7DFF | 主色:按钮、选中态、链接 |
color.primary-weak | #EAF0FF | 主色弱底:选中分类底色 |
color.expense | #FF6B4A | 支出(红=花钱,国内记账心智) |
color.income | #16C79A | 收入(绿) |
color.transfer | #8A94A6 | 转账(中性) |
color.text-1 | #1F2430 | 主文本 |
color.text-2 | #6B7280 | 次文本(备注、说明) |
color.text-3 | #A8B0BF | 弱文本(时间戳、占位) |
color.bg-page | #F6F7FA | 页面底色 |
color.bg-card | #FFFFFF | 卡片底色 |
color.danger | #F5484D | 超支/删除确认/错误 |
color.warn | #FF9F1C | 预算 80% 预警 |
金额配色铁律:支出红、收入绿,全 App 一致,不允许混用。
2.2 字体与字号
| Token | 值 | 用途 |
|---|---|---|
font.amount-xl | 56rpx / 700 | 记一笔页金额输入 |
font.amount-l | 40rpx / 600 | 列表/总览大数字 |
font.title | 32rpx / 600 | 卡片标题 |
font.body | 28rpx / 400 | 正文 |
font.caption | 24rpx / 400 | 说明文字 |
font.number | DIN Alternate / tabular-nums | 所有金额数字用等宽数字,列表对齐刚需 |
2.3 间距与圆角
- 间距梯度(rpx):8 / 16 / 24 / 32 / 48;页面左右安全边距 32rpx
- 卡片圆角 24rpx;按钮圆角 48rpx(胶囊);弹窗 32rpx
- 阴影仅一级:
0 4rpx 16rpx rgba(31,36,48,0.06)(列表页少用阴影,用分隔线)
2.4 布局基准
- 设计稿 375×667(iPhone SE 基准,以小屏为基准向下兼容);单位 rpx
- 安全面积:底部 tabbar 适配 iPhone 刘海屏 safe-area-inset-bottom
3. 页面清单(开发排期依据)
3.1 Tab 页(4 个)
| 页面 | 路径 | 内容要点 |
|---|---|---|
| 账本流水(首页) | pages/ledger/index | 顶部:账本切换器(名称+成员头像叠放)+ 本月支出大数字 + 预算进度条;中间:按日分组流水列表(每条:分类图标/备注/金额/记账人头像角标);右下:悬浮「+」记账按钮;同步状态角标(同步中转圈/失败红点) |
| 统计 | pages/stats/index | 月切换器 → 结余卡(收入/支出/结余、环比)→ 分类饼图(点击扇区见明细)→ 成员贡献条形图 → 近 6 月趋势(P1) |
| 消息 | pages/notify/index | 通知列表(成员加入/被移除、预算提醒、账本解散;数据源 GET /notifications),下拉刷新 + 全部已读 |
| 我的 | pages/profile/index | 头像昵称(点击编辑)、我的账本列表、邀请成员入口、设置(账号注销/隐私政策/用户协议/关于) |
3.2 记账核心页(模态全屏)
| 页面 | 路径 | 内容要点 |
|---|---|---|
| 记一笔 | pages/txn/edit | 全 App 最重要页面,详见第 4 节交互定义 |
3.3 二级页
| 页面 | 路径 | 内容要点 |
|---|---|---|
| 账本详情/设置 | pages/ledger/settings | 改名/改封面、成员管理(列表+移除+转让)、解散账本 |
| 邀请成员 | pages/ledger/invite | 大号邀请码展示(24h 倒计时)、复制口令/短信分享、加入方输入邀请码页 |
| 账目筛选 | pages/txn/filter | 成员/分类/类型/时间范围,入口在流水页顶部筛选chip |
| 登录 | pages/auth/login | 手机号+验证码,一屏完成(无密码) |
| 注册引导 | pages/auth/onboarding | 3 屏滑动引导 → 建账本或输邀请码二选一 |
| 设置子页 | pages/profile/* | 编辑资料/账号注销(二次验证码+冷静期提示)/隐私政策(H5) |
页面总数:4 tab + 1 核心 + 8 二级 ≈ 13 屏(低于原估 15-20,利于 8 周客户端工期)。
4. 「记一笔」页面交互定义(核心中的核心)
┌──────────────────────────────┐│ 支出 | 收入 | 转账 (顶部类型切换) ││ ││ ¥ 35.00 │ ← 大字号金额区(点击无光标,全键盘驱动)│ [餐饮 ▾] 今天 ▾ 为谁花 ▾ │ ← 三个快捷选择 chip│ 备注:________________ ││ ││ ┌────────────────────────┐ ││ │ 自定义数字键盘 │ │ ← 数字/退格/再记一笔/完成│ └────────────────────────┘ │└──────────────────────────────┘交互细则(逐条验收):
- 键盘默认弹起无需点击输入框;数字实时上屏,无输入延迟感知(帧率验证项)
- 分类 chip 点击展开底部半屏面板:一级分类宫格(4 列)→ 点进二级;默认选中上次使用的分类
- 日期 chip:默认今天,可选近 7 天(超出引导「去完整选择」日历面板)
- 「为谁花」chip:成员多选(头像 + 对勾);默认=记账人自己
- 键盘右下「完成」提交;「再记一笔」提交后留在本页清空金额(连续买菜场景)
- 提交后乐观更新:列表立即可见(同步状态角标),失败不回滚 UI、进重试队列
- 转账类型:金额下方出现「付款人 → 收款人」两个成员选择器
- 金额上限 100 万(元),超限键盘输入无效 + toast 提示
- 编辑已有账目:同页面复用,标题变「编辑账目」,含删除入口(二次确认);离线时编辑/删除置灰并提示「需联网」(MVP 离线仅支持记新账)
5. 关键流程图
5.1 冷启动决策流
启动 → [已登录?] ├─ 否 → 登录页(60s 内完成)→ 引导页 → ┐ └─ 是 → 首页(流水) │ ▼ [有账本?] ─ 否 → 创建账本(命名+封面色) │ │ 邀请引导浮层 │ 是 ▼ └──────► 首页(流水)5.2 邀请-加入闭环
邀请方:账本设置 → 邀请成员 → 生成 6 位邀请码(24h) → 复制口令「【一本账】XXX 邀请你加入「我们的家」,邀请码 482913」→ 微信/短信分享加入方:收到口令 → 打开 App → 登录 → 输入邀请码 → 进入账本 → 双方收到 member_joined 通知5.3 离线记账同步流(UI 表现)
记账(离线)→ 列表显示「待同步」灰色角标 → 网络恢复 → 角标转圈 → 消失(已同步) └─ 失败:红色角标,点击看原因/重试;数据本地永不丢失6. 组件规范要点
| 组件 | 规范 |
|---|---|
| 金额展示组件 | 输入分 → 自动千分位 + 两位小数;支出带「-」前缀红色、收入「+」绿色;统一走 utils/money.ts |
| 成员头像组 | 叠放最多显示 3 个 + “+N”;单人头像 56rpx |
| 同步状态角标 | 三态:pending 灰点 / syncing 转圈 / failed 红点可点击 |
| 空状态 | 流水空:「本月还没有账目,记第一笔吧」+ 大按钮;统计空:插画+引导 |
| Toast | 成功提示 ≤ 1.5s 自动消失;错误类 Toast 常驻 3s 或需手动关闭 |
| 二次确认弹窗 | 仅用于不可逆操作:删除账目/解散账本/移除成员/注销账号;文案必须含影响说明 |
| 下拉刷新 | 流水页支持;统计页不支持(缓存直出) |
7. 可用性验收红线(上线门槛)
- 记一笔常用路径(金额→分类→完成)≤ 3 次点击、≤ 5 秒(真机实测,低端安卓)
- 数字键盘连续输入 20 位无卡顿感知(60fps 抽查)
- 流水列表 500+ 条滚动无白屏、无跳变
- 所有金额展示千分位正确、收支颜色正确(自动化 UI 巡检覆盖)
- iPhone SE(375 宽)无布局破版
- 弱网(3G 模拟)下记账不报错,恢复联网后 30s 内完成同步