- 新增 llmusage_history 表:定时备份已记账(use_date<today)的历史记录 - 新增 llmusage_accounting_failed 表:记录记账失败详情,支持检索 - 新增 backup_accounted_llmusage() 函数:备份+清理历史数据 - 新增 get_failed_accounting_records() 函数:按条件检索失败记录 - 更新 llm_accoung_failed():同时写入失败表记录 - 新增 failed_accounting.ui 页面和 failed_accounting_list.dspy API - 新增 llmusage CRUD API (create/update/delete) - 新增表索引优化查询性能 - 更新 setup_llmage_perms.sh 添加新端点权限 - 生成生产迁移SQL: scripts/migrate_llmusage_history.sql
103 lines
2.8 KiB
Bash
103 lines
2.8 KiB
Bash
#!/bin/bash
|
||
# setup_llmage_perms.sh
|
||
# 为 llmage 模块的 llm_api_map 管理功能配置 RBAC 角色权限
|
||
#
|
||
# 授权角色:
|
||
# owner.superuser — 系统超管:全局所有模型配置
|
||
# *.admin — 机构管理员:管理本机构模型(通过ownerid隔离数据)
|
||
# reseller.operator — 运营:产品管理、模型配置
|
||
#
|
||
# 运行位置: sage 项目根目录 (包含 set_role_perm.py 的目录)
|
||
# 用法: bash setup_llmage_perms.sh
|
||
|
||
set -e
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
SAGE_DIR="$(cd "$SCRIPT_DIR/../.." && pwd 2>/dev/null || echo "")"
|
||
if [ ! -f "$SAGE_DIR/set_role_perm.py" ]; then
|
||
SAGE_DIR="$(cd "$SCRIPT_DIR/.." && pwd 2>/dev/null || echo "")"
|
||
fi
|
||
if [ ! -f "$SAGE_DIR/set_role_perm.py" ]; then
|
||
echo "Error: Cannot find set_role_perm.py"
|
||
exit 1
|
||
fi
|
||
cd "$SAGE_DIR"
|
||
|
||
COUNT=0
|
||
set_perm() {
|
||
local role="$1"
|
||
local path="$2"
|
||
python set_role_perm.py "${role}" "${path}"
|
||
COUNT=$((COUNT + 1))
|
||
}
|
||
|
||
# 授权角色(超管 + 各机构管理员 + 运营)
|
||
PERM_ROLES=(
|
||
"owner.superuser"
|
||
"owner.admin"
|
||
"reseller.admin"
|
||
"provider.admin"
|
||
"customer.admin"
|
||
"reseller.operator"
|
||
)
|
||
|
||
echo "============================================"
|
||
echo " llmage: llm_api_map 权限初始化"
|
||
echo "============================================"
|
||
|
||
LLM_API_MAP_PATHS=(
|
||
"/llmage/llm_api_map_manage.ui"
|
||
"/llmage/api/llm_api_map_list.dspy"
|
||
"/llmage/api/llm_api_map_create.dspy"
|
||
"/llmage/api/llm_api_map_delete.dspy"
|
||
"/llmage/api/llm_api_map_options.dspy"
|
||
"/llmage/api/uapi_options.dspy"
|
||
)
|
||
|
||
for p in "${LLM_API_MAP_PATHS[@]}"; do
|
||
for role in "${PERM_ROLES[@]}"; do
|
||
set_perm "${role}" "${p}"
|
||
done
|
||
done
|
||
|
||
echo ""
|
||
echo "============================================"
|
||
echo " llmage: 记账失败记录权限初始化"
|
||
echo "============================================"
|
||
|
||
FAILED_ACCOUNTING_PATHS=(
|
||
"/llmage/failed_accounting.ui"
|
||
"/llmage/api/failed_accounting_list.dspy"
|
||
"/llmage/api/llmusage_accounting_failed_create.dspy"
|
||
"/llmage/api/llmusage_accounting_failed_update.dspy"
|
||
"/llmage/api/llmusage_accounting_failed_delete.dspy"
|
||
)
|
||
|
||
for p in "${FAILED_ACCOUNTING_PATHS[@]}"; do
|
||
for role in "${PERM_ROLES[@]}"; do
|
||
set_perm "${role}" "${p}"
|
||
done
|
||
done
|
||
|
||
echo ""
|
||
echo "============================================"
|
||
echo " llmage: llmusage CRUD权限初始化"
|
||
echo "============================================"
|
||
|
||
LLMUSAGE_PATHS=(
|
||
"/llmage/api/llmusage_create.dspy"
|
||
"/llmage/api/llmusage_update.dspy"
|
||
"/llmage/api/llmusage_delete.dspy"
|
||
)
|
||
|
||
for p in "${LLMUSAGE_PATHS[@]}"; do
|
||
for role in "${PERM_ROLES[@]}"; do
|
||
set_perm "${role}" "${p}"
|
||
done
|
||
done
|
||
|
||
echo ""
|
||
echo "============================================"
|
||
echo " 权限配置完成,共设置 ${COUNT} 条权限"
|
||
echo "============================================"
|