- ① 后端删除 app/ai_provider/(38 文件,含 anthropic/openai 格式、billing、audio、embedding)、services/ai_provider_admin.py、core/config/model_config.py、tests/ai_provider/(21 文件) - ② 连带退役 application/agent/(旧 Agent 循环/steer/follow-up/确认注册表)、application/skill_executor.py、app/skills/(python skills 孤儿)、endpoints/audio.py、application/imports.py(ProviderManager 消费方);settings 端点收敛为生成偏好 - ③ runs.py 修剪:AgentRunRegistry/steer/follow-up/confirmations 端点退役,保留 list/get/events/cancel/stream;safety 确认改为直接落库裁决(pending→approved/denied) - ④ 前端删除:models 页、ModelGatewayView、gateway.ts、GatewayPanel(玄关)、ModelGatewayPanel/ModelStrategyForm、audio.ts/useVoiceInput、网关类型与 mock;设置页收敛为外观/语言/通知 - ⑤ 配置收敛:config/models|providers|pricing.example.yaml 归档 shenshi/config/;.env.example 删 provider keys/MODEL_ENDPOINT_POOL/MODEL_CONFIG_PATH,收敛 SHENSHI_* - ⑥ 验收:rg 审计灵台 Provider SDK import 与 ai_provider 引用归零;后端 528 passed(2 个预存失败经 HEAD 复跑验证与本手术无关)、前端 type-check+201 passed、神识 go vet+test、BFF 4 passed
36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
"""设置 API(生成偏好)。
|
|
|
|
生成偏好可读可写;模型网关状态由神识承接(用户面见神识阁)。
|
|
业务逻辑在 services/preferences(与系统配置 core/config/settings 区分)。
|
|
"""
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from app.api.v1.deps import get_current_user
|
|
from app.schemas.auth import CurrentUser
|
|
from app.schemas.preferences import (
|
|
GenerationPreferencesResponse,
|
|
UpdateGenerationPreferencesRequest,
|
|
)
|
|
from app.services.preferences import (
|
|
get_generation_preferences,
|
|
update_generation_preferences,
|
|
)
|
|
|
|
router = APIRouter(prefix="/settings", tags=["settings"])
|
|
|
|
|
|
@router.get("/preferences", response_model=GenerationPreferencesResponse)
|
|
async def read_generation_preferences(
|
|
current_user: CurrentUser = Depends(get_current_user),
|
|
) -> GenerationPreferencesResponse:
|
|
return await get_generation_preferences(owner_scope=current_user.owner_scope)
|
|
|
|
|
|
@router.patch("/preferences", response_model=GenerationPreferencesResponse)
|
|
async def update_generation_preferences_api(
|
|
payload: UpdateGenerationPreferencesRequest,
|
|
current_user: CurrentUser = Depends(get_current_user),
|
|
) -> GenerationPreferencesResponse:
|
|
return await update_generation_preferences(payload, owner_scope=current_user.owner_scope)
|