Compare commits
3
Commits
5e453b83e2
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a395ab525e | ||
|
|
690d73afde | ||
|
|
3d1cfd4f22 |
@@ -1,12 +1,11 @@
|
||||
# 🛠️ Ops-Assistant
|
||||
|
||||
多平台 Bot + 自动化运维一体的私人助理服务:**智能记账**、**Runbook 工单执行**、**模块化 OPS 命令**(Cloudflare / CPA / 订阅 / cfdav / 邮箱),带 Web 管理后台。
|
||||
多平台 Bot + 自动化运维一体的私人助理服务:**Runbook 工单执行**、**模块化 OPS 命令**(Cloudflare / CPA / 订阅 / cfdav / 邮箱),带 Web 管理后台。
|
||||
|
||||
> 项目由 Xiaji-Go(记账机器人)演进更名而来;当前 `VERSION` 为 `0.0.1`(框架重构后重新起版,历史记账版本线为 v1.1.x)。
|
||||
> 当前 `VERSION` 为 `0.0.1`。项目定位为模块化 OPS 助手。
|
||||
|
||||
## 🆕 框架版更新要点
|
||||
|
||||
- **项目更名**:`xiaji-go` → `ops-assistant`(go.mod / 二进制 / systemd 同步)
|
||||
- **模块化命令框架**:`internal/core/module` 统一命令模板、门控(feature flag / confirm / dry-run)、错误标签(ecode)、结果格式化回传
|
||||
- **Runbook 执行器增强**(`internal/core/runbook`):
|
||||
- 新增动作:`http.get` / `http.post` / `assert.json`(支持 `expect_success` 严格断言,API 失败不再假阳性)
|
||||
@@ -14,18 +13,16 @@
|
||||
- 任务与步骤全程落库(`ops_jobs` / `ops_job_steps`),Web 后台可查
|
||||
- **查询类命令结果直接回传**(此前仅回执 job 号)
|
||||
- **CF 模块增强**:DNS 查询支持**传域名自动解析 zone_id**;`dns list / zones / workers list` 结果可读回传;API `success:false` 时任务真失败并回传错误摘要
|
||||
- **新增模块**:`cpa`(usage 备份/恢复)、`cfdav`、`mail`、`sub`(订阅管理与到期提醒)
|
||||
- **新增模块**:`cpa`(usage 备份/恢复)、`cfdav`、`mail`、`sub`(订阅管理与到期提醒)、`rate`(实时多源汇率与卡组织结算价对比)
|
||||
- **QQ Bot**:AI 命令加载器、每日订阅提醒调度(09:00)
|
||||
- **Web 后台**:模块设置页(CF / CPA / cfdav / AI)、OPS 任务页、渠道管理、审计页
|
||||
|
||||
## ✨ 功能特性
|
||||
|
||||
- **多平台接入**:QQ 官方 Bot(WebSocket)、Telegram Bot、飞书(通道层预留)
|
||||
- **智能记账**:自然语言识别金额与消费分类(jieba 分词,150+ 预设关键词)
|
||||
- **OPS 命令**:`/cf` `/cpa` `/cfdav` `/sub` `/mail`,写操作带 dry-run / 确认门控
|
||||
- **OPS 命令**:`/cf` `/cpa` `/cfdav` `/sub` `/mail` `/rate`,写操作带 dry-run / 确认门控
|
||||
- **Runbook 自动化**:YAML 定义、步骤编排、断言校验、任务审计
|
||||
- **Web 管理后台**:记录查看 / 删除 / CSV 导出、模块与渠道配置、任务与审计查看
|
||||
- **金额精确**:分(int64)存储,避免浮点误差
|
||||
- **Web 管理后台**:模块与渠道配置、任务与审计查看
|
||||
- **优雅关闭**:SIGTERM/SIGINT 干净退出
|
||||
|
||||
## 📦 快速开始
|
||||
@@ -53,7 +50,7 @@ docker run -d --name ops-assistant -p 9621:9621 \
|
||||
### 从源码编译
|
||||
|
||||
```bash
|
||||
# 需要 Go 1.22+、GCC(gojieba 依赖 CGO)
|
||||
# 需要 Go 1.22+
|
||||
make build
|
||||
make build-linux
|
||||
```
|
||||
@@ -66,7 +63,7 @@ server:
|
||||
key: "your-secret-key" # 会话密钥
|
||||
|
||||
database:
|
||||
path: "./xiaji.db" # SQLite 数据库路径
|
||||
path: "./ops.db" # SQLite 数据库路径
|
||||
|
||||
admin:
|
||||
username: "admin" # Web 后台用户名
|
||||
@@ -84,28 +81,9 @@ qqbot:
|
||||
|
||||
> **模块凭据**(CF API Token、CPA 管理令牌、cfdav 账号等)保存在数据库 `app_settings` 表,通过 Web 后台「模块设置」页配置,**不写入配置文件**;渠道 secrets 在数据库内加密存储(`enc:v1:` 前缀)。
|
||||
|
||||
## 💬 记账功能
|
||||
## 🤖 Bot 与 OPS
|
||||
|
||||
### QQ Bot 关键词
|
||||
|
||||
| 关键词 | 说明 |
|
||||
|--------|------|
|
||||
| `帮助` / `菜单` | 显示帮助 |
|
||||
| `查看` / `记录` / `列表` | 最近 10 条记录 |
|
||||
| `今日` / `今天` | 今日消费汇总 |
|
||||
| 直接发消息 | 自动记账(如"午饭 25元") |
|
||||
|
||||
### Telegram Bot 命令
|
||||
|
||||
`/start` `/help` `/list` `/today`,或直接发消息自动记账。
|
||||
|
||||
### 支持格式与分类
|
||||
|
||||
```
|
||||
午饭 25元 / 打车 ¥30 / 买咖啡15块 / 超市买水果38.5
|
||||
```
|
||||
|
||||
预设 150+ 关键词覆盖:🍜 餐饮、🚗 交通、🛒 购物、☕ 饮品、🍎 水果、🍪 零食、🏠 住房、📱 通讯、💊 医疗、🎮 娱乐、📚 教育、🚬 烟酒。
|
||||
Bot 主要用于接收 OPS 命令并返回执行结果。支持 QQ Bot、Telegram Bot;具体渠道开关与凭据在 Web 管理后台配置。
|
||||
|
||||
## 🧰 OPS 命令参考
|
||||
|
||||
@@ -133,6 +111,17 @@ qqbot:
|
||||
| `/cpa usage backup` | 实时导出 usage 并打包备份(含 sha256/meta) |
|
||||
| `/cpa usage restore <备份包>` | 恢复 usage(import 接口优先,不停服) |
|
||||
|
||||
### 实时汇率(`/rate`)
|
||||
|
||||
支持对比 Google 实时市场参考汇率与 Visa / Mastercard 官方卡组织结算汇率,并自动计算卡组织溢价与结算区间。
|
||||
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `/rate` 或 `/rate help` | 查看汇率转换用法与示例 |
|
||||
| `/rate <金额> <源币种> to <目标币种>` | 标准汇率转换(如 `/rate 138 sgd to cny`、`/rate 100 usd to cny`) |
|
||||
| `/rate <金额><源币种> -> <目标币种>` | 箭头简写语法(如 `/rate 50 eur -> sgd`) |
|
||||
| `/rate <金额><源币种>/<目标币种>` | 斜杠紧凑语法(如 `/rate 1000 php/cny`、`/rate 138sgd to cny`) |
|
||||
|
||||
### 其他模块
|
||||
|
||||
| 命令 | 说明 |
|
||||
@@ -147,7 +136,6 @@ qqbot:
|
||||
| `/sub del <id>` | 删除订阅 |
|
||||
| `/sub cancel` | 取消进行中的新增流程 |
|
||||
| `/ops modules` | 查看模块启用状态 |
|
||||
| `/rate 138sgd to cny` | 实时货币转换(Google / Visa / Mastercard) |
|
||||
|
||||
## 📜 Runbook(自动化工单)
|
||||
|
||||
@@ -164,7 +152,6 @@ qqbot:
|
||||
|
||||
访问 `http://localhost:9621`:
|
||||
|
||||
- 📊 记账统计 / 最近记录 / 分类筛选 / CSV 导出
|
||||
- 🧩 模块设置:CF / CPA / cfdav / AI
|
||||
- 🔌 渠道管理:QQ / Telegram / 飞书 配置与连接测试
|
||||
- 🧾 OPS 任务与目标主机管理
|
||||
@@ -190,12 +177,10 @@ ops-assistant/
|
||||
│ │ ├── runbook/ # 执行器(ssh/shell/http/assert)
|
||||
│ │ ├── ops/ # OPS 服务编排
|
||||
│ │ └── ai/ # AI 命令加载
|
||||
│ ├── module/ # 业务模块:cf / cpa / cfdav / mail / sub
|
||||
│ ├── module/ # 业务模块:cf / cpa / cfdav / mail / sub / rate
|
||||
│ ├── bot/ # Telegram Bot
|
||||
│ ├── qq/ # QQ Bot(WebSocket)+ 订阅提醒调度
|
||||
│ ├── feishu/ # 飞书适配(预留)
|
||||
│ ├── service/ # 记账核心(jieba 分词)
|
||||
│ ├── chart/ # 统计图表
|
||||
│ └── web/ # Web 后台(Gin)
|
||||
├── runbooks/ # 自动化 runbook(YAML)
|
||||
├── templates/ # Web 前端页面
|
||||
@@ -225,9 +210,9 @@ go build -tags runbooktest -o runbook_test ./cmd
|
||||
|
||||
## 📋 技术栈
|
||||
|
||||
- **语言**: Go 1.22(CGO:gojieba)
|
||||
- **语言**: Go 1.22
|
||||
- **Web 框架**: Gin · **数据库**: SQLite (GORM)
|
||||
- **分词**: gojieba · **QQ SDK**: tencent-connect/botgo v0.2.1(WebSocket)· **TG SDK**: go-telegram-bot-api v5
|
||||
**QQ SDK**: tencent-connect/botgo v0.2.1(WebSocket)· **TG SDK**: go-telegram-bot-api v5
|
||||
- **自动化**: 自研 runbook 执行器(YAML 编排 + 严格断言 + 任务审计)
|
||||
|
||||
## 📄 License
|
||||
|
||||
@@ -65,8 +65,8 @@ func (s *Service) helpText() string {
|
||||
"- /mail (邮箱状态)",
|
||||
"- /cfdav (CFDAV 用户管理)",
|
||||
"- /sub (订阅管理)",
|
||||
"- /rate 138sgd to cny (实时汇率转换)",
|
||||
"提示:发送 /cpa /cf /mail /cfdav /sub 获取各模块完整指令清单。",
|
||||
"- /rate (实时汇率转换)",
|
||||
"提示:发送 /cpa /cf /mail /cfdav /sub /rate 获取各模块完整指令清单。",
|
||||
}
|
||||
return strings.Join(lines, "\n")
|
||||
}
|
||||
|
||||
@@ -37,5 +37,5 @@ func (m *Module) Handle(_ int64, cmd *command.ParsedCommand) (string, error) {
|
||||
}
|
||||
|
||||
func help() string {
|
||||
return "💱 汇率转换\n\n用法:/rate 138sgd to cny\n\n也支持:\n/rate 100 usd to cny\n/rate 50 eur -> sgd\n/rate 1000 php/cny\n\n数据源:Google Finance、Visa、Mastercard。Visa/万事达为官方结算汇率;Google 为市场参考价。"
|
||||
return "💱 汇率转换\n\n用法:/rate 138 sgd to cny\n\n也支持:\n/rate 138sgd to cny\n/rate 100 usd to cny\n/rate 50 eur -> sgd\n/rate 1000 php/cny\n\n数据源:Google Finance、Visa、Mastercard。Visa/万事达为官方结算汇率;Google 为市场参考价。"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user