Skip to content

About

快捷指令+Notion自动化账单

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Notion Billing

基于Gin框架的Go后端服务,用于处理Apple快捷指令发送的账单图片,通过大模型API进行OCR识别并返回结构化的账单信息。

功能特性

  • 接收Base64编码的图片数据
  • 本地存储和MinIO对象存储
  • 生成预签名URL(1分钟过期)
  • 集成火山引擎大模型API进行账单OCR识别
  • 智能分类账单类型
  • RESTful API接口

项目结构

billing/
├── cmd/server/          # 主服务器入口
├── internal/
│   ├── config/         # 配置管理
│   ├── handler/        # HTTP处理器
│   ├── model/          # 数据模型
│   └── service/        # 业务服务
├── uploads/            # 本地图片存储目录
├── go.mod             # Go模块文件
└── README.md          # 项目说明

环境配置

方法一:使用配置向导(推荐)

运行配置向导,按提示填入您的配置信息:

./setup.sh

方法二:手动配置

  1. 复制配置模板文件:
cp env.example .env
  1. 编辑 .env 文件,填入您的实际配置:
# 服务器配置
SERVER_PORT=8080

# MinIO配置(云服务或本地)
MINIO_ENDPOINT=your-minio-endpoint.com:9000
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key
MINIO_USE_SSL=true
MINIO_BUCKET=billing-images

# 火山引擎大模型配置
ARK_API_KEY=your-ark-api-key
ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
ARK_MODEL=your-model-endpoint-id
ARK_MAX_TOKENS=4096

# 上传配置
UPLOAD_PATH=./uploads
UPLOAD_EXPIRY_MINUTES=1

注意:所有配置都从 .env 文件读取,请确保所有必需参数都已正确配置。

安装和运行

快速启动

  1. 安装依赖:
go mod tidy
  1. 编译项目:
go build -o billing cmd/server/main.go
  1. 启动服务:
./billing

直接运行(开发模式)

go run cmd/server/main.go

测试服务

  1. 健康检查:
curl -X GET http://localhost:8080/api/v1/health
  1. 使用测试客户端:
go run test_client.go path/to/your/billing_image.jpg
  1. 直接API测试:
curl -X POST http://localhost:8080/api/v1/upload \
  -H "Content-Type: application/json" \
  -d '{"image_data": "your_base64_encoded_image_data"}'

注意:图片尺寸需要至少14x14像素,大模型才能正确识别。

API接口

上传账单图片

POST /api/v1/upload

请求体:

{
  "image_data": "base64_encoded_image_data"
}

响应:

{
  "success": true,
  "message": "Billing image processed successfully",
  "data": {
    "amount": 15.00,
    "time": "2025-08-08 07:38:41",
    "class": "shopping",
    "method": "银行卡",
    "transaction_id": "21324324234211",
    "type": "支出"
  }
}

健康检查

GET /api/v1/health

响应:

{
  "status": "ok",
  "message": "Billing service is running"
}

账单分类

系统支持以下账单分类:

  • shopping: 电商平台(淘宝、京东、亚马逊等)
  • transfer: 转账、红包等
  • finance: 理财、基金、借贷等
  • dining: 餐饮、外卖等
  • entertainment: 电影、K歌、旅游等
  • recharge: 手机话费、游戏点券等
  • subscription: 会员订阅等
  • gaming: 游戏内购买等
  • other: 其他无法分类的交易

技术栈

  • 框架: Gin
  • 对象存储: MinIO
  • 大模型: 火山引擎Ark
  • 语言: Go 1.21+

About

快捷指令+Notion自动化账单

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages