✨ feat(vscode): 代码阅读把 Pydantic 的 BaseModel 子类画成数据模型卡片,字段摊成属性表

This commit is contained in:
cruldra committed 2026-10-03 03:11:47 +08:00
1 parent 2a11d5a19f
commit 4d8b99db7b
7 files changed
+659 -12

No files matched your search

@@ -0,0 +1,29 @@
from datetime import datetime
from pydantic import BaseModel, ConfigDict
class AIGCMetadata(BaseModel):
"""生成内容来源标识。"""
model_config = ConfigDict(strict=True, extra="forbid")
Label: str
ContentProducer: str
ProduceID: str
ReservedCode1: str
ContentPropagator: str
PropagateID: str
ReservedCode2: str
class TextTrace(BaseModel):
"""生成文本及其来源标识。"""
content_key: str
text: str
reasoning_content: str | None = None
metadata: AIGCMetadataEnvelope
model_id: str | None = None
served_model: str | None = None
generated_at: datetime | None = None
@@ -0,0 +1,29 @@
from pydantic import BaseModel, ConfigDict, Field, field_validator
from luffy_agent.share.enums import ShareTargetType
class CreateShareRequest(BaseModel):
model_config = ConfigDict(from_attributes=True)
target_type: ShareTargetType = ShareTargetType.SESSION_ARTIFACT
session_id: str = Field(min_length=1, description="作品所属 session id")
preview_url: str = Field(
min_length=1,
max_length=2048,
description="作品当前 preview URL(前端从预览态取)",
)
title: str = Field(min_length=1, max_length=255, description="分享卡片标题")
description: str | None = Field(default=None, max_length=500)
thumbnail_url: str | None = Field(default=None, max_length=2048)
@field_validator("preview_url", "thumbnail_url")
@classmethod
def validate_http_scheme(cls, value: str | None) -> str | None:
"""强制 http(s):// scheme,拒绝 javascript: 等可执行 URL 注入落地页 iframe。"""
if value is None:
return None
if not value.startswith(("http://", "https://")):
raise ValueError("URL 必须以 http:// 或 https:// 开头")
return value