Files
ops-assistant/README.md
openclaw 0c1a4f06f7 feat: xiaji-go v1.0.0 - 智能记账机器人
- Telegram Bot + QQ Bot (WebSocket) 双平台支持
- 150+ 预设分类关键词,jieba 智能分词
- Web 管理后台(记录查看/删除/CSV导出)
- 金额精确存储(分/int64)
- 版本信息嵌入(编译时注入)
- Docker 支持
- 优雅关闭(context + signal)
2026-02-15 06:40:04 +08:00

176 lines
4.6 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.
# 🦞 虾记 Xiaji-Go
一个支持 **Telegram Bot****QQ Bot** 的智能记账机器人,带 Web 管理后台。
## ✨ 功能特性
- **多平台支持**:同时接入 Telegram Bot 和 QQ BotWebSocket 模式)
- **智能记账**:发送自然语言自动识别金额和消费分类(基于 jieba 分词)
- **150+ 预设分类关键词**:餐饮、交通、购物、饮品、水果、住房、医疗、娱乐等
- **Web 管理后台**响应式设计支持记录查看、删除、CSV 导出
- **金额精确**使用分int64存储避免浮点精度问题
- **优雅关闭**:支持 SIGTERM/SIGINT 信号,干净退出
## 📦 快速开始
### 二进制运行
```bash
# 1. 复制配置文件
cp config.yaml.example config.yaml
# 2. 编辑配置(填入 Bot Token 等信息)
vi config.yaml
# 3. 运行
./xiaji-go
```
### Docker 运行
```bash
# 1. 准备配置文件
cp config.yaml.example config.yaml
vi config.yaml
# 2. 使用 docker-compose
docker-compose up -d
# 或直接 docker run
docker run -d \
--name xiaji-go \
-p 9521:9521 \
-v $(pwd)/config.yaml:/app/config.yaml:ro \
-v $(pwd)/data:/app/data \
ouaone/xiaji-go:latest
```
### 从源码编译
```bash
# 需要 Go 1.22+、GCCgojieba 依赖 CGO
make build
# 交叉编译 Linux
make build-linux
```
## ⚙️ 配置说明
```yaml
server:
port: 9521 # Web 后台端口
key: "your-secret-key" # 会话密钥
database:
path: "./xiaji.db" # SQLite 数据库路径
admin:
username: "admin" # Web 后台用户名
password: "your_password" # Web 后台密码
telegram:
enabled: true # 是否启用 Telegram Bot
token: "YOUR_BOT_TOKEN" # BotFather 获取的 Token
qqbot:
enabled: false # 是否启用 QQ Bot
appid: "YOUR_APPID" # QQ 开放平台 AppID
secret: "YOUR_SECRET" # QQ 开放平台 AppSecret
```
## 💬 使用方式
### Telegram Bot 命令
| 命令 | 说明 |
|------|------|
| `/start` | 欢迎信息 |
| `/help` | 使用帮助 |
| `/list` | 最近 10 条记录 |
| `/today` | 今日消费汇总 |
| 直接发消息 | 自动记账(如"午饭 25元" |
### QQ Bot 关键词
| 关键词 | 说明 |
|--------|------|
| `帮助` / `菜单` / `功能` | 显示帮助 |
| `查看` / `记录` / `列表` | 最近 10 条记录 |
| `今日` / `今天` | 今日消费汇总 |
| 直接发消息 | 自动记账 |
### 记账格式
支持多种自然语言格式:
```
午饭 25元
打车 ¥30
买咖啡15块
车费10元
超市买水果38.5
```
### 消费分类
系统预设了 150+ 个关键词,自动匹配以下分类:
| 分类 | 示例关键词 |
|------|-----------|
| 🍜 餐饮 | 早饭、午饭、晚饭、外卖、火锅、面条 |
| 🚗 交通 | 打车、车费、地铁、公交、加油 |
| 🛒 购物 | 买、淘宝、超市、衣服、手机 |
| ☕ 饮品 | 咖啡、奶茶、星巴克、可乐 |
| 🍎 水果 | 水果、苹果、香蕉、西瓜 |
| 🍪 零食 | 零食、面包、蛋糕、甜品 |
| 🏠 住房 | 房租、水电、物业、宽带 |
| 📱 通讯 | 话费、流量、充值 |
| 💊 医疗 | 看病、药、医院、挂号 |
| 🎮 娱乐 | 电影、游戏、健身、旅游 |
| 📚 教育 | 书、课、培训、学费 |
| 🚬 烟酒 | 烟、白酒、红酒 |
## 🌐 Web 管理后台
访问 `http://localhost:9521`
- 📊 今日支出 / 本月支出 / 总记录数统计
- 📋 最近 50 条记录列表
- 🔍 按分类筛选
- 🗑️ 删除记录
- 📥 CSV 导出Excel 兼容 BOM 编码)
## 🏗️ 项目结构
```
xiaji-go/
├── cmd/main.go # 入口文件
├── config/config.go # 配置加载与验证
├── version/version.go # 版本信息
├── models/models.go # 数据模型与分类关键词
├── internal/
│ ├── bot/telegram.go # Telegram Bot
│ ├── qq/qq.go # QQ Bot (WebSocket)
│ ├── service/finance.go # 记账核心服务jieba 分词)
│ └── web/server.go # Web 管理后台
├── templates/index.html # Web 前端页面
├── config.yaml.example # 配置示例
├── Dockerfile # Docker 镜像
├── docker-compose.yml # Docker Compose
└── Makefile # 构建脚本
```
## 📋 技术栈
- **语言**: Go 1.22
- **Web 框架**: Gin
- **数据库**: SQLite (GORM)
- **分词**: gojieba (结巴分词 Go 版)
- **Telegram SDK**: go-telegram-bot-api v5
- **QQ SDK**: tencent-connect/botgo v0.2.1 (WebSocket 模式)
## 📄 License
MIT