feat: 完善项目架构并增强分析页面功能
- 新增项目文档和 Docker 配置 - 添加 README.md 和 TODO.md 项目文档 - 为各服务添加 Dockerfile 和 docker-compose 配置 - 重构后端架构 - 新增 adapter 层(HTTP/Python 适配器) - 新增 repository 层(数据访问抽象) - 新增 router 模块统一管理路由 - 新增账单处理 handler - 扩展前端 UI 组件库 - 新增 Calendar、DateRangePicker、Drawer、Popover 等组件 - 集成 shadcn-svelte 组件库 - 增强分析页面功能 - 添加时间范围筛选器(支持本月默认值) - 修复 DateRangePicker 默认值显示问题 - 优化数据获取和展示逻辑 - 完善分析器服务 - 新增 FastAPI 服务接口 - 改进账单清理器实现
This commit is contained in:
14
server/repository/global.go
Normal file
14
server/repository/global.go
Normal file
@@ -0,0 +1,14 @@
|
||||
// Package repository 全局存储实例管理
|
||||
package repository
|
||||
|
||||
var globalRepo BillRepository
|
||||
|
||||
// SetRepository 设置全局存储实例
|
||||
func SetRepository(r BillRepository) {
|
||||
globalRepo = r
|
||||
}
|
||||
|
||||
// GetRepository 获取全局存储实例
|
||||
func GetRepository() BillRepository {
|
||||
return globalRepo
|
||||
}
|
||||
44
server/repository/repository.go
Normal file
44
server/repository/repository.go
Normal file
@@ -0,0 +1,44 @@
|
||||
// Package repository 定义数据存储层接口
|
||||
// 负责所有数据持久化操作的抽象
|
||||
package repository
|
||||
|
||||
import "billai-server/model"
|
||||
|
||||
// BillRepository 账单存储接口
|
||||
type BillRepository interface {
|
||||
// Connect 建立连接
|
||||
Connect() error
|
||||
|
||||
// Disconnect 断开连接
|
||||
Disconnect() error
|
||||
|
||||
// SaveRawBills 保存原始账单数据
|
||||
SaveRawBills(bills []model.RawBill) (int, error)
|
||||
|
||||
// SaveCleanedBills 保存清洗后的账单数据
|
||||
// 返回: 保存数量、重复数量、错误
|
||||
SaveCleanedBills(bills []model.CleanedBill) (saved int, duplicates int, err error)
|
||||
|
||||
// CheckRawDuplicate 检查原始数据是否重复
|
||||
CheckRawDuplicate(fieldName, value string) (bool, error)
|
||||
|
||||
// CheckCleanedDuplicate 检查清洗后数据是否重复
|
||||
CheckCleanedDuplicate(bill *model.CleanedBill) (bool, error)
|
||||
|
||||
// GetCleanedBills 获取清洗后的账单列表
|
||||
GetCleanedBills(filter map[string]interface{}) ([]model.CleanedBill, error)
|
||||
|
||||
// GetCleanedBillsPaged 获取清洗后的账单列表(带分页)
|
||||
// 返回: 账单列表、总数、错误
|
||||
GetCleanedBillsPaged(filter map[string]interface{}, page, pageSize int) ([]model.CleanedBill, int64, error)
|
||||
|
||||
// GetBillsAggregate 获取账单聚合统计(总收入、总支出)
|
||||
// 返回: 总支出、总收入、错误
|
||||
GetBillsAggregate(filter map[string]interface{}) (totalExpense float64, totalIncome float64, err error)
|
||||
|
||||
// GetBillsNeedReview 获取需要复核的账单
|
||||
GetBillsNeedReview() ([]model.CleanedBill, error)
|
||||
|
||||
// CountRawByField 按字段统计原始数据数量
|
||||
CountRawByField(fieldName, value string) (int64, error)
|
||||
}
|
||||
Reference in New Issue
Block a user