Files
fire_goal/docs/07-模块功能设计.md
T
ilaandClaude Sonnet 4.6 27b8eaafbd docs: add module design doc based on Ghostfolio & Maybe analysis
- maps gaps in current app vs reference projects
- redefines 4 tabs: 总览/账本/投资/测算
- redesigns checkin: 3 daily habits + 1 monthly task
- adds 3-scenario FIRE projection design
- documents data flow between modules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 16:27:46 +08:00

195 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |