2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:59:00 +08:00
2026-01-25 21:57:22 +08:00

Accounting App Backend

这是 Accounting App 的后端服务,基于 Go (Gin 框架) 开发。它提供 RESTful API支持账户管理、交易记录、汇率同步、AI 记账等功能。

🛠️ 技术栈

  • 语言: Go 1.24+
  • Web 框架: Gin
  • ORM: GORM
  • 数据库: MySQL 8.0+
  • 缓存: Redis 7.0+ (用于汇率缓存)
  • 配置: godotenv
  • PDF 生成: gofpdf
  • Excel 处理: excelize

📂 目录结构

backend/
├── cmd/                # 应用程序入口
│   ├── server/         # 主 API 服务入口
│   └── migrate/        # 数据库迁移工具
├── internal/           # 内部业务逻辑 (不对外暴露)
│   ├── cache/          # 缓存相关代码 (Redis)
│   ├── config/         # 配置加载
│   ├── database/       # 数据库连接与初始化
│   ├── handler/        # HTTP 路由处理函数 (Controller)
│   ├── middleware/     # Gin 中间件
│   ├── models/         # 数据模型 (GORM struct)
│   ├── repository/     # 数据访问层 (DAO)
│   ├── router/         # 路由定义
│   └── service/        # 业务逻辑服务层
├── pkg/                # 通用包 (可被外部导入)
│   ├── api/            # API 响应结构定义
│   └── utils/          # 工具函数
└── database/
    └── sql/            # SQL 脚本 (结构与初始数据)

🚀 快速开始

前置要求

  • Go 1.24+
  • MySQL 8.0+
  • Redis 7.0+ (可选,推荐启用以获得更好的汇率性能)

1. 配置环境变量

复制 .env.example.env 并填写配置:

cp .env.example .env

关键配置项:

# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=accounting_db

# Redis 配置 (可选)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

# 外部 API (汇率)
YUN_API_URL=https://api.example.com
YUN_API_KEY=your_api_key

2. 数据库迁移

初始化数据库表结构:

go run cmd/migrate/main.go

3. 运行服务

启动后端服务器:

go run cmd/server/main.go

服务默认运行在 http://localhost:8080

主要功能

  • 账户管理: 支持多币种账户、信用卡和普通账户。
  • 交易记录: 记录收入、支出和转账,支持批量导入。
  • 多币种支持: 实时汇率同步 (支持缓存策略),支持多种国际货币。
  • AI 智能记账: 基于 LLM 的自然语言记账功能 (语音/文本 -> 交易记录)。
  • 统计报表: 生成 Excel/PDF 格式的财务报表,支持按类别、时间统计。
  • 自动分类: 基于规则和历史数据的智能分类建议。

🧪 测试

运行所有单元测试:

go test ./...

⚠️ 注意事项

  • 确保 internal/config 中的配置结构与 .env 文件一致。
  • 生产环境部署建议使用 go build 编译为二进制文件运行。
  • Redis 连接失败时,汇率服务会自动降级为直接请求 API 模式。
Description
Novault后端项目
Readme 289 KiB
Languages
Go 99.8%
Dockerfile 0.2%