mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 00:53:33 +00:00
具体改动
- 后端
- src/models/redis.js:新增脚本配置存取 account_balance_script:{platform}:{accountId}。
- src/services/accountBalanceService.js:支持脚本查询。若账户有脚本配置且 queryApi=true,调用 balanceScriptService.execute 获取余额/配额,缓存后返回。
- src/routes/admin/accountBalance.js:新增接口
- GET /admin/accounts/:id/balance/script?platform=...
- PUT /admin/accounts/:id/balance/script?platform=...
- POST /admin/accounts/:id/balance/script/test?platform=...
- 前端
- 新增弹窗 AccountBalanceScriptModal,在账户管理页每个账户“余额/配额”下方有“配置余额脚本”按钮,支持填写 baseUrl/apiKey/token/extra/超时/自动间隔、编写脚本、测试、保存。
- 将余额脚本独立路由/标签移除。
- 格式/ lint 已通过(新组件及 AccountsView)。
42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
const express = require('express')
|
|
const { authenticateAdmin } = require('../../middleware/auth')
|
|
const balanceScriptService = require('../../services/balanceScriptService')
|
|
const router = express.Router()
|
|
|
|
// 获取全部脚本配置列表
|
|
router.get('/balance-scripts', authenticateAdmin, (req, res) => {
|
|
const items = balanceScriptService.listConfigs()
|
|
return res.json({ success: true, data: items })
|
|
})
|
|
|
|
// 获取单个脚本配置
|
|
router.get('/balance-scripts/:name', authenticateAdmin, (req, res) => {
|
|
const { name } = req.params
|
|
const config = balanceScriptService.getConfig(name || 'default')
|
|
return res.json({ success: true, data: config })
|
|
})
|
|
|
|
// 保存脚本配置
|
|
router.put('/balance-scripts/:name', authenticateAdmin, (req, res) => {
|
|
try {
|
|
const { name } = req.params
|
|
const saved = balanceScriptService.saveConfig(name || 'default', req.body || {})
|
|
return res.json({ success: true, data: saved })
|
|
} catch (error) {
|
|
return res.status(400).json({ success: false, error: error.message })
|
|
}
|
|
})
|
|
|
|
// 测试脚本(不落库)
|
|
router.post('/balance-scripts/:name/test', authenticateAdmin, async (req, res) => {
|
|
try {
|
|
const { name } = req.params
|
|
const result = await balanceScriptService.testScript(name || 'default', req.body || {})
|
|
return res.json({ success: true, data: result })
|
|
} catch (error) {
|
|
return res.status(400).json({ success: false, error: error.message })
|
|
}
|
|
})
|
|
|
|
module.exports = router
|