初始化提交

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

+70
View File
@@ -0,0 +1,70 @@
"""司命台 · 人物模板管理 API schema。
对应 admin 端系统模板 CRUD(api-spec §19 扩展)。
"""
from __future__ import annotations
from typing import Any
from pydantic import BaseModel, ConfigDict, Field
class AdminTemplateSummaryResponse(BaseModel):
"""系统模板列表项(管理端完整视图)。"""
key: str = Field(description="模板唯一标识(template_key)。")
name: str = Field(description="模板人物内部名称。")
display_name: str | None = Field(description="模板人物显示昵称。")
language: str = Field(description="默认语言。")
privacy_level: str = Field(description="隐私等级。")
is_default: bool = Field(
default=False, description="是否默认模板(新用户以此创建初始角色)。"
)
profile: dict[str, Any] = Field(description="完整人物档案。")
model_policy: dict[str, Any] = Field(description="完整模型策略。")
created_at: str = Field(description="创建时间,UTC ISO 8601。")
updated_at: str = Field(description="更新时间,UTC ISO 8601。")
class AdminCreateTemplateRequest(BaseModel):
"""创建系统模板。"""
model_config = ConfigDict(extra="forbid")
key: str = Field(
min_length=1,
pattern=r"^[a-z][a-z0-9_\-]*$",
description="模板唯一标识,仅允许小写字母、数字、下划线、连字符。"
"如与 YAML 中已有的 key 相同,下次重启时会被 YAML 配置覆盖。",
)
name: str = Field(min_length=1, description="模板人物内部名称。")
display_name: str | None = Field(default=None, description="可选显示昵称。")
language: str = Field(default="zh-CN", description="默认语言。")
privacy_level: str = Field(default="normal", description="隐私等级。")
is_default: bool = Field(
default=False,
description="是否默认模板。至多一个为 true,多个则取第一个。",
)
profile: dict[str, Any] = Field(
default_factory=dict,
description="人物档案。生日 (birthday) 无需提供,系统自动兜底。",
)
model_policy: dict[str, Any] = Field(
default_factory=dict,
description="模型策略。default_chat_model_hint 无需提供,从 settings 自动补充。",
)
class AdminUpdateTemplateRequest(BaseModel):
"""更新系统模板(所有字段可选,仅更新提供值的字段)。"""
model_config = ConfigDict(extra="forbid")
name: str | None = Field(default=None, description="内部名称。")
display_name: str | None = Field(default=None, description="显示昵称。")
language: str | None = Field(default=None, description="默认语言。")
privacy_level: str | None = Field(default=None, description="隐私等级。")
is_default: bool | None = Field(default=None, description="是否默认模板。")
profile: dict[str, Any] | None = Field(default=None, description="人物档案。")
model_policy: dict[str, Any] | None = Field(default=None, description="模型策略。")