PRD v1.0

AA 账本

朋友间共同支出分摊结算 Web 应用 — 产品需求文档

版本:V1(MVP) 类型:0-to-1 产品 复杂度:Medium 受众:工程团队 风险等级:Low(UX 为主) 更新日期:2026-06-27
目录
  1. 需求背景
  2. 产品定位与目标
  3. 用户与场景
  4. 功能需求总览表
  5. 各功能模块详细描述
  6. 核心页面流转
  7. 数据与指标建议
  8. 迭代规划
1

需求背景

1.1 为什么做

朋友之间出游、聚餐、合租是高频场景。活动过程中,不同人垫付不同费用是常态——有人买票、有人订酒店、有人付饭钱。活动结束后,算清楚"谁该给谁转多少钱"几乎是个必经环节,但往往靠微信群消息、Excel 表格甚至口头记忆来完成。

现有工具(微信/支付宝 AA 收款)只解决"发起一笔均摊收款"的即时需求,不解决"多笔支出混合后的最优清算"问题。国际工具 Splitwise 功能全面但面向海外用户,体验不符合国内使用习惯。

1.2 用户痛点

1.3 不做的后果

如果没有一个好用的工具,用户会继续用微信群口算、Excel 手动算账,或者干脆"算了算了不用还了"。前者浪费时间且容易出错,后者实际上会积累朋友间的隐形成本——谁垫付多、谁总是不还,长期下来影响关系。

核心价值主张:3 秒记一笔、清算结果每分钱可追溯、最少转账次数、不伤朋友感情。

2

产品定位与目标

2.1 产品定位

AA 账本是一个轻量级朋友间支出分摊与清算工具。它不替代支付宝或微信支付(不深度打通资金通道),而是专注于"记清楚账、算明白账、友好结算"三个环节。

一句话定位

帮朋友出游/聚餐/合租算清楚账,用最少的转账次数、每一分钱都有据可查。

2.2 V1 目标

2.3 产品形态

2.4 不做的事

3

用户与场景

3.1 用户角色

创建者(记账人)
活动组织者
创建活动、添加成员、记录每笔支出、设定预算、触发清算、导出分享。通常是组织活动的那个人。
参与者
被邀请的成员
通过链接加入活动、认领身份、查看明细、标记转账状态(已转/已确认)。可以只看不操作。
未注册访客
路人
通过分享链接打开页面,可只读查看账单明细。认领身份前无法操作(标记转账、编辑等)。

3.2 用户画像

画像 A:小红 — "组织担当"

25-30 岁,经常组织朋友出游。每次活动结束后要在群里发"账单汇总",然后一个个追着别人转账。用 Excel 算过几次,嫌麻烦,后来就自己先垫着算了。

画像 B:小明 — "佛系参与者"

24-28 岁,朋友活动里经常被人垫付,活动结束后别人说转多少就转多少,但偶尔会想"真的是这个数吗?"。不太愿意主动问。

画像 C:老王 — "合租室友"

26-32 岁,和三个室友合租,水电煤、网费、日用品开销频繁且琐碎。目前用微信群记账,经常忘了谁付了什么。

3.3 核心使用场景

场景 1:周末好友出游
小红组织 5 个朋友周末去周边游,提前在 AA 账本创建活动"周末郊游",输入 5 个人的昵称。
给每个人发专属邀请链接,大家认领身份。
活动过程中,小红用 AA 账本快速记下:高速费(小明付,全员分摊)、午餐(小红付,全员分摊)、门票(小刚付,4 人去不去泡温泉的不一样)。
活动结束,小红点击"开始清算",系统自动算出最少转账方案。
小红把结算卡片分享到群里,大家看到明细后逐一转账、确认。
场景 2:合租室友日常分摊
老王创建活动"7 月合租",添加 4 个室友。
每周记录水电煤、网费、日用品等支出。
月底点击清算,一键生成结算卡片发到室友群。
室友们确认转账后,本月账清。
场景 3:朋友聚餐
小红请 6 个朋友吃饭,提前建活动"周五聚餐"。
只记了一笔:餐费 580 元,小红垫付,全员 7 人均摊。
系统直接生成清算结果:每人转小红 82.86 元(或小红发起一笔 AA 收款链接)。
4

功能需求总览表

模块 功能点 优先级 V1 说明
1. 创建活动 + 邀请成员 创建活动(名称、场景模板) P0 Must 场景模板:出游/聚餐/合租/其他
添加成员(输入昵称) P0 Must 无需注册,输入昵称即可创建席位
生成专属邀请链接 P0 Must 每个成员一个独立链接,打开即绑定
活动中途添加成员 P1 Should 活动进行中也可增加新成员
活动总预算设定 P1 Should 可选,随时可补填/修改
删除/退出活动 P2 Nice 删除活动需创建者确认
2. 快速记支出 选择参与者 + 输入金额 + 选垫付人 P0 Must 核心记账流程
均摊(默认分摊方式) P0 Must 选中的参与人平分金额
按比例分摊 P1 Should 手动设定每人比例
自定义金额分摊 P1 Should 手动指定每人承担金额
免单标记(某人本次不参与) P1 Should 某成员本笔不参与分摊
消费类别选择 P1 Should 餐饮/交通/住宿/门票/购物/其他
备注文字 P1 Should 可选,补充说明
3. 总预算 + 实时进度 预算进度条展示 P1 Should 已花 XX%,人均 XX 元
超预算温和提示 P1 Should 不阻断操作,仅文字提示
预算为可选项 P1 Should 不设预算不影响任何功能
4. 邀请链接 + 认领身份 独立邀请链接 P0 Must 每人一个链接,承载身份
认领身份确认 P0 Must "你是 [昵称] 吗?" 确认
未登录只读查看 P0 Must 认领后才能操作
转让席位 P2 Nice 创建者可将 A 的席位分配给 B
微信扫码登录引导 P0 Must 未登录时引导扫码
5. 一键清算 最少转账次数算法 P0 Must 核心算法,精确到分
清算结果明细追溯 P0 Must 每笔转账可查看构成支出
多方案对比 P1 Should 存在多个最优方案时展示
手动触发清算 P0 Must 创建者随时可触发
"标记活动结束"自动触发 P1 Should 结束时自动执行清算
6. 转账状态追踪 清算看板(状态列表) P0 Must 谁该付、付给谁、多少、状态
双向确认(已转 + 已确认) P0 Must 付款方标记 + 收款方确认
未结清温和提醒 P1 Should 不阻断,仅提示
"不催了"操作 P2 Nice 手动取消催促提醒
7. 导出/截图分享 导出收支明细(图片格式) P1 Should 可保存到相册
结算卡片一键分享 P1 Should 分享到微信群
支出流水明细列表 P0 Must 活动详情页内展示

优先级说明: P0 = 必须有,否则产品不能上线; P1 = 应该有,V1 尽量纳入; P2 = 有了更好,V1 时间不够可后移。

5

各功能模块详细描述

5.1 创建活动 + 邀请成员

功能描述

用户(创建者)可以创建一个新的分账活动,设定活动名称、场景模板,并添加所有参与成员。系统为每个成员自动生成一个专属邀请链接。

交互逻辑

  • 首页点击"创建活动"按钮,弹出创建表单(或跳转创建页)。
  • 填写活动名称(必填,最多 20 字)。
  • 选择场景模板:出游 / 聚餐 / 合租 / 其他。模板仅影响展示样式,不影响功能。
  • 添加成员:输入昵称后点击添加(或回车),昵称不超过 10 字。每个昵称对应一个"席位"。
  • 创建完成后进入活动详情页,系统自动为每个成员生成专属邀请链接。
  • 创建者可点击任意成员旁边的"复制链接"按钮,将链接发送给对应的人。

业务规则

  • 活动名称不可重复(同一创建者下)。[待确认]
  • 成员人数上限:V1 建议 [待确认,初定 20 人]。
  • 昵称在同一活动内不可重复。
  • 创建者自动成为第一个成员,其席位也生成邀请链接(创建者自己不需要打开)。
  • 活动中途可添加成员。新成员的席位从加入时刻起生效——已有支出不会自动包含新成员。

边界情况

  • 只有 1 个成员时,活动仍可创建(虽然无实际清算意义,但不阻断)。
  • 创建者退出活动后,需指定新的创建者。如果只剩 1 人,活动变为"仅自己可见"状态。
  • 删除活动需创建者确认,删除后所有数据不可恢复。[待确认:是否需要软删除 + 30 天恢复期]

5.2 快速记支出

功能描述

记录活动中的每一笔支出。操作流程力求简洁:选择参与者 → 输入金额 → 选垫付人 → 完成。V1 目标:3 秒完成一笔常规记账。

交互逻辑

  • 在活动详情页点击"记一笔"按钮,弹出记账表单(底部抽屉或模态框)。
  • 第一步:选垫付人。默认显示"自己(创建者)",可切换为其他成员。可多选(多人均垫付的情况,但 V1 建议限制为单人垫付 [待确认])。
  • 第二步:输入金额。数字键盘输入,精确到分。单位为元。
  • 第三步:选择参与分摊的人。默认不勾选任何人,需手动勾选。提供一个"全选"快捷按钮。
  • 第四步:选择分摊方式。默认"均摊"。可切换为"按比例""自定义金额""免单"。
  • 第五步(可选):选择消费类别(餐饮/交通/住宿/门票/购物/其他)。
  • 第六步(可选):填写备注文字(最多 100 字)。
  • 点击"记下了"完成。表单关闭,活动详情页支出流水列表即时更新。

分摊方式详解

  • 均摊(默认):选中的人平分金额。每人应承担 = 总金额 / 参与人数。结果精确到分,余数加在第一人头上。[待确认:余数分配策略]
  • 按比例:为每人设定比例(%),各人承担 = 总金额 * 对应比例。所有比例之和必须为 100%。
  • 自定义金额:手动指定每人承担金额。所有指定金额之和必须等于总金额。
  • 免单:取消勾选某人即可实现。免单人本笔不参与分摊,也不计入其应收/应付。

业务规则

  • 每笔支出必须至少有 1 个参与人。
  • 垫付人可以是参与人之一,也可以不是(即某人垫付但自己不参与分摊)。
  • 未认领的成员,在记账时用昵称显示,操作无差异。
  • 金额下限:0.01 元。金额上限:[待确认,初定 999,999.99 元]。
  • 支持修改和删除已有支出记录。修改/删除后,预算进度和清算结果需即时重新计算。
  • 所有人均可记账(不仅是创建者)。[待确认:V1 是否仅创建者有记账权限]

边界情况

  • 垫付人与参与人完全不同时(如 A 请客但费用算在 B、C 头上),系统正常处理。
  • 一笔支出金额为 0 时,阻止提交,提示"金额不能为 0"。
  • 按比例/自定义金额分摊时,如果总额不匹配,阻止提交并提示修正。

5.3 总预算 + 实时进度

功能描述

活动详情页顶部展示一个预算进度条,实时反映已花费占总预算的比例。预算是可选项,不设也不影响任何功能。

交互逻辑

  • 活动详情页顶部固定区域显示预算进度条。
  • 进度条格式:"已花 65%,人均 127 元"。
  • 点击预算进度条区域可进入"编辑预算"界面。
  • 创建活动时可不填预算。后续随时可在活动详情页补填或修改。
  • 预算修改后,进度条即时更新。

业务规则

  • 预算金额必须大于 0。
  • 已花费 = 所有支出记录的总和。
  • 人均 = 已花费 / 活动成员总数(包含所有已添加的成员,不论是否认领)。
  • 超出预算时(已花费 > 预算),进度条变为警告色(辅色 amber),文案提示"已超出预算 XX 元"。不阻断后续记账操作。
  • 未设预算时,进度条区域显示"未设预算",点击可设置。

边界情况

  • 活动中途添加新成员时,"人均"会重新计算,可能突然下降。
  • 预算修改为比已花费更小的值时,立即显示超预算提示。

5.4 专属邀请链接 + 认领身份

功能描述

每个活动成员拥有一个独立的邀请链接。被邀请人打开链接后,系统引导其登录并认领对应的席位身份。

交互逻辑

  • 创建者生成活动后,每个成员旁显示"复制链接"按钮。
  • 被邀请人打开链接:
    • 已登录:显示确认页面 —— "你是 [昵称] 吗?" 确认后绑定身份,跳转到活动详情页。
    • 未登录:先引导微信扫码登录,登录后自动跳回确认页面,继续认领流程。
  • 未登录用户也可以只读查看账单明细(支出列表、预算进度等),但无法进行标记转账、记账等写操作。
  • 只读用户页面顶部显示"认领身份后可参与操作"的引导提示。

业务规则

  • 一个邀请链接只能被认领一次。认领后,链接失效(再打开会提示"该席位已被认领")。
  • 一个用户只能认领同一活动中一个席位。
  • 创建者可以"转让席位":将 A 的席位取消认领,将该链接重新分配给 B。[待确认:转让后 A 的操作历史如何处理]
  • 邀请链接有效期:永久有效(除非活动被删除或席位被转让)。[待确认]

边界情况

  • 用户用自己的链接认领后,能否再帮别人认领?V1 不支持。每个人必须用自己的链接。
  • 同一用户打开了两个不同活动的链接,可以分别认领两个活动的不同席位。
  • 链接被分享到公开群聊中,被非目标用户打开时,认领确认页面会显示"你是 [昵称] 吗?"让用户自行判断。

5.5 一键清算(核心算法)

功能描述

给定一组人的净收支(每个人的总垫付 - 总分摊),找到使转账次数最少的清算方案。每笔清算转账附带明细追溯,用户可以查看该笔转账由哪些原始支出构成。

交互逻辑

  • 清算触发入口:活动详情页的"开始清算"按钮。
  • 点击后,系统计算所有人的净收支(应收/应付),生成最优清算方案。
  • 清算结果页面展示:
    • 每笔转账:谁 → 给谁 → 多少钱。
    • 每笔转账旁边有"查看明细"链接,点击展开该笔转账的支出构成列表。
    • 底部显示"总转账 X 笔"。
  • 如果存在多个最优方案(相同最少转账次数),展示方案切换入口,用户可对比选择。
  • "标记活动结束"时自动触发清算。

算法要求

  • 目标:最小化转账次数。
  • 精确度:精确到分(0.01 元)。所有分摊计算使用"四舍六入五成双"或"银行家舍入"规则。[待确认]
  • 输入:每个人的净收支(应付为正,应收为负,或反之)。
  • 输出:一组转账指令(付款人、收款人、金额)。
  • 算法思路参考:将所有人的净收支排序后,用贪心算法匹配应收和应付。这是经典的简化问题(类似"找零钱"优化),不需要穷举所有排列。
  • 清算结果中每笔金额的累计必须等于所有人的净收支之和(即净额守恒)。

业务规则

  • 清算可多次触发(如新增支出后重新清算)。每次清算生成新结果,旧结果归档保存。
  • 清算结果生效后,进入"转账状态追踪"模块。
  • 清算触发权限:仅创建者可触发。[待确认]
  • 活动无支出记录时,阻止清算并提示"还没有支出记录哦"。

边界情况

  • 所有人净收支恰好为 0(如总支出被垫付人自己全额承担且不参与分摊),清算结果为"无需转账"。
  • 只有 2 人且金额不对等时,只需 1 笔转账。
  • 极端情况:1 人欠所有人钱(应付总额很大),算法应正确处理。
  • 四舍五入导致的 1 分钱差异,加在最大应付人头上。[待确认]

5.6 转账状态追踪

功能描述

清算生成后,进入"转账状态追踪"阶段。以看板形式展示每笔转账的当前状态,付款方和收款方分别操作确认。

交互逻辑

  • 清算看板以卡片列表形式展示每笔待结清的转账。
  • 每张卡片显示:付款人 → 收款人 → 金额 → 状态标签。
  • 状态分为四种:
    • 待转账 — 初始状态,付款方尚未标记。
    • 已转账 — 付款方标记"我转了"。
    • 已确认 — 收款方确认收到。
    • 有争议 — V1 暂不实现此状态,预留。[待确认]
  • 付款方点击"我转了"按钮,状态变为"已转账"。
  • 收款方点击"收到了"按钮,状态变为"已确认"。
  • 未结清的转账卡片上显示温和提醒文字(如"小明待结清")。
  • 创建者或收款方可点击"不催了"按钮,关闭温和提醒。

业务规则

  • 只有对应付款方才能标记"我转了"。
  • 只有对应收款方才能标记"收到了"。
  • 所有转账均为"已确认"状态时,活动显示"全部结清"标识。
  • "不催了"操作仅影响显示,不影响转账本身。
  • 转账状态的变更记录需留存(谁、什么时间、什么操作)。

边界情况

  • 付款方误标"已转"但实际没转:收款方不会点"收到了",状态卡在"已转账"。
  • 收款方确认后,付款方反悔:V1 不支持"撤销确认",如需修改需联系创建者。[待确认]

5.7 导出 / 截图分享

功能描述

活动结束后,支持将完整的收支明细或结算结果导出为图片格式,方便保存到相册或分享到微信群。

交互逻辑

  • 活动详情页提供"导出明细"按钮,点击后生成一张包含完整支出流水的图片(长图格式)。
  • 清算看板页面提供"分享结算卡片"按钮,点击后生成一张结算结果卡片图片(精简版,包含每笔转账和总览)。
  • 图片生成后弹出"保存到相册"和"分享到微信"的选项。
  • 分享到微信:唤起微信分享接口(Web Share API 或微信 JS-SDK)。[待确认:具体实现方式]

业务规则

  • 导出图片内容包括:活动名称、日期范围、成员列表、支出流水明细(按时间排序)、每人净收支汇总。
  • 结算卡片内容包括:活动名称、清算结果列表、总转账笔数、二维码(指向活动链接,可选 [待确认])。
  • 图片尺寸适配手机屏幕,推荐宽度 750px。[待确认]

边界情况

  • 支出记录非常多时(如合租数月累积上百条),导出图片可能很长,需提供合理的分页或截断策略。[待确认]
  • 浏览器不支持 Web Share API 时,降级为"长按保存图片"提示。
6

核心页面流转

6.1 整体信息架构

graph TD A["首页
我的活动列表"] --> B["活动详情页
成员总览 + 支出流水 + 预算进度"] B --> C["记一笔
弹出表单"] C --> B B --> D["清算看板
一键清算结果"] B --> E["导出/分享
生成图片"] D --> E F["创建活动"] --> B G["专属邀请链接
被邀请人打开"] --> H{"已登录?"} H -- 是 --> I["认领身份确认
'你是 XX 吗?'"] H -- 否 --> J["微信扫码登录"] J --> I I --> B G --> K["只读查看
未登录访客"] K --> B style A fill:#d1fae5,stroke:#065f46,color:#065f46 style B fill:#e0f2fe,stroke:#1e40af,color:#1e40af style D fill:#fef3c7,stroke:#92400e,color:#92400e style E fill:#fce7f3,stroke:#9d174d,color:#9d174d

6.2 创建活动流程

graph LR A["点击'创建活动'"] --> B["填写活动名称"] B --> C["选择场景模板"] C --> D["添加成员昵称"] D --> E{"继续添加?"} E -- 是 --> D E -- 否 --> F["点击'创建'"] F --> G["生成活动 + 专属邀请链接"] G --> H["进入活动详情页"]

6.3 记支出流程

graph LR A["点击'记一笔'"] --> B["选择垫付人"] B --> C["输入金额"] C --> D["勾选参与分摊的人"] D --> E["选择分摊方式"] E --> F["选择类别(可选)"] F --> G["填写备注(可选)"] G --> H["点击'记下了'"] H --> I["支出流水列表即时更新"]

6.4 清算流程

graph TD A["创建者点击'开始清算'"] --> B["系统计算每人净收支"] B --> C{"有支出记录?"} C -- 否 --> D["提示'还没有支出记录'"] C -- 是 --> E["执行最少转账算法"] E --> F["生成清算方案"] F --> G{"存在多个最优方案?"} G -- 是 --> H["展示方案对比"] G -- 否 --> I["展示清算结果"] H --> I I --> J["进入转账状态追踪"] J --> K["付款方标记'已转'"] K --> L["收款方确认'已收到'"] L --> M{"全部结清?"} M -- 是 --> N["显示'全部结清'"] M -- 否 --> J

6.5 邀请链接认领流程

graph TD A["被邀请人打开专属链接"] --> B{"已登录?"} B -- 是 --> C["显示认领确认页
'你是 XX 吗?'"] B -- 否 --> D["引导微信扫码登录"] D --> E{"登录成功"} E --> C C --> F{"点击'是我'"} F --> G["绑定席位身份"] G --> H["跳转活动详情页"] C --> I{"点击'不是我'"} I --> J["提示联系创建者"] A --> K["未登录直接浏览"] K --> L["只读查看账单明细"] L --> M["提示'认领后可参与操作'"]

6.6 页面清单

页面 入口 主要内容 访问权限
首页 应用根路径 / 登录后默认 我的活动列表(进行中 / 已结束)、创建活动入口 已登录用户
创建活动页 首页"创建活动"按钮 活动名称、场景模板、成员输入、预算(可选) 已登录用户
活动详情页 首页活动列表点击 / 邀请链接认领后 预算进度条、成员列表、支出流水、清算入口、导出入口 已登录认领用户可编辑;未登录可只读
记一笔(弹出) 活动详情页"记一笔"按钮 垫付人、金额、参与人、分摊方式、类别、备注 已登录认领用户 [待确认]
清算看板 活动详情页"开始清算"按钮 清算结果列表、每笔转账明细追溯、状态标签、操作按钮 所有活动成员
认领确认页 专属邀请链接 "你是 [昵称] 吗?"确认 已登录用户
登录页 未登录访问需权限页面时 微信扫码登录 所有人
7

数据与指标建议

7.1 北极星指标

活动完成率(Activity Completion Rate)

定义:创建了活动并且完成了至少一次清算的活动占比。
意义:衡量产品是否真正帮用户解决了问题——不只记了账,还顺利结清了。
V1 目标:[待确认]

7.2 分层指标

获客层

指标定义V1 目标
新用户注册数每日新完成微信扫码登录的用户数[待确认]
活动创建数每日新建活动数[待确认]
邀请链接打开率生成的邀请链接中被打开的比例[待确认]

活跃层

指标定义V1 目标
DAU / WAU日活 / 周活用户数[待确认]
人均活动数每位用户平均参与的活动数[待确认]
支出记录数每日新增支出记录总数[待确认]
单活动平均支出笔数每个活动平均记录了多少笔支出[待确认]

转化层

指标定义V1 目标
清算完成率发起清算的活动中,全部结清的比例[待确认]
清算触发率有 3 笔以上支出的活动中,触发清算的比例[待确认]
导出/分享使用率清算后使用导出或分享功能的用户比例[待确认]
成员认领率活动中被认领的席位占总席位的比例[待确认]

7.3 留存与体验

指标定义V1 目标
次日 / 7 日留存创建活动后第二天 / 第七天回来的用户比例[待确认]
记账耗时从点击"记一笔"到提交完成的时间(目标是 3 秒内完成简单记录)[待确认]
清算节省转账次数对比"每人逐笔算"的转账次数与算法优化后的转账次数,平均节省比例[待确认]
8

迭代规划

8.1 V1 — MVP(当前文档范围)

完成最小可用闭环,验证核心价值假设:"朋友愿意用一个工具来算账,清算算法真的能减少转账次数,且明细追溯让大家对结果放心。"

模块范围预期周期
创建活动 + 邀请创建活动、添加成员、专属链接、认领身份[待确认]
快速记支出均摊 + 按比例/自定义/免单、类别、备注[待确认]
预算 + 进度进度条、超预算提示[待确认]
一键清算最少转账算法、明细追溯[待确认]
转账状态追踪看板、双向确认[待确认]
导出/分享图片导出、分享卡片[待确认]
登录微信扫码登录[待确认]

8.2 V2 — 增强与增长

社交与增长

  • 支持微信 / 支付宝登录(双通道)。
  • 历史活动数据统计:月度总支出、最常一起活动的朋友等。
  • 活动模板复用(同一个人、同场景快速创建)。
  • 分享裂变:被邀请人打开链接后注册,双方各得一个小奖励(如头像装饰)。

体验增强

  • OCR 拍照识别小票自动记账。
  • 语音输入记账:"午餐 128,小明付,全员均摊"。
  • 多币种支持(出境游场景)。
  • 记账提醒:活动进行中定时提醒"别忘了记今天的支出"。

清算增强

  • 分期清算(如合租场景下按月清算)。
  • 部分结清标记(一次转一部分,系统跟踪剩余金额)。
  • 争议处理流程("我觉得这笔不对" → 标记争议 → 协商)。

8.3 V3+ — 长期方向(仅作方向参考)