Product Requirements Document (PRD)

asset-light - 个人资产管理桌面应用

版本: 1.0.0 (MVP)
日期: 2025-12-20
状态: Validated
作者: PM Agent
关联文档: Product Brief


1. 概述

1.1 文档目的

本文档详细定义 asset-light MVP 版本的产品需求,将 Product Brief 中的愿景转化为可执行的功能规格,为后续的架构设计和开发实施提供明确指导。

1.2 产品定位

asset-light 是一款基于 Dioxus (Rust) 技术栈的个人资产管理桌面应用,核心价值主张:

让个人投资者能够系统化地管理资产配置,追踪配置偏离度,并获得清晰的收益归因分析。

1.3 目标用户

特征描述
身份个人投资者,具备一定理财知识
现状使用表格工具管理资产,感到效率低下
痛点无法追踪历史变化、无法分析收益来源、无法监控配置偏离
期望快速盘点、偏离监控、收益分析、纪律执行

2. 功能需求

2.1 功能模块总览

asset-light MVP
├── F1. 资产盘点模块
├── F2. 配置方案模块
├── F3. 资产视图模块
└── F4. 收益分析模块

2.2 F1: 资产盘点模块

2.2.1 功能描述

提供结构化的资产录入和盘点能力,支持按分类管理资产条目,记录每次盘点的完整快照。

2.2.2 用户故事

ID用户故事优先级
US-F1-01作为用户,我希望能够新增一个资产条目(包含名称、类别、当前市值),以便记录我持有的资产P0
US-F1-02作为用户,我希望能够编辑已有资产条目的信息,以便修正录入错误或更新资产状态P0
US-F1-03作为用户,我希望能够删除不再持有的资产条目,以便保持资产列表的准确性P0
US-F1-04作为用户,我希望资产条目能够按类别(现金类/稳健类/进阶类)组织展示,以便快速定位和管理P0
US-F1-05作为用户,我希望能够执行一次"盘点"操作,批量更新所有资产的当前市值,并自动记录盘点时间戳P0
US-F1-06作为用户,我希望能够查看历史盘点记录列表,以便回顾资产变化轨迹P0
US-F1-07作为用户,我希望能够查看某次历史盘点的详细快照,以便了解当时的资产状态P1
US-F1-08作为用户,我希望能够自定义资产子类别(如将"进阶类"细分为"宽基指数"和"行业ETF"),以便更精细地管理资产P1

2.2.3 功能规格

FR-F1-01: 资产条目数据模型

字段类型必填说明
idUUID资产条目唯一标识
nameString资产名称(如"余额宝"、"沪深300ETF")
categoryEnum一级分类:Cash / Stable / Advanced
sub_categoryString用户自定义子类别
current_valueDecimal当前市值(单位:元)
notesString备注信息
created_atDateTime创建时间
updated_atDateTime最后更新时间

FR-F1-02: 资产类别定义

类别英文标识描述预设子类别
现金类Cash高流动性、低风险资产活期存款、货币基金、定期存单、借出款项
稳健类Stable固定收益、中低风险资产银行理财、债券基金、纯债基金
进阶类Advanced权益类、中高风险资产宽基指数、行业ETF、主动基金、个股

FR-F1-03: 盘点快照数据模型

字段类型必填说明
idUUID盘点快照唯一标识
snapshot_dateDate盘点日期
created_atDateTime快照创建时间
total_valueDecimal资产总额
itemsArray资产条目快照列表

FR-F1-04: 盘点快照条目结构

字段类型说明
asset_idUUID关联的资产条目 ID
asset_nameString资产名称(快照时冗余存储)
categoryEnum资产类别
sub_categoryString子类别
valueDecimal盘点时的市值

2.2.4 业务规则

规则ID描述
BR-F1-01资产名称不可为空,最大长度 100 字符
BR-F1-02市值必须为非负数,精度为小数点后 2 位
BR-F1-03删除资产条目时,历史快照中的该条目数据保留(快照不可变)
BR-F1-04每天最多允许创建 5 次盘点快照(防止误操作)
BR-F1-05盘点时至少需要有 1 个资产条目存在

2.2.5 界面要求

UI-F1-01: 资产列表页

  • 按类别分组展示所有资产条目
  • 每个类别显示:类别名称、资产数量、类别总市值
  • 每个资产条目显示:名称、子类别(如有)、当前市值
  • 支持操作:新增资产、编辑资产、删除资产、发起盘点
  • 类别折叠/展开支持

UI-F1-02: 资产编辑表单

  • 模态框或侧边栏形式
  • 字段:名称(输入框)、类别(下拉选择)、子类别(输入框/下拉)、市值(数字输入)、备注(文本域)
  • 保存/取消按钮
  • 实时验证反馈

UI-F1-03: 盘点流程

  • 盘点按钮触发进入盘点模式
  • 盘点模式下,资产列表变为可编辑状态,市值字段可直接修改
  • 显示上次盘点市值作为参考
  • 完成盘点按钮:保存快照并退出盘点模式
  • 取消盘点按钮:放弃本次修改

UI-F1-04: 盘点历史页

  • 时间线形式展示历史盘点记录
  • 每条记录显示:盘点日期、资产总额、相比上次变化金额/百分比
  • 点击可查看该快照的详细资产明细

2.3 F2: 配置方案模块

2.3.1 功能描述

支持用户定义多套目标资产配置方案,采用核心+卫星的层级结构,可切换当前激活的方案用于偏离度计算。

2.3.2 用户故事

ID用户故事优先级
US-F2-01作为用户,我希望能够创建一个配置方案,定义各资产类别的目标占比,以便作为资产配置的参照标准P0
US-F2-02作为用户,我希望能够编辑已有的配置方案,以便根据投资策略变化调整目标配置P0
US-F2-03作为用户,我希望能够删除不再使用的配置方案,以便保持方案列表简洁P1
US-F2-04作为用户,我希望能够将某个方案设为"当前激活",用于计算配置偏离度P0
US-F2-05作为用户,我希望配置方案能够支持两层结构(核心/卫星),以便实现更精细的配置管理P1
US-F2-06作为用户,我希望系统提供一个预设的"平衡型"配置方案作为起点,以便快速开始使用P1

2.3.3 功能规格

FR-F2-01: 配置方案数据模型

字段类型必填说明
idUUID方案唯一标识
nameString方案名称(如"保守型"、"进取型")
descriptionString方案描述
is_activeBoolean是否为当前激活方案
allocationsArray配置项列表
created_atDateTime创建时间
updated_atDateTime更新时间

FR-F2-02: 配置项结构(MVP 简化版)

字段类型说明
categoryEnum资产类别:Cash / Stable / Advanced
target_percentageDecimal目标占比(0-100)
min_percentageDecimal最低占比(可选,用于偏离提示)
max_percentageDecimal最高占比(可选,用于偏离提示)

FR-F2-03: 配置项结构(扩展版 - 支持子类别)

字段类型说明
categoryEnum资产类别
layerEnum层级:Core(核心)/ Satellite(卫星)
sub_categoryString子类别(可选)
target_percentageDecimal目标占比
toleranceDecimal容忍偏离度(默认 5%)

2.3.4 业务规则

规则ID描述
BR-F2-01方案名称不可为空,最大长度 50 字符
BR-F2-02同一方案内,所有配置项的 target_percentage 之和必须等于 100%
BR-F2-03系统始终有且仅有一个激活方案
BR-F2-04不能删除当前激活的方案(需先切换激活方案)
BR-F2-05系统至少保留一个配置方案

2.3.5 界面要求

UI-F2-01: 配置方案列表页

  • 展示所有配置方案,当前激活方案高亮显示
  • 每个方案显示:名称、描述摘要、激活状态
  • 支持操作:新建方案、编辑方案、删除方案、激活方案

UI-F2-02: 配置方案编辑器

  • 方案基础信息:名称、描述
  • 配置项可视化编辑:
    • 使用滑块或输入框调整各类别占比
    • 实时显示占比总和(必须 = 100%)
    • 饼图预览目标配置
  • 保存时自动校验规则

UI-F2-03: 预设方案模板

MVP 提供以下预设模板供用户快速创建:

模板名称CashStableAdvanced
保守型30%50%20%
平衡型20%40%40%
进取型10%20%70%

2.4 F3: 资产视图模块

2.4.1 功能描述

提供资产的全局视图,展示当前资产配置与目标配置的对比,可视化偏离情况,帮助用户快速了解资产健康状态。

2.4.2 用户故事

ID用户故事优先级
US-F3-01作为用户,我希望在首页看到资产总额和各类别的分布情况,以便快速了解资产全貌P0
US-F3-02作为用户,我希望能够直观对比当前配置与目标配置的差异,以便判断是否需要调整P0
US-F3-03作为用户,我希望当某类别偏离目标超过阈值时,系统能够高亮提示,以便及时关注P0
US-F3-04作为用户,我希望看到各类别的偏离百分比(如"+5%"、"-3%"),以便量化偏离程度P0
US-F3-05作为用户,我希望能够一键查看再平衡所需的资金调整方向,以便规划调仓P2

2.4.3 功能规格

FR-F3-01: 资产总览数据

指标计算方式
资产总额所有资产条目 current_value 之和
类别市值该类别下所有资产条目 current_value 之和
类别占比类别市值 / 资产总额 × 100%
偏离度当前占比 - 目标占比
偏离状态超出容忍阈值则标记为"偏离"

FR-F3-02: 偏离度计算逻辑

deviation = current_percentage - target_percentage

if abs(deviation) > tolerance:
    status = "deviating" (偏离)
else:
    status = "normal" (正常)

if deviation > 0:
    direction = "overweight" (超配)
else:
    direction = "underweight" (低配)

2.4.4 界面要求

UI-F3-01: 资产总览页(首页)

布局结构:

┌─────────────────────────────────────────────────────────────┐
│  资产总额                                                    │
│  ¥ 1,234,567.89                          上次盘点: 2025-12-15│
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   [饼图: 当前配置]              [饼图: 目标配置]             │
│                                                              │
├─────────────────────────────────────────────────────────────┤
│  类别配置对比                                                │
│  ┌──────────┬──────────┬──────────┬──────────┬───────────┐  │
│  │ 类别     │ 当前占比  │ 目标占比  │ 偏离度    │ 状态      │  │
│  ├──────────┼──────────┼──────────┼──────────┼───────────┤  │
│  │ 现金类   │ 25%      │ 20%      │ +5%      │ ⚠️ 超配   │  │
│  │ 稳健类   │ 38%      │ 40%      │ -2%      │ ✓ 正常    │  │
│  │ 进阶类   │ 37%      │ 40%      │ -3%      │ ✓ 正常    │  │
│  └──────────┴──────────┴──────────┴──────────┴───────────┘  │
└─────────────────────────────────────────────────────────────┘

UI-F3-02: 偏离提示样式

偏离状态视觉表现
正常(偏离度
轻度偏离(偏离度
严重偏离(偏离度

UI-F3-03: 配置对比可视化

  • 双饼图并列展示:左侧当前配置,右侧目标配置
  • 同类别使用相同颜色,便于对比
  • 鼠标悬停显示具体金额和百分比

2.5 F4: 收益分析模块

2.5.1 功能描述

基于盘点快照数据,计算和展示资产收益情况,支持按时间周期和类别维度分析收益来源。

2.5.2 用户故事

ID用户故事优先级
US-F4-01作为用户,我希望看到选定时间段内的资产总收益(金额和百分比),以便了解整体收益情况P0
US-F4-02作为用户,我希望能够按季度/年度查看收益,以便对比不同周期的表现P0
US-F4-03作为用户,我希望看到各资产类别的收益贡献,以便了解哪些类别在产生收益P0
US-F4-04作为用户,我希望看到资产总额的历史变化趋势图,以便直观感受资产增长轨迹P1
US-F4-05作为用户,我希望能够选择任意两个盘点时间点进行收益对比,以便灵活分析P2

2.5.3 功能规格

FR-F4-01: 收益计算逻辑(快照模式简化版)

# 时间段收益计算
period_return = end_snapshot.total_value - start_snapshot.total_value
period_return_rate = period_return / start_snapshot.total_value × 100%

# 类别收益计算
category_return = end_category_value - start_category_value
category_contribution = category_return / period_return × 100%  # 收益贡献度

注意: MVP 采用快照模式,不追踪资金流入/流出,因此计算的是"市值变动"而非"真实收益率"。

FR-F4-02: 时间周期定义

周期定义
季度自然季度(Q1: 1-3月, Q2: 4-6月, Q3: 7-9月, Q4: 10-12月)
年度自然年(1月1日 - 12月31日)
自定义用户选择的起止日期

FR-F4-03: 收益分析数据结构

字段类型说明
periodObject时间段 {start_date, end_date}
start_valueDecimal期初总市值
end_valueDecimal期末总市值
absolute_returnDecimal绝对收益金额
return_rateDecimal收益率(%)
category_breakdownArray各类别收益明细

FR-F4-04: 类别收益明细结构

字段类型说明
categoryEnum资产类别
start_valueDecimal期初市值
end_valueDecimal期末市值
absolute_returnDecimal绝对收益
contribution_rateDecimal收益贡献度(%)

2.5.4 业务规则

规则ID描述
BR-F4-01至少需要 2 个盘点快照才能计算收益
BR-F4-02期初市值为 0 时,收益率显示为"N/A"
BR-F4-03季度/年度收益使用该周期内最早和最晚的快照计算
BR-F4-04若某周期内无快照数据,该周期收益显示为"暂无数据"

2.5.5 界面要求

UI-F4-01: 收益分析页

布局结构:

┌─────────────────────────────────────────────────────────────┐
│  周期选择器: [季度 ▾]  [2025年 ▾]  [Q4 ▾]     [自定义日期]   │
├─────────────────────────────────────────────────────────────┤
│  本期收益概览                                                │
│  ┌─────────────────┐  ┌─────────────────┐                   │
│  │ 收益金额         │  │ 收益率           │                   │
│  │ +¥ 12,345.67    │  │ +3.2%           │                   │
│  │ (期初 → 期末)    │  │                  │                   │
│  └─────────────────┘  └─────────────────┘                   │
├─────────────────────────────────────────────────────────────┤
│  收益归因分析                                                │
│  ┌──────────┬──────────┬──────────┬──────────┐              │
│  │ 类别     │ 收益金额  │ 收益率    │ 贡献度   │              │
│  ├──────────┼──────────┼──────────┼──────────┤              │
│  │ 现金类   │ +¥ 1,234 │ +1.5%    │ 10%     │              │
│  │ 稳健类   │ +¥ 3,456 │ +2.8%    │ 28%     │              │
│  │ 进阶类   │ +¥ 7,655 │ +5.2%    │ 62%     │              │
│  └──────────┴──────────┴──────────┴──────────┘              │
├─────────────────────────────────────────────────────────────┤
│  资产趋势图                                                  │
│  [折线图: 历史盘点时间点的资产总额变化]                        │
│                                                              │
└─────────────────────────────────────────────────────────────┘

UI-F4-02: 收益归因可视化

  • 横向条形图展示各类别的收益贡献
  • 正收益绿色,负收益红色
  • 支持点击展开查看该类别下各资产的收益明细

UI-F4-03: 资产趋势图

  • X 轴:盘点日期时间线
  • Y 轴:资产总额
  • 数据点标注具体金额
  • 支持缩放和时间范围选择

3. 非功能需求

3.1 性能需求

ID需求指标
NFR-P-01应用启动时间< 2 秒(冷启动)
NFR-P-02页面切换响应< 200ms
NFR-P-03盘点保存时间< 500ms(100 个资产条目以内)
NFR-P-04数据加载时间< 1s(1000 条历史快照)

3.2 可用性需求

ID需求说明
NFR-U-01首次使用引导提供简洁的功能引导,帮助用户快速上手
NFR-U-02键盘快捷键支持常用操作的快捷键(如 Cmd+N 新增资产)
NFR-U-03操作反馈所有操作提供明确的成功/失败反馈
NFR-U-04数据校验输入时实时校验,防止无效数据
NFR-U-05确认机制删除等破坏性操作需二次确认

3.3 数据需求

ID需求说明
NFR-D-01本地存储所有数据存储在本地,不依赖网络
NFR-D-02数据格式SQLite 数据库或 JSON 文件
NFR-D-03数据备份支持手动导出数据文件
NFR-D-04数据完整性操作失败时保证数据不被损坏

3.4 安全需求

ID需求说明
NFR-S-01隐私保护数据仅存储在用户本地设备
NFR-S-02无网络传输MVP 版本不进行任何网络通信

3.5 兼容性需求

ID需求说明
NFR-C-01macOS 支持支持 macOS 12.0+
NFR-C-02分辨率适配支持 1280×720 及以上分辨率
NFR-C-03深色模式支持系统深色模式(P1)

4. 信息架构

4.1 页面结构

asset-light
├── 首页(资产总览)
│   ├── 资产总额卡片
│   ├── 配置对比图表
│   └── 偏离状态列表
│
├── 资产管理
│   ├── 资产列表(按类别分组)
│   ├── 新增/编辑资产表单
│   └── 盘点模式
│
├── 盘点历史
│   ├── 历史时间线
│   └── 快照详情
│
├── 配置方案
│   ├── 方案列表
│   └── 方案编辑器
│
└── 收益分析
    ├── 周期选择器
    ├── 收益概览
    ├── 收益归因表
    └── 资产趋势图

4.2 导航设计

  • 采用侧边栏导航
  • 一级导航项:首页、资产管理、盘点历史、配置方案、收益分析
  • 当前激活项高亮显示
  • 支持键盘导航

5. 数据模型概览

5.1 核心实体关系

┌─────────────┐     ┌─────────────────┐
│   Asset     │◄────│ SnapshotItem    │
│  (资产条目)  │     │  (快照明细)      │
└─────────────┘     └────────┬────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │   Snapshot      │
                    │   (盘点快照)     │
                    └─────────────────┘

┌─────────────┐     ┌─────────────────┐
│ AllocationPlan │◄────│ Allocation   │
│  (配置方案)  │     │   (配置项)      │
└─────────────┘     └─────────────────┘

5.2 数据量估算

实体预估数量(个人用户)
资产条目10 - 50 个
盘点快照50 - 200 条(5年使用)
配置方案2 - 5 套

6. MVP 成功标准

6.1 功能完成标准

标准验收条件
资产盘点能够在 3 分钟内完成 10 个资产条目的盘点
配置管理能够创建、编辑、切换至少 2 套配置方案
偏离监控能够清晰看到当前配置与目标配置的偏离情况
收益分析能够查看季度/年度收益率及各类别收益贡献

6.2 技术完成标准

标准验收条件
应用稳定性无崩溃或数据丢失
性能达标满足 3.1 节性能指标
代码质量Clippy 无警告,代码结构清晰

6.3 用户体验标准

标准验收条件
易用性无需文档即可完成基本操作
视觉一致性UI 风格统一,无明显违和感
操作反馈所有操作有明确的状态反馈

7. 范围外事项(Out of Scope)

以下功能明确不在 MVP 范围内:

功能延后原因计划版本
自动获取净值需对接外部 APIPhase 3
分红/调仓记录增加数据模型复杂度Phase 2
具体调仓建议需要更复杂计算逻辑Phase 3
月度收益分析MVP 聚焦季度/年度Phase 2
多端同步本地优先Phase 4
数据导入/导出可作为独立迭代Phase 4
Windows/Linux 支持macOS 优先TBD

8. 开放问题

问题状态备选方案
数据存储格式选择 SQLite vs JSON?待定倾向 SQLite(查询能力更强)
是否支持多币种?决定:MVP 仅支持人民币后续版本考虑
深色模式是否为 MVP 必需?待定建议作为 P1 功能
子类别层级是否支持嵌套?决定:MVP 仅支持一层子类别后续可扩展

9. 术语表

术语定义
快照式盘点每次记录资产当前市值的完整状态,不追踪中间变动
配置偏离度当前资产配置与目标配置的百分比差异
核心资产追求稳定和安全的资产,通常占比 70-80%
卫星资产追求更高收益、容忍更高波动的资产,通常占比 20-30%
再平衡调整资产配置使其回归目标比例的操作
收益归因分析各资产/类别对整体收益的贡献程度

10. 修订历史

版本日期作者变更说明
1.0.02025-12-20PM Agent初始版本,定义 MVP 需求

This PRD transforms the Product Brief into detailed, implementable requirements.

Next: Architecture design workflow will define the technical solution based on these requirements.