# 产品需求文档 (PRD): ProjectMoneyX 个人全景财务分析系统

| 文档属性 | 详情 |
| --- | --- |
| **项目名称** | ProjectMoneyX |
| **版本号** | v1.1 (优化版) |
| **编制日期** | 2026-02-26 |

## 1. 项目背景与目标

### 1.1 项目背景

随着移动支付的普及，个人财务数据分散在支付宝、微信、各家银行APP及电商平台中。用户难以通过单一平台获取全景财务状况，面临“账单碎片化”、“流水重复记录”、“统计维度单一”等痛点。

### 1.2 项目目标

构建一套自动化、高精度的个人财务分析系统。通过ETL（抽取、转换、加载）技术整合多源数据，利用算法解决跨账户流水重复问题，提供多维度的收支分析、资产趋势及预算管理功能，帮助用户实现“上帝视角”的财务管控。

---

## 2. 数据源与采集规范 (Data Ingestion)

系统需支持多格式、多来源的账单导入，并建立可扩展的解析适配器模式。

| 数据来源 | 原始格式 | 数据周期 | 解析策略 | 数据权重 | 备注 |
| --- | --- | --- | --- | --- | --- |
| **支付宝** | CSV | 1年 | Pandas直接读取 | **L1 (最高)** | 包含商品明细，作为消费类主数据 |
| **微信支付** | CSV | 3个月 | Pandas预处理 (表头清洗) | **L2** | 包含转账与社交红包，需特殊标记 |
| **招商银行** | PDF | 1年 | 文本流解析 (pdfplumber) | **L3** | 作为资金来源核对依据 (Reconciliation) |
| **京东金融** | PDF/XLS | 1年 | 文本流解析 / OCR辅助 | **L3** | 重点关注“白条”类信贷数据 |
| **云闪付** | PDF/CSV | 1年 | 适配器解析 | **L3** | 银联通道补充数据 |

**功能要求：**

* **适配器模式（Adapter Pattern）：** 针对不同来源开发独立的解析类（Parser Class），当银行账单格式变更时，仅需更新对应解析器。
* **OCR 增强解析：** 针对图片格式的账单或非标准的扫描版PDF，集成 OCR 引擎（如 PaddleOCR）进行关键字段（日期、金额、商户）提取。

---

## 3. 数据清洗与核心逻辑 (Data Cleaning & Logic)

这是本系统的核心壁垒，重点解决多渠道数据冲突与标准化问题。

### 3.1 时间维度标准化

* **存储标准：** 所有交易时间戳统一转换为 **ISO 8601** 格式存储。
* **时区处理：** 统一归一化为 `UTC+8`。若涉及跨国交易（如外币信用卡），需保留原始交易币种和时间，并记录当期汇率。
* **查询支持：** 数据库层需支持基于时间窗口（Time Window）的聚合查询（如：`BETWEEN '2026-02-01' AND '2026-02-28'`）。

### 3.2 交易去重与链路合并 (De-duplication & Linkage)

初始需求中提到的“重复项”实际上是“同一笔交易在不同账户的映射”。系统不应简单删除，而应建立**交易链路（Transaction Linkage）**。

**核心算法逻辑：**
设支付宝账单记录为 $T_{ali}$，银行账单记录为 $T_{bank}$。
当满足以下条件时，判定为同一笔交易：

$$| Time(T_{ali}) - Time(T_{bank}) | \le \Delta t \quad (\text{建议 } \Delta t = 120s)$$

$$Amount(T_{ali}) = Amount(T_{bank})$$

**处理策略：**

1. **合并展示：** 将两条记录关联。
* **主记录（保留）：** 支付宝/微信记录（因其包含具体的商户名、商品名、消费分类）。
* **辅记录（隐藏/标记）：** 银行卡记录标记为“资金划转（Transfer）”或“支付源扣款”。


2. **账户归属明确：**
* **支付渠道（Payment Channel）：** 支付宝、微信、云闪付、美团。
* **资金账户（Funding Source）：** 招商银行信用卡、工商银行储蓄卡、京东白条、余额宝。
* *示例：* 用户在淘宝买衣服，用支付宝绑定的招行卡支付。系统记录为：**支出 200元 (分类:服饰)**，支付渠道：**支付宝**，资金来源：**招行信用卡**。



### 3.3 智能分类 (Smart Categorization)

* **多级分类体系：**
* 一级分类：餐饮、交通、购物、居住、娱乐、医疗、金融。
* 二级分类：早餐/正餐、地铁/打车、数码/服饰、房租/水电。


* **关键词映射：** 建立 `Merchant_Keyword_Map` 表。
* 例：包含“星巴克”、“瑞幸” -> 自动归类为 [餐饮-咖啡]。
* 例：包含“中国石油” -> 自动归类为 [交通-加油]。


* **人工修正与学习：** 用户手动修改某一笔交易分类后，系统询问“是否将该商户后续交易默认应用此分类”。

---

## 4. 功能模块详述

### 4.1 仪表盘 (Dashboard)

* **全景资产卡片：** 显示总资产、总负债（信用卡+白条+花呗）、净资产。
* **本月收支概览：** * 当月支出 vs 上月同期环比 (MoM)。
* 预算执行进度条（如：本月预算剩余 30%）。


* **收支趋势图：** 折线图展示近12个月的收支波动。

### 4.2 账单查询与分析

* **高级筛选器：** 支持组合条件筛选：
* 时间范围（自定义/本周/本月/本年）。
* 金额区间（如：> 1000元的大额支出）。
* 支付渠道 & 资金账户。
* 交易分类。
* 关键词搜索（如：“京东”）。


* **多维图表：**
* [饼图] 消费结构分析（哪类钱花得最多）。
* [堆叠柱状图] 支付渠道依赖度分析。
* [桑基图 (Sankey Diagram)] 资金流向可视化（从收入 -> 账户 -> 支出类别）。



### 4.3 预算与预警

* **预算设置：** 支持总预算及分分类预算（如：“餐饮”每月限额 3000元）。
* **超支预警：** 当某一类别支出达到预算的 80% 时，界面高亮提示。

---

## 5. 非功能需求 (NFR)

### 5.1 数据隐私与安全

* **本地优先（Local-First）：** 鉴于财务数据极度敏感，建议所有数据解析、清洗、存储默认在用户本地电脑中完成。

---
## 技术栈
1. Golang
2. Vue
3. TypeScript
4. SQLite
5. ECharts(寻找适合的图表工具,不限于ECharts)