forked from boos/BoosAPI
feat: enhance response serialization for compact mode
- Added support for preserving native response.compaction payloads when compact serialization is requested in `serializeResponsesFinalPayload`. - Implemented serialization of compact mode as `response.compaction` instead of an ordinary response object. - Introduced a new type `ResponsesFinalSerializationMode` to manage serialization modes. - Refactored `serializeResponsesFinalPayload` to handle different serialization modes and usage payloads. - Added tests to ensure correct behavior for compact serialization and preservation of upstream payloads. - Updated favicon assets and documentation configuration for VitePress.
This commit is contained in:
@@ -208,21 +208,60 @@
|
||||
<p><sub>模型广场 — 一站式浏览所有可用模型的覆盖率、定价和性能指标</sub></p>
|
||||
</div>
|
||||
|
||||
### ✅ 自动签到 · 💰 余额管理 · 🔔 告警通知 · 📊 数据看板
|
||||
### ✅ 自动签到
|
||||
|
||||
- **自动签到**:Cron 定时执行,智能解析奖励金额,签到失败自动通知
|
||||
- **余额管理**:定时刷新,收入追踪,余额兜底估算,凭证过期自动重登录
|
||||
- **告警通知**:支持 Webhook / Bark / Server酱 / Telegram Bot / SMTP 邮件,覆盖余额不足、站点异常、签到失败等场景
|
||||
- **数据看板**:余额分布饼图、消费趋势图表、全局搜索、代理请求日志
|
||||
- Cron 定时执行(默认每日 08:00)
|
||||
- 智能解析奖励金额,签到失败自动通知
|
||||
- 按账号启用/禁用控制
|
||||
- 完整签到日志与历史查询
|
||||
- 并发锁防止重复签到
|
||||
|
||||
### 💰 余额管理
|
||||
|
||||
- 定时余额刷新(默认每小时),批量更新所有活跃账号
|
||||
- 收入追踪:每日/累计收入与消费趋势分析
|
||||
- 余额兜底估算:API 不可用时通过代理日志推算余额变动
|
||||
- 凭证过期自动重新登录
|
||||
|
||||
### 🔔 告警通知
|
||||
|
||||
支持五种通知渠道:
|
||||
|
||||
| 渠道 | 说明 |
|
||||
| --- | --- |
|
||||
| **Webhook** | 自定义 HTTP 推送 |
|
||||
| **Bark** | iOS 推送通知 |
|
||||
| **Server酱** | 微信通知 |
|
||||
| **Telegram Bot** | Telegram 消息通知 |
|
||||
| **SMTP 邮件** | 标准邮件通知 |
|
||||
|
||||
告警场景:余额不足预警、站点/账号异常、签到失败、代理请求失败、Token 过期提醒、每日摘要报告。告警冷却机制(默认 300 秒)防止重复通知。
|
||||
|
||||
### 📊 数据看板
|
||||
|
||||
- 站点余额饼图、每日消费趋势图
|
||||
- 全局搜索(站点、账号、模型)
|
||||
- 系统事件日志、代理请求日志(模型、状态、延迟、Token 用量、成本估算)
|
||||
|
||||
<div align="center">
|
||||
<img src="docs/screenshots/dashboard.png" alt="dashboard-detail" width="700"/>
|
||||
<p><sub>数据看板 — 余额分布、消费趋势、系统健康状态一目了然</sub></p>
|
||||
</div>
|
||||
|
||||
### 🎮 模型操练场
|
||||
|
||||
- 交互式聊天测试,即时验证模型可用性与响应质量
|
||||
- 选择任意路由模型,对比不同通道输出
|
||||
- 流式 / 非流式双模式测试
|
||||
|
||||
<div align="center">
|
||||
<img src="docs/screenshots/playground.png" alt="playground-detail" width="700"/>
|
||||
<p><sub>模型操练场 — 在线交互测试,验证模型可用性与响应质量</sub></p>
|
||||
</div>
|
||||
|
||||
### 📦 轻量部署
|
||||
|
||||
- **单 Docker 容器**,默认本地数据目录部署,开箱即用
|
||||
- **单 Docker 容器**,默认本地数据目录部署,支持外接 MySQL / PostgreSQL 运行时数据库
|
||||
- Alpine 基础镜像,体积精简
|
||||
- 数据完整导入导出,迁移无忧
|
||||
|
||||
@@ -234,24 +273,67 @@
|
||||
<img alt="Deploy on Zeabur" src="https://zeabur.com/button.svg" height="28">
|
||||
</a>
|
||||
|
||||
### Docker Compose(推荐)
|
||||
|
||||
```bash
|
||||
docker run -d --name metapi -p 4000:4000 \
|
||||
mkdir metapi && cd metapi
|
||||
|
||||
cat > docker-compose.yml << 'EOF'
|
||||
services:
|
||||
metapi:
|
||||
image: 1467078763/metapi:latest
|
||||
ports:
|
||||
- "4000:4000"
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
environment:
|
||||
AUTH_TOKEN: ${AUTH_TOKEN:?AUTH_TOKEN is required}
|
||||
PROXY_TOKEN: ${PROXY_TOKEN:?PROXY_TOKEN is required}
|
||||
CHECKIN_CRON: "0 8 * * *"
|
||||
BALANCE_REFRESH_CRON: "0 * * * *"
|
||||
PORT: ${PORT:-4000}
|
||||
DATA_DIR: /app/data
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
restart: unless-stopped
|
||||
EOF
|
||||
|
||||
# 设置 Token 并启动
|
||||
# AUTH_TOKEN = 管理后台登录令牌(登录时输入此值)
|
||||
export AUTH_TOKEN=your-admin-token
|
||||
# PROXY_TOKEN = 下游客户端调用 /v1/* 的 Token
|
||||
export PROXY_TOKEN=your-proxy-sk-token
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary><strong>一行 Docker 命令</strong></summary>
|
||||
|
||||
```bash
|
||||
docker run -d --name metapi \
|
||||
-p 4000:4000 \
|
||||
-e AUTH_TOKEN=your-admin-token \
|
||||
-e PROXY_TOKEN=your-proxy-sk-token \
|
||||
-v ./data:/app/data --restart unless-stopped \
|
||||
-e TZ=Asia/Shanghai \
|
||||
-v ./data:/app/data \
|
||||
--restart unless-stopped \
|
||||
1467078763/metapi:latest
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
启动后访问 `http://localhost:4000`,用 `AUTH_TOKEN` 登录即可。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 请务必修改 `AUTH_TOKEN` 和 `PROXY_TOKEN`,不要使用默认值。
|
||||
> 请务必修改 `AUTH_TOKEN` 和 `PROXY_TOKEN`,不要使用默认值。数据存储在 `./data` 目录,升级不会丢失。
|
||||
|
||||
📖 **[完整部署文档](https://metapi.cita777.me/deployment)** — Zeabur 一键部署 / Docker Compose / 桌面版安装包 / 反向代理 / 升级回滚
|
||||
> [!TIP]
|
||||
> 初始管理员令牌即启动时配置的 `AUTH_TOKEN`。
|
||||
> 若在 Compose 外运行且未显式设置 `AUTH_TOKEN`,默认为 `change-me-admin-token`(仅用于本地调试)。
|
||||
> 如果在「设置」面板中修改了管理员令牌,后续登录请使用新令牌。
|
||||
|
||||
📖 **[环境变量与配置](https://metapi.cita777.me/configuration)** — 全部环境变量、路由参数、通知渠道
|
||||
Docker Compose、桌面安装包、反向代理、升级与数据库选项等详见 [部署指南](https://metapi.cita777.me/deployment)。
|
||||
|
||||
📖 **[客户端接入指南](https://metapi.cita777.me/client-integration)** — Cursor / Claude Code / Codex / Open WebUI 等配置方法
|
||||
📖 **[环境变量与配置](https://metapi.cita777.me/configuration)** · **[客户端接入指南](https://metapi.cita777.me/client-integration)** · **[常见问题](https://metapi.cita777.me/faq)**
|
||||
|
||||
---
|
||||
|
||||
@@ -349,7 +431,7 @@ Metapi 完全自托管,所有数据(账号、令牌、路由、日志)均
|
||||
|
||||
## ⭐ Star History
|
||||
|
||||
[](https://www.star-history.com/?repos=cita-777%2Fmetapi&type=timeline&legend=top-left)
|
||||
[](https://www.star-history.com/#cita-777/metapi&type=date&legend=top-left)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user