Pārlūkot izejas kodu

feat: 号池推送修复+内部接口 - 修复key_pool_pusher语法错误和端口配置 - 添加/api/internal/group-keys-raw内部接口(返回原始key用于同步)

Co-Authored-By: Claude <noreply@anthropic.com>
mengboxin137-blip 3 nedēļas atpakaļ
vecāks
revīzija
2f7dceb287

+ 3 - 0
backend/.env

@@ -20,3 +20,6 @@ TZ_OFFSET_HOURS=8
 
 # API Key 加密密钥(任意字符串,越长越安全,建议 32 位以上)
 APIKEY_ENCRYPT_KEY=25e9e87b18cf40d0ed0f102b8d2ec3a8
+
+# company_base_pool 的地址
+COMPANY_BASE_POOL_URL=http://localhost:8010

+ 14 - 0
backend/app/routers/group_keys.py

@@ -377,3 +377,17 @@ async def push_all_groups():
         return {"success": True, "message": "推送完成"}
     except Exception as e:
         raise HTTPException(status_code=500, detail=f"推送失败: {str(e)}")
+
+
+@router.get("/internal/group-keys-raw")
+async def get_group_keys_raw():
+    """内部接口:返回分组名和原始key值(用于company_base_pool同步)"""
+    pool = get_pool()
+    rows = await pool.fetch("""
+        SELECT mg.name AS group_name, ak.key_value
+        FROM group_keys gk
+        JOIN model_groups mg ON mg.id = gk.group_id
+        JOIN api_keys ak ON ak.id = gk.api_key_id
+        WHERE gk.is_active = TRUE
+    """)
+    return [{"group_name": r["group_name"], "key_value": r["key_value"]} for r in rows]

+ 3 - 11
backend/app/services/key_pool_pusher.py

@@ -11,7 +11,7 @@ import os
 logger = logging.getLogger(__name__)
 
 # company_base_pool的API地址
-COMPANY_BASE_POOL_URL = os.getenv("COMPANY_BASE_POOL_URL", "http://localhost:8011")
+COMPANY_BASE_POOL_URL = os.getenv("COMPANY_BASE_POOL_URL", "http://localhost:8010")
 SYNC_ENDPOINT = f"{COMPANY_BASE_POOL_URL}/api/admin/key-pool/sync"
 
 
@@ -47,19 +47,11 @@ async def push_group_keys_to_pool(pool, group_id: int, api_key_ids: list):
 
             api_keys = [k['key_value'] for k in keys]
 
-            # 获取分组的provider(从绑定的模型推断)
-            provider_row = await conn.fetchrow("""
-                SELECT DISTINCT m.provider
-                FROM models m
-                WHERE m.group_id = $1 AND m.provider IS NOT NULL
-                LIMIT 1
-            """, group_id)
-            provider = provider_row['provider'] if provider_row else "dashscope"
-
             # 推送到company_base_pool
             data = [{
                 "group_name": group['name'],
-                "provider": provider,
+                "provider": "dashscope",
+                "base_url": "https://dashscope.aliyuncs.com",
                 "model_name": None,
                 "api_keys": api_keys
             }]