feat(admin): Phase 8 模型供应商管理 — provider/model CRUD + 启停 + 定价 + 设默认

后端:ModelConfig.is_default + migration;get_default_model 优先 is_default 否则回落最早 active(零回归);
adminpanel providers CRUD(api_key write-only 不回传)+ models CRUD(?provider/capability 筛)+ set-default(同 capability 清旧);
IsPlatformAdmin + 审计。
前端:adminApi providers/models/setDefault;Admin 模型供应商页(供应商表+模型表+启停+定价+设默认+供应商/模型弹窗)。
测试:adminpanel 51 单测过(api_key 隐藏+入库/CRUD/set-default 改 get_default_model);
apps.ai 仍仅 3 个进场前既有失败(零回归);无头 e2e _admin-p8.mjs 5 断言过 + 0 console error
(用一次性禁用 provider+model capability=export,无副作用,跑完删);tsc+build 绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
seaislee1209
2026-06-19 22:45:14 +08:00
co-authored by Claude Opus 4.8
parent 39b4467258
commit 4ce7e957d2
13 changed files with 673 additions and 5 deletions
+10
View File
@@ -7,6 +7,11 @@ from .views import (
admin_invitations,
admin_ledger_adjust,
admin_ledgers,
admin_model_detail,
admin_model_set_default,
admin_models,
admin_provider_detail,
admin_providers,
admin_quota_policies,
admin_quota_policy_detail,
admin_task_detail,
@@ -45,4 +50,9 @@ urlpatterns = [
path("ledgers/adjust/", admin_ledger_adjust, name="admin-ledger-adjust"),
path("quota-policies/", admin_quota_policies, name="admin-quota-policies"),
path("quota-policies/<uuid:policy_id>/", admin_quota_policy_detail, name="admin-quota-policy-detail"),
path("providers/", admin_providers, name="admin-providers"),
path("providers/<uuid:provider_id>/", admin_provider_detail, name="admin-provider-detail"),
path("models/", admin_models, name="admin-models"),
path("models/<uuid:model_id>/", admin_model_detail, name="admin-model-detail"),
path("models/<uuid:model_id>/set-default/", admin_model_set_default, name="admin-model-set-default"),
]