Spaces:
Sleeping
Sleeping
Commit ·
011e6db
1
Parent(s): 214f078
更新 md
Browse files
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 |
-
|
| 52 |
-
|
| 53 |
-
- **
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
|