diff --git a/docs/07-模块功能设计.md b/docs/07-模块功能设计.md new file mode 100644 index 0000000..fe09575 --- /dev/null +++ b/docs/07-模块功能设计.md @@ -0,0 +1,194 @@ +# 07 · 模块功能设计(参考 Ghostfolio & Maybe 梳理) + +> 基于对 [Ghostfolio](https://github.com/ghostfolio/ghostfolio) 和 [Maybe](https://github.com/maybe-finance/maybe) 两款开源 FIRE/理财 App 的分析,对原 PRD 四大模块进行功能细化与重新组织。 +> 本文是 `01-需求文档-PRD.md` 的功能细化版,以此为准开发。 + +--- + +## 一、参考项目核心设计逻辑 + +### Ghostfolio +- **净资产曲线是中心**,所有功能围绕它展开 +- 每笔买卖/股息/转账都是"活动记录",由此自动算出收益率、配置比例 +- FIRE 独立模块:配置安全提取率 → 自动算退休日期 +- X-Ray 功能:透视持仓底层,发现重叠和失衡 + +### Maybe +- **净值追踪 + 负债管理**(净资产 = 资产 − 负债,两侧都要记) +- 收支交易记录 → 才能算出真实储蓄率 +- 退休预测 + 投资收益情景模拟 + +### 两者共同揭示的现有 App 缺口 + +| 缺口 | 影响 | +|---|---| +| 无负债字段 | 净资产 = 资产 − 0,实际高估 | +| "记账"只是勾选,无金额 | 储蓄率无法自动计算,只能手填 | +| 持仓无资产类别分类 | 无法看配置比例 | +| 进度页无曲线图 | 只有列表,趋势不直观 | +| 测算只有单一情景 | 无法感知收益率/定投额的敏感度 | + +--- + +## 二、Tab 结构调整 + +原 4 Tab:**打卡 / 进度 / 测算 / 持仓** + +调整为:**总览 / 账本 / 投资 / 测算** + +> 打卡从独立 Tab 缩小为「总览」页内的嵌入卡片,降低视觉权重; +> 新增「账本」Tab,承接真实收支记录功能。 + +--- + +## 三、各模块详细功能 + +### Tab 1:总览(Dashboard) +> 参考:Ghostfolio Overview + 原打卡页 + +**净资产概览区** +- 当前净资产数字(资产 − 负债) +- 与上月对比的变化额和变化率(↑ ¥2,300 / +3.2%) +- FIRE 进度条 + 百分比 + 预计达成年月 + +**净值曲线** +- 折线图,按月展示历史净资产(qiun-data-charts) +- 后续可叠加「目标线」辅助判断偏离 + +**关键指标卡片** +- 本月储蓄率(来自账本模块) +- 距 FIRE 剩余月数(来自测算模块) +- 本月定投执行状态 + +**今日打卡(嵌入卡片)** +- 见下方「打卡重新设计」章节 + +--- + +### Tab 2:账本(Ledger) +> 参考:Maybe 的 Transaction History + Budgeting +> 让「记账」从勾选行为变成真实数据 + +**快速记账** +- 金额 + 日期 + 类别 + 备注 +- 类别:收入 / 必要支出 / 可选支出 / 冲动消费 + +**月度汇总** +- 总收入、总支出、净储蓄额 +- 储蓄率 = (收入 − 支出)/ 收入 × 100%(自动计算,不再手填) + +**净资产快照录入**(从进度页移入) +- 录入当前总资产(元) +- 录入当前负债(元,可选) +- 净资产 = 资产 − 负债,自动写入进度曲线 + +**历史收支列表** +- 按月筛选,支持删除 + +--- + +### Tab 3:投资(Portfolio) +> 参考:Ghostfolio Portfolio + X-Ray + +**持仓列表** +- 手动录入:名称、当前市值、买入成本 +- 显示:浮盈金额、浮盈百分比 +- 支持编辑 / 删除 + +**资产配置** +- 录入时选择资产类别:A 股 / 美股ETF / 基金 / 债券 / 现金等价物 / 其他 +- 配置饼图(各类别占比) +- 总市值、总成本、总浮盈 + +**与净资产的关联** +- 投资资产占净资产比例(投资化程度) +- 现金/投资比例参考 + +> ⚠️ 本期不接实时行情,全部手动更新市值(见风险文档)。 + +--- + +### Tab 4:测算(FIRE Calculator) +> 参考:Ghostfolio FIRE Section + cFIREsim 情景模拟 + +**Barista FIRE 逻辑展示** +- 年支出 − 兼职年收入 = 投资需覆盖金额 +- ÷ 安全提取率 = 目标本金 +- 公式透明展示,参数可调 + +**达成时间线** +- 预计达成日期(年 + 月) +- 剩余年数和月数 +- 基于复利公式:FV = PV·(1+r)ⁿ + PMT·[(1+r)ⁿ−1]/r + +**三档情景对比** + +| 情景 | 年化收益率 | 预计达成 | +|---|---|---| +| 保守 | 4% | 自动计算 | +| 基准 | 6% | 自动计算 | +| 乐观 | 8% | 自动计算 | + +**可调参数**(持久化到 settings store) +- 每月定投额 +- 年化收益率(基准档) +- 年支出 +- 兼职年收入 +- 安全提取率 +- 目标本金(可手动覆盖) + +--- + +## 四、打卡重新设计 + +### 问题 +原 4 项中「定投到账」不适合每日打卡(定投按月执行),导致每天随便勾。 + +### 新方案:分频率打卡 + +**每日习惯(3 项,天天可勾)** + +| 项目 | 说明 | +|---|---| +| 今日收支已记录 | 触发去账本模块记一笔 | +| 无计划外支出 > 200 元 | 冲动消费自查 | +| 看了今日净值/进度 | 保持目标感 | + +**月度任务(1 项,每月 1 日出现,勾一次完成)** + +| 项目 | 说明 | +|---|---| +| 本月定投已执行 | 记录当月定投是否到账 | + +### 完成规则 +- **今日打卡**:3 项全勾 = allDone,参与连续天数和月完成率统计 +- **月度任务**:独立显示,不影响每日 allDone + +--- + +## 五、数据流关系 + +``` +账本(收支记录) + └─→ 月储蓄率 ──→ 总览关键指标 + └─→ 净资产快照 ──→ 净值曲线 ──→ 总览图表 + +投资(持仓) + └─→ 总市值 ──→ 净资产参考(手动对齐) + +设置(settings store) + └─→ 测算参数 ──→ FIRE 测算 ──→ 预计达成日期 ──→ 总览展示 +``` + +--- + +## 六、开发优先级(接续阶段 2 之后) + +| 优先级 | 内容 | 所在阶段 | +|---|---|---| +| P0 | 打卡 3 项重构 + 月度任务 | 立即 | +| P0 | 测算页三档情景对比 | 阶段 2 补充 | +| P1 | 投资页资产类别 + 配置饼图 | 阶段 2 补充 | +| P1 | 账本模块(快速记账 + 月汇总) | 阶段 3 | +| P2 | 总览 Dashboard + 净值曲线图 | 阶段 3 | +| P3 | 负债字段 | 阶段 3 |