duqing2026 commited on
Commit
011e6db
·
1 Parent(s): 214f078

更新 md

Browse files
Files changed (1) hide show
  1. README.md +33 -6
README.md CHANGED
@@ -17,7 +17,7 @@ short_description: 本地运行的微信/支付宝账单分析工具,隐私安
17
 
18
  - **隐私安全**:所有数据仅在浏览器和内存中处理,刷新即焚,不保存任何数据。
19
  - **多平台支持**:支持微信支付和支付宝导出的账单文件 (CSV)。
20
- - **交互式图表**:内置月度趋势、消费分类、每日波动等多种可视化图表。
21
  - **演示模式**:没有账单文件?点击"查看演示数据"即可体验完整功能。
22
  - **隐私模式**:一键模糊金额显示,适合在公共场合查看。
23
 
@@ -46,11 +46,38 @@ python app.py
46
 
47
  4. 访问 `http://localhost:7860`
48
 
49
- ## 🛠️ 技术
50
-
51
- - **Backend**: Flask, Pandas
52
- - **Frontend**: HTML5, Tailwind CSS, ECharts
53
- - **Deployment**: Docker
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
  ## 🔒 隐私声明
56
 
 
17
 
18
  - **隐私安全**:所有数据仅在浏览器和内存中处理,刷新即焚,不保存任何数据。
19
  - **多平台支持**:支持微信支付和支付宝导出的账单文件 (CSV)。
20
+ - **交互式图表**:内置月度趋势、消费分类、每日波动、周间习惯、24小时分布等多种可视化图表。
21
  - **演示模式**:没有账单文件?点击"查看演示数据"即可体验完整功能。
22
  - **隐私模式**:一键模糊金额显示,适合在公共场合查看。
23
 
 
46
 
47
  4. 访问 `http://localhost:7860`
48
 
49
+ ## 🛠️ 技术深度解析 (面试指南)
50
+
51
+ ### 1. 核心架构设计
52
+ 本项目采用 **轻量级前后端分离** 架构:
53
+ - **后端 (Flask)**: 负责核心业务逻辑,包括 CSV 文件解析、数据清洗、统计分析和随机演示数据生成。
54
+ - **前端 (Vanilla JS + Tailwind)**: 负责 UI 渲染和交互,通过 Fetch API 与后端通信,使用 ECharts 进行数据可视化。
55
+ - **数据流**: 用户上传 -> 内存处理 (Pandas) -> JSON 响应 -> 前端渲染 -> 刷新销毁。
56
+
57
+ ### 2. 关键技术难点与解决方案
58
+
59
+ #### A. 多格式账单兼容与去重
60
+ **问题**: 微信和支付宝的账单格式不同,且部分导出文件存在"列名重复"的问题(如多个"金额"列),直接 `pd.read_csv` 会报错。
61
+ **解决**:
62
+ - 实现了 `safe_rename_and_filter` 函数,通过自定义映射表安全提取所需列。
63
+ - 针对重复列名,逻辑优先选取第一个匹配项,确保数据读取的稳定性。
64
+ - 使用 `io.StringIO` 和流式处理,避免大文件占用过多磁盘 IO。
65
+
66
+ #### B. 隐私优先的数据处理
67
+ **策略**:
68
+ - **内存化**: 所有上传的文件仅在请求生命周期内存在于内存(通过 Flask `request.files` 流式读取),不保存到磁盘。
69
+ - **无状态**: 后端不维护 Session 或数据库,每次分析都是独立的原子操作。
70
+
71
+ #### C. 高性能数据分析
72
+ **实现**:
73
+ - 利用 **Pandas** 强大的向量化操作进行数据清洗(去货币符号、时间格式转换)。
74
+ - 使用 `groupby` 和 `resample` 快速生成月度、周度、时段等多维度的统计数据。
75
+ - 整个分析过程在毫秒级完成,提供流畅的用户体验。
76
+
77
+ ### 3. 项目亮点
78
+ - **鲁棒性**: 完善的异常处理机制,无论是编码问题(GBK/UTF-8)还是格式问题,都能优雅降级或提示。
79
+ - **用户体验**: 增加了"演示模式"和"隐私模式",细节打磨到位(如 CSS 模糊滤镜)。
80
+ - **可扩展性**: 模块化的代码结构,方便后续接入更多银行或平台的账单格式。
81
 
82
  ## 🔒 隐私声明
83