Files
ProjectAGiPrompt/17-ProjectMoneyX/2-概要详细设计/prd-gemini.md
2026-03-18 16:16:47 +08:00

4.9 KiB
Raw Blame History

产品需求文档 (PRD)ProjectMoneyX

1. 产品概述

ProjectMoneyX 是一款专为 FireFlyIII 设计的个人财务自动化数据清洗与导入中间件。它通过统一的数据标准,将分散在支付平台、银行、生活服务及加密货币交易所的零散账单,转化为结构化的财务数据,并无缝对接至 FireFlyIII 的 DataImporter实现全资产的自动化流转与管理。

2. 核心痛点与解决思路

  • 痛点:多平台账单格式各异,手动整理耗时且易错;跨账户转账(如从建行转入支付宝)容易被重复记账(一笔支出,一笔收入)。
  • 解决思路 (核心价值)
  • 标准化将千奇百怪的源数据映射为统一的内部数据模型Standard Schema
  • 智能化去重与合并识别跨账户转账将单边记录闭环为完整的复式记账流Double-Entry Journal
  • 无缝对接:作为前置清洗层,让 FireFlyIII 专注财务分析,而非脏数据处理。

3. 产品架构与数据流转规则

3.1 规则映射策略:两段式分离(解答您的疑问)

强烈建议不要在 ProjectMoneyX 中做业务类的分类映射(如“买菜”映射到“餐饮”),这会与 FireFlyIII 的 Rule Engine 功能重叠且难以维护。

  • 第一阶段ProjectMoneyX 负责 - 数据对齐):负责字段级映射。将各平台的异构字段如支付宝的“交易对方”、银行的“附言”统一映射为标准数据字段Date, Amount, Payee, Description, Source Account
  • 第二阶段FireFlyIII 负责 - 业务分类):利用 FireFlyIII 本身的规则引擎,基于整理好的 Payee 和 Description自动分配 Budget、Category 和 Tags。

3.2 数据流转拓扑

多源账单导入 -> 解析器 (Parser) -> 标准化入库 (SQLite) -> 链路合并与去重 (Deduplication) -> 格式化输出 (API) -> DataImporter / FireFlyIII

4. 核心功能需求

4.1 多源数据接入 (Data Ingestion)

系统需支持通过插件化/模块化的方式接入各类账单文件CSV/Excel/API

  • 支付平台支付宝Alipay、微信支付WeChat Pay
  • 传统银行:建设银行、工商银行、中信银行、汇丰银行(需考虑不同语言/地区的账单格式兼容)。
  • 电商/生活平台:美团、京东(主要用于细化支付平台的笼统账单,例如将微信支付的“美团订单”替换为具体的“外卖-商家名”)。
  • 加密货币Binance、ByBit需支持将 Crypto 交易折算为基础法币,或保留原始币种对接 FireFlyIII 的多货币系统,需考虑手续费剥离)。

4.2 本地数据清洗与存储 (Cleanse & Store)

  • 统一数据模型:所有解析后的数据写入本地 SQLite。核心字段应包含Original_ID, Platform, Transaction_Time, Amount, Currency, Transaction_Type (入账/出账), Opposite_Party (交易对手), Remark
  • 数据幂等性校验基于平台提供的唯一交易流水号Original_ID进行绝对去重确保同一份账单多次上传不会重复落库。

4.3 智能去重与链路合并 (Deduplication & Linkage)

这是本系统的核心亮点。针对跨账户资金流动,进行模糊匹配与链路合并:

  • 时间与金额双重校验Time-Amount Window

  • 设置可配的时间容差(如 \pm 5 分钟)。

  • 金额精准匹配(考虑可能存在的手续费,可设置极小金额容差)。

  • 转账链路闭环

  • 场景:银行卡支出 1000 元(流向支付宝),支付宝收入 1000 元。

  • 动作:系统在 SQLite 中扫描到这两笔符合“时间窗+金额”匹配的相反流水,将其从“两笔独立的支出和收入”合并为“一笔内部转账 (Transfer)”,源账户为银行卡,目标账户为支付宝。

4.4 自动化导出与推送 (Export & Integration)

  • 标准 CSV 生成:基于 SQLite 中已清洗且合并的数据,生成完全符合 FireFlyIII DataImporter 规范的 CSV 文件。
  • API 推送集成:支持通过 Webhook 或直接调用 DataImporter 的 API 接口,实现“本地清洗完毕 -> 自动触发 DataImporter 导入任务”的丝滑体验。

5. 非功能需求与产品设计优化建议

  • 本地优先原则鉴于财务数据的极度敏感性项目应完全采用本地化部署Docker/本地命令行SQLite 数据库仅存在于本地。
  • 插件化架构:银行和平台的账单格式随时可能变更。建议在代码架构上将“解析器(Parser)”设计为独立模块。未来当某银行格式改变时,只需更新对应 Parser 脚本,而无需重构主程序。
  • 对账可视化(可选进阶):提供一个简单的本地 Web UI 页面,展示“未成功匹配的孤儿转账记录”,允许用户手动干预合并。