# 产品需求文档 (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)