初始化提交

This commit is contained in:
chenxin committed 2026-08-21 16:00:13 +08:00
commit 887c1f449e
963 files changed
+166869

No files matched your search

@@ -0,0 +1,47 @@
"""模型网关 endpoint 覆盖数据访问(api-spec §4.4)。
按 (logical_model_name, endpoint_name) 唯一;upsert 手动 find+update,兼容 SQLite。
字段 None 表示不覆盖该字段(回退 yaml/env)。
"""
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models.governance import ModelEndpointOverride
async def list_overrides(session: AsyncSession) -> list[ModelEndpointOverride]:
result = await session.execute(select(ModelEndpointOverride))
return list(result.scalars().all())
async def get_override(
session: AsyncSession,
logical_model_name: str,
endpoint_name: str,
) -> ModelEndpointOverride | None:
result = await session.execute(
select(ModelEndpointOverride).where(
ModelEndpointOverride.logical_model_name == logical_model_name,
ModelEndpointOverride.endpoint_name == endpoint_name,
)
)
return result.scalars().first()
async def upsert_override(
session: AsyncSession,
override: ModelEndpointOverride,
) -> ModelEndpointOverride:
"""存在则更新非 None 字段,否则新建。返回最终实体(未 commit)。"""
existing = await get_override(session, override.logical_model_name, override.endpoint_name)
if existing is not None:
existing.base_url = override.base_url
existing.api_key = override.api_key
existing.status = override.status
existing.weight = override.weight
existing.priority = override.priority
return existing
session.add(override)
await session.flush()
return override