Files
billai/CHANGELOG.md
2026-01-26 16:37:00 +08:00

172 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 更新日志
所有重要的更改都会记录在此文件中。
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
## [1.3.1] - 2026-01-26
### 优化
- **版本号显示优化** - 侧边栏版本号按钮样式改进
- 移至次级导航区域,与其他菜单项样式一致
- 更新日志改用 Sheet 组件(右侧滑出),替代底部 Drawer
- 统一暗色主题下的视觉效果
## [1.3.0] - 2026-01-26
### 新增
- **京东账单支持** - 支持京东白条账单上传和清洗
- 自动识别京东账单类型(交易流水 ZIP
- 解析京东白条账单 CSV 格式(含还款日期信息)
- 京东专属分类映射配置(`config/category_jd.yaml`
- 支持京东外卖、京东平台商户等商户识别
- 上传页面和账单列表页面添加"京东"选项
- 账单来源 Badge 添加紫色京东标识
### 优化
- **京东订单智能去重** - 上传京东账单时自动软删除其他来源中的京东订单
- 识别描述中包含"京东-订单编号"的支付宝/微信账单
- 软删除冲突记录,避免重复计入支出
- 上传响应返回被删除的记录数
- **分类推断复核等级优化** - 京东账单引入 LOW 复核等级
- 商户映射成功(如"京东外卖"):无需复核
- 原分类映射成功(如"食品酒饮"→餐饮美食):无需复核
- 通用关键词匹配成功:**LOW 复核**(需确认推断准确性)
- 未知分类或匹配失败HIGH 复核
- **京东平台商户关键词扩展** - 在通用分类配置中添加京东平台常见关键词
- 宠物用品:小佩、米家宠物、猫砂、猫粮等
- 数码电器:小米、延长保修、家电等
### 技术改进
- 新增 `analyzer/cleaners/jd.py` 京东账单清理器
- 新增 `analyzer/config/category_jd.yaml` 京东专属配置
- 后端新增 `SoftDeleteJDRelatedBills()` 接口和实现
- 前端 API 类型添加 `'jd'` 支持
- 新增单元测试 `analyzer/test_jd_cleaner.py`11 个测试用例)
### 文档
- 更新 `TODO.md` 添加 Gitea Webhook 自动部署计划
## [1.2.0] - 2026-01-25
### 新增
- **账单删除功能** - 支持在账单详情抽屉中删除账单(软删除)
- 删除按钮带二次确认,防止误操作
- 删除后数据标记为 `is_deleted`,不真正从数据库删除
- 已删除的账单在所有查询中自动过滤
- 账单列表和复核页面都支持删除操作
### 技术改进
- 后端 MongoDB 查询方法添加软删除过滤
- 新增 `DELETE /api/bills/:id` 接口
- `BillDetailDrawer` 组件新增 `allowDelete``onDelete` props
## [1.2.1] - 2026-01-23
### 优化
- **智能复核快捷确认** - 在复核列表每行添加快捷确认按钮
- 无需打开详情页面即可确认分类正确
- 点击确认按钮立即清除复核标记并从列表移除
- 自动更新统计数据(总数、高优先级、低优先级计数)
- 按钮支持加载状态显示,防止重复操作
- 提升复核效率,支持快速批量确认
### 文档
- **AGENTS.md 更新** - 精简为 150 行,专为 AI 编程助手设计
- 核心构建/测试/lint 命令说明
- TypeScript、Go、Python 代码风格指南
- 关键架构模式和文件位置
## [1.1.0] - 2026-01-23
### 新增
- **ZIP 压缩包上传** - 支持上传加密的 ZIP 压缩包(微信/支付宝导出的原始格式)
- 支持 AES 加密的 ZIP 文件,需输入解压密码
- 自动将 xlsx 格式转换为 csv
- 自动将 GBK 编码转换为 UTF-8
- 前端添加密码输入框
### 修复
- **支付宝扩展格式解析** - 修复从 ZIP 解压的支付宝账单(含 24 行元数据头)无法解析的问题
- **CSV 字段数不一致** - 修复支付宝 CSV 文件字段数不一致导致解析失败的问题
- **中文文件名乱码** - 修复 ZIP 内 GBK 编码的中文文件名解压后乱码的问题
### 其他
- 添加 `AGENTS.md` 项目开发指南文档
## [1.0.7] - 2026-01-16
### 优化
- **认证过期策略调整** - Token 过期/无效由后端统一判断,前端不再自行解析过期时间
- 后端新增 JWT 鉴权中间件,统一返回 401 并携带错误码
- 前端在收到 401 后清理登录状态并跳转到登录页
### 重构
- **后端数据访问层收敛** - 账单相关服务统一通过 repository 访问 MongoDB减少多套数据层并存
## [1.0.6] - 2026-01-08
### 修复
- **数据分析页面总支出和大盘数据错误** - 修复数据分析页面与账单管理页面总支出不一致的问题
- 原因:后端限制 `page_size` 最大为 100但前端请求了 10000导致只获取到部分数据
- 解决:数据分析页面改为使用后端返回的聚合统计(`total_expense`而不是前端计算且关闭后端最大100的限制
- 现在两个页面都使用相同的后端数据库聚合统计,确保数据一致性
## [1.0.5] - 2026-01-08
### 优化
- **支付宝时间格式解析** - 支持无前导零的日期格式
- 自动标准化 `2026/1/13 20:08``2026/01/13 20:08`
- 兼容支付宝账单的时间格式
- **Webhook 服务修复** - 移除未使用的 `fmt` 导入,修复编译错误
## [1.0.4] - 2026-01-13
### 新增
- **Gitea Webhook 自动部署** - 推送代码后自动触发服务器拉取并重新部署
- 独立的 webhook 服务Go 实现,端口 9000
- HMAC-SHA256 签名验证,确保安全性
- 仅处理 master/main 分支的推送
- 零停机热更新部署
- 自动清理旧镜像
- 健康检查验证
- 完整的部署配置文档 `WEBHOOK_SETUP.md`
### 优化
- 部署脚本使用 `docker-compose up -d --build --force-recreate` 实现热更新
- 部署时排除 webhook 容器自身,避免自杀问题
- Dockerfile 添加国内镜像源配置,加速构建
## [1.0.3] - 2026-01-13
### 新增
- **DateTimePicker 组件** - 使用 shadcn-ui 的 Calendar + Popover 替换原生 datetime-local 输入框
- **收支类型动态分类** - 手动添加账单时,根据收支类型自动切换分类选项(支出/收入分类)
### 优化
- 切换收支类型时自动清空已选分类,避免选择不匹配的分类
- 收入模式下隐藏"支付方式"和"交易状态"输入框,简化表单
- 调整手动添加账单表单布局为 1:1 两列,待提交列表宽度更合理
## [1.0.2] - 2026-01-08
### 修复
- 修复 Docker volume 映射路径与配置不一致导致上传文件无法持久化的问题
## [1.0.1] - 2026-01-07
### 新增
- 手动添加账单功能
- 账单去重检查
- MongoDB 数据持久化
## [1.0.0] - 2026-01-01
### 新增
- 初始版本发布
- 支持微信/支付宝账单 CSV 导入
- 智能分类推断
- 可视化分析报表
- Docker Compose 一键部署