From 728e8c9be35da9733953926036a3de5f8cca5dde Mon Sep 17 00:00:00 2001 From: Mavis Date: Tue, 9 Jun 2026 14:35:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(api):=20LlmSetting/Source=20=E6=9A=B4?= =?UTF-8?q?=E9=9C=B2=20blocklist=5Ftags,admin=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=85=A5=E5=8F=A3=E5=B0=B1=E7=BB=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - schemas/source.SourceOut/In/Update 加 blocklist_tags - admin.create_source 透传 blocklist_tags - admin.update_source 走 setattr 通用,自动支持新字段 - admin_llm.get_settings 在 row=None 分支返回默认值时补 blocklist_tags=[] - update_settings 走 setattr 通用,自动支持新字段 --- backend/app/api/admin.py | 1 + backend/app/api/admin_llm.py | 1 + backend/app/schemas/source.py | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/backend/app/api/admin.py b/backend/app/api/admin.py index 111d5fb..f607e59 100644 --- a/backend/app/api/admin.py +++ b/backend/app/api/admin.py @@ -50,6 +50,7 @@ async def create_source(body: SourceIn, session: AsyncSession = Depends(get_sess translate_to=body.translate_to, enabled=body.enabled, headers_json=body.headers_json, + blocklist_tags=body.blocklist_tags or [], ) session.add(src) try: diff --git a/backend/app/api/admin_llm.py b/backend/app/api/admin_llm.py index 2cdc1a9..723e1bb 100644 --- a/backend/app/api/admin_llm.py +++ b/backend/app/api/admin_llm.py @@ -38,6 +38,7 @@ async def get_settings(): classify_prompt=defaults["classify_prompt"], commentary_prompt=defaults["commentary_prompt"], image_prompt_template=defaults["image_prompt_template"], + blocklist_tags=[], ) return LlmSettingOut.model_validate(row) diff --git a/backend/app/schemas/source.py b/backend/app/schemas/source.py index a3422a8..ecb0318 100644 --- a/backend/app/schemas/source.py +++ b/backend/app/schemas/source.py @@ -25,6 +25,8 @@ class SourceOut(BaseModel): last_fetched_at: datetime | None = None last_status: str | None = None consecutive_failures: int = 0 + # 源级屏蔽分类标签;与 llm_settings.blocklist_tags 合并后注入 classify prompt + blocklist_tags: list[str] = [] class SourceIn(BaseModel): @@ -40,6 +42,7 @@ class SourceIn(BaseModel): enabled: bool = True detail_selector: dict | None = None headers_json: dict | None = None + blocklist_tags: list[str] = [] class SourceUpdate(BaseModel): @@ -49,3 +52,4 @@ class SourceUpdate(BaseModel): fetch_interval_min: int | None = Field(default=None, ge=5, le=1440) region: str | None = None translate_to: str | None = None + blocklist_tags: list[str] | None = None